From 6a5c62d82261726de4ada00271a41fc078b8eeb7 Mon Sep 17 00:00:00 2001
From: "fern-api[bot]" <115122769+fern-api[bot]@users.noreply.github.com>
Date: Sun, 6 Oct 2024 00:02:01 +0000
Subject: [PATCH 1/6] feat(openapi): Add new endpoint to retrieve call logs
---
openapi.json | 2977 ++++++++++++++++++++++++++++++++++++++------------
1 file changed, 2265 insertions(+), 712 deletions(-)
diff --git a/openapi.json b/openapi.json
index 0377888..895c67c 100644
--- a/openapi.json
+++ b/openapi.json
@@ -2389,6 +2389,155 @@
]
}
},
+ "/log": {
+ "get": {
+ "operationId": "LoggingController_getCallLogs",
+ "parameters": [
+ {
+ "name": "callId",
+ "required": true,
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "page",
+ "required": false,
+ "in": "query",
+ "description": "This is the page number to return. Defaults to 1.",
+ "schema": {
+ "minimum": 1,
+ "type": "number"
+ }
+ },
+ {
+ "name": "sortOrder",
+ "required": false,
+ "in": "query",
+ "description": "This is the sort order for pagination. Defaults to 'ASC'.",
+ "schema": {
+ "enum": [
+ "ASC",
+ "DESC"
+ ],
+ "type": "string"
+ }
+ },
+ {
+ "name": "limit",
+ "required": false,
+ "in": "query",
+ "description": "This is the maximum number of items to return. Defaults to 100.",
+ "schema": {
+ "minimum": 0,
+ "maximum": 1000,
+ "type": "number"
+ }
+ },
+ {
+ "name": "createdAtGt",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the createdAt is greater than the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "createdAtLt",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the createdAt is less than the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "createdAtGe",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the createdAt is greater than or equal to the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "createdAtLe",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the createdAt is less than or equal to the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "updatedAtGt",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the updatedAt is greater than the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "updatedAtLt",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the updatedAt is less than the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "updatedAtGe",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the updatedAt is greater than or equal to the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "updatedAtLe",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the updatedAt is less than or equal to the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CallLogsPaginatedResponse"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Logs"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
"/logs": {
"get": {
"operationId": "LoggingController_queryLogs",
@@ -2418,6 +2567,15 @@
"type": "string"
}
},
+ {
+ "name": "webhookType",
+ "required": false,
+ "in": "query",
+ "description": "This is the type of the webhook, given the log is from a webhook.",
+ "schema": {
+ "type": "string"
+ }
+ },
{
"name": "assistantId",
"required": false,
@@ -2605,9 +2763,7 @@
"title": "Vapi API",
"description": "API for building voice assistants",
"version": "1.0",
- "contact": {
-
- }
+ "contact": {}
},
"tags": [],
"servers": [
@@ -2743,9 +2899,9 @@
"description": "This will be use smart format option provided by Deepgram. It's default disabled because it can sometimes format numbers as times but it's getting better.",
"example": false
},
- "languageDetectionEnabled": {
+ "codeSwitchingEnabled": {
"type": "boolean",
- "description": "This enables or disables language detection. If true, swaps transcribers to detected language automatically. Defaults to false.",
+ "description": "This automatically switches the transcriber's language when the customer's language changes. Defaults to false.\n\nUsage:\n- If your customers switch languages mid-call, you can set this to true.\n\nNote:\n- To detect language changes, Vapi uses a custom trained model. Languages supported (X = limited support):\n 1. Arabic\n 2. Bengali\n 3. Cantonese\n 4. Chinese\n 5. Chinese Simplified (X)\n 6. Chinese Traditional (X)\n 7. English\n 8. Farsi (X)\n 9. French\n 10. German\n 11. Haitian Creole (X)\n 12. Hindi\n 13. Italian\n 14. Japanese\n 15. Korean\n 16. Portuguese\n 17. Russian\n 18. Spanish\n 19. Thai\n 20. Urdu\n 21. Vietnamese\n- To receive `language-change-detected` webhook events, add it to `assistant.serverMessages`.\n\n@default false",
"example": false
},
"keywords": {
@@ -3056,126 +3212,274 @@
"provider"
]
},
- "Condition": {
- "type": "object",
- "properties": {
- "value": {
- "type": "string",
- "description": "This is the value you want to compare against the parameter.",
- "pattern": "ALLOWED_REGEX"
- },
- "operator": {
- "type": "string",
- "description": "This is the operator you want to use to compare the parameter and value.",
- "enum": [
- "eq",
- "neq",
- "gt",
- "gte",
- "lt",
- "lte"
- ],
- "pattern": "ALLOWED_REGEX"
- },
- "param": {
- "type": "string",
- "description": "This is the name of the parameter that you want to check.",
- "pattern": "ALLOWED_REGEX"
- }
- },
- "required": [
- "value",
- "operator",
- "param"
- ]
- },
- "ToolMessageStart": {
- "type": "object",
- "properties": {
- "type": {
- "type": "string",
- "enum": [
- "request-start"
- ],
- "description": "This message is triggered when the tool call starts.\n\nThis message is never triggered for async tools.\n\nIf this message is not provided, one of the default filler messages \"Hold on a sec\", \"One moment\", \"Just a sec\", \"Give me a moment\" or \"This'll just take a sec\" will be used."
- },
- "content": {
- "type": "string",
- "description": "This is the content that the assistant says when this message is triggered."
- },
- "conditions": {
- "description": "This is an optional array of conditions that the tool call arguments must meet in order for this message to be triggered.",
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/Condition"
- }
- }
- },
- "required": [
- "type",
- "content"
- ]
- },
- "ToolMessageComplete": {
+ "TextContent": {
"type": "object",
"properties": {
"type": {
"type": "string",
- "description": "This message is triggered when the tool call is complete.\n\nThis message is triggered immediately without waiting for your server to respond for async tool calls.\n\nIf this message is not provided, the model will be requested to respond.\n\nIf this message is provided, only this message will be spoken and the model will not be requested to come up with a response. It's an exclusive OR.",
- "enum": [
- "request-complete"
- ]
- },
- "role": {
- "type": "string",
- "description": "This is optional and defaults to \"assistant\".\n\nWhen role=assistant, `content` is said out loud.\n\nWhen role=system, `content` is passed to the model in a system message. Example:\n system: default one\n assistant:\n user:\n assistant:\n user:\n assistant:\n user:\n assistant: tool called\n tool: your server response\n \u003C--- system prompt as hint\n ---\u003E model generates response which is spoken\nThis is useful when you want to provide a hint to the model about what to say next.",
"enum": [
- "assistant",
- "system"
+ "text"
]
},
- "endCallAfterSpokenEnabled": {
- "type": "boolean",
- "description": "This is an optional boolean that if true, the call will end after the message is spoken. Default is false.\n\nThis is ignored if `role` is set to `system`.\n\n@default false",
- "example": false
- },
- "content": {
- "type": "string",
- "description": "This is the content that the assistant says when this message is triggered."
+ "text": {
+ "type": "string"
},
- "conditions": {
- "description": "This is an optional array of conditions that the tool call arguments must meet in order for this message to be triggered.",
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/Condition"
- }
- }
- },
- "required": [
- "type",
- "content"
- ]
- },
- "ToolMessageFailed": {
- "type": "object",
- "properties": {
- "type": {
+ "language": {
"type": "string",
- "description": "This message is triggered when the tool call fails.\n\nThis message is never triggered for async tool calls.\n\nIf this message is not provided, the model will be requested to respond.\n\nIf this message is provided, only this message will be spoken and the model will not be requested to come up with a response. It's an exclusive OR.",
"enum": [
- "request-failed"
- ]
- },
- "endCallAfterSpokenEnabled": {
- "type": "boolean",
- "description": "This is an optional boolean that if true, the call will end after the message is spoken. Default is false.\n\n@default false",
- "example": false
- },
- "content": {
- "type": "string",
- "description": "This is the content that the assistant says when this message is triggered."
- },
- "conditions": {
+ "aa",
+ "ab",
+ "ae",
+ "af",
+ "ak",
+ "am",
+ "an",
+ "ar",
+ "as",
+ "av",
+ "ay",
+ "az",
+ "ba",
+ "be",
+ "bg",
+ "bh",
+ "bi",
+ "bm",
+ "bn",
+ "bo",
+ "br",
+ "bs",
+ "ca",
+ "ce",
+ "ch",
+ "co",
+ "cr",
+ "cs",
+ "cu",
+ "cv",
+ "cy",
+ "da",
+ "de",
+ "dv",
+ "dz",
+ "ee",
+ "el",
+ "en",
+ "eo",
+ "es",
+ "et",
+ "eu",
+ "fa",
+ "ff",
+ "fi",
+ "fj",
+ "fo",
+ "fr",
+ "fy",
+ "ga",
+ "gd",
+ "gl",
+ "gn",
+ "gu",
+ "gv",
+ "ha",
+ "he",
+ "hi",
+ "ho",
+ "hr",
+ "ht",
+ "hu",
+ "hy",
+ "hz",
+ "ia",
+ "id",
+ "ie",
+ "ig",
+ "ii",
+ "ik",
+ "io",
+ "is",
+ "it",
+ "iu",
+ "ja",
+ "jv",
+ "ka",
+ "kg",
+ "ki",
+ "kj",
+ "kk",
+ "kl",
+ "km",
+ "kn",
+ "ko",
+ "kr",
+ "ks",
+ "ku",
+ "kv",
+ "kw",
+ "ky",
+ "la",
+ "lb",
+ "lg",
+ "li",
+ "ln",
+ "lo",
+ "lt",
+ "lu",
+ "lv",
+ "mg",
+ "mh",
+ "mi",
+ "mk",
+ "ml",
+ "mn",
+ "mr",
+ "ms",
+ "mt",
+ "my",
+ "na",
+ "nb",
+ "nd",
+ "ne",
+ "ng",
+ "nl",
+ "nn",
+ "no",
+ "nr",
+ "nv",
+ "ny",
+ "oc",
+ "oj",
+ "om",
+ "or",
+ "os",
+ "pa",
+ "pi",
+ "pl",
+ "ps",
+ "pt",
+ "qu",
+ "rm",
+ "rn",
+ "ro",
+ "ru",
+ "rw",
+ "sa",
+ "sc",
+ "sd",
+ "se",
+ "sg",
+ "si",
+ "sk",
+ "sl",
+ "sm",
+ "sn",
+ "so",
+ "sq",
+ "sr",
+ "ss",
+ "st",
+ "su",
+ "sv",
+ "sw",
+ "ta",
+ "te",
+ "tg",
+ "th",
+ "ti",
+ "tk",
+ "tl",
+ "tn",
+ "to",
+ "tr",
+ "ts",
+ "tt",
+ "tw",
+ "ty",
+ "ug",
+ "uk",
+ "ur",
+ "uz",
+ "ve",
+ "vi",
+ "vo",
+ "wa",
+ "wo",
+ "xh",
+ "yi",
+ "yue",
+ "yo",
+ "za",
+ "zh",
+ "zu"
+ ]
+ }
+ },
+ "required": [
+ "type",
+ "text",
+ "language"
+ ]
+ },
+ "Condition": {
+ "type": "object",
+ "properties": {
+ "operator": {
+ "type": "string",
+ "description": "This is the operator you want to use to compare the parameter and value.",
+ "enum": [
+ "eq",
+ "neq",
+ "gt",
+ "gte",
+ "lt",
+ "lte"
+ ]
+ },
+ "param": {
+ "type": "string",
+ "description": "This is the name of the parameter that you want to check.",
+ "maxLength": 1000
+ },
+ "value": {
+ "type": "object",
+ "description": "This is the value you want to compare against the parameter.",
+ "maxLength": 1000
+ }
+ },
+ "required": [
+ "operator",
+ "param",
+ "value"
+ ]
+ },
+ "ToolMessageStart": {
+ "type": "object",
+ "properties": {
+ "contents": {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/TextContent",
+ "title": "Text"
+ }
+ ]
+ }
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "request-start"
+ ],
+ "description": "This message is triggered when the tool call starts.\n\nThis message is never triggered for async tools.\n\nIf this message is not provided, one of the default filler messages \"Hold on a sec\", \"One moment\", \"Just a sec\", \"Give me a moment\" or \"This'll just take a sec\" will be used."
+ },
+ "content": {
+ "type": "string",
+ "description": "This is the content that the assistant says when this message is triggered.",
+ "maxLength": 1000
+ },
+ "conditions": {
"description": "This is an optional array of conditions that the tool call arguments must meet in order for this message to be triggered.",
"type": "array",
"items": {
@@ -3184,13 +3488,117 @@
}
},
"required": [
- "type",
- "content"
+ "type"
+ ]
+ },
+ "ToolMessageComplete": {
+ "type": "object",
+ "properties": {
+ "contents": {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/TextContent",
+ "title": "Text"
+ }
+ ]
+ }
+ },
+ "type": {
+ "type": "string",
+ "description": "This message is triggered when the tool call is complete.\n\nThis message is triggered immediately without waiting for your server to respond for async tool calls.\n\nIf this message is not provided, the model will be requested to respond.\n\nIf this message is provided, only this message will be spoken and the model will not be requested to come up with a response. It's an exclusive OR.",
+ "enum": [
+ "request-complete"
+ ]
+ },
+ "role": {
+ "type": "string",
+ "description": "This is optional and defaults to \"assistant\".\n\nWhen role=assistant, `content` is said out loud.\n\nWhen role=system, `content` is passed to the model in a system message. Example:\n system: default one\n assistant:\n user:\n assistant:\n user:\n assistant:\n user:\n assistant: tool called\n tool: your server response\n <--- system prompt as hint\n ---> model generates response which is spoken\nThis is useful when you want to provide a hint to the model about what to say next.",
+ "enum": [
+ "assistant",
+ "system"
+ ]
+ },
+ "endCallAfterSpokenEnabled": {
+ "type": "boolean",
+ "description": "This is an optional boolean that if true, the call will end after the message is spoken. Default is false.\n\nThis is ignored if `role` is set to `system`.\n\n@default false",
+ "example": false
+ },
+ "content": {
+ "type": "string",
+ "description": "This is the content that the assistant says when this message is triggered.",
+ "maxLength": 1000
+ },
+ "conditions": {
+ "description": "This is an optional array of conditions that the tool call arguments must meet in order for this message to be triggered.",
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/Condition"
+ }
+ }
+ },
+ "required": [
+ "type"
+ ]
+ },
+ "ToolMessageFailed": {
+ "type": "object",
+ "properties": {
+ "contents": {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/TextContent",
+ "title": "Text"
+ }
+ ]
+ }
+ },
+ "type": {
+ "type": "string",
+ "description": "This message is triggered when the tool call fails.\n\nThis message is never triggered for async tool calls.\n\nIf this message is not provided, the model will be requested to respond.\n\nIf this message is provided, only this message will be spoken and the model will not be requested to come up with a response. It's an exclusive OR.",
+ "enum": [
+ "request-failed"
+ ]
+ },
+ "endCallAfterSpokenEnabled": {
+ "type": "boolean",
+ "description": "This is an optional boolean that if true, the call will end after the message is spoken. Default is false.\n\n@default false",
+ "example": false
+ },
+ "content": {
+ "type": "string",
+ "description": "This is the content that the assistant says when this message is triggered.",
+ "maxLength": 1000
+ },
+ "conditions": {
+ "description": "This is an optional array of conditions that the tool call arguments must meet in order for this message to be triggered.",
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/Condition"
+ }
+ }
+ },
+ "required": [
+ "type"
]
},
"ToolMessageDelayed": {
"type": "object",
"properties": {
+ "contents": {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/TextContent",
+ "title": "Text"
+ }
+ ]
+ }
+ },
"type": {
"type": "string",
"description": "This message is triggered when the tool call is delayed.\n\nThere are the two things that can trigger this message:\n1. The user talks with the assistant while your server is processing the request. Default is \"Sorry, a few more seconds.\"\n2. The server doesn't respond within `timingMilliseconds`.\n\nThis message is never triggered for async tool calls.",
@@ -3207,7 +3615,8 @@
},
"content": {
"type": "string",
- "description": "This is the content that the assistant says when this message is triggered."
+ "description": "This is the content that the assistant says when this message is triggered.",
+ "maxLength": 1000
},
"conditions": {
"description": "This is an optional array of conditions that the tool call arguments must meet in order for this message to be triggered.",
@@ -3218,8 +3627,7 @@
}
},
"required": [
- "type",
- "content"
+ "type"
]
},
"JsonSchema": {
@@ -3730,9 +4138,52 @@
"metadata"
]
},
+ "CustomMessage": {
+ "type": "object",
+ "properties": {
+ "contents": {
+ "type": "array",
+ "description": "This is an alternative to the `content` property. It allows to specify variants of the same content, one per language.\n\nUsage:\n- If your assistants are multilingual, you can provide content for each language.\n\nThis will override the `content` property.",
+ "items": {
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/TextContent",
+ "title": "Text"
+ }
+ ]
+ }
+ },
+ "type": {
+ "type": "string",
+ "description": "This is a custom message.",
+ "enum": [
+ "custom-message"
+ ]
+ },
+ "content": {
+ "type": "string",
+ "description": "This is the content that the assistant will say when this message is triggered.",
+ "maxLength": 1000
+ }
+ },
+ "required": [
+ "type"
+ ]
+ },
"TransferDestinationAssistant": {
"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.",
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "$ref": "#/components/schemas/CustomMessage"
+ }
+ ]
+ },
"type": {
"type": "string",
"enum": [
@@ -3741,20 +4192,17 @@
},
"transferMode": {
"type": "string",
- "description": "This is the mode to use for the transfer. Default is `rolling-history`.\n\n- `rolling-history`: This is the default mode. It keeps the entire conversation history and appends the new assistant's system message on transfer.\n\n Example:\n\n Pre-transfer:\n system: assistant1 system message\n assistant: assistant1 first message\n user: hey, good morning\n assistant: how can i help?\n user: i need help with my account\n assistant: (destination.message)\n\n Post-transfer:\n system: assistant1 system message\n assistant: assistant1 first message\n user: hey, good morning\n assistant: how can i help?\n user: i need help with my account\n assistant: (destination.message)\n system: assistant2 system message\n assistant: assistant2 first message (or model generated if firstMessageMode is set to `assistant-speaks-first-with-model-generated-message`)\n\n- `swap-system-message-in-history`: This replaces the original system message with the new assistant's system message on transfer.\n\n Example:\n\n Pre-transfer:\n system: assistant1 system message\n assistant: assistant1 first message\n user: hey, good morning\n assistant: how can i help?\n user: i need help with my account\n assistant: (destination.message)\n\n Post-transfer:\n system: assistant2 system message\n assistant: assistant1 first message\n user: hey, good morning\n assistant: how can i help?\n user: i need help with my account\n assistant: (destination.message)\n assistant: assistant2 first message (or model generated if firstMessageMode is set to `assistant-speaks-first-with-model-generated-message`)",
+ "description": "This is the mode to use for the transfer. Defaults to `rolling-history`.\n\n- `rolling-history`: This is the default mode. It keeps the entire conversation history and appends the new assistant's system message on transfer.\n\n Example:\n\n Pre-transfer:\n system: assistant1 system message\n assistant: assistant1 first message\n user: hey, good morning\n assistant: how can i help?\n user: i need help with my account\n assistant: (destination.message)\n\n Post-transfer:\n system: assistant1 system message\n assistant: assistant1 first message\n user: hey, good morning\n assistant: how can i help?\n user: i need help with my account\n assistant: (destination.message)\n system: assistant2 system message\n assistant: assistant2 first message (or model generated if firstMessageMode is set to `assistant-speaks-first-with-model-generated-message`)\n\n- `swap-system-message-in-history`: This replaces the original system message with the new assistant's system message on transfer.\n\n Example:\n\n Pre-transfer:\n system: assistant1 system message\n assistant: assistant1 first message\n user: hey, good morning\n assistant: how can i help?\n user: i need help with my account\n assistant: (destination.message)\n\n Post-transfer:\n system: assistant2 system message\n assistant: assistant1 first message\n user: hey, good morning\n assistant: how can i help?\n user: i need help with my account\n assistant: (destination.message)\n assistant: assistant2 first message (or model generated if firstMessageMode is set to `assistant-speaks-first-with-model-generated-message`)\n\n- `delete-history`: This deletes the entire conversation history on transfer.\n\n Example:\n\n Pre-transfer:\n system: assistant1 system message\n assistant: assistant1 first message\n user: hey, good morning\n assistant: how can i help?\n user: i need help with my account\n assistant: (destination.message)\n\n Post-transfer:\n system: assistant2 system message\n assistant: assistant2 first message\n user: Yes, please\n assistant: how can i help?\n user: i need help with my account\n\n@default 'rolling-history'",
"enum": [
"rolling-history",
- "swap-system-message-in-history"
+ "swap-system-message-in-history",
+ "delete-history"
]
},
"assistantName": {
"type": "string",
"description": "This is the assistant to transfer the call to."
},
- "message": {
- "type": "string",
- "description": "This is the message to say before transferring the call to the destination.\n\nIf this is not provided and transfer tool messages is not provided, default is \"Transferring the call now\".\n\nIf 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."
- },
"description": {
"type": "string",
"description": "This is the description of the destination, used by the AI to choose when and how to transfer the call."
@@ -3768,6 +4216,17 @@
"TransferDestinationStep": {
"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.",
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "$ref": "#/components/schemas/CustomMessage"
+ }
+ ]
+ },
"type": {
"type": "string",
"enum": [
@@ -3778,10 +4237,6 @@
"type": "string",
"description": "This is the step to transfer to."
},
- "message": {
- "type": "string",
- "description": "This is the message to say before transferring the call to the destination.\n\nIf this is not provided and transfer tool messages is not provided, default is \"Transferring the call now\".\n\nIf 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."
- },
"description": {
"type": "string",
"description": "This is the description of the destination, used by the AI to choose when and how to transfer the call."
@@ -3792,9 +4247,78 @@
"stepName"
]
},
+ "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`",
+ "type": "array",
+ "items": {
+ "type": "object"
+ }
+ },
+ "enabled": {
+ "type": "boolean",
+ "description": "This determines whether a summary is generated and stored in `call.analysis.summary`. Defaults to true.\n\nUsage:\n- If you want to disable the summary, set this to false.\n\n@default true"
+ },
+ "timeoutSeconds": {
+ "type": "number",
+ "description": "This is how long the request is tried before giving up. When request times out, `call.analysis.summary` will be empty.\n\nUsage:\n- To guarantee the summary is generated, set this value high. Note, this will delay the end of call report in cases where model is slow to respond.\n\n@default 5 seconds",
+ "minimum": 1,
+ "maximum": 60
+ }
+ }
+ },
+ "TransferPlan": {
+ "type": "object",
+ "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- `warm-transfer-with-message`: The assistant dials the destination, delivers the `message` to the destination party, connects the customer, and leaves the call.\n- `warm-transfer-with-summary`: The assistant dials the destination, provides a summary of the call to the destination party, connects the customer, and leaves the call.\n\n@default 'blind-transfer'",
+ "enum": [
+ "blind-transfer",
+ "warm-transfer-with-message",
+ "warm-transfer-with-summary"
+ ]
+ },
+ "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 `warm-transfer-with-message`.",
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "$ref": "#/components/schemas/CustomMessage"
+ }
+ ]
+ },
+ "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 `warm-transfer-with-summary`.",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/SummaryPlan"
+ }
+ ]
+ }
+ },
+ "required": [
+ "mode"
+ ]
+ },
"TransferDestinationNumber": {
"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.",
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "$ref": "#/components/schemas/CustomMessage"
+ }
+ ]
+ },
"type": {
"type": "string",
"enum": [
@@ -3823,9 +4347,13 @@
"description": "This is the caller ID to use when transferring the call to the `number`.\n\nUsage:\n- If not provided, the caller ID will be the number the call is coming from. Example, +14151111111 calls in to and the assistant transfers out to +16470000000. +16470000000 will see +14151111111 as the caller.\n- To change this behavior, provide a `callerId`.\n- Set to '{{customer.number}}' to always use the customer's number as the caller ID.\n- Set to '{{phoneNumber.number}}' to always use the phone number of the assistant as the caller ID.\n- Set to any E164 number to always use that number as the caller ID. This needs to be a number that is owned or verified by your Transport provider like Twilio.\n\nFor Twilio, you can read up more here: https://www.twilio.com/docs/voice/twiml/dial#callerid",
"maxLength": 40
},
- "message": {
- "type": "string",
- "description": "This is the message to say before transferring the call to the destination.\n\nIf this is not provided and transfer tool messages is not provided, default is \"Transferring the call now\".\n\nIf 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."
+ "transferPlan": {
+ "description": "This configures how transfer is executed and the experience of the destination party receiving the call. Defaults to `blind-transfer`.\n\n@default `transferPlan.mode='blind-transfer'`",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/TransferPlan"
+ }
+ ]
},
"description": {
"type": "string",
@@ -3840,6 +4368,17 @@
"TransferDestinationSip": {
"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.",
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "$ref": "#/components/schemas/CustomMessage"
+ }
+ ]
+ },
"type": {
"type": "string",
"enum": [
@@ -3850,9 +4389,13 @@
"type": "string",
"description": "This is the SIP URI to transfer the call to."
},
- "message": {
- "type": "string",
- "description": "This is the message to say before transferring the call to the destination.\n\nIf this is not provided and transfer tool messages is not provided, default is \"Transferring the call now\".\n\nIf 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."
+ "transferPlan": {
+ "description": "This configures how transfer is executed and the experience of the destination party receiving the call. Defaults to `blind-transfer`.\n\n@default `transferPlan.mode='blind-transfer'`",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/TransferPlan"
+ }
+ ]
},
"description": {
"type": "string",
@@ -3947,45 +4490,24 @@
"type"
]
},
- "OpenAIMessage": {
- "type": "object",
- "properties": {
- "content": {
- "type": "string",
- "nullable": true,
- "maxLength": 100000000
- },
- "role": {
- "type": "string",
- "enum": [
- "assistant",
- "function",
- "user",
- "system",
- "tool"
- ]
- }
- },
- "required": [
- "content",
- "role"
- ]
- },
- "KnowledgeBase": {
+ "CanonicalKnowledgeBase": {
"type": "object",
"properties": {
"provider": {
"type": "string",
+ "description": "This knowledge base is provided by Canonical.",
"enum": [
"canonical"
]
},
"topK": {
"type": "number",
+ "description": "This is the top K value for the knowledge base.",
"minimum": 1,
"maximum": 10
},
"fileIds": {
+ "description": "These are the file ids that can be used by the knowledge base.",
"type": "array",
"items": {
"type": "string"
@@ -3997,6 +4519,54 @@
"fileIds"
]
},
+ "CustomKnowledgeBase": {
+ "type": "object",
+ "properties": {
+ "provider": {
+ "type": "string",
+ "description": "This knowledge base is bring your own knowledge base implementation.",
+ "enum": [
+ "custom-knowledge-base"
+ ]
+ },
+ "server": {
+ "description": "/**\nThis is where the knowledge base request will be sent.\n\nRequest Example:\n\nPOST https://{server.url}\nContent-Type: application/json\n\n{\n \"messsage\": {\n \"type\": \"knowledge-base-request\",\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Why is ocean blue?\"\n }\n ],\n ...other metadata about the call...\n }\n}\n\nResponse Expected:\n```\n{\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"The ocean is blue because water absorbs everything but blue.\",\n }, // YOU CAN RETURN THE EXACT RESPONSE TO SPEAK\n \"documents\": [\n {\n \"content\": \"The ocean is blue primarily because water absorbs colors in the red part of the light spectrum and scatters the blue light, making it more visible to our eyes.\",\n \"similarity\": 1\n },\n {\n \"content\": \"Blue light is scattered more by the water molecules than other colors, enhancing the blue appearance of the ocean.\",\n \"similarity\": .5\n }\n ] // OR, YOU CAN RETURN AN ARRAY OF DOCUMENTS THAT WILL BE SENT TO THE MODEL\n}\n```",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/Server"
+ }
+ ]
+ }
+ },
+ "required": [
+ "provider",
+ "server"
+ ]
+ },
+ "OpenAIMessage": {
+ "type": "object",
+ "properties": {
+ "content": {
+ "type": "string",
+ "nullable": true,
+ "maxLength": 100000000
+ },
+ "role": {
+ "type": "string",
+ "enum": [
+ "assistant",
+ "function",
+ "user",
+ "system",
+ "tool"
+ ]
+ }
+ },
+ "required": [
+ "content",
+ "role"
+ ]
+ },
"AnyscaleModel": {
"type": "object",
"properties": {
@@ -4050,6 +4620,19 @@
"type": "string"
}
},
+ "knowledgeBase": {
+ "description": "These are the options for the knowledge base.",
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/CanonicalKnowledgeBase",
+ "title": "Canonical"
+ },
+ {
+ "$ref": "#/components/schemas/CustomKnowledgeBase",
+ "title": "Custom"
+ }
+ ]
+ },
"provider": {
"type": "string",
"enum": [
@@ -4066,14 +4649,6 @@
"minimum": 0,
"maximum": 2
},
- "knowledgeBase": {
- "description": "These are the options for the knowledge base.",
- "allOf": [
- {
- "$ref": "#/components/schemas/KnowledgeBase"
- }
- ]
- },
"maxTokens": {
"type": "number",
"description": "This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250.",
@@ -4148,6 +4723,19 @@
"type": "string"
}
},
+ "knowledgeBase": {
+ "description": "These are the options for the knowledge base.",
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/CanonicalKnowledgeBase",
+ "title": "Canonical"
+ },
+ {
+ "$ref": "#/components/schemas/CustomKnowledgeBase",
+ "title": "Custom"
+ }
+ ]
+ },
"model": {
"type": "string",
"description": "This is the Anthropic/Claude models that will be used.",
@@ -4170,14 +4758,6 @@
"minimum": 0,
"maximum": 2
},
- "knowledgeBase": {
- "description": "These are the options for the knowledge base.",
- "allOf": [
- {
- "$ref": "#/components/schemas/KnowledgeBase"
- }
- ]
- },
"maxTokens": {
"type": "number",
"description": "This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250.",
@@ -4252,6 +4832,19 @@
"type": "string"
}
},
+ "knowledgeBase": {
+ "description": "These are the options for the knowledge base.",
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/CanonicalKnowledgeBase",
+ "title": "Canonical"
+ },
+ {
+ "$ref": "#/components/schemas/CustomKnowledgeBase",
+ "title": "Custom"
+ }
+ ]
+ },
"provider": {
"type": "string",
"description": "This is the provider that will be used for the model. Any service, including your own server, that is compatible with the OpenAI API can be used.",
@@ -4282,14 +4875,6 @@
"minimum": 0,
"maximum": 2
},
- "knowledgeBase": {
- "description": "These are the options for the knowledge base.",
- "allOf": [
- {
- "$ref": "#/components/schemas/KnowledgeBase"
- }
- ]
- },
"maxTokens": {
"type": "number",
"description": "This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250.",
@@ -4365,6 +4950,19 @@
"type": "string"
}
},
+ "knowledgeBase": {
+ "description": "These are the options for the knowledge base.",
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/CanonicalKnowledgeBase",
+ "title": "Canonical"
+ },
+ {
+ "$ref": "#/components/schemas/CustomKnowledgeBase",
+ "title": "Custom"
+ }
+ ]
+ },
"provider": {
"type": "string",
"enum": [
@@ -4381,14 +4979,6 @@
"minimum": 0,
"maximum": 2
},
- "knowledgeBase": {
- "description": "These are the options for the knowledge base.",
- "allOf": [
- {
- "$ref": "#/components/schemas/KnowledgeBase"
- }
- ]
- },
"maxTokens": {
"type": "number",
"description": "This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250.",
@@ -4463,6 +5053,19 @@
"type": "string"
}
},
+ "knowledgeBase": {
+ "description": "These are the options for the knowledge base.",
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/CanonicalKnowledgeBase",
+ "title": "Canonical"
+ },
+ {
+ "$ref": "#/components/schemas/CustomKnowledgeBase",
+ "title": "Custom"
+ }
+ ]
+ },
"model": {
"type": "string",
"description": "This is the name of the model. Ex. cognitivecomputations/dolphin-mixtral-8x7b",
@@ -4491,14 +5094,6 @@
"minimum": 0,
"maximum": 2
},
- "knowledgeBase": {
- "description": "These are the options for the knowledge base.",
- "allOf": [
- {
- "$ref": "#/components/schemas/KnowledgeBase"
- }
- ]
- },
"maxTokens": {
"type": "number",
"description": "This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250.",
@@ -4573,6 +5168,19 @@
"type": "string"
}
},
+ "knowledgeBase": {
+ "description": "These are the options for the knowledge base.",
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/CanonicalKnowledgeBase",
+ "title": "Canonical"
+ },
+ {
+ "$ref": "#/components/schemas/CustomKnowledgeBase",
+ "title": "Custom"
+ }
+ ]
+ },
"provider": {
"type": "string",
"description": "This is the provider that will be used for the model.",
@@ -4662,14 +5270,6 @@
"minimum": 0,
"maximum": 2
},
- "knowledgeBase": {
- "description": "These are the options for the knowledge base.",
- "allOf": [
- {
- "$ref": "#/components/schemas/KnowledgeBase"
- }
- ]
- },
"maxTokens": {
"type": "number",
"description": "This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250.",
@@ -4744,6 +5344,19 @@
"type": "string"
}
},
+ "knowledgeBase": {
+ "description": "These are the options for the knowledge base.",
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/CanonicalKnowledgeBase",
+ "title": "Canonical"
+ },
+ {
+ "$ref": "#/components/schemas/CustomKnowledgeBase",
+ "title": "Custom"
+ }
+ ]
+ },
"provider": {
"type": "string",
"enum": [
@@ -4760,14 +5373,6 @@
"minimum": 0,
"maximum": 2
},
- "knowledgeBase": {
- "description": "These are the options for the knowledge base.",
- "allOf": [
- {
- "$ref": "#/components/schemas/KnowledgeBase"
- }
- ]
- },
"maxTokens": {
"type": "number",
"description": "This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250.",
@@ -4842,6 +5447,19 @@
"type": "string"
}
},
+ "knowledgeBase": {
+ "description": "These are the options for the knowledge base.",
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/CanonicalKnowledgeBase",
+ "title": "Canonical"
+ },
+ {
+ "$ref": "#/components/schemas/CustomKnowledgeBase",
+ "title": "Custom"
+ }
+ ]
+ },
"provider": {
"type": "string",
"enum": [
@@ -4858,14 +5476,6 @@
"minimum": 0,
"maximum": 2
},
- "knowledgeBase": {
- "description": "These are the options for the knowledge base.",
- "allOf": [
- {
- "$ref": "#/components/schemas/KnowledgeBase"
- }
- ]
- },
"maxTokens": {
"type": "number",
"description": "This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250.",
@@ -4940,6 +5550,19 @@
"type": "string"
}
},
+ "knowledgeBase": {
+ "description": "These are the options for the knowledge base.",
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/CanonicalKnowledgeBase",
+ "title": "Canonical"
+ },
+ {
+ "$ref": "#/components/schemas/CustomKnowledgeBase",
+ "title": "Custom"
+ }
+ ]
+ },
"provider": {
"type": "string",
"enum": [
@@ -4956,14 +5579,6 @@
"minimum": 0,
"maximum": 2
},
- "knowledgeBase": {
- "description": "These are the options for the knowledge base.",
- "allOf": [
- {
- "$ref": "#/components/schemas/KnowledgeBase"
- }
- ]
- },
"maxTokens": {
"type": "number",
"description": "This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250.",
@@ -5038,6 +5653,19 @@
"type": "string"
}
},
+ "knowledgeBase": {
+ "description": "These are the options for the knowledge base.",
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/CanonicalKnowledgeBase",
+ "title": "Canonical"
+ },
+ {
+ "$ref": "#/components/schemas/CustomKnowledgeBase",
+ "title": "Custom"
+ }
+ ]
+ },
"steps": {
"type": "array",
"items": {
@@ -5069,14 +5697,6 @@
"minimum": 0,
"maximum": 2
},
- "knowledgeBase": {
- "description": "These are the options for the knowledge base.",
- "allOf": [
- {
- "$ref": "#/components/schemas/KnowledgeBase"
- }
- ]
- },
"maxTokens": {
"type": "number",
"description": "This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250.",
@@ -5129,7 +5749,7 @@
"properties": {
"type": {
"type": "string",
- "description": "This is the type of the regex option. Options are:\n- `ignore-case`: Ignores the case of the text being matched.\n- `whole-word`: Matches whole words only.\n- `multi-line`: Matches across multiple lines.",
+ "description": "This is the type of the regex option. Options are:\n- `ignore-case`: Ignores the case of the text being matched. Add\n- `whole-word`: Matches whole words only.\n- `multi-line`: Matches across multiple lines.",
"enum": [
"ignore-case",
"whole-word",
@@ -5151,17 +5771,17 @@
"properties": {
"type": {
"type": "string",
- "description": "This is the regex replacement type. You can use this to replace a word or phrase that matches a pattern.\n\nUsage:\n- Replace all numbers with \"some number\": { type: 'regex', regex: '\\\\d+', value: 'some number' }\n- Replace email addresses with \"[EMAIL]\": { type: 'regex', regex: '\\\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\\\.[A-Z|a-z]{2,}\\\\b', value: '[EMAIL]' }\n- Replace phone numbers with a formatted version: { type: 'regex', regex: '(\\\\d{3})(\\\\d{3})(\\\\d{4})', value: '($1) $2-$3' }\n- Replace all instances of \"color\" or \"colour\" with \"hue\": { type: 'regex', regex: 'colou?r', value: 'hue' }\n- Capitalize the first letter of every sentence: { type: 'regex', regex: '(?\u003C=\\\\. |^)[a-z]', value: (match) =\u003E match.toUpperCase() }",
+ "description": "This is the regex replacement type. You can use this to replace a word or phrase that matches a pattern.\n\nUsage:\n- Replace all numbers with \"some number\": { type: 'regex', regex: '\\\\d+', value: 'some number' }\n- Replace email addresses with \"[EMAIL]\": { type: 'regex', regex: '\\\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\\\.[A-Z|a-z]{2,}\\\\b', value: '[EMAIL]' }\n- Replace phone numbers with a formatted version: { type: 'regex', regex: '(\\\\d{3})(\\\\d{3})(\\\\d{4})', value: '($1) $2-$3' }\n- Replace all instances of \"color\" or \"colour\" with \"hue\": { type: 'regex', regex: 'colou?r', value: 'hue' }\n- Capitalize the first letter of every sentence: { type: 'regex', regex: '(?<=\\\\. |^)[a-z]', value: (match) => match.toUpperCase() }",
"enum": [
"regex"
]
},
"regex": {
"type": "string",
- "description": "This is the regex pattern to replace."
+ "description": "This is the regex pattern to replace.\n\nNote:\n- This works by using the `string.replace` method in Node.JS. Eg. `\"hello there\".replace(/hello/g, \"hi\")` will return `\"hi there\"`.\n\nHot tip:\n- In JavaScript, escape `\\` when sending the regex pattern. Eg. `\"hello\\sthere\"` will be sent over the wire as `\"hellosthere\"`. Send `\"hello\\\\sthere\"` instead."
},
"options": {
- "description": "These are the options for the regex replacement. Default all options are disabled.\n\n@default []",
+ "description": "These are the options for the regex replacement. Defaults to all disabled.\n\n@default []",
"type": "array",
"items": {
"$ref": "#/components/schemas/RegexOption"
@@ -5216,7 +5836,7 @@
"properties": {
"enabled": {
"type": "boolean",
- "description": "This determines whether the model output is chunked before being sent to the voice provider. Default `true`.\n\nUsage:\n- To rely on the voice provider's audio generation logic, set this to `false`.\n- If seeing issues with quality, set this to `true`.\n\nIf disabled, Vapi-provided audio control tokens like \u003Cflush /\u003E will not work.\n\n@default true",
+ "description": "This determines whether the model output is chunked before being sent to the voice provider. Default `true`.\n\nUsage:\n- To rely on the voice provider's audio generation logic, set this to `false`.\n- If seeing issues with quality, set this to `true`.\n\nIf disabled, Vapi-provided audio control tokens like will not work.\n\n@default true",
"example": true
},
"minCharacters": {
@@ -5402,6 +6022,43 @@
"voiceId"
]
},
+ "CustomVoice": {
+ "type": "object",
+ "properties": {
+ "fillerInjectionEnabled": {
+ "type": "boolean",
+ "description": "This determines whether fillers are injected into the model output before inputting it into the voice provider.\n\nDefault `false` because you can achieve better results with prompting the model.",
+ "example": false
+ },
+ "provider": {
+ "type": "string",
+ "description": "This is the voice provider that will be used. Use `custom-voice` for providers that are not natively supported.",
+ "enum": [
+ "custom-voice"
+ ]
+ },
+ "server": {
+ "description": "This is where the voice request will be sent.\n\nRequest Example:\n\nPOST https://{server.url}\nContent-Type: application/json\n\n{\n \"messsage\": {\n \"type\": \"voice-request\",\n \"text\": \"Hello, world!\",\n \"sampleRate\": 24000,\n ...other metadata about the call...\n }\n}\n\nResponse Expected: 1-channel 16-bit raw PCM audio at the sample rate specified in the request. Here is how the response will be piped to the transport:\n```\nresponse.on('data', (chunk: Buffer) => {\n outputStream.write(chunk);\n});\n```",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/Server"
+ }
+ ]
+ },
+ "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",
+ "server"
+ ]
+ },
"DeepgramVoice": {
"type": "object",
"properties": {
@@ -6089,28 +6746,6 @@
"provider"
]
},
- "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`",
- "type": "array",
- "items": {
- "type": "object"
- }
- },
- "enabled": {
- "type": "boolean",
- "description": "This determines whether a summary is generated and stored in `call.analysis.summary`. Defaults to true.\n\nUsage:\n- If you want to disable the summary, set this to false.\n\n@default true"
- },
- "timeoutSeconds": {
- "type": "number",
- "description": "This is how long the request is tried before giving up. When request times out, `call.analysis.summary` will be empty.\n\nUsage:\n- To guarantee the summary is generated, set this value high. Note, this will delay the end of call report in cases where model is slow to respond.\n\n@default 5 seconds",
- "minimum": 1,
- "maximum": 60
- }
- }
- },
"StructuredDataPlan": {
"type": "object",
"properties": {
@@ -6276,6 +6911,119 @@
}
}
},
+ "AssistantCustomEndpointingRule": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "description": "This endpointing rule is based on the last assistant message before customer started speaking.\n\nFlow:\n- Assistant speaks\n- Customer starts speaking\n- Customer transcription comes in\n- This rule is evaluated on the last assistant message\n- If a match is found based on `regex`, the endpointing timeout is set to `timeoutSeconds`\n\nUsage:\n- If you have yes/no questions in your use case like \"are you interested in a loan?\", you can set a shorter timeout.\n- If you have questions where the customer may pause to look up information like \"what's my account number?\", you can set a longer timeout.",
+ "enum": [
+ "assistant"
+ ]
+ },
+ "regex": {
+ "type": "string",
+ "description": "This is the regex pattern to match.\n\nNote:\n- This works by using the `RegExp.test` method in Node.JS. Eg. `/hello/.test(\"hello there\")` will return `true`.\n\nHot tip:\n- In JavaScript, escape `\\` when sending the regex pattern. Eg. `\"hello\\sthere\"` will be sent over the wire as `\"hellosthere\"`. Send `\"hello\\\\sthere\"` instead.\n- `RegExp.test` does substring matching, so `/cat/.test(\"I love cats\")` will return `true`. To do full string matching, send \"^cat$\"."
+ },
+ "regexOptions": {
+ "description": "These are the options for the regex match. Defaults to all disabled.\n\n@default []",
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/RegexOption"
+ }
+ },
+ "timeoutSeconds": {
+ "type": "number",
+ "description": "This is the endpointing timeout in seconds, if the rule is matched.",
+ "minimum": 0,
+ "maximum": 15
+ }
+ },
+ "required": [
+ "type",
+ "regex",
+ "timeoutSeconds"
+ ]
+ },
+ "CustomerCustomEndpointingRule": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "description": "This endpointing rule is based on current customer message as they are speaking.\n\nFlow:\n- Assistant speaks\n- Customer starts speaking\n- Customer transcription comes in\n- This rule is evaluated on the current customer transcription\n- If a match is found based on `regex`, the endpointing timeout is set to `timeoutSeconds`\n\nUsage:\n- If you want to wait longer while customer is speaking numbers, you can set a longer timeout.",
+ "enum": [
+ "customer"
+ ]
+ },
+ "regex": {
+ "type": "string",
+ "description": "This is the regex pattern to match.\n\nNote:\n- This works by using the `RegExp.test` method in Node.JS. Eg. `/hello/.test(\"hello there\")` will return `true`.\n\nHot tip:\n- In JavaScript, escape `\\` when sending the regex pattern. Eg. `\"hello\\sthere\"` will be sent over the wire as `\"hellosthere\"`. Send `\"hello\\\\sthere\"` instead.\n- `RegExp.test` does substring matching, so `/cat/.test(\"I love cats\")` will return `true`. To do full string matching, send \"^cat$\"."
+ },
+ "regexOptions": {
+ "description": "These are the options for the regex match. Defaults to all disabled.\n\n@default []",
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/RegexOption"
+ }
+ },
+ "timeoutSeconds": {
+ "type": "number",
+ "description": "This is the endpointing timeout in seconds, if the rule is matched.",
+ "minimum": 0,
+ "maximum": 15
+ }
+ },
+ "required": [
+ "type",
+ "regex",
+ "timeoutSeconds"
+ ]
+ },
+ "BothCustomEndpointingRule": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "description": "This endpointing rule is based on both the last assistant message and the current customer message as they are speaking.\n\nFlow:\n- Assistant speaks\n- Customer starts speaking\n- Customer transcription comes in\n- This rule is evaluated on the last assistant message and the current customer transcription\n- If assistant message matches `assistantRegex` AND customer message matches `customerRegex`, the endpointing timeout is set to `timeoutSeconds`\n\nUsage:\n- If you want to wait longer while customer is speaking numbers, you can set a longer timeout.",
+ "enum": [
+ "both"
+ ]
+ },
+ "assistantRegex": {
+ "type": "string",
+ "description": "This is the regex pattern to match the assistant's message.\n\nNote:\n- This works by using the `RegExp.test` method in Node.JS. Eg. `/hello/.test(\"hello there\")` will return `true`.\n\nHot tip:\n- In JavaScript, escape `\\` when sending the regex pattern. Eg. `\"hello\\sthere\"` will be sent over the wire as `\"hellosthere\"`. Send `\"hello\\\\sthere\"` instead.\n- `RegExp.test` does substring matching, so `/cat/.test(\"I love cats\")` will return `true`. To do full string matching, send \"^cat$\"."
+ },
+ "assistantRegexOptions": {
+ "description": "These are the options for the assistant's message regex match. Defaults to all disabled.\n\n@default []",
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/RegexOption"
+ }
+ },
+ "customerRegex": {
+ "type": "string"
+ },
+ "customerRegexOptions": {
+ "description": "These are the options for the customer's message regex match. Defaults to all disabled.\n\n@default []",
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/RegexOption"
+ }
+ },
+ "timeoutSeconds": {
+ "type": "number",
+ "description": "This is the endpointing timeout in seconds, if the rule is matched.",
+ "minimum": 0,
+ "maximum": 15
+ }
+ },
+ "required": [
+ "type",
+ "assistantRegex",
+ "customerRegex",
+ "timeoutSeconds"
+ ]
+ },
"TranscriptionEndpointingPlan": {
"type": "object",
"properties": {
@@ -6307,16 +7055,36 @@
"properties": {
"waitSeconds": {
"type": "number",
- "description": "This is how long assistant waits before speaking. Defaults to 0.4.\n\nThis is the minimum it will wait but if there is latency is the pipeline, this minimum will be exceeded. This is really a stopgap in case the pipeline is moving too fast.\n\nExample:\n- If model generates tokens and voice generates bytes within 100ms, the pipeline still waits 300ms before outputting speech.\n\nUsage:\n- If the customer is taking long pauses, set this to a higher value.\n- If the assistant is accidentally jumping in too much, set this to a higher value.\n\n@default 0.4",
+ "description": "This is how long assistant waits before speaking. Defaults to 0.4.\n\nThis is the minimum it will wait but if there is latency is the pipeline, this minimum will be exceeded. This is intended as a stopgap in case the pipeline is moving too fast.\n\nExample:\n- If model generates tokens and voice generates bytes within 100ms, the pipeline still waits 300ms before outputting speech.\n\nUsage:\n- If the customer is taking long pauses, set this to a higher value.\n- If the assistant is accidentally jumping in too much, set this to a higher value.\n\n@default 0.4",
"minimum": 0,
"maximum": 5,
"example": 0.4
},
"smartEndpointingEnabled": {
"type": "boolean",
- "description": "This determines if a customer speech is considered done (endpointing) using the VAP model on customer's speech. This is good for middle-of-thought detection.\n\nOnce an endpoint is triggered, the request is sent to `assistant.model`.\n\nDefault `false` since experimental.\n\n@default false",
+ "description": "This determines if a customer speech is considered done (endpointing) using a Vapi custom-trained model on customer's speech. This is good for middle-of-thought detection.\n\nOnce an endpoint is triggered, the request is sent to `assistant.model`.\n\nUsage:\n- If your conversations are long-form and you want assistant to wait smartly even if customer pauses for a bit to think, you can use this instead.\n\nThis overrides `transcriptionEndpointingPlan`.\n\n@default false",
"example": false
},
+ "customEndpointingRules": {
+ "type": "array",
+ "description": "These are the custom endpointing rules to set an endpointing timeout based on a regex on the customer's speech or the assistant's last message.\n\nUsage:\n- If you have yes/no questions like \"are you interested in a loan?\", you can set a shorter timeout.\n- If you have questions where the customer may pause to look up information like \"what's my account number?\", you can set a longer timeout.\n- If you want to wait longer while customer is enumerating a list of numbers, you can set a longer timeout.\n\nThese override `transcriptionEndpointingPlan` and `smartEndpointingEnabled` when a rule is matched.\n\nThe rules are evaluated in order and the first one that matches will be used.\n\n@default []",
+ "items": {
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/AssistantCustomEndpointingRule",
+ "title": "Assistant"
+ },
+ {
+ "$ref": "#/components/schemas/CustomerCustomEndpointingRule",
+ "title": "Customer"
+ },
+ {
+ "$ref": "#/components/schemas/BothCustomEndpointingRule",
+ "title": "Both"
+ }
+ ]
+ }
+ },
"transcriptionEndpointingPlan": {
"description": "This determines how a customer speech is considered done (endpointing) using the transcription of customer's speech.\n\nOnce an endpoint is triggered, the request is sent to `assistant.model`.",
"allOf": [
@@ -6444,6 +7212,10 @@
"$ref": "#/components/schemas/CartesiaVoice",
"title": "CartesiaVoice"
},
+ {
+ "$ref": "#/components/schemas/CustomVoice",
+ "title": "CustomVoice"
+ },
{
"$ref": "#/components/schemas/DeepgramVoice",
"title": "DeepgramVoice"
@@ -6508,6 +7280,7 @@
"transcript",
"tool-calls",
"tool-calls-result",
+ "transfer-update",
"user-interrupted",
"voice-input"
],
@@ -6518,12 +7291,13 @@
"model-output",
"speech-update",
"status-update",
+ "transfer-update",
"transcript",
"tool-calls",
"user-interrupted",
"voice-input"
],
- "description": "These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transcript,tool-calls,user-interrupted,voice-input. You can check the shape of the messages in ClientMessage schema.",
+ "description": "These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transfer-update,transcript,tool-calls,user-interrupted,voice-input. You can check the shape of the messages in ClientMessage schema.",
"items": {
"type": "string",
"enum": [
@@ -6539,6 +7313,7 @@
"transcript",
"tool-calls",
"tool-calls-result",
+ "transfer-update",
"user-interrupted",
"voice-input"
]
@@ -6552,6 +7327,7 @@
"function-call",
"hang",
"language-changed",
+ "language-change-detected",
"model-output",
"phone-call-control",
"speech-update",
@@ -6583,6 +7359,7 @@
"function-call",
"hang",
"language-changed",
+ "language-change-detected",
"model-output",
"phone-call-control",
"speech-update",
@@ -6689,7 +7466,7 @@
},
"serverUrl": {
"type": "string",
- "description": "This is the URL Vapi will communicate with via HTTP GET and POST Requests. This is used for retrieving context, function calling, and end-of-call reports.\n\nAll requests will be sent with the call object among other things relevant to that message. 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: tool.server.url \u003E assistant.serverUrl \u003E phoneNumber.serverUrl \u003E org.serverUrl"
+ "description": "This is the URL Vapi will communicate with via HTTP GET and POST Requests. This is used for retrieving context, function calling, and end-of-call reports.\n\nAll requests will be sent with the call object among other things relevant to that message. 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: tool.server.url > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl"
},
"serverUrlSecret": {
"type": "string",
@@ -6829,6 +7606,10 @@
"$ref": "#/components/schemas/CartesiaVoice",
"title": "CartesiaVoice"
},
+ {
+ "$ref": "#/components/schemas/CustomVoice",
+ "title": "CustomVoice"
+ },
{
"$ref": "#/components/schemas/DeepgramVoice",
"title": "DeepgramVoice"
@@ -6893,6 +7674,7 @@
"transcript",
"tool-calls",
"tool-calls-result",
+ "transfer-update",
"user-interrupted",
"voice-input"
],
@@ -6903,12 +7685,13 @@
"model-output",
"speech-update",
"status-update",
+ "transfer-update",
"transcript",
"tool-calls",
"user-interrupted",
"voice-input"
],
- "description": "These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transcript,tool-calls,user-interrupted,voice-input. You can check the shape of the messages in ClientMessage schema.",
+ "description": "These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transfer-update,transcript,tool-calls,user-interrupted,voice-input. You can check the shape of the messages in ClientMessage schema.",
"items": {
"type": "string",
"enum": [
@@ -6924,6 +7707,7 @@
"transcript",
"tool-calls",
"tool-calls-result",
+ "transfer-update",
"user-interrupted",
"voice-input"
]
@@ -6937,6 +7721,7 @@
"function-call",
"hang",
"language-changed",
+ "language-change-detected",
"model-output",
"phone-call-control",
"speech-update",
@@ -6968,6 +7753,7 @@
"function-call",
"hang",
"language-changed",
+ "language-change-detected",
"model-output",
"phone-call-control",
"speech-update",
@@ -7078,7 +7864,7 @@
},
"serverUrl": {
"type": "string",
- "description": "This is the URL Vapi will communicate with via HTTP GET and POST Requests. This is used for retrieving context, function calling, and end-of-call reports.\n\nAll requests will be sent with the call object among other things relevant to that message. 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: tool.server.url \u003E assistant.serverUrl \u003E phoneNumber.serverUrl \u003E org.serverUrl"
+ "description": "This is the URL Vapi will communicate with via HTTP GET and POST Requests. This is used for retrieving context, function calling, and end-of-call reports.\n\nAll requests will be sent with the call object among other things relevant to that message. 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: tool.server.url > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl"
},
"serverUrlSecret": {
"type": "string",
@@ -7246,7 +8032,7 @@
},
"serverUrl": {
"type": "string",
- "description": "This is the server URL where messages will be sent for calls on this number. This includes the `assistant-request` message.\n\nYou can see the shape of the messages sent in `ServerMessage`.\n\nThis overrides the `org.serverUrl`. Order of precedence: tool.server.url \u003E assistant.serverUrl \u003E phoneNumber.serverUrl \u003E org.serverUrl."
+ "description": "This is the server URL where messages will be sent for calls on this number. This includes the `assistant-request` message.\n\nYou can see the shape of the messages sent in `ServerMessage`.\n\nThis overrides the `org.serverUrl`. Order of precedence: tool.server.url > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl."
},
"serverUrlSecret": {
"type": "string",
@@ -7285,7 +8071,7 @@
},
"name": {
"type": "string",
- "description": "This is the name of the customer. This is just for your own reference.\n\nFor SIP inbound calls, this is extracted from the `From` SIP header with format `\"Display Name\" \u003Csip:username@domain\u003E`.",
+ "description": "This is the name of the customer. This is just for your own reference.\n\nFor SIP inbound calls, this is extracted from the `From` SIP header with format `\"Display Name\" `.",
"maxLength": 40
}
}
@@ -7639,32 +8425,15 @@
"type": "string",
"description": "This is the explanation for how the call ended.",
"enum": [
- "assistant-error",
- "assistant-not-found",
"db-error",
- "no-server-available",
+ "assistant-not-found",
"license-check-failed",
- "pipeline-error-openai-llm-failed",
- "pipeline-error-azure-openai-llm-failed",
- "pipeline-error-groq-llm-failed",
- "pipeline-error-anthropic-llm-failed",
"pipeline-error-vapi-llm-failed",
"pipeline-error-vapi-400-bad-request-validation-failed",
"pipeline-error-vapi-401-unauthorized",
"pipeline-error-vapi-403-model-access-denied",
"pipeline-error-vapi-429-exceeded-quota",
"pipeline-error-vapi-500-server-error",
- "pipeline-error-openai-voice-failed",
- "pipeline-error-cartesia-voice-failed",
- "pipeline-error-deepgram-transcriber-failed",
- "pipeline-error-deepgram-voice-failed",
- "pipeline-error-gladia-transcriber-failed",
- "pipeline-error-eleven-labs-voice-failed",
- "pipeline-error-playht-voice-failed",
- "pipeline-error-lmnt-voice-failed",
- "pipeline-error-azure-voice-failed",
- "pipeline-error-rime-ai-voice-failed",
- "pipeline-error-neets-voice-failed",
"pipeline-no-available-model",
"worker-shutdown",
"unknown-error",
@@ -7677,6 +8446,21 @@
"vapifault-transport-never-connected",
"vapifault-web-call-worker-setup-failed",
"vapifault-transport-connected-but-call-not-active",
+ "vapifault-call-started-but-connection-to-transport-missing",
+ "pipeline-error-openai-voice-failed",
+ "pipeline-error-cartesia-voice-failed",
+ "pipeline-error-deepgram-transcriber-failed",
+ "pipeline-error-deepgram-voice-failed",
+ "pipeline-error-gladia-transcriber-failed",
+ "pipeline-error-eleven-labs-voice-failed",
+ "pipeline-error-playht-voice-failed",
+ "pipeline-error-lmnt-voice-failed",
+ "pipeline-error-azure-voice-failed",
+ "pipeline-error-rime-ai-voice-failed",
+ "pipeline-error-neets-voice-failed",
+ "pipeline-error-openai-llm-failed",
+ "pipeline-error-azure-openai-llm-failed",
+ "pipeline-error-groq-llm-failed",
"assistant-not-invalid",
"assistant-not-provided",
"call-start-error-neither-assistant-nor-server-set",
@@ -7718,6 +8502,7 @@
"pipeline-error-anthropic-403-model-access-denied",
"pipeline-error-anthropic-429-exceeded-quota",
"pipeline-error-anthropic-500-server-error",
+ "pipeline-error-anthropic-llm-failed",
"pipeline-error-together-ai-400-bad-request-validation-failed",
"pipeline-error-together-ai-401-unauthorized",
"pipeline-error-together-ai-403-model-access-denied",
@@ -7786,10 +8571,12 @@
"pipeline-error-eleven-labs-voice-not-allowed-for-free-users",
"pipeline-error-eleven-labs-500-server-error",
"pipeline-error-eleven-labs-max-character-limit-exceeded",
+ "pipeline-error-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification",
"pipeline-error-playht-request-timed-out",
"pipeline-error-playht-invalid-voice",
"pipeline-error-playht-unexpected-error",
"pipeline-error-playht-out-of-credits",
+ "pipeline-error-playht-invalid-emotion",
"pipeline-error-playht-voice-must-be-a-valid-voice-manifest-uri",
"pipeline-error-playht-401-unauthorized",
"pipeline-error-playht-403-forbidden-out-of-characters",
@@ -7797,16 +8584,19 @@
"pipeline-error-playht-429-exceeded-quota",
"pipeline-error-playht-502-gateway-error",
"pipeline-error-playht-504-gateway-error",
- "pipeline-error-deepgram-403-model-access-denied",
- "pipeline-error-deepgram-404-not-found",
- "pipeline-error-deepgram-400-no-such-model-language-tier-combination",
- "pipeline-error-deepgram-500-returning-invalid-json",
- "sip-gateway-failed-to-connect-call",
+ "pipeline-error-deepgram-returning-403-model-access-denied",
+ "pipeline-error-deepgram-returning-401-invalid-credentials",
+ "pipeline-error-deepgram-returning-404-not-found",
+ "pipeline-error-deepgram-returning-400-no-such-model-language-tier-combination",
+ "pipeline-error-deepgram-returning-500-invalid-json",
+ "pipeline-error-deepgram-returning-502-network-error",
+ "pipeline-error-deepgram-returning-502-bad-gateway-ehostunreach",
"silence-timed-out",
+ "sip-gateway-failed-to-connect-call",
"twilio-failed-to-connect-call",
"twilio-reported-customer-misdialed",
- "voicemail",
- "vonage-rejected"
+ "vonage-rejected",
+ "voicemail"
]
},
"destination": {
@@ -8193,6 +8983,10 @@
"$ref": "#/components/schemas/CartesiaVoice",
"title": "CartesiaVoice"
},
+ {
+ "$ref": "#/components/schemas/CustomVoice",
+ "title": "CustomVoice"
+ },
{
"$ref": "#/components/schemas/DeepgramVoice",
"title": "DeepgramVoice"
@@ -8257,6 +9051,7 @@
"transcript",
"tool-calls",
"tool-calls-result",
+ "transfer-update",
"user-interrupted",
"voice-input"
],
@@ -8267,12 +9062,13 @@
"model-output",
"speech-update",
"status-update",
+ "transfer-update",
"transcript",
"tool-calls",
"user-interrupted",
"voice-input"
],
- "description": "These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transcript,tool-calls,user-interrupted,voice-input. You can check the shape of the messages in ClientMessage schema.",
+ "description": "These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transfer-update,transcript,tool-calls,user-interrupted,voice-input. You can check the shape of the messages in ClientMessage schema.",
"items": {
"type": "string",
"enum": [
@@ -8288,6 +9084,7 @@
"transcript",
"tool-calls",
"tool-calls-result",
+ "transfer-update",
"user-interrupted",
"voice-input"
]
@@ -8301,6 +9098,7 @@
"function-call",
"hang",
"language-changed",
+ "language-change-detected",
"model-output",
"phone-call-control",
"speech-update",
@@ -8332,6 +9130,7 @@
"function-call",
"hang",
"language-changed",
+ "language-change-detected",
"model-output",
"phone-call-control",
"speech-update",
@@ -8438,7 +9237,7 @@
},
"serverUrl": {
"type": "string",
- "description": "This is the URL Vapi will communicate with via HTTP GET and POST Requests. This is used for retrieving context, function calling, and end-of-call reports.\n\nAll requests will be sent with the call object among other things relevant to that message. 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: tool.server.url \u003E assistant.serverUrl \u003E phoneNumber.serverUrl \u003E org.serverUrl"
+ "description": "This is the URL Vapi will communicate with via HTTP GET and POST Requests. This is used for retrieving context, function calling, and end-of-call reports.\n\nAll requests will be sent with the call object among other things relevant to that message. 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: tool.server.url > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl"
},
"serverUrlSecret": {
"type": "string",
@@ -8602,6 +9401,10 @@
"$ref": "#/components/schemas/CartesiaVoice",
"title": "CartesiaVoice"
},
+ {
+ "$ref": "#/components/schemas/CustomVoice",
+ "title": "CustomVoice"
+ },
{
"$ref": "#/components/schemas/DeepgramVoice",
"title": "DeepgramVoice"
@@ -8666,6 +9469,7 @@
"transcript",
"tool-calls",
"tool-calls-result",
+ "transfer-update",
"user-interrupted",
"voice-input"
],
@@ -8676,12 +9480,13 @@
"model-output",
"speech-update",
"status-update",
+ "transfer-update",
"transcript",
"tool-calls",
"user-interrupted",
"voice-input"
],
- "description": "These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transcript,tool-calls,user-interrupted,voice-input. You can check the shape of the messages in ClientMessage schema.",
+ "description": "These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transfer-update,transcript,tool-calls,user-interrupted,voice-input. You can check the shape of the messages in ClientMessage schema.",
"items": {
"type": "string",
"enum": [
@@ -8697,6 +9502,7 @@
"transcript",
"tool-calls",
"tool-calls-result",
+ "transfer-update",
"user-interrupted",
"voice-input"
]
@@ -8710,6 +9516,7 @@
"function-call",
"hang",
"language-changed",
+ "language-change-detected",
"model-output",
"phone-call-control",
"speech-update",
@@ -8741,6 +9548,7 @@
"function-call",
"hang",
"language-changed",
+ "language-change-detected",
"model-output",
"phone-call-control",
"speech-update",
@@ -8847,7 +9655,7 @@
},
"serverUrl": {
"type": "string",
- "description": "This is the URL Vapi will communicate with via HTTP GET and POST Requests. This is used for retrieving context, function calling, and end-of-call reports.\n\nAll requests will be sent with the call object among other things relevant to that message. 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: tool.server.url \u003E assistant.serverUrl \u003E phoneNumber.serverUrl \u003E org.serverUrl"
+ "description": "This is the URL Vapi will communicate with via HTTP GET and POST Requests. This is used for retrieving context, function calling, and end-of-call reports.\n\nAll requests will be sent with the call object among other things relevant to that message. 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: tool.server.url > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl"
},
"serverUrlSecret": {
"type": "string",
@@ -8972,7 +9780,7 @@
},
"serverUrl": {
"type": "string",
- "description": "This is the server URL where messages will be sent for calls on this number. This includes the `assistant-request` message.\n\nYou can see the shape of the messages sent in `ServerMessage`.\n\nThis overrides the `org.serverUrl`. Order of precedence: tool.server.url \u003E assistant.serverUrl \u003E phoneNumber.serverUrl \u003E org.serverUrl."
+ "description": "This is the server URL where messages will be sent for calls on this number. This includes the `assistant-request` message.\n\nYou can see the shape of the messages sent in `ServerMessage`.\n\nThis overrides the `org.serverUrl`. Order of precedence: tool.server.url > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl."
},
"serverUrlSecret": {
"type": "string",
@@ -9054,7 +9862,7 @@
},
"serverUrl": {
"type": "string",
- "description": "This is the server URL where messages will be sent for calls on this number. This includes the `assistant-request` message.\n\nYou can see the shape of the messages sent in `ServerMessage`.\n\nThis overrides the `org.serverUrl`. Order of precedence: tool.server.url \u003E assistant.serverUrl \u003E phoneNumber.serverUrl \u003E org.serverUrl."
+ "description": "This is the server URL where messages will be sent for calls on this number. This includes the `assistant-request` message.\n\nYou can see the shape of the messages sent in `ServerMessage`.\n\nThis overrides the `org.serverUrl`. Order of precedence: tool.server.url > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl."
},
"serverUrlSecret": {
"type": "string",
@@ -9140,7 +9948,7 @@
},
"serverUrl": {
"type": "string",
- "description": "This is the server URL where messages will be sent for calls on this number. This includes the `assistant-request` message.\n\nYou can see the shape of the messages sent in `ServerMessage`.\n\nThis overrides the `org.serverUrl`. Order of precedence: tool.server.url \u003E assistant.serverUrl \u003E phoneNumber.serverUrl \u003E org.serverUrl."
+ "description": "This is the server URL where messages will be sent for calls on this number. This includes the `assistant-request` message.\n\nYou can see the shape of the messages sent in `ServerMessage`.\n\nThis overrides the `org.serverUrl`. Order of precedence: tool.server.url > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl."
},
"serverUrlSecret": {
"type": "string",
@@ -9221,7 +10029,7 @@
},
"serverUrl": {
"type": "string",
- "description": "This is the server URL where messages will be sent for calls on this number. This includes the `assistant-request` message.\n\nYou can see the shape of the messages sent in `ServerMessage`.\n\nThis overrides the `org.serverUrl`. Order of precedence: tool.server.url \u003E assistant.serverUrl \u003E phoneNumber.serverUrl \u003E org.serverUrl."
+ "description": "This is the server URL where messages will be sent for calls on this number. This includes the `assistant-request` message.\n\nYou can see the shape of the messages sent in `ServerMessage`.\n\nThis overrides the `org.serverUrl`. Order of precedence: tool.server.url > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl."
},
"serverUrlSecret": {
"type": "string",
@@ -9294,7 +10102,7 @@
},
"serverUrl": {
"type": "string",
- "description": "This is the server URL where messages will be sent for calls on this number. This includes the `assistant-request` message.\n\nYou can see the shape of the messages sent in `ServerMessage`.\n\nThis overrides the `org.serverUrl`. Order of precedence: tool.server.url \u003E assistant.serverUrl \u003E phoneNumber.serverUrl \u003E org.serverUrl."
+ "description": "This is the server URL where messages will be sent for calls on this number. This includes the `assistant-request` message.\n\nYou can see the shape of the messages sent in `ServerMessage`.\n\nThis overrides the `org.serverUrl`. Order of precedence: tool.server.url > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl."
},
"serverUrlSecret": {
"type": "string",
@@ -9356,7 +10164,7 @@
},
"serverUrl": {
"type": "string",
- "description": "This is the server URL where messages will be sent for calls on this number. This includes the `assistant-request` message.\n\nYou can see the shape of the messages sent in `ServerMessage`.\n\nThis overrides the `org.serverUrl`. Order of precedence: tool.server.url \u003E assistant.serverUrl \u003E phoneNumber.serverUrl \u003E org.serverUrl."
+ "description": "This is the server URL where messages will be sent for calls on this number. This includes the `assistant-request` message.\n\nYou can see the shape of the messages sent in `ServerMessage`.\n\nThis overrides the `org.serverUrl`. Order of precedence: tool.server.url > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl."
},
"serverUrlSecret": {
"type": "string",
@@ -9416,7 +10224,7 @@
},
"serverUrl": {
"type": "string",
- "description": "This is the server URL where messages will be sent for calls on this number. This includes the `assistant-request` message.\n\nYou can see the shape of the messages sent in `ServerMessage`.\n\nThis overrides the `org.serverUrl`. Order of precedence: tool.server.url \u003E assistant.serverUrl \u003E phoneNumber.serverUrl \u003E org.serverUrl."
+ "description": "This is the server URL where messages will be sent for calls on this number. This includes the `assistant-request` message.\n\nYou can see the shape of the messages sent in `ServerMessage`.\n\nThis overrides the `org.serverUrl`. Order of precedence: tool.server.url > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl."
},
"serverUrlSecret": {
"type": "string",
@@ -9471,7 +10279,7 @@
},
"serverUrl": {
"type": "string",
- "description": "This is the server URL where messages will be sent for calls on this number. This includes the `assistant-request` message.\n\nYou can see the shape of the messages sent in `ServerMessage`.\n\nThis overrides the `org.serverUrl`. Order of precedence: tool.server.url \u003E assistant.serverUrl \u003E phoneNumber.serverUrl \u003E org.serverUrl."
+ "description": "This is the server URL where messages will be sent for calls on this number. This includes the `assistant-request` message.\n\nYou can see the shape of the messages sent in `ServerMessage`.\n\nThis overrides the `org.serverUrl`. Order of precedence: tool.server.url > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl."
},
"serverUrlSecret": {
"type": "string",
@@ -9520,7 +10328,7 @@
},
"serverUrl": {
"type": "string",
- "description": "This is the server URL where messages will be sent for calls on this number. This includes the `assistant-request` message.\n\nYou can see the shape of the messages sent in `ServerMessage`.\n\nThis overrides the `org.serverUrl`. Order of precedence: tool.server.url \u003E assistant.serverUrl \u003E phoneNumber.serverUrl \u003E org.serverUrl."
+ "description": "This is the server URL where messages will be sent for calls on this number. This includes the `assistant-request` message.\n\nYou can see the shape of the messages sent in `ServerMessage`.\n\nThis overrides the `org.serverUrl`. Order of precedence: tool.server.url > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl."
},
"serverUrlSecret": {
"type": "string",
@@ -9571,56 +10379,352 @@
},
"serverUrl": {
"type": "string",
- "description": "This is the server URL where messages will be sent for calls on this number. This includes the `assistant-request` message.\n\nYou can see the shape of the messages sent in `ServerMessage`.\n\nThis overrides the `org.serverUrl`. Order of precedence: tool.server.url \u003E assistant.serverUrl \u003E phoneNumber.serverUrl \u003E org.serverUrl."
+ "description": "This is the server URL where messages will be sent for calls on this number. This includes the `assistant-request` message.\n\nYou can see the shape of the messages sent in `ServerMessage`.\n\nThis overrides the `org.serverUrl`. Order of precedence: tool.server.url > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl."
+ },
+ "serverUrlSecret": {
+ "type": "string",
+ "description": "This is the secret Vapi will send with every message to your server. It's sent as a header called x-vapi-secret.\n\nSame precedence logic as serverUrl."
+ }
+ },
+ "required": [
+ "vonagePhoneNumber",
+ "credentialId"
+ ]
+ },
+ "UpdatePhoneNumberDTO": {
+ "type": "object",
+ "properties": {
+ "fallbackDestination": {
+ "description": "This is the fallback destination an inbound call will be transferred to if:\n1. `assistantId` is not set\n2. `squadId` is not set\n3. and, `assistant-request` message to the `serverUrl` fails\n\nIf this is not set and above conditions are met, the inbound call is hung up with an error message.",
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/TransferDestinationNumber",
+ "title": "NumberTransferDestination"
+ },
+ {
+ "$ref": "#/components/schemas/TransferDestinationSip",
+ "title": "SipTransferDestination"
+ }
+ ]
+ },
+ "name": {
+ "type": "string",
+ "description": "This is the name of the phone number. This is just for your own reference.",
+ "maxLength": 40
+ },
+ "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."
+ },
+ "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."
+ },
+ "serverUrl": {
+ "type": "string",
+ "description": "This is the server URL where messages will be sent for calls on this number. This includes the `assistant-request` message.\n\nYou can see the shape of the messages sent in `ServerMessage`.\n\nThis overrides the `org.serverUrl`. Order of precedence: tool.server.url > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl."
},
"serverUrlSecret": {
"type": "string",
"description": "This is the secret Vapi will send with every message to your server. It's sent as a header called x-vapi-secret.\n\nSame precedence logic as serverUrl."
}
+ }
+ },
+ "AutoReloadPlan": {
+ "type": "object",
+ "properties": {
+ "credits": {
+ "type": "number",
+ "description": "This the amount of credits to reload."
+ },
+ "threshold": {
+ "type": "number",
+ "description": "This is the limit at which the reload is triggered."
+ }
+ },
+ "required": [
+ "credits",
+ "threshold"
+ ]
+ },
+ "Subscription": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "This is the unique identifier for the subscription."
+ },
+ "createdAt": {
+ "format": "date-time",
+ "type": "string",
+ "description": "This is the timestamp when the subscription was created."
+ },
+ "updatedAt": {
+ "format": "date-time",
+ "type": "string",
+ "description": "This is the timestamp when the subscription was last updated."
+ },
+ "type": {
+ "type": "string",
+ "description": "This is the type / tier of the subscription.",
+ "enum": [
+ "trial",
+ "pay-as-you-go",
+ "enterprise"
+ ]
+ },
+ "status": {
+ "type": "string",
+ "description": "This is the status of the subscription. Past due subscriptions are subscriptions\nwith past due payments.",
+ "enum": [
+ "active",
+ "past-due"
+ ]
+ },
+ "credits": {
+ "type": "number",
+ "description": "This is the number of credits the subscription currently has."
+ },
+ "concurrencyLimit": {
+ "type": "number",
+ "description": "This is the concurrency limit for the subscription",
+ "minimum": 10
+ },
+ "monthlyChargeScheduleId": {
+ "type": "number",
+ "description": "This is the ID of the monthly job that charges for subscription add ons and phone numbers."
+ },
+ "monthlyCreditCheckScheduleId": {
+ "type": "number",
+ "description": "This is the ID of the monthly job that checks whether the credit balance of the subscription\nis sufficient for the monthly charge."
+ },
+ "stripeCustomerId": {
+ "type": "string",
+ "description": "This is the Stripe customer ID."
+ },
+ "stripePaymentMethodId": {
+ "type": "string",
+ "description": "This is the Stripe payment ID."
+ },
+ "hipaaEnabled": {
+ "type": "boolean",
+ "description": "This is the HIPAA enabled flag for the subscription. It determines whether orgs under this\nsubscription have the option to enable HIPAA compliance."
+ },
+ "commonPaperAgreementId": {
+ "type": "string",
+ "description": "This is the ID for the Common Paper agreement outlining the HIPAA contract."
+ },
+ "stripePaymentMethodFingerprint": {
+ "type": "string",
+ "description": "This is the Stripe fingerprint of the payment method (card). It allows us\nto detect users who try to abuse our system through multiple sign-ups."
+ },
+ "stripeCustomerEmail": {
+ "type": "string",
+ "description": "This is the stripe customer's email."
+ },
+ "referredByEmail": {
+ "type": "string",
+ "description": "This is the email of the referrer for the subscription."
+ },
+ "autoReloadPlan": {
+ "description": "This is the auto reload plan configured for the subscription.",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/AutoReloadPlan"
+ }
+ ]
+ },
+ "minutesIncluded": {
+ "type": "number",
+ "description": "The number of minutes included in the subscription. Enterprise only."
+ },
+ "minutesOverageCost": {
+ "type": "number",
+ "description": "The cost of minutes over the included amount. Enterprise only."
+ },
+ "providersIncluded": {
+ "description": "The list of providers included in the subscription. Enterprise only.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "required": [
+ "id",
+ "createdAt",
+ "updatedAt",
+ "type",
+ "status",
+ "credits",
+ "concurrencyLimit"
+ ]
+ },
+ "Payment": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique identifier for the payment"
+ },
+ "orgId": {
+ "type": "string",
+ "description": "Unique identifier for the organization"
+ },
+ "cost": {
+ "type": "number",
+ "description": "This is the total cost of the payment, which is the sum of all the costs in the costs object."
+ },
+ "costs": {
+ "description": "The different costs for the payment.",
+ "type": "array",
+ "items": {
+ "type": "object"
+ }
+ },
+ "status": {
+ "type": "string",
+ "description": "Status of the payment",
+ "enum": [
+ "past-due",
+ "finalized",
+ "refunded"
+ ]
+ },
+ "createdAt": {
+ "format": "date-time",
+ "type": "string",
+ "description": "Timestamp when the payment was created"
+ },
+ "updatedAt": {
+ "format": "date-time",
+ "type": "string",
+ "description": "Timestamp when the payment was last updated"
+ },
+ "isAutoReload": {
+ "type": "boolean",
+ "description": "Is the payment an auto reload payment"
+ },
+ "subscriptionId": {
+ "type": "string",
+ "description": "Unique identifier of the associated subscription"
+ },
+ "callId": {
+ "type": "string",
+ "description": "Unique identifier for the call"
+ },
+ "phoneNumberId": {
+ "type": "string",
+ "description": "Unique identifier of the associated phone number"
+ },
+ "stripePaymentIntentId": {
+ "type": "string",
+ "description": "Unique identifier of the associated stripe payment intent"
+ }
+ },
+ "required": [
+ "id",
+ "cost",
+ "costs",
+ "status",
+ "createdAt",
+ "updatedAt",
+ "isAutoReload",
+ "subscriptionId"
+ ]
+ },
+ "SubscriptionMonthlyCharge": {
+ "type": "object",
+ "properties": {
+ "monthlyCharge": {
+ "type": "number",
+ "description": "This is the monthly charge for the subscription."
+ },
+ "costs": {
+ "description": "These are the different costs that make up the monthly charge.",
+ "type": "array",
+ "items": {
+ "type": "object"
+ }
+ }
+ },
+ "required": [
+ "monthlyCharge",
+ "costs"
+ ]
+ },
+ "ChargeDTO": {
+ "type": "object",
+ "properties": {
+ "credits": {
+ "type": "number",
+ "description": "This is the number of credits to add to the subscription."
+ },
+ "autoReloadPlan": {
+ "description": "This is the auto reload plan to be configured for the subscription.",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/AutoReloadPlan"
+ }
+ ]
+ }
+ },
+ "required": [
+ "credits"
+ ]
+ },
+ "PaymentRetryDTO": {
+ "type": "object",
+ "properties": {
+ "paymentId": {
+ "type": "string",
+ "description": "This is the payment ID to retry."
+ }
},
"required": [
- "vonagePhoneNumber",
- "credentialId"
+ "paymentId"
]
},
- "UpdatePhoneNumberDTO": {
+ "SubscriptionConcurrencyLineBuyDTO": {
"type": "object",
"properties": {
- "fallbackDestination": {
- "description": "This is the fallback destination an inbound call will be transferred to if:\n1. `assistantId` is not set\n2. `squadId` is not set\n3. and, `assistant-request` message to the `serverUrl` fails\n\nIf this is not set and above conditions are met, the inbound call is hung up with an error message.",
- "oneOf": [
- {
- "$ref": "#/components/schemas/TransferDestinationNumber",
- "title": "NumberTransferDestination"
- },
- {
- "$ref": "#/components/schemas/TransferDestinationSip",
- "title": "SipTransferDestination"
- }
- ]
- },
- "name": {
- "type": "string",
- "description": "This is the name of the phone number. This is just for your own reference.",
- "maxLength": 40
- },
- "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."
- },
- "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."
- },
- "serverUrl": {
+ "quantity": {
+ "type": "number",
+ "description": "This is the number of concurrency lines to purchase."
+ }
+ },
+ "required": [
+ "quantity"
+ ]
+ },
+ "SubscriptionConcurrencyLineRemoveDTO": {
+ "type": "object",
+ "properties": {
+ "quantity": {
+ "type": "number",
+ "description": "This is the number of concurrency lines to remove."
+ }
+ },
+ "required": [
+ "quantity"
+ ]
+ },
+ "HipaaBuyDTO": {
+ "type": "object",
+ "properties": {
+ "recipientName": {
"type": "string",
- "description": "This is the server URL where messages will be sent for calls on this number. This includes the `assistant-request` message.\n\nYou can see the shape of the messages sent in `ServerMessage`.\n\nThis overrides the `org.serverUrl`. Order of precedence: tool.server.url \u003E assistant.serverUrl \u003E phoneNumber.serverUrl \u003E org.serverUrl."
+ "description": "This is the name of the recipient."
},
- "serverUrlSecret": {
+ "recipientOrganization": {
"type": "string",
- "description": "This is the secret Vapi will send with every message to your server. It's sent as a header called x-vapi-secret.\n\nSame precedence logic as serverUrl."
+ "description": "This is the name of the recipient organization."
}
- }
+ },
+ "required": [
+ "recipientName",
+ "recipientOrganization"
+ ]
},
"Squad": {
"type": "object",
@@ -9996,18 +11100,17 @@
"gte",
"lt",
"lte"
- ],
- "pattern": "ALLOWED_REGEX"
+ ]
},
"leftSide": {
"type": "string",
"description": "This is the left side of the operation.\n\nYou can reference any variable in the context of the current block execution (step):\n- \"{{output.your-property-name}}\" for current step's output\n- \"{{input.your-property-name}}\" for current step's input\n- \"{{your-step-name.output.your-property-name}}\" for another step's output (in the same workflow; read caveat #1)\n- \"{{your-step-name.input.your-property-name}}\" for another step's input (in the same workflow; read caveat #1)\n- \"{{your-block-name.output.your-property-name}}\" for another block's output (in the same workflow; read caveat #2)\n- \"{{your-block-name.input.your-property-name}}\" for another block's input (in the same workflow; read caveat #2)\n- \"{{workflow.input.your-property-name}}\" for the current workflow's input\n- \"{{global.your-property-name}}\" for the global context\n\nOr, you can use a constant:\n- \"1\"\n- \"text\"\n- \"true\"\n- \"false\"\n\nOr, you can mix and match with string interpolation:\n- \"{{your-property-name}}-{{input.your-property-name-2}}-1\"\n\nCaveats:\n1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.input/output.propertyName}} will reference the latest usage of the step.\n2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.input/output.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow with steps.",
- "pattern": "ALLOWED_REGEX"
+ "maxLength": 1000
},
"rightSide": {
"type": "string",
"description": "This is the right side of the operation.\n\nYou can reference any variable in the context of the current block execution (step):\n- \"{{output.your-property-name}}\" for current step's output\n- \"{{input.your-property-name}}\" for current step's input\n- \"{{your-step-name.output.your-property-name}}\" for another step's output (in the same workflow; read caveat #1)\n- \"{{your-step-name.input.your-property-name}}\" for another step's input (in the same workflow; read caveat #1)\n- \"{{your-block-name.output.your-property-name}}\" for another block's output (in the same workflow; read caveat #2)\n- \"{{your-block-name.input.your-property-name}}\" for another block's input (in the same workflow; read caveat #2)\n- \"{{workflow.input.your-property-name}}\" for the current workflow's input\n- \"{{global.your-property-name}}\" for the global context\n\nOr, you can use a constant:\n- \"1\"\n- \"text\"\n- \"true\"\n- \"false\"\n\nOr, you can mix and match with string interpolation:\n- \"{{your-property-name}}-{{input.your-property-name-2}}-1\"\n\nCaveats:\n1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.input/output.propertyName}} will reference the latest usage of the step.\n2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.input/output.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow with steps.",
- "pattern": "ALLOWED_REGEX"
+ "maxLength": 1000
}
},
"required": [
@@ -10041,6 +11144,18 @@
"BlockStartMessage": {
"type": "object",
"properties": {
+ "contents": {
+ "type": "array",
+ "description": "This is an alternative to the `content` property. It allows to specify variants of the same content, one per language.\n\nUsage:\n- If your assistants are multilingual, you can provide content for each language.\n\nThis will override the `content` property.",
+ "items": {
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/TextContent",
+ "title": "Text"
+ }
+ ]
+ }
+ },
"conditions": {
"type": "array",
"description": "This is an optional array of conditions that must be met for this message to be triggered.",
@@ -10066,17 +11181,29 @@
},
"content": {
"type": "string",
- "description": "This is the content that the assistant will say when this message is triggered."
+ "description": "This is the content that the assistant will say when this message is triggered.",
+ "maxLength": 1000
}
},
"required": [
- "type",
- "content"
+ "type"
]
},
"BlockCompleteMessage": {
"type": "object",
"properties": {
+ "contents": {
+ "type": "array",
+ "description": "This is an alternative to the `content` property. It allows to specify variants of the same content, one per language.\n\nUsage:\n- If your assistants are multilingual, you can provide content for each language.\n\nThis will override the `content` property.",
+ "items": {
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/TextContent",
+ "title": "Text"
+ }
+ ]
+ }
+ },
"conditions": {
"type": "array",
"description": "This is an optional array of conditions that must be met for this message to be triggered.",
@@ -10102,12 +11229,12 @@
},
"content": {
"type": "string",
- "description": "This is the content that the assistant will say when this message is triggered."
+ "description": "This is the content that the assistant will say when this message is triggered.",
+ "maxLength": 1000
}
},
"required": [
- "type",
- "content"
+ "type"
]
},
"CreateConversationBlockDTO": {
@@ -10189,265 +11316,70 @@
"inputSchema": {
"description": "This is the input schema for the block. This is the input the block needs to run. It's given to the block as `steps[0].input`\n\nThese are accessible as variables:\n- ({{input.propertyName}}) in context of the block execution (step)\n- ({{stepName.input.propertyName}}) in context of the workflow",
"allOf": [
- {
- "$ref": "#/components/schemas/JsonSchema"
- }
- ]
- },
- "outputSchema": {
- "description": "This is the output schema for the block. This is the output the block will return to the workflow (`{{stepName.output}}`).\n\nThese are accessible as variables:\n- ({{output.propertyName}}) in context of the block execution (step)\n- ({{stepName.output.propertyName}}) in context of the workflow (read caveat #1)\n- ({{blockName.output.propertyName}}) in context of the workflow (read caveat #2)\n\nCaveats:\n1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.output.propertyName}} will reference the latest usage of the step.\n2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.output.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow with steps.",
- "allOf": [
- {
- "$ref": "#/components/schemas/JsonSchema"
- }
- ]
- },
- "type": {
- "type": "string",
- "description": "This block makes a tool call.",
- "enum": [
- "tool-call"
- ]
- },
- "tool": {
- "description": "This is the tool that the block will call. To use an existing tool, use `toolId`.",
- "oneOf": [
- {
- "$ref": "#/components/schemas/CreateDtmfToolDTO",
- "title": "DtmfTool"
- },
- {
- "$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/CreateMakeToolDTO",
- "title": "MakeTool"
- },
- {
- "$ref": "#/components/schemas/CreateTransferCallToolDTO",
- "title": "TransferCallTool"
- }
- ]
- },
- "toolId": {
- "type": "string",
- "description": "This is the id of the tool that the block will call. To use a transient tool, use `tool`."
- },
- "name": {
- "type": "string",
- "description": "This is the name of the block. This is just for your reference."
- }
- },
- "required": [
- "type"
- ]
- },
- "StepDestination": {
- "type": "object",
- "properties": {
- "type": {
- "type": "string",
- "enum": [
- "step"
- ]
- },
- "conditions": {
- "type": "array",
- "description": "This is an optional array of conditions that must be met for this destination to be triggered. If empty, this is the default destination that the step transfers to.",
- "items": {
- "oneOf": [
- {
- "$ref": "#/components/schemas/ModelBasedCondition",
- "title": "ModelBasedCondition"
- },
- {
- "$ref": "#/components/schemas/RuleBasedCondition",
- "title": "RuleBasedCondition"
- }
- ]
- }
- },
- "stepName": {
- "type": "string",
- "minLength": 1
- }
- },
- "required": [
- "type",
- "stepName"
- ]
- },
- "HandoffStep": {
- "type": "object",
- "properties": {
- "block": {
- "description": "This is the block to use. To use an existing block, use `blockId`.",
- "oneOf": [
- {
- "$ref": "#/components/schemas/CreateConversationBlockDTO",
- "title": "ConversationBlock"
- },
- {
- "$ref": "#/components/schemas/CreateToolCallBlockDTO",
- "title": "ToolCallBlock"
- },
- {
- "$ref": "#/components/schemas/CreateWorkflowBlockDTO",
- "title": "WorkflowBlock",
- "description": "This is the CreateWorkflowBlockDTO object but Swagger does not display nested schemas correctly."
- }
- ]
- },
- "type": {
- "type": "string",
- "description": "This is a step that takes a handoff from the previous step. This means it won't return to the calling step. The workflow execution will continue linearly.\n\nUse case:\n- You want to collect information linearly (e.g. a form, provide information, etc).",
- "enum": [
- "handoff"
- ]
- },
- "destinations": {
- "type": "array",
- "description": "These are the destinations that the step can go to after it's done.",
- "items": {
- "oneOf": [
- {
- "$ref": "#/components/schemas/StepDestination",
- "title": "StepDestination"
- }
- ]
- }
- },
- "name": {
- "type": "string",
- "description": "This is the name of the step.",
- "minLength": 1
- },
- "blockId": {
- "type": "string",
- "description": "This is the id of the block to use. To use a transient block, use `block`."
- },
- "input": {
- "type": "object",
- "description": "This is the input to the block. You can use any key-value map as input to the block.\n\nExample:\n{\n \"name\": \"John Doe\",\n \"age\": 20\n}\n\nYou can reference any variable in the context of the current block:\n- \"{{your-step-name.output.your-property-name}}\" for another step's output (in the same workflow; read caveat #1)\n- \"{{your-step-name.input.your-property-name}}\" for another step's input (in the same workflow; read caveat #1)\n- \"{{your-block-name.output.your-property-name}}\" for another block's output (in the same workflow; read caveat #2)\n- \"{{your-block-name.input.your-property-name}}\" for another block's input (in the same workflow; read caveat #2)\n- \"{{workflow.input.your-property-name}}\" for the current workflow's input\n- \"{{global.your-property-name}}\" for the global context\n\nExample:\n{\n \"name\": \"{{my-tool-call-step.output.name}}\",\n \"age\": \"{{my-tool-call-step.input.age}}\",\n \"date\": \"{{workflow.input.date}}\"\n}\n\nYou can dynamically change the key name.\n\nExample:\n{\n \"{{my-tool-call-step.output.key-name-for-name}}\": \"{{name}}\",\n \"{{my-tool-call-step.input.key-name-for-age}}\": \"{{age}}\",\n \"{{workflow.input.key-name-for-date}}\": \"{{date}}\"\n}\n\nYou can represent the value as a string, number, boolean, array, or object.\n\nExample:\n{\n \"name\": \"john\",\n \"age\": 20,\n \"date\": \"2021-01-01\",\n \"metadata\": {\n \"unique-key\": \"{{my-tool-call-step.output.unique-key}}\"\n },\n \"array\": [\"A\", \"B\", \"C\"],\n}\n\nCaveats:\n1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.input/output.propertyName}} will reference the latest usage of the step.\n2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.input/output.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow."
- }
- },
- "required": [
- "type",
- "name"
- ]
- },
- "AssignmentMutation": {
- "type": "object",
- "properties": {
- "conditions": {
- "type": "array",
- "description": "This is an optional array of conditions that must be met for this mutation to be triggered.",
- "items": {
- "oneOf": [
- {
- "$ref": "#/components/schemas/ModelBasedCondition",
- "title": "ModelBasedCondition"
- },
- {
- "$ref": "#/components/schemas/RuleBasedCondition",
- "title": "RuleBasedCondition"
- }
- ]
- }
+ {
+ "$ref": "#/components/schemas/JsonSchema"
+ }
+ ]
+ },
+ "outputSchema": {
+ "description": "This is the output schema for the block. This is the output the block will return to the workflow (`{{stepName.output}}`).\n\nThese are accessible as variables:\n- ({{output.propertyName}}) in context of the block execution (step)\n- ({{stepName.output.propertyName}}) in context of the workflow (read caveat #1)\n- ({{blockName.output.propertyName}}) in context of the workflow (read caveat #2)\n\nCaveats:\n1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.output.propertyName}} will reference the latest usage of the step.\n2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.output.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow with steps.",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/JsonSchema"
+ }
+ ]
},
"type": {
"type": "string",
- "description": "This mutation assigns a new value to an existing or new variable.",
+ "description": "This block makes a tool call.",
"enum": [
- "assignment"
+ "tool-call"
]
},
- "variable": {
- "type": "string",
- "description": "This is the variable to assign a new value to.\n\nYou can reference any variable in the context of the current block execution (step):\n- \"output.your-property-name\" for current step's output\n- \"your-step-name.output.your-property-name\" for another step's output (in the same workflow; read caveat #1)\n- \"your-block-name.output.your-property-name\" for another block's output (in the same workflow; read caveat #2)\n- \"global.your-property-name\" for the global context\n\nThis needs to be the key path of the variable. If you use {{}}, it'll dereference that to the value of the variable before assignment. This can be useful if the path is dynamic. Example:\n- \"global.{{my-tool-call-step.output.my-key-name}}\"\n\nYou can also string interpolate multiple variables to get the key name:\n- \"global.{{my-tool-call-step.output.my-key-name-suffix}}-{{my-tool-call-step.output.my-key-name}}\"\n\nThe path to the new variable is created if it doesn't exist. Example:\n- \"global.this-does-not-exist.neither-does-this\" will create `this-does-not-exist` object with `neither-does-this` as a key\n\nCaveats:\n1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.output.propertyName}} will reference the latest usage of the step.\n2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.output.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow."
- },
- "value": {
- "type": "string",
- "description": "The value to assign to the variable.\n\nYou can reference any variable in the context of the current block execution (step):\n- \"{{output.your-property-name}}\" for current step's output\n- \"{{your-step-name.output.your-property-name}}\" for another step's output (in the same workflow; read caveat #1)\n- \"{{your-block-name.output.your-property-name}}\" for another block's output (in the same workflow; read caveat #2)\n- \"{{global.your-property-name}}\" for the global context\n\nOr, you can use a constant:\n- \"1\"\n- \"text\"\n- \"true\"\n- \"false\"\n\nOr, you can mix and match with string interpolation:\n- \"{{your-property-name}}-{{input.your-property-name-2}}-1\"\n\nCaveats:\n1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.output.propertyName}} will reference the latest usage of the step.\n2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.output.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow.",
- "pattern": "ALLOWED_REGEX"
- }
- },
- "required": [
- "type",
- "variable",
- "value"
- ]
- },
- "CallbackStep": {
- "type": "object",
- "properties": {
- "block": {
- "description": "This is the block to use. To use an existing block, use `blockId`.",
+ "tool": {
+ "description": "This is the tool that the block will call. To use an existing tool, use `toolId`.",
"oneOf": [
{
- "$ref": "#/components/schemas/CreateConversationBlockDTO",
- "title": "ConversationBlock"
+ "$ref": "#/components/schemas/CreateDtmfToolDTO",
+ "title": "DtmfTool"
},
{
- "$ref": "#/components/schemas/CreateToolCallBlockDTO",
- "title": "ToolCallBlock"
+ "$ref": "#/components/schemas/CreateEndCallToolDTO",
+ "title": "EndCallTool"
},
{
- "$ref": "#/components/schemas/CreateWorkflowBlockDTO",
- "title": "WorkflowBlock",
- "description": "This is the CreateWorkflowBlockDTO object but Swagger does not display nested schemas correctly."
+ "$ref": "#/components/schemas/CreateVoicemailToolDTO",
+ "title": "VoicemailTool"
+ },
+ {
+ "$ref": "#/components/schemas/CreateFunctionToolDTO",
+ "title": "FunctionTool"
+ },
+ {
+ "$ref": "#/components/schemas/CreateGhlToolDTO",
+ "title": "GhlTool"
+ },
+ {
+ "$ref": "#/components/schemas/CreateMakeToolDTO",
+ "title": "MakeTool"
+ },
+ {
+ "$ref": "#/components/schemas/CreateTransferCallToolDTO",
+ "title": "TransferCallTool"
}
]
},
- "type": {
+ "toolId": {
"type": "string",
- "description": "This is a step that calls back to the previous step after it's done. This effectively means we're spawning a new conversation thread. The previous conversation thread will resume where it left off once this step is done.\n\nUse case:\n- You are collecting a customer's order and while they were on one item, they start a new item or try to modify a previous one. You would make a OrderUpdate block which calls the same block repeatedly when a new update starts.",
- "enum": [
- "callback"
- ]
- },
- "mutations": {
- "type": "array",
- "description": "This is the mutations to apply to the context after the step is done.",
- "items": {
- "oneOf": [
- {
- "$ref": "#/components/schemas/AssignmentMutation",
- "title": "AssignmentMutation"
- }
- ]
- }
+ "description": "This is the id of the tool that the block will call. To use a transient tool, use `tool`."
},
"name": {
"type": "string",
- "description": "This is the name of the step.",
- "minLength": 1
- },
- "blockId": {
- "type": "string",
- "description": "This is the id of the block to use. To use a transient block, use `block`."
- },
- "input": {
- "type": "object",
- "description": "This is the input to the block. You can use any key-value map as input to the block.\n\nExample:\n{\n \"name\": \"John Doe\",\n \"age\": 20\n}\n\nYou can reference any variable in the context of the current block:\n- \"{{your-step-name.output.your-property-name}}\" for another step's output (in the same workflow; read caveat #1)\n- \"{{your-step-name.input.your-property-name}}\" for another step's input (in the same workflow; read caveat #1)\n- \"{{your-block-name.output.your-property-name}}\" for another block's output (in the same workflow; read caveat #2)\n- \"{{your-block-name.input.your-property-name}}\" for another block's input (in the same workflow; read caveat #2)\n- \"{{workflow.input.your-property-name}}\" for the current workflow's input\n- \"{{global.your-property-name}}\" for the global context\n\nExample:\n{\n \"name\": \"{{my-tool-call-step.output.name}}\",\n \"age\": \"{{my-tool-call-step.input.age}}\",\n \"date\": \"{{workflow.input.date}}\"\n}\n\nYou can dynamically change the key name.\n\nExample:\n{\n \"{{my-tool-call-step.output.key-name-for-name}}\": \"{{name}}\",\n \"{{my-tool-call-step.input.key-name-for-age}}\": \"{{age}}\",\n \"{{workflow.input.key-name-for-date}}\": \"{{date}}\"\n}\n\nYou can represent the value as a string, number, boolean, array, or object.\n\nExample:\n{\n \"name\": \"john\",\n \"age\": 20,\n \"date\": \"2021-01-01\",\n \"metadata\": {\n \"unique-key\": \"{{my-tool-call-step.output.unique-key}}\"\n },\n \"array\": [\"A\", \"B\", \"C\"],\n}\n\nCaveats:\n1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.input/output.propertyName}} will reference the latest usage of the step.\n2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.input/output.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow."
+ "description": "This is the name of the block. This is just for your reference."
}
},
"required": [
- "type",
- "name"
+ "type"
]
},
"CreateWorkflowBlockDTO": {
@@ -11669,6 +12601,64 @@
"result"
]
},
+ "CallLogPrivileged": {
+ "type": "object",
+ "properties": {
+ "callId": {
+ "type": "string",
+ "description": "This is the unique identifier for the call."
+ },
+ "orgId": {
+ "type": "string",
+ "description": "This is the unique identifier for the org that this call log belongs to."
+ },
+ "log": {
+ "type": "string",
+ "description": "This is the log message associated with the call."
+ },
+ "level": {
+ "type": "string",
+ "description": "This is the level of the log message.",
+ "enum": [
+ "INFO",
+ "LOG",
+ "WARN",
+ "ERROR",
+ "CHECKPOINT"
+ ]
+ },
+ "time": {
+ "format": "date-time",
+ "type": "string",
+ "description": "This is the ISO 8601 date-time string of when the log was created."
+ }
+ },
+ "required": [
+ "callId",
+ "orgId",
+ "log",
+ "level",
+ "time"
+ ]
+ },
+ "CallLogsPaginatedResponse": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/CallLogPrivileged"
+ }
+ },
+ "metadata": {
+ "$ref": "#/components/schemas/PaginationMeta"
+ }
+ },
+ "required": [
+ "results",
+ "metadata"
+ ]
+ },
"Error": {
"type": "object",
"properties": {
@@ -11701,13 +12691,25 @@
"Provider"
]
},
+ "webhookType": {
+ "type": "string",
+ "description": "This is the type of the webhook, given the log is from a webhook."
+ },
"resource": {
"type": "string",
"description": "This is the specific resource, relevant only to API logs.",
"enum": [
+ "org",
"assistant",
+ "analytics",
+ "credential",
"phone-number",
+ "block",
+ "voice-library",
+ "provider",
"tool",
+ "token",
+ "template",
"squad",
"call",
"file",
@@ -12101,9 +13103,7 @@
},
"SbcConfiguration": {
"type": "object",
- "properties": {
-
- }
+ "properties": {}
},
"ByoSipTrunkCredential": {
"type": "object",
@@ -12427,7 +13427,7 @@
"maxLength": 40
},
"gcpKey": {
- "description": "This is the GCP key. This is the JSON that can be generated in the Google Cloud Console at https://console.cloud.google.com/iam-admin/serviceaccounts/details/\u003Cservice-account-id\u003E/keys.\n\nThe schema is identical to the JSON that GCP outputs.",
+ "description": "This is the GCP key. This is the JSON that can be generated in the Google Cloud Console at https://console.cloud.google.com/iam-admin/serviceaccounts/details//keys.\n\nThe schema is identical to the JSON that GCP outputs.",
"allOf": [
{
"$ref": "#/components/schemas/GcpKey"
@@ -13448,7 +14448,7 @@
"maxLength": 40
},
"gcpKey": {
- "description": "This is the GCP key. This is the JSON that can be generated in the Google Cloud Console at https://console.cloud.google.com/iam-admin/serviceaccounts/details/\u003Cservice-account-id\u003E/keys.\n\nThe schema is identical to the JSON that GCP outputs.",
+ "description": "This is the GCP key. This is the JSON that can be generated in the Google Cloud Console at https://console.cloud.google.com/iam-admin/serviceaccounts/details//keys.\n\nThe schema is identical to the JSON that GCP outputs.",
"allOf": [
{
"$ref": "#/components/schemas/GcpKey"
@@ -14098,7 +15098,7 @@
"maxLength": 40
},
"gcpKey": {
- "description": "This is the GCP key. This is the JSON that can be generated in the Google Cloud Console at https://console.cloud.google.com/iam-admin/serviceaccounts/details/\u003Cservice-account-id\u003E/keys.\n\nThe schema is identical to the JSON that GCP outputs.",
+ "description": "This is the GCP key. This is the JSON that can be generated in the Google Cloud Console at https://console.cloud.google.com/iam-admin/serviceaccounts/details//keys.\n\nThe schema is identical to the JSON that GCP outputs.",
"allOf": [
{
"$ref": "#/components/schemas/GcpKey"
@@ -14475,6 +15475,10 @@
"description": "When this is enabled, no logs, recordings, or transcriptions will be stored. At the end of the call, you will still receive an end-of-call-report message to store on your server. Defaults to false.\nWhen HIPAA is enabled, only OpenAI/Custom LLM or Azure Providers will be available for LLM and Voice respectively.\nThis is due to the compliance requirements of HIPAA. Other providers may not meet these requirements.",
"example": false
},
+ "subscriptionId": {
+ "type": "string",
+ "description": "This is the ID of the subscription the org belongs to."
+ },
"name": {
"type": "string",
"description": "This is the name of the org. This is just for your own reference.",
@@ -14527,6 +15531,13 @@
"description": "When this is enabled, no logs, recordings, or transcriptions will be stored. At the end of the call, you will still receive an end-of-call-report message to store on your server. Defaults to false.\nWhen HIPAA is enabled, only OpenAI/Custom LLM or Azure Providers will be available for LLM and Voice respectively.\nThis is due to the compliance requirements of HIPAA. Other providers may not meet these requirements.",
"example": false
},
+ "subscription": {
+ "$ref": "#/components/schemas/Subscription"
+ },
+ "subscriptionId": {
+ "type": "string",
+ "description": "This is the ID of the subscription the org belongs to."
+ },
"id": {
"type": "string",
"description": "This is the unique identifier for the org."
@@ -14610,6 +15621,10 @@
"description": "When this is enabled, no logs, recordings, or transcriptions will be stored. At the end of the call, you will still receive an end-of-call-report message to store on your server. Defaults to false.\nWhen HIPAA is enabled, only OpenAI/Custom LLM or Azure Providers will be available for LLM and Voice respectively.\nThis is due to the compliance requirements of HIPAA. Other providers may not meet these requirements.",
"example": false
},
+ "subscriptionId": {
+ "type": "string",
+ "description": "This is the ID of the subscription the org belongs to."
+ },
"name": {
"type": "string",
"description": "This is the name of the org. This is just for your own reference.",
@@ -14649,45 +15664,146 @@
"type": "string",
"description": "This is the ISO 8601 date-time string of when the profile was created."
},
- "updatedAt": {
- "format": "date-time",
+ "updatedAt": {
+ "format": "date-time",
+ "type": "string",
+ "description": "This is the ISO 8601 date-time string of when the profile was last updated."
+ },
+ "email": {
+ "type": "string",
+ "description": "This is the email of the user that is associated with the profile."
+ },
+ "fullName": {
+ "type": "string",
+ "description": "This is the full name of the user that is associated with the profile."
+ }
+ },
+ "required": [
+ "id",
+ "createdAt",
+ "updatedAt",
+ "email"
+ ]
+ },
+ "InviteUserDTO": {
+ "type": "object",
+ "properties": {
+ "email": {
+ "type": "string"
+ },
+ "role": {
+ "enum": [
+ "admin",
+ "editor",
+ "viewer"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "email",
+ "role"
+ ]
+ },
+ "OrgWithOrgUser": {
+ "type": "object",
+ "properties": {
+ "hipaaEnabled": {
+ "type": "boolean",
+ "description": "When this is enabled, no logs, recordings, or transcriptions will be stored. At the end of the call, you will still receive an end-of-call-report message to store on your server. Defaults to false.\nWhen HIPAA is enabled, only OpenAI/Custom LLM or Azure Providers will be available for LLM and Voice respectively.\nThis is due to the compliance requirements of HIPAA. Other providers may not meet these requirements.",
+ "example": false
+ },
+ "subscription": {
+ "$ref": "#/components/schemas/Subscription"
+ },
+ "subscriptionId": {
+ "type": "string",
+ "description": "This is the ID of the subscription the org belongs to."
+ },
+ "id": {
+ "type": "string",
+ "description": "This is the unique identifier for the org."
+ },
+ "createdAt": {
+ "format": "date-time",
+ "type": "string",
+ "description": "This is the ISO 8601 date-time string of when the org was created."
+ },
+ "updatedAt": {
+ "format": "date-time",
+ "type": "string",
+ "description": "This is the ISO 8601 date-time string of when the org was last updated."
+ },
+ "stripeCustomerId": {
+ "type": "string",
+ "description": "This is the Stripe customer for the org."
+ },
+ "stripeSubscriptionId": {
+ "type": "string",
+ "description": "This is the subscription for the org."
+ },
+ "stripeSubscriptionItemId": {
+ "type": "string",
+ "description": "This is the subscription's subscription item."
+ },
+ "stripeSubscriptionCurrentPeriodStart": {
+ "format": "date-time",
+ "type": "string",
+ "description": "This is the subscription's current period start."
+ },
+ "stripeSubscriptionStatus": {
+ "type": "string",
+ "description": "This is the subscription's status."
+ },
+ "plan": {
+ "description": "This is the plan for the org.",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/OrgPlan"
+ }
+ ]
+ },
+ "name": {
+ "type": "string",
+ "description": "This is the name of the org. This is just for your own reference.",
+ "maxLength": 40
+ },
+ "billingLimit": {
+ "type": "number",
+ "description": "This is the monthly billing limit for the org. To go beyond $1000/mo, please contact us at support@vapi.ai.",
+ "minimum": 0,
+ "maximum": 1000
+ },
+ "serverUrl": {
"type": "string",
- "description": "This is the ISO 8601 date-time string of when the profile was last updated."
+ "description": "This is the URL Vapi will communicate with via HTTP GET and POST Requests. This is used for retrieving context, function calling, and end-of-call reports.\n\nAll requests will be sent with the call object among other things relevant to that message. You can find more details in the Server URL documentation."
},
- "email": {
+ "serverUrlSecret": {
"type": "string",
- "description": "This is the email of the user that is associated with the profile."
+ "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."
},
- "fullName": {
- "type": "string",
- "description": "This is the full name of the user that is associated with the profile."
- }
- },
- "required": [
- "id",
- "createdAt",
- "updatedAt",
- "email"
- ]
- },
- "InviteUserDTO": {
- "type": "object",
- "properties": {
- "email": {
+ "concurrencyLimit": {
+ "type": "number",
+ "description": "This is the concurrency limit for the org. This is the maximum number of calls that can be active at any given time. To go beyond 10, please contact us at support@vapi.ai.",
+ "minimum": 1,
+ "maximum": 10
+ },
+ "invitedByUserId": {
"type": "string"
},
"role": {
+ "type": "string",
"enum": [
"admin",
"editor",
"viewer"
- ],
- "type": "string"
+ ]
}
},
"required": [
- "email",
- "role"
+ "id",
+ "createdAt",
+ "updatedAt"
]
},
"UpdateUserRoleDTO": {
@@ -15747,6 +16863,66 @@
"toolCallResult"
]
},
+ "ClientMessageTransferUpdate": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "description": "This is the type of the message. \"transfer-update\" is sent whenever a transfer happens.",
+ "enum": [
+ "transfer-update"
+ ]
+ },
+ "destination": {
+ "description": "This is the destination of the transfer.",
+ "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"
+ }
+ ]
+ },
+ "toAssistant": {
+ "description": "This is the assistant that the call is being transferred to. This is only sent if `destination.type` is \"assistant\".",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/CreateAssistantDTO"
+ }
+ ]
+ },
+ "fromAssistant": {
+ "description": "This is the assistant that the call is being transferred from. This is only sent if `destination.type` is \"assistant\".",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/CreateAssistantDTO"
+ }
+ ]
+ },
+ "toStepRecord": {
+ "type": "object",
+ "description": "This is the step that the conversation moved to."
+ },
+ "fromStepRecord": {
+ "type": "object",
+ "description": "This is the step that the conversation moved from. ="
+ }
+ },
+ "required": [
+ "type"
+ ]
+ },
"ClientMessageUserInterrupted": {
"type": "object",
"properties": {
@@ -15762,14 +16938,14 @@
"type"
]
},
- "ClientMessageLanguageChanged": {
+ "ClientMessageLanguageChangeDetected": {
"type": "object",
"properties": {
"type": {
"type": "string",
- "description": "This is the type of the message. \"language-switched\" is sent when the transcriber is automatically switched based on the detected language.",
+ "description": "This is the type of the message. \"language-change-detected\" is sent when the transcriber is automatically switched based on the detected language.",
"enum": [
- "language-changed"
+ "language-change-detected"
]
},
"language": {
@@ -15840,13 +17016,17 @@
"$ref": "#/components/schemas/ClientMessageToolCallsResult",
"title": "ToolCallsResult"
},
+ {
+ "$ref": "#/components/schemas/ClientMessageTransferUpdate",
+ "title": "TransferUpdate"
+ },
{
"$ref": "#/components/schemas/ClientMessageUserInterrupted",
"title": "UserInterrupted"
},
{
- "$ref": "#/components/schemas/ClientMessageLanguageChanged",
- "title": "LanguageChanged"
+ "$ref": "#/components/schemas/ClientMessageLanguageChangeDetected",
+ "title": "LanguageChangeDetected"
},
{
"$ref": "#/components/schemas/ClientMessageVoiceInput",
@@ -15903,7 +17083,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-\u003E[n].assistant`,\n- `call.squadId-\u003E[n].assistantId`.",
+ "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`.",
"allOf": [
{
"$ref": "#/components/schemas/CreateAssistantDTO"
@@ -16010,7 +17190,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-\u003E[n].assistant`,\n- `call.squadId-\u003E[n].assistantId`.",
+ "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`.",
"allOf": [
{
"$ref": "#/components/schemas/CreateAssistantDTO"
@@ -16074,32 +17254,15 @@
"type": "string",
"description": "This is the reason the call ended. This can also be found at `call.endedReason` on GET /call/:id.",
"enum": [
- "assistant-error",
- "assistant-not-found",
"db-error",
- "no-server-available",
+ "assistant-not-found",
"license-check-failed",
- "pipeline-error-openai-llm-failed",
- "pipeline-error-azure-openai-llm-failed",
- "pipeline-error-groq-llm-failed",
- "pipeline-error-anthropic-llm-failed",
"pipeline-error-vapi-llm-failed",
"pipeline-error-vapi-400-bad-request-validation-failed",
"pipeline-error-vapi-401-unauthorized",
"pipeline-error-vapi-403-model-access-denied",
"pipeline-error-vapi-429-exceeded-quota",
"pipeline-error-vapi-500-server-error",
- "pipeline-error-openai-voice-failed",
- "pipeline-error-cartesia-voice-failed",
- "pipeline-error-deepgram-transcriber-failed",
- "pipeline-error-deepgram-voice-failed",
- "pipeline-error-gladia-transcriber-failed",
- "pipeline-error-eleven-labs-voice-failed",
- "pipeline-error-playht-voice-failed",
- "pipeline-error-lmnt-voice-failed",
- "pipeline-error-azure-voice-failed",
- "pipeline-error-rime-ai-voice-failed",
- "pipeline-error-neets-voice-failed",
"pipeline-no-available-model",
"worker-shutdown",
"unknown-error",
@@ -16112,6 +17275,21 @@
"vapifault-transport-never-connected",
"vapifault-web-call-worker-setup-failed",
"vapifault-transport-connected-but-call-not-active",
+ "vapifault-call-started-but-connection-to-transport-missing",
+ "pipeline-error-openai-voice-failed",
+ "pipeline-error-cartesia-voice-failed",
+ "pipeline-error-deepgram-transcriber-failed",
+ "pipeline-error-deepgram-voice-failed",
+ "pipeline-error-gladia-transcriber-failed",
+ "pipeline-error-eleven-labs-voice-failed",
+ "pipeline-error-playht-voice-failed",
+ "pipeline-error-lmnt-voice-failed",
+ "pipeline-error-azure-voice-failed",
+ "pipeline-error-rime-ai-voice-failed",
+ "pipeline-error-neets-voice-failed",
+ "pipeline-error-openai-llm-failed",
+ "pipeline-error-azure-openai-llm-failed",
+ "pipeline-error-groq-llm-failed",
"assistant-not-invalid",
"assistant-not-provided",
"call-start-error-neither-assistant-nor-server-set",
@@ -16153,6 +17331,7 @@
"pipeline-error-anthropic-403-model-access-denied",
"pipeline-error-anthropic-429-exceeded-quota",
"pipeline-error-anthropic-500-server-error",
+ "pipeline-error-anthropic-llm-failed",
"pipeline-error-together-ai-400-bad-request-validation-failed",
"pipeline-error-together-ai-401-unauthorized",
"pipeline-error-together-ai-403-model-access-denied",
@@ -16221,10 +17400,12 @@
"pipeline-error-eleven-labs-voice-not-allowed-for-free-users",
"pipeline-error-eleven-labs-500-server-error",
"pipeline-error-eleven-labs-max-character-limit-exceeded",
+ "pipeline-error-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification",
"pipeline-error-playht-request-timed-out",
"pipeline-error-playht-invalid-voice",
"pipeline-error-playht-unexpected-error",
"pipeline-error-playht-out-of-credits",
+ "pipeline-error-playht-invalid-emotion",
"pipeline-error-playht-voice-must-be-a-valid-voice-manifest-uri",
"pipeline-error-playht-401-unauthorized",
"pipeline-error-playht-403-forbidden-out-of-characters",
@@ -16232,16 +17413,19 @@
"pipeline-error-playht-429-exceeded-quota",
"pipeline-error-playht-502-gateway-error",
"pipeline-error-playht-504-gateway-error",
- "pipeline-error-deepgram-403-model-access-denied",
- "pipeline-error-deepgram-404-not-found",
- "pipeline-error-deepgram-400-no-such-model-language-tier-combination",
- "pipeline-error-deepgram-500-returning-invalid-json",
- "sip-gateway-failed-to-connect-call",
+ "pipeline-error-deepgram-returning-403-model-access-denied",
+ "pipeline-error-deepgram-returning-401-invalid-credentials",
+ "pipeline-error-deepgram-returning-404-not-found",
+ "pipeline-error-deepgram-returning-400-no-such-model-language-tier-combination",
+ "pipeline-error-deepgram-returning-500-invalid-json",
+ "pipeline-error-deepgram-returning-502-network-error",
+ "pipeline-error-deepgram-returning-502-bad-gateway-ehostunreach",
"silence-timed-out",
+ "sip-gateway-failed-to-connect-call",
"twilio-failed-to-connect-call",
"twilio-reported-customer-misdialed",
- "voicemail",
- "vonage-rejected"
+ "vonage-rejected",
+ "voicemail"
]
},
"cost": {
@@ -16293,7 +17477,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-\u003E[n].assistant`,\n- `call.squadId-\u003E[n].assistantId`.",
+ "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`.",
"allOf": [
{
"$ref": "#/components/schemas/CreateAssistantDTO"
@@ -16386,7 +17570,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-\u003E[n].assistant`,\n- `call.squadId-\u003E[n].assistantId`.",
+ "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`.",
"allOf": [
{
"$ref": "#/components/schemas/CreateAssistantDTO"
@@ -16414,6 +17598,114 @@
"type"
]
},
+ "ServerMessageKnowledgeBaseRequest": {
+ "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`.",
+ "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"
+ }
+ ]
+ },
+ "type": {
+ "type": "string",
+ "description": "This is the type of the message. \"knowledge-base-request\" is sent to request knowledge base documents. To enable, use `assistant.knowledgeBase.provider=custom-knowledge-base`.",
+ "enum": [
+ "knowledge-base-request"
+ ]
+ },
+ "messages": {
+ "type": "array",
+ "description": "These are the messages that are going to be sent to the `model` right after the `knowledge-base-request` webhook completes.",
+ "items": {
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/UserMessage",
+ "title": "UserMessage"
+ },
+ {
+ "$ref": "#/components/schemas/SystemMessage",
+ "title": "SystemMessage"
+ },
+ {
+ "$ref": "#/components/schemas/BotMessage",
+ "title": "BotMessage"
+ },
+ {
+ "$ref": "#/components/schemas/ToolCallMessage",
+ "title": "ToolCallMessage"
+ },
+ {
+ "$ref": "#/components/schemas/ToolCallResultMessage",
+ "title": "ToolCallResultMessage"
+ }
+ ]
+ }
+ },
+ "messagesOpenAIFormatted": {
+ "description": "This is just `messages` formatted for OpenAI.",
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/OpenAIMessage"
+ }
+ },
+ "timestamp": {
+ "type": "string",
+ "description": "This is the ISO-8601 formatted timestamp of when the message was sent."
+ },
+ "artifact": {
+ "description": "This is a live version of the `call.artifact`.\n\nThis matches what is stored on `call.artifact` after the call.",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/Artifact"
+ }
+ ]
+ },
+ "assistant": {
+ "description": "This is the assistant that 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`.",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/CreateAssistantDTO"
+ }
+ ]
+ },
+ "customer": {
+ "description": "This is the customer associated with the call.\n\nThis matches one of the following:\n- `call.customer`,\n- `call.customerId`.",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/CreateCustomerDTO"
+ }
+ ]
+ },
+ "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.",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/Call"
+ }
+ ]
+ }
+ },
+ "required": [
+ "type",
+ "messagesOpenAIFormatted"
+ ]
+ },
"ServerMessageModelOutput": {
"type": "object",
"properties": {
@@ -16458,7 +17750,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-\u003E[n].assistant`,\n- `call.squadId-\u003E[n].assistantId`.",
+ "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`.",
"allOf": [
{
"$ref": "#/components/schemas/CreateAssistantDTO"
@@ -16556,7 +17848,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-\u003E[n].assistant`,\n- `call.squadId-\u003E[n].assistantId`.",
+ "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`.",
"allOf": [
{
"$ref": "#/components/schemas/CreateAssistantDTO"
@@ -16645,7 +17937,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-\u003E[n].assistant`,\n- `call.squadId-\u003E[n].assistantId`.",
+ "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`.",
"allOf": [
{
"$ref": "#/components/schemas/CreateAssistantDTO"
@@ -16721,32 +18013,15 @@
"type": "string",
"description": "This is the reason the call ended. This is only sent if the status is \"ended\".",
"enum": [
- "assistant-error",
- "assistant-not-found",
"db-error",
- "no-server-available",
+ "assistant-not-found",
"license-check-failed",
- "pipeline-error-openai-llm-failed",
- "pipeline-error-azure-openai-llm-failed",
- "pipeline-error-groq-llm-failed",
- "pipeline-error-anthropic-llm-failed",
"pipeline-error-vapi-llm-failed",
"pipeline-error-vapi-400-bad-request-validation-failed",
- "pipeline-error-vapi-401-unauthorized",
- "pipeline-error-vapi-403-model-access-denied",
- "pipeline-error-vapi-429-exceeded-quota",
- "pipeline-error-vapi-500-server-error",
- "pipeline-error-openai-voice-failed",
- "pipeline-error-cartesia-voice-failed",
- "pipeline-error-deepgram-transcriber-failed",
- "pipeline-error-deepgram-voice-failed",
- "pipeline-error-gladia-transcriber-failed",
- "pipeline-error-eleven-labs-voice-failed",
- "pipeline-error-playht-voice-failed",
- "pipeline-error-lmnt-voice-failed",
- "pipeline-error-azure-voice-failed",
- "pipeline-error-rime-ai-voice-failed",
- "pipeline-error-neets-voice-failed",
+ "pipeline-error-vapi-401-unauthorized",
+ "pipeline-error-vapi-403-model-access-denied",
+ "pipeline-error-vapi-429-exceeded-quota",
+ "pipeline-error-vapi-500-server-error",
"pipeline-no-available-model",
"worker-shutdown",
"unknown-error",
@@ -16759,6 +18034,21 @@
"vapifault-transport-never-connected",
"vapifault-web-call-worker-setup-failed",
"vapifault-transport-connected-but-call-not-active",
+ "vapifault-call-started-but-connection-to-transport-missing",
+ "pipeline-error-openai-voice-failed",
+ "pipeline-error-cartesia-voice-failed",
+ "pipeline-error-deepgram-transcriber-failed",
+ "pipeline-error-deepgram-voice-failed",
+ "pipeline-error-gladia-transcriber-failed",
+ "pipeline-error-eleven-labs-voice-failed",
+ "pipeline-error-playht-voice-failed",
+ "pipeline-error-lmnt-voice-failed",
+ "pipeline-error-azure-voice-failed",
+ "pipeline-error-rime-ai-voice-failed",
+ "pipeline-error-neets-voice-failed",
+ "pipeline-error-openai-llm-failed",
+ "pipeline-error-azure-openai-llm-failed",
+ "pipeline-error-groq-llm-failed",
"assistant-not-invalid",
"assistant-not-provided",
"call-start-error-neither-assistant-nor-server-set",
@@ -16800,6 +18090,7 @@
"pipeline-error-anthropic-403-model-access-denied",
"pipeline-error-anthropic-429-exceeded-quota",
"pipeline-error-anthropic-500-server-error",
+ "pipeline-error-anthropic-llm-failed",
"pipeline-error-together-ai-400-bad-request-validation-failed",
"pipeline-error-together-ai-401-unauthorized",
"pipeline-error-together-ai-403-model-access-denied",
@@ -16868,10 +18159,12 @@
"pipeline-error-eleven-labs-voice-not-allowed-for-free-users",
"pipeline-error-eleven-labs-500-server-error",
"pipeline-error-eleven-labs-max-character-limit-exceeded",
+ "pipeline-error-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification",
"pipeline-error-playht-request-timed-out",
"pipeline-error-playht-invalid-voice",
"pipeline-error-playht-unexpected-error",
"pipeline-error-playht-out-of-credits",
+ "pipeline-error-playht-invalid-emotion",
"pipeline-error-playht-voice-must-be-a-valid-voice-manifest-uri",
"pipeline-error-playht-401-unauthorized",
"pipeline-error-playht-403-forbidden-out-of-characters",
@@ -16879,16 +18172,19 @@
"pipeline-error-playht-429-exceeded-quota",
"pipeline-error-playht-502-gateway-error",
"pipeline-error-playht-504-gateway-error",
- "pipeline-error-deepgram-403-model-access-denied",
- "pipeline-error-deepgram-404-not-found",
- "pipeline-error-deepgram-400-no-such-model-language-tier-combination",
- "pipeline-error-deepgram-500-returning-invalid-json",
- "sip-gateway-failed-to-connect-call",
+ "pipeline-error-deepgram-returning-403-model-access-denied",
+ "pipeline-error-deepgram-returning-401-invalid-credentials",
+ "pipeline-error-deepgram-returning-404-not-found",
+ "pipeline-error-deepgram-returning-400-no-such-model-language-tier-combination",
+ "pipeline-error-deepgram-returning-500-invalid-json",
+ "pipeline-error-deepgram-returning-502-network-error",
+ "pipeline-error-deepgram-returning-502-bad-gateway-ehostunreach",
"silence-timed-out",
+ "sip-gateway-failed-to-connect-call",
"twilio-failed-to-connect-call",
"twilio-reported-customer-misdialed",
- "voicemail",
- "vonage-rejected"
+ "vonage-rejected",
+ "voicemail"
]
},
"messages": {
@@ -16952,7 +18248,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-\u003E[n].assistant`,\n- `call.squadId-\u003E[n].assistantId`.",
+ "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`.",
"allOf": [
{
"$ref": "#/components/schemas/CreateAssistantDTO"
@@ -17053,7 +18349,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-\u003E[n].assistant`,\n- `call.squadId-\u003E[n].assistantId`.",
+ "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`.",
"allOf": [
{
"$ref": "#/components/schemas/CreateAssistantDTO"
@@ -17133,7 +18429,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-\u003E[n].assistant`,\n- `call.squadId-\u003E[n].assistantId`.",
+ "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`.",
"allOf": [
{
"$ref": "#/components/schemas/CreateAssistantDTO"
@@ -17226,7 +18522,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-\u003E[n].assistant`,\n- `call.squadId-\u003E[n].assistantId`.",
+ "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`.",
"allOf": [
{
"$ref": "#/components/schemas/CreateAssistantDTO"
@@ -17264,6 +18560,14 @@
"$ref": "#/components/schemas/CreateAssistantDTO"
}
]
+ },
+ "toStepRecord": {
+ "type": "object",
+ "description": "This is the step that the conversation moved to."
+ },
+ "fromStepRecord": {
+ "type": "object",
+ "description": "This is the step that the conversation moved from. ="
}
},
"required": [
@@ -17314,7 +18618,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-\u003E[n].assistant`,\n- `call.squadId-\u003E[n].assistantId`.",
+ "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`.",
"allOf": [
{
"$ref": "#/components/schemas/CreateAssistantDTO"
@@ -17409,7 +18713,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-\u003E[n].assistant`,\n- `call.squadId-\u003E[n].assistantId`.",
+ "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`.",
"allOf": [
{
"$ref": "#/components/schemas/CreateAssistantDTO"
@@ -17437,7 +18741,7 @@
"type"
]
},
- "ServerMessageLanguageChanged": {
+ "ServerMessageLanguageChangeDetected": {
"type": "object",
"properties": {
"phoneNumber": {
@@ -17463,9 +18767,9 @@
},
"type": {
"type": "string",
- "description": "This is the type of the message. \"language-switched\" is sent when the transcriber is automatically switched based on the detected language.",
+ "description": "This is the type of the message. \"language-change-detected\" is sent when the transcriber is automatically switched based on the detected language.",
"enum": [
- "language-changed"
+ "language-change-detected"
]
},
"timestamp": {
@@ -17481,7 +18785,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-\u003E[n].assistant`,\n- `call.squadId-\u003E[n].assistantId`.",
+ "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`.",
"allOf": [
{
"$ref": "#/components/schemas/CreateAssistantDTO"
@@ -17558,7 +18862,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-\u003E[n].assistant`,\n- `call.squadId-\u003E[n].assistantId`.",
+ "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`.",
"allOf": [
{
"$ref": "#/components/schemas/CreateAssistantDTO"
@@ -17617,7 +18921,7 @@
},
"type": {
"type": "string",
- "description": "This is the type of the message. \"voice-request\" is sent when using `assistant.voice={ \"type\": \"custom-voice\" }`.\n\nHere is what the request will look like:\n\nPOST https://{assistant.voice.server.url}\nContent-Type: application/json\n\n{\n \"messsage\": {\n \"type\": \"voice-request\",\n \"text\": \"Hello, world!\",\n \"sampleRate\": 24000,\n ...other metadata about the call...\n }\n}\n\nThe expected response is 1-channel 16-bit raw PCM audio at the sample rate specified in the request. Here is how the response will be piped to the transport:\n```\nresponse.on('data', (chunk: Buffer) =\u003E {\n outputStream.write(chunk);\n});\n```",
+ "description": "This is the type of the message. \"voice-request\" is sent when using `assistant.voice={ \"type\": \"custom-voice\" }`.\n\nHere is what the request will look like:\n\nPOST https://{assistant.voice.server.url}\nContent-Type: application/json\n\n{\n \"messsage\": {\n \"type\": \"voice-request\",\n \"text\": \"Hello, world!\",\n \"sampleRate\": 24000,\n ...other metadata about the call...\n }\n}\n\nThe expected response is 1-channel 16-bit raw PCM audio at the sample rate specified in the request. Here is how the response will be piped to the transport:\n```\nresponse.on('data', (chunk: Buffer) => {\n outputStream.write(chunk);\n});\n```",
"enum": [
"voice-request"
]
@@ -17635,7 +18939,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-\u003E[n].assistant`,\n- `call.squadId-\u003E[n].assistantId`.",
+ "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`.",
"allOf": [
{
"$ref": "#/components/schemas/CreateAssistantDTO"
@@ -17695,6 +18999,10 @@
"$ref": "#/components/schemas/ServerMessageHang",
"title": "Hang"
},
+ {
+ "$ref": "#/components/schemas/ServerMessageKnowledgeBaseRequest",
+ "title": "KnowledgeBaseRequest"
+ },
{
"$ref": "#/components/schemas/ServerMessageModelOutput",
"title": "ModelOutput"
@@ -17732,8 +19040,8 @@
"title": "UserInterrupted"
},
{
- "$ref": "#/components/schemas/ServerMessageLanguageChanged",
- "title": "LanguageChanged"
+ "$ref": "#/components/schemas/ServerMessageLanguageChangeDetected",
+ "title": "LanguageChangeDetected"
},
{
"$ref": "#/components/schemas/ServerMessageVoiceInput",
@@ -17805,6 +19113,47 @@
}
}
},
+ "KnowledgeBaseResponseDocument": {
+ "type": "object",
+ "properties": {
+ "content": {
+ "type": "string",
+ "description": "This is the content of the document."
+ },
+ "similarity": {
+ "type": "number",
+ "description": "This is the similarity of the document."
+ },
+ "uuid": {
+ "type": "string",
+ "description": "This is the uuid of the document."
+ }
+ },
+ "required": [
+ "content",
+ "similarity"
+ ]
+ },
+ "ServerMessageResponseKnowledgeBaseRequest": {
+ "type": "object",
+ "properties": {
+ "documents": {
+ "description": "This is the list of documents that will be sent to the model alongside the `messages` to generate a response.",
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/KnowledgeBaseResponseDocument"
+ }
+ },
+ "message": {
+ "description": "This can be used to skip the model output generation and speak a custom message.",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/CustomMessage"
+ }
+ ]
+ }
+ }
+ },
"ToolCallResult": {
"type": "object",
"properties": {
@@ -17897,7 +19246,7 @@
"properties": {
"data": {
"type": "string",
- "description": "DO NOT respond to a `voice-request` webhook with this schema of { data }. This schema just exists to document what the response should look like. Follow these instructions:\n\nHere is what the request will look like:\n\nPOST https://{assistant.voice.server.url}\nContent-Type: application/json\n\n{\n \"messsage\": {\n \"type\": \"voice-request\",\n \"text\": \"Hello, world!\",\n \"sampleRate\": 24000,\n ...other metadata about the call...\n }\n}\n\nThe expected response is 1-channel 16-bit raw PCM audio at the sample rate specified in the request. Here is how the response will be piped to the transport:\n```\nresponse.on('data', (chunk: Buffer) =\u003E {\n outputStream.write(chunk);\n});\n```"
+ "description": "DO NOT respond to a `voice-request` webhook with this schema of { data }. This schema just exists to document what the response should look like. Follow these instructions:\n\nHere is what the request will look like:\n\nPOST https://{assistant.voice.server.url}\nContent-Type: application/json\n\n{\n \"messsage\": {\n \"type\": \"voice-request\",\n \"text\": \"Hello, world!\",\n \"sampleRate\": 24000,\n ...other metadata about the call...\n }\n}\n\nThe expected response is 1-channel 16-bit raw PCM audio at the sample rate specified in the request. Here is how the response will be piped to the transport:\n```\nresponse.on('data', (chunk: Buffer) => {\n outputStream.write(chunk);\n});\n```"
}
},
"required": [
@@ -17914,6 +19263,10 @@
"$ref": "#/components/schemas/ServerMessageResponseAssistantRequest",
"title": "AssistantRequest"
},
+ {
+ "$ref": "#/components/schemas/ServerMessageResponseKnowledgeBaseRequest",
+ "title": "KnowledgeBaseRequest"
+ },
{
"$ref": "#/components/schemas/ServerMessageResponseToolCalls",
"title": "ToolCalls"
@@ -17950,6 +19303,11 @@
"$ref": "#/components/schemas/OpenAIMessage"
}
]
+ },
+ "triggerResponseEnabled": {
+ "type": "boolean",
+ "description": "This is the flag to trigger a response, or to insert the message into the conversation history silently. Defaults to `true`.\n\nUsage:\n- Use `true` to trigger a response.\n- Use `false` to insert the message into the conversation history silently.\n\n@default true",
+ "default": true
}
},
"required": [
@@ -18239,7 +19597,7 @@
},
"transcriber": {
"type": "object",
- "description": "This is the transcriber that was used during the call.\n\nThis matches one of the below:\n- `call.assistant.transcriber`,\n- `call.assistantId-\u003Etranscriber`,\n- `call.squad[n].assistant.transcriber`,\n- `call.squad[n].assistantId-\u003Etranscriber`,\n- `call.squadId-\u003E[n].assistant.transcriber`,\n- `call.squadId-\u003E[n].assistantId-\u003Etranscriber`."
+ "description": "This is the transcriber that was used during the call.\n\nThis matches one of the below:\n- `call.assistant.transcriber`,\n- `call.assistantId->transcriber`,\n- `call.squad[n].assistant.transcriber`,\n- `call.squad[n].assistantId->transcriber`,\n- `call.squadId->[n].assistant.transcriber`,\n- `call.squadId->[n].assistantId->transcriber`."
},
"minutes": {
"type": "number",
@@ -18269,7 +19627,7 @@
},
"model": {
"type": "object",
- "description": "This is the model that was used during the call.\n\nThis matches one of the following:\n- `call.assistant.model`,\n- `call.assistantId-\u003Emodel`,\n- `call.squad[n].assistant.model`,\n- `call.squad[n].assistantId-\u003Emodel`,\n- `call.squadId-\u003E[n].assistant.model`,\n- `call.squadId-\u003E[n].assistantId-\u003Emodel`."
+ "description": "This is the model that was used during the call.\n\nThis matches one of the following:\n- `call.assistant.model`,\n- `call.assistantId->model`,\n- `call.squad[n].assistant.model`,\n- `call.squad[n].assistantId->model`,\n- `call.squadId->[n].assistant.model`,\n- `call.squadId->[n].assistantId->model`."
},
"promptTokens": {
"type": "number",
@@ -18304,7 +19662,7 @@
},
"voice": {
"type": "object",
- "description": "This is the voice that was used during the call.\n\nThis matches one of the following:\n- `call.assistant.voice`,\n- `call.assistantId-\u003Evoice`,\n- `call.squad[n].assistant.voice`,\n- `call.squad[n].assistantId-\u003Evoice`,\n- `call.squadId-\u003E[n].assistant.voice`,\n- `call.squadId-\u003E[n].assistantId-\u003Evoice`."
+ "description": "This is the voice that was used during the call.\n\nThis matches one of the following:\n- `call.assistant.voice`,\n- `call.assistantId->voice`,\n- `call.squad[n].assistant.voice`,\n- `call.squad[n].assistantId->voice`,\n- `call.squadId->[n].assistant.voice`,\n- `call.squadId->[n].assistantId->voice`."
},
"characters": {
"type": "number",
@@ -18591,6 +19949,201 @@
"toolCall",
"metadata"
]
+ },
+ "StepDestination": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "step"
+ ]
+ },
+ "conditions": {
+ "type": "array",
+ "description": "This is an optional array of conditions that must be met for this destination to be triggered. If empty, this is the default destination that the step transfers to.",
+ "items": {
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/ModelBasedCondition",
+ "title": "ModelBasedCondition"
+ },
+ {
+ "$ref": "#/components/schemas/RuleBasedCondition",
+ "title": "RuleBasedCondition"
+ }
+ ]
+ }
+ },
+ "stepName": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "required": [
+ "type",
+ "stepName"
+ ]
+ },
+ "HandoffStep": {
+ "type": "object",
+ "properties": {
+ "block": {
+ "description": "This is the block to use. To use an existing block, use `blockId`.",
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/CreateConversationBlockDTO",
+ "title": "ConversationBlock"
+ },
+ {
+ "$ref": "#/components/schemas/CreateToolCallBlockDTO",
+ "title": "ToolCallBlock"
+ },
+ {
+ "$ref": "#/components/schemas/CreateWorkflowBlockDTO",
+ "title": "WorkflowBlock",
+ "description": "This is the CreateWorkflowBlockDTO object but Swagger does not display nested schemas correctly."
+ }
+ ]
+ },
+ "type": {
+ "type": "string",
+ "description": "This is a step that takes a handoff from the previous step. This means it won't return to the calling step. The workflow execution will continue linearly.\n\nUse case:\n- You want to collect information linearly (e.g. a form, provide information, etc).",
+ "enum": [
+ "handoff"
+ ]
+ },
+ "destinations": {
+ "type": "array",
+ "description": "These are the destinations that the step can go to after it's done.",
+ "items": {
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/StepDestination",
+ "title": "StepDestination"
+ }
+ ]
+ }
+ },
+ "name": {
+ "type": "string",
+ "description": "This is the name of the step.",
+ "minLength": 1
+ },
+ "blockId": {
+ "type": "string",
+ "description": "This is the id of the block to use. To use a transient block, use `block`."
+ },
+ "input": {
+ "type": "object",
+ "description": "This is the input to the block. You can use any key-value map as input to the block.\n\nExample:\n{\n \"name\": \"John Doe\",\n \"age\": 20\n}\n\nYou can reference any variable in the context of the current block:\n- \"{{your-step-name.output.your-property-name}}\" for another step's output (in the same workflow; read caveat #1)\n- \"{{your-step-name.input.your-property-name}}\" for another step's input (in the same workflow; read caveat #1)\n- \"{{your-block-name.output.your-property-name}}\" for another block's output (in the same workflow; read caveat #2)\n- \"{{your-block-name.input.your-property-name}}\" for another block's input (in the same workflow; read caveat #2)\n- \"{{workflow.input.your-property-name}}\" for the current workflow's input\n- \"{{global.your-property-name}}\" for the global context\n\nExample:\n{\n \"name\": \"{{my-tool-call-step.output.name}}\",\n \"age\": \"{{my-tool-call-step.input.age}}\",\n \"date\": \"{{workflow.input.date}}\"\n}\n\nYou can dynamically change the key name.\n\nExample:\n{\n \"{{my-tool-call-step.output.key-name-for-name}}\": \"{{name}}\",\n \"{{my-tool-call-step.input.key-name-for-age}}\": \"{{age}}\",\n \"{{workflow.input.key-name-for-date}}\": \"{{date}}\"\n}\n\nYou can represent the value as a string, number, boolean, array, or object.\n\nExample:\n{\n \"name\": \"john\",\n \"age\": 20,\n \"date\": \"2021-01-01\",\n \"metadata\": {\n \"unique-key\": \"{{my-tool-call-step.output.unique-key}}\"\n },\n \"array\": [\"A\", \"B\", \"C\"],\n}\n\nCaveats:\n1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.input/output.propertyName}} will reference the latest usage of the step.\n2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.input/output.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow."
+ }
+ },
+ "required": [
+ "type",
+ "name"
+ ]
+ },
+ "AssignmentMutation": {
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "description": "This is an optional array of conditions that must be met for this mutation to be triggered.",
+ "items": {
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/ModelBasedCondition",
+ "title": "ModelBasedCondition"
+ },
+ {
+ "$ref": "#/components/schemas/RuleBasedCondition",
+ "title": "RuleBasedCondition"
+ }
+ ]
+ }
+ },
+ "type": {
+ "type": "string",
+ "description": "This mutation assigns a new value to an existing or new variable.",
+ "enum": [
+ "assignment"
+ ]
+ },
+ "variable": {
+ "type": "string",
+ "description": "This is the variable to assign a new value to.\n\nYou can reference any variable in the context of the current block execution (step):\n- \"output.your-property-name\" for current step's output\n- \"your-step-name.output.your-property-name\" for another step's output (in the same workflow; read caveat #1)\n- \"your-block-name.output.your-property-name\" for another block's output (in the same workflow; read caveat #2)\n- \"global.your-property-name\" for the global context\n\nThis needs to be the key path of the variable. If you use {{}}, it'll dereference that to the value of the variable before assignment. This can be useful if the path is dynamic. Example:\n- \"global.{{my-tool-call-step.output.my-key-name}}\"\n\nYou can also string interpolate multiple variables to get the key name:\n- \"global.{{my-tool-call-step.output.my-key-name-suffix}}-{{my-tool-call-step.output.my-key-name}}\"\n\nThe path to the new variable is created if it doesn't exist. Example:\n- \"global.this-does-not-exist.neither-does-this\" will create `this-does-not-exist` object with `neither-does-this` as a key\n\nCaveats:\n1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.output.propertyName}} will reference the latest usage of the step.\n2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.output.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow."
+ },
+ "value": {
+ "type": "string",
+ "description": "The value to assign to the variable.\n\nYou can reference any variable in the context of the current block execution (step):\n- \"{{output.your-property-name}}\" for current step's output\n- \"{{your-step-name.output.your-property-name}}\" for another step's output (in the same workflow; read caveat #1)\n- \"{{your-block-name.output.your-property-name}}\" for another block's output (in the same workflow; read caveat #2)\n- \"{{global.your-property-name}}\" for the global context\n\nOr, you can use a constant:\n- \"1\"\n- \"text\"\n- \"true\"\n- \"false\"\n\nOr, you can mix and match with string interpolation:\n- \"{{your-property-name}}-{{input.your-property-name-2}}-1\"\n\nCaveats:\n1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.output.propertyName}} will reference the latest usage of the step.\n2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.output.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow.",
+ "maxLength": 1000
+ }
+ },
+ "required": [
+ "type",
+ "variable",
+ "value"
+ ]
+ },
+ "CallbackStep": {
+ "type": "object",
+ "properties": {
+ "block": {
+ "description": "This is the block to use. To use an existing block, use `blockId`.",
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/CreateConversationBlockDTO",
+ "title": "ConversationBlock"
+ },
+ {
+ "$ref": "#/components/schemas/CreateToolCallBlockDTO",
+ "title": "ToolCallBlock"
+ },
+ {
+ "$ref": "#/components/schemas/CreateWorkflowBlockDTO",
+ "title": "WorkflowBlock",
+ "description": "This is the CreateWorkflowBlockDTO object but Swagger does not display nested schemas correctly."
+ }
+ ]
+ },
+ "type": {
+ "type": "string",
+ "description": "This is a step that calls back to the previous step after it's done. This effectively means we're spawning a new conversation thread. The previous conversation thread will resume where it left off once this step is done.\n\nUse case:\n- You are collecting a customer's order and while they were on one item, they start a new item or try to modify a previous one. You would make a OrderUpdate block which calls the same block repeatedly when a new update starts.",
+ "enum": [
+ "callback"
+ ]
+ },
+ "mutations": {
+ "type": "array",
+ "description": "This is the mutations to apply to the context after the step is done.",
+ "items": {
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/AssignmentMutation",
+ "title": "AssignmentMutation"
+ }
+ ]
+ }
+ },
+ "name": {
+ "type": "string",
+ "description": "This is the name of the step.",
+ "minLength": 1
+ },
+ "blockId": {
+ "type": "string",
+ "description": "This is the id of the block to use. To use a transient block, use `block`."
+ },
+ "input": {
+ "type": "object",
+ "description": "This is the input to the block. You can use any key-value map as input to the block.\n\nExample:\n{\n \"name\": \"John Doe\",\n \"age\": 20\n}\n\nYou can reference any variable in the context of the current block:\n- \"{{your-step-name.output.your-property-name}}\" for another step's output (in the same workflow; read caveat #1)\n- \"{{your-step-name.input.your-property-name}}\" for another step's input (in the same workflow; read caveat #1)\n- \"{{your-block-name.output.your-property-name}}\" for another block's output (in the same workflow; read caveat #2)\n- \"{{your-block-name.input.your-property-name}}\" for another block's input (in the same workflow; read caveat #2)\n- \"{{workflow.input.your-property-name}}\" for the current workflow's input\n- \"{{global.your-property-name}}\" for the global context\n\nExample:\n{\n \"name\": \"{{my-tool-call-step.output.name}}\",\n \"age\": \"{{my-tool-call-step.input.age}}\",\n \"date\": \"{{workflow.input.date}}\"\n}\n\nYou can dynamically change the key name.\n\nExample:\n{\n \"{{my-tool-call-step.output.key-name-for-name}}\": \"{{name}}\",\n \"{{my-tool-call-step.input.key-name-for-age}}\": \"{{age}}\",\n \"{{workflow.input.key-name-for-date}}\": \"{{date}}\"\n}\n\nYou can represent the value as a string, number, boolean, array, or object.\n\nExample:\n{\n \"name\": \"john\",\n \"age\": 20,\n \"date\": \"2021-01-01\",\n \"metadata\": {\n \"unique-key\": \"{{my-tool-call-step.output.unique-key}}\"\n },\n \"array\": [\"A\", \"B\", \"C\"],\n}\n\nCaveats:\n1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.input/output.propertyName}} will reference the latest usage of the step.\n2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.input/output.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow."
+ }
+ },
+ "required": [
+ "type",
+ "name"
+ ]
}
}
}
From d2d8aa5947f4e46638b52097f06ea318911bb8a1 Mon Sep 17 00:00:00 2001
From: "fern-api[bot]" <115122769+fern-api[bot]@users.noreply.github.com>
Date: Mon, 7 Oct 2024 00:01:54 +0000
Subject: [PATCH 2/6] chore(openapi): remove deprecated vapifault error and
StepDestination, HandoffStep, AssignmentMutation, CallbackStep objects
---
openapi.json | 198 ---------------------------------------------------
1 file changed, 198 deletions(-)
diff --git a/openapi.json b/openapi.json
index 895c67c..72136c2 100644
--- a/openapi.json
+++ b/openapi.json
@@ -8446,7 +8446,6 @@
"vapifault-transport-never-connected",
"vapifault-web-call-worker-setup-failed",
"vapifault-transport-connected-but-call-not-active",
- "vapifault-call-started-but-connection-to-transport-missing",
"pipeline-error-openai-voice-failed",
"pipeline-error-cartesia-voice-failed",
"pipeline-error-deepgram-transcriber-failed",
@@ -17275,7 +17274,6 @@
"vapifault-transport-never-connected",
"vapifault-web-call-worker-setup-failed",
"vapifault-transport-connected-but-call-not-active",
- "vapifault-call-started-but-connection-to-transport-missing",
"pipeline-error-openai-voice-failed",
"pipeline-error-cartesia-voice-failed",
"pipeline-error-deepgram-transcriber-failed",
@@ -18034,7 +18032,6 @@
"vapifault-transport-never-connected",
"vapifault-web-call-worker-setup-failed",
"vapifault-transport-connected-but-call-not-active",
- "vapifault-call-started-but-connection-to-transport-missing",
"pipeline-error-openai-voice-failed",
"pipeline-error-cartesia-voice-failed",
"pipeline-error-deepgram-transcriber-failed",
@@ -19949,201 +19946,6 @@
"toolCall",
"metadata"
]
- },
- "StepDestination": {
- "type": "object",
- "properties": {
- "type": {
- "type": "string",
- "enum": [
- "step"
- ]
- },
- "conditions": {
- "type": "array",
- "description": "This is an optional array of conditions that must be met for this destination to be triggered. If empty, this is the default destination that the step transfers to.",
- "items": {
- "oneOf": [
- {
- "$ref": "#/components/schemas/ModelBasedCondition",
- "title": "ModelBasedCondition"
- },
- {
- "$ref": "#/components/schemas/RuleBasedCondition",
- "title": "RuleBasedCondition"
- }
- ]
- }
- },
- "stepName": {
- "type": "string",
- "minLength": 1
- }
- },
- "required": [
- "type",
- "stepName"
- ]
- },
- "HandoffStep": {
- "type": "object",
- "properties": {
- "block": {
- "description": "This is the block to use. To use an existing block, use `blockId`.",
- "oneOf": [
- {
- "$ref": "#/components/schemas/CreateConversationBlockDTO",
- "title": "ConversationBlock"
- },
- {
- "$ref": "#/components/schemas/CreateToolCallBlockDTO",
- "title": "ToolCallBlock"
- },
- {
- "$ref": "#/components/schemas/CreateWorkflowBlockDTO",
- "title": "WorkflowBlock",
- "description": "This is the CreateWorkflowBlockDTO object but Swagger does not display nested schemas correctly."
- }
- ]
- },
- "type": {
- "type": "string",
- "description": "This is a step that takes a handoff from the previous step. This means it won't return to the calling step. The workflow execution will continue linearly.\n\nUse case:\n- You want to collect information linearly (e.g. a form, provide information, etc).",
- "enum": [
- "handoff"
- ]
- },
- "destinations": {
- "type": "array",
- "description": "These are the destinations that the step can go to after it's done.",
- "items": {
- "oneOf": [
- {
- "$ref": "#/components/schemas/StepDestination",
- "title": "StepDestination"
- }
- ]
- }
- },
- "name": {
- "type": "string",
- "description": "This is the name of the step.",
- "minLength": 1
- },
- "blockId": {
- "type": "string",
- "description": "This is the id of the block to use. To use a transient block, use `block`."
- },
- "input": {
- "type": "object",
- "description": "This is the input to the block. You can use any key-value map as input to the block.\n\nExample:\n{\n \"name\": \"John Doe\",\n \"age\": 20\n}\n\nYou can reference any variable in the context of the current block:\n- \"{{your-step-name.output.your-property-name}}\" for another step's output (in the same workflow; read caveat #1)\n- \"{{your-step-name.input.your-property-name}}\" for another step's input (in the same workflow; read caveat #1)\n- \"{{your-block-name.output.your-property-name}}\" for another block's output (in the same workflow; read caveat #2)\n- \"{{your-block-name.input.your-property-name}}\" for another block's input (in the same workflow; read caveat #2)\n- \"{{workflow.input.your-property-name}}\" for the current workflow's input\n- \"{{global.your-property-name}}\" for the global context\n\nExample:\n{\n \"name\": \"{{my-tool-call-step.output.name}}\",\n \"age\": \"{{my-tool-call-step.input.age}}\",\n \"date\": \"{{workflow.input.date}}\"\n}\n\nYou can dynamically change the key name.\n\nExample:\n{\n \"{{my-tool-call-step.output.key-name-for-name}}\": \"{{name}}\",\n \"{{my-tool-call-step.input.key-name-for-age}}\": \"{{age}}\",\n \"{{workflow.input.key-name-for-date}}\": \"{{date}}\"\n}\n\nYou can represent the value as a string, number, boolean, array, or object.\n\nExample:\n{\n \"name\": \"john\",\n \"age\": 20,\n \"date\": \"2021-01-01\",\n \"metadata\": {\n \"unique-key\": \"{{my-tool-call-step.output.unique-key}}\"\n },\n \"array\": [\"A\", \"B\", \"C\"],\n}\n\nCaveats:\n1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.input/output.propertyName}} will reference the latest usage of the step.\n2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.input/output.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow."
- }
- },
- "required": [
- "type",
- "name"
- ]
- },
- "AssignmentMutation": {
- "type": "object",
- "properties": {
- "conditions": {
- "type": "array",
- "description": "This is an optional array of conditions that must be met for this mutation to be triggered.",
- "items": {
- "oneOf": [
- {
- "$ref": "#/components/schemas/ModelBasedCondition",
- "title": "ModelBasedCondition"
- },
- {
- "$ref": "#/components/schemas/RuleBasedCondition",
- "title": "RuleBasedCondition"
- }
- ]
- }
- },
- "type": {
- "type": "string",
- "description": "This mutation assigns a new value to an existing or new variable.",
- "enum": [
- "assignment"
- ]
- },
- "variable": {
- "type": "string",
- "description": "This is the variable to assign a new value to.\n\nYou can reference any variable in the context of the current block execution (step):\n- \"output.your-property-name\" for current step's output\n- \"your-step-name.output.your-property-name\" for another step's output (in the same workflow; read caveat #1)\n- \"your-block-name.output.your-property-name\" for another block's output (in the same workflow; read caveat #2)\n- \"global.your-property-name\" for the global context\n\nThis needs to be the key path of the variable. If you use {{}}, it'll dereference that to the value of the variable before assignment. This can be useful if the path is dynamic. Example:\n- \"global.{{my-tool-call-step.output.my-key-name}}\"\n\nYou can also string interpolate multiple variables to get the key name:\n- \"global.{{my-tool-call-step.output.my-key-name-suffix}}-{{my-tool-call-step.output.my-key-name}}\"\n\nThe path to the new variable is created if it doesn't exist. Example:\n- \"global.this-does-not-exist.neither-does-this\" will create `this-does-not-exist` object with `neither-does-this` as a key\n\nCaveats:\n1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.output.propertyName}} will reference the latest usage of the step.\n2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.output.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow."
- },
- "value": {
- "type": "string",
- "description": "The value to assign to the variable.\n\nYou can reference any variable in the context of the current block execution (step):\n- \"{{output.your-property-name}}\" for current step's output\n- \"{{your-step-name.output.your-property-name}}\" for another step's output (in the same workflow; read caveat #1)\n- \"{{your-block-name.output.your-property-name}}\" for another block's output (in the same workflow; read caveat #2)\n- \"{{global.your-property-name}}\" for the global context\n\nOr, you can use a constant:\n- \"1\"\n- \"text\"\n- \"true\"\n- \"false\"\n\nOr, you can mix and match with string interpolation:\n- \"{{your-property-name}}-{{input.your-property-name-2}}-1\"\n\nCaveats:\n1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.output.propertyName}} will reference the latest usage of the step.\n2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.output.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow.",
- "maxLength": 1000
- }
- },
- "required": [
- "type",
- "variable",
- "value"
- ]
- },
- "CallbackStep": {
- "type": "object",
- "properties": {
- "block": {
- "description": "This is the block to use. To use an existing block, use `blockId`.",
- "oneOf": [
- {
- "$ref": "#/components/schemas/CreateConversationBlockDTO",
- "title": "ConversationBlock"
- },
- {
- "$ref": "#/components/schemas/CreateToolCallBlockDTO",
- "title": "ToolCallBlock"
- },
- {
- "$ref": "#/components/schemas/CreateWorkflowBlockDTO",
- "title": "WorkflowBlock",
- "description": "This is the CreateWorkflowBlockDTO object but Swagger does not display nested schemas correctly."
- }
- ]
- },
- "type": {
- "type": "string",
- "description": "This is a step that calls back to the previous step after it's done. This effectively means we're spawning a new conversation thread. The previous conversation thread will resume where it left off once this step is done.\n\nUse case:\n- You are collecting a customer's order and while they were on one item, they start a new item or try to modify a previous one. You would make a OrderUpdate block which calls the same block repeatedly when a new update starts.",
- "enum": [
- "callback"
- ]
- },
- "mutations": {
- "type": "array",
- "description": "This is the mutations to apply to the context after the step is done.",
- "items": {
- "oneOf": [
- {
- "$ref": "#/components/schemas/AssignmentMutation",
- "title": "AssignmentMutation"
- }
- ]
- }
- },
- "name": {
- "type": "string",
- "description": "This is the name of the step.",
- "minLength": 1
- },
- "blockId": {
- "type": "string",
- "description": "This is the id of the block to use. To use a transient block, use `block`."
- },
- "input": {
- "type": "object",
- "description": "This is the input to the block. You can use any key-value map as input to the block.\n\nExample:\n{\n \"name\": \"John Doe\",\n \"age\": 20\n}\n\nYou can reference any variable in the context of the current block:\n- \"{{your-step-name.output.your-property-name}}\" for another step's output (in the same workflow; read caveat #1)\n- \"{{your-step-name.input.your-property-name}}\" for another step's input (in the same workflow; read caveat #1)\n- \"{{your-block-name.output.your-property-name}}\" for another block's output (in the same workflow; read caveat #2)\n- \"{{your-block-name.input.your-property-name}}\" for another block's input (in the same workflow; read caveat #2)\n- \"{{workflow.input.your-property-name}}\" for the current workflow's input\n- \"{{global.your-property-name}}\" for the global context\n\nExample:\n{\n \"name\": \"{{my-tool-call-step.output.name}}\",\n \"age\": \"{{my-tool-call-step.input.age}}\",\n \"date\": \"{{workflow.input.date}}\"\n}\n\nYou can dynamically change the key name.\n\nExample:\n{\n \"{{my-tool-call-step.output.key-name-for-name}}\": \"{{name}}\",\n \"{{my-tool-call-step.input.key-name-for-age}}\": \"{{age}}\",\n \"{{workflow.input.key-name-for-date}}\": \"{{date}}\"\n}\n\nYou can represent the value as a string, number, boolean, array, or object.\n\nExample:\n{\n \"name\": \"john\",\n \"age\": 20,\n \"date\": \"2021-01-01\",\n \"metadata\": {\n \"unique-key\": \"{{my-tool-call-step.output.unique-key}}\"\n },\n \"array\": [\"A\", \"B\", \"C\"],\n}\n\nCaveats:\n1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.input/output.propertyName}} will reference the latest usage of the step.\n2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.input/output.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow."
- }
- },
- "required": [
- "type",
- "name"
- ]
}
}
}
From 1aa91c8de65c134f83d9f71d8a8b50dfcbfe1e3b Mon Sep 17 00:00:00 2001
From: "fern-api[bot]" <115122769+fern-api[bot]@users.noreply.github.com>
Date: Wed, 9 Oct 2024 00:01:57 +0000
Subject: [PATCH 3/6] feat(openapi): Add new features and improvements to the
API specification
- Add "strict" field to "OpenAIFunction" for controlling schema adherence
- Add "description" field to "description" field in "OpenAIFunction"
- Add new "ClientInboundMessageTransfer" type for transferring calls
- Add new "StepDestination", "HandoffStep", and "AssignmentMutation" types for workflow steps
- Add new "CallbackStep" type for calling back to previous steps
- Add "slackSupportEnabled" and "slackChannelId" fields to "Subscription"
- Update "hipaaCommonPaperAgreementId" field in "Subscription"
- Update type of "time" field in "Log" from number to string
- Update available models to include "gpt-4o-2024-08-06"
---
openapi.json | 305 ++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 299 insertions(+), 6 deletions(-)
diff --git a/openapi.json b/openapi.json
index 72136c2..1efa866 100644
--- a/openapi.json
+++ b/openapi.json
@@ -599,6 +599,7 @@
"content": {
"application/json": {
"schema": {
+ "title": "PhoneNumber",
"oneOf": [
{
"$ref": "#/components/schemas/ByoPhoneNumber",
@@ -744,6 +745,7 @@
"schema": {
"type": "array",
"items": {
+ "title": "PhoneNumber",
"oneOf": [
{
"$ref": "#/components/schemas/ByoPhoneNumber",
@@ -807,6 +809,7 @@
"content": {
"application/json": {
"schema": {
+ "title": "PhoneNumber",
"oneOf": [
{
"$ref": "#/components/schemas/ByoPhoneNumber",
@@ -877,6 +880,7 @@
"content": {
"application/json": {
"schema": {
+ "title": "PhoneNumber",
"oneOf": [
{
"$ref": "#/components/schemas/ByoPhoneNumber",
@@ -937,6 +941,7 @@
"content": {
"application/json": {
"schema": {
+ "title": "PhoneNumber",
"oneOf": [
{
"$ref": "#/components/schemas/ByoPhoneNumber",
@@ -3702,6 +3707,11 @@
"OpenAIFunction": {
"type": "object",
"properties": {
+ "strict": {
+ "type": "boolean",
+ "description": "This is a boolean that controls whether to enable strict schema adherence when generating the function call. If set to true, the model will follow the exact schema defined in the parameters field. Only a subset of JSON Schema is supported when strict is true. Learn more about Structured Outputs in the [OpenAI guide](https://openai.com/index/introducing-structured-outputs-in-the-api/).\n\n@default false",
+ "default": false
+ },
"name": {
"type": "string",
"description": "This is the the name of the function to be called.\n\nMust be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64.",
@@ -3710,6 +3720,7 @@
},
"description": {
"type": "string",
+ "description": "This is the description of what the function does, used by the AI to choose when and how to call the function.",
"maxLength": 1000
},
"parameters": {
@@ -8446,6 +8457,7 @@
"vapifault-transport-never-connected",
"vapifault-web-call-worker-setup-failed",
"vapifault-transport-connected-but-call-not-active",
+ "vapifault-call-started-but-connection-to-transport-missing",
"pipeline-error-openai-voice-failed",
"pipeline-error-cartesia-voice-failed",
"pipeline-error-deepgram-transcriber-failed",
@@ -9972,6 +9984,31 @@
"credentialId"
]
},
+ "SipAuthentication": {
+ "type": "object",
+ "properties": {
+ "realm": {
+ "type": "string",
+ "description": "This will be expected in the `realm` field of the `authorization` header of the SIP INVITE. Defaults to sip.vapi.ai."
+ },
+ "username": {
+ "type": "string",
+ "description": "This will be expected in the `username` field of the `authorization` header of the SIP INVITE.",
+ "minLength": 20,
+ "maxLength": 40
+ },
+ "password": {
+ "type": "string",
+ "description": "This will be expected to generate the `response` field of the `authorization` header of the SIP INVITE, through digest authentication.",
+ "minLength": 20,
+ "maxLength": 40
+ }
+ },
+ "required": [
+ "username",
+ "password"
+ ]
+ },
"VapiPhoneNumber": {
"type": "object",
"properties": {
@@ -10037,6 +10074,14 @@
"sipUri": {
"type": "string",
"description": "This is the SIP URI of the phone number. You can SIP INVITE this. The assistant attached to this number will answer.\n\nThis is case-insensitive."
+ },
+ "authentication": {
+ "description": "This enables authentication for incoming SIP INVITE requests to the `sipUri`.\n\nIf not set, any username/password to the 401 challenge of the SIP INVITE will be accepted.",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/SipAuthentication"
+ }
+ ]
}
},
"required": [
@@ -10263,6 +10308,14 @@
"type": "string",
"description": "This is the SIP URI of the phone number. You can SIP INVITE this. The assistant attached to this number will answer.\n\nThis is case-insensitive."
},
+ "authentication": {
+ "description": "This enables authentication for incoming SIP INVITE requests to the `sipUri`.\n\nIf not set, any username/password to the 401 challenge of the SIP INVITE will be accepted.",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/SipAuthentication"
+ }
+ ]
+ },
"name": {
"type": "string",
"description": "This is the name of the phone number. This is just for your own reference.",
@@ -10505,11 +10558,19 @@
"type": "string",
"description": "This is the Stripe payment ID."
},
+ "slackSupportEnabled": {
+ "type": "boolean",
+ "description": "If this flag is true, then the user has purchased slack support."
+ },
+ "slackChannelId": {
+ "type": "string",
+ "description": "If this subscription has a slack support subscription, the slack channel's ID will be stored here."
+ },
"hipaaEnabled": {
"type": "boolean",
"description": "This is the HIPAA enabled flag for the subscription. It determines whether orgs under this\nsubscription have the option to enable HIPAA compliance."
},
- "commonPaperAgreementId": {
+ "hipaaCommonPaperAgreementId": {
"type": "string",
"description": "This is the ID for the Common Paper agreement outlining the HIPAA contract."
},
@@ -10667,10 +10728,7 @@
}
]
}
- },
- "required": [
- "credits"
- ]
+ }
},
"PaymentRetryDTO": {
"type": "object",
@@ -12673,7 +12731,7 @@
"type": "object",
"properties": {
"time": {
- "type": "number",
+ "type": "string",
"description": "This is the timestamp at which the log was written."
},
"orgId": {
@@ -12953,6 +13011,7 @@
"models": {
"type": "array",
"enum": [
+ "gpt-4o-2024-08-06",
"gpt-4o-mini-2024-07-18",
"gpt-4o-2024-05-13",
"gpt-4-turbo-2024-04-09",
@@ -12969,6 +13028,7 @@
"items": {
"type": "string",
"enum": [
+ "gpt-4o-2024-08-06",
"gpt-4o-mini-2024-07-18",
"gpt-4o-2024-05-13",
"gpt-4-turbo-2024-04-09",
@@ -14276,6 +14336,7 @@
"models": {
"type": "array",
"enum": [
+ "gpt-4o-2024-08-06",
"gpt-4o-mini-2024-07-18",
"gpt-4o-2024-05-13",
"gpt-4-turbo-2024-04-09",
@@ -14292,6 +14353,7 @@
"items": {
"type": "string",
"enum": [
+ "gpt-4o-2024-08-06",
"gpt-4o-mini-2024-07-18",
"gpt-4o-2024-05-13",
"gpt-4-turbo-2024-04-09",
@@ -14907,6 +14969,7 @@
"models": {
"type": "array",
"enum": [
+ "gpt-4o-2024-08-06",
"gpt-4o-mini-2024-07-18",
"gpt-4o-2024-05-13",
"gpt-4-turbo-2024-04-09",
@@ -14923,6 +14986,7 @@
"items": {
"type": "string",
"enum": [
+ "gpt-4o-2024-08-06",
"gpt-4o-mini-2024-07-18",
"gpt-4o-2024-05-13",
"gpt-4-turbo-2024-04-09",
@@ -17274,6 +17338,7 @@
"vapifault-transport-never-connected",
"vapifault-web-call-worker-setup-failed",
"vapifault-transport-connected-but-call-not-active",
+ "vapifault-call-started-but-connection-to-transport-missing",
"pipeline-error-openai-voice-failed",
"pipeline-error-cartesia-voice-failed",
"pipeline-error-deepgram-transcriber-failed",
@@ -18032,6 +18097,7 @@
"vapifault-transport-never-connected",
"vapifault-web-call-worker-setup-failed",
"vapifault-transport-connected-but-call-not-active",
+ "vapifault-call-started-but-connection-to-transport-missing",
"pipeline-error-openai-voice-failed",
"pipeline-error-cartesia-voice-failed",
"pipeline-error-deepgram-transcriber-failed",
@@ -19357,6 +19423,34 @@
}
}
},
+ "ClientInboundMessageTransfer": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "description": "This is the type of the message. Send \"transfer\" message to transfer the call to a destination.",
+ "enum": [
+ "transfer"
+ ]
+ },
+ "destination": {
+ "description": "This is the destination to transfer the call to.",
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/TransferDestinationNumber",
+ "title": "NumberTransferDestination"
+ },
+ {
+ "$ref": "#/components/schemas/TransferDestinationSip",
+ "title": "SipTransferDestination"
+ }
+ ]
+ }
+ },
+ "required": [
+ "type"
+ ]
+ },
"ClientInboundMessage": {
"type": "object",
"properties": {
@@ -19374,6 +19468,10 @@
{
"$ref": "#/components/schemas/ClientInboundMessageSay",
"title": "Say"
+ },
+ {
+ "$ref": "#/components/schemas/ClientInboundMessageTransfer",
+ "title": "Transfer"
}
]
}
@@ -19946,6 +20044,201 @@
"toolCall",
"metadata"
]
+ },
+ "StepDestination": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "step"
+ ]
+ },
+ "conditions": {
+ "type": "array",
+ "description": "This is an optional array of conditions that must be met for this destination to be triggered. If empty, this is the default destination that the step transfers to.",
+ "items": {
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/ModelBasedCondition",
+ "title": "ModelBasedCondition"
+ },
+ {
+ "$ref": "#/components/schemas/RuleBasedCondition",
+ "title": "RuleBasedCondition"
+ }
+ ]
+ }
+ },
+ "stepName": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "required": [
+ "type",
+ "stepName"
+ ]
+ },
+ "HandoffStep": {
+ "type": "object",
+ "properties": {
+ "block": {
+ "description": "This is the block to use. To use an existing block, use `blockId`.",
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/CreateConversationBlockDTO",
+ "title": "ConversationBlock"
+ },
+ {
+ "$ref": "#/components/schemas/CreateToolCallBlockDTO",
+ "title": "ToolCallBlock"
+ },
+ {
+ "$ref": "#/components/schemas/CreateWorkflowBlockDTO",
+ "title": "WorkflowBlock",
+ "description": "This is the CreateWorkflowBlockDTO object but Swagger does not display nested schemas correctly."
+ }
+ ]
+ },
+ "type": {
+ "type": "string",
+ "description": "This is a step that takes a handoff from the previous step. This means it won't return to the calling step. The workflow execution will continue linearly.\n\nUse case:\n- You want to collect information linearly (e.g. a form, provide information, etc).",
+ "enum": [
+ "handoff"
+ ]
+ },
+ "destinations": {
+ "type": "array",
+ "description": "These are the destinations that the step can go to after it's done.",
+ "items": {
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/StepDestination",
+ "title": "StepDestination"
+ }
+ ]
+ }
+ },
+ "name": {
+ "type": "string",
+ "description": "This is the name of the step.",
+ "minLength": 1
+ },
+ "blockId": {
+ "type": "string",
+ "description": "This is the id of the block to use. To use a transient block, use `block`."
+ },
+ "input": {
+ "type": "object",
+ "description": "This is the input to the block. You can use any key-value map as input to the block.\n\nExample:\n{\n \"name\": \"John Doe\",\n \"age\": 20\n}\n\nYou can reference any variable in the context of the current block:\n- \"{{your-step-name.output.your-property-name}}\" for another step's output (in the same workflow; read caveat #1)\n- \"{{your-step-name.input.your-property-name}}\" for another step's input (in the same workflow; read caveat #1)\n- \"{{your-block-name.output.your-property-name}}\" for another block's output (in the same workflow; read caveat #2)\n- \"{{your-block-name.input.your-property-name}}\" for another block's input (in the same workflow; read caveat #2)\n- \"{{workflow.input.your-property-name}}\" for the current workflow's input\n- \"{{global.your-property-name}}\" for the global context\n\nExample:\n{\n \"name\": \"{{my-tool-call-step.output.name}}\",\n \"age\": \"{{my-tool-call-step.input.age}}\",\n \"date\": \"{{workflow.input.date}}\"\n}\n\nYou can dynamically change the key name.\n\nExample:\n{\n \"{{my-tool-call-step.output.key-name-for-name}}\": \"{{name}}\",\n \"{{my-tool-call-step.input.key-name-for-age}}\": \"{{age}}\",\n \"{{workflow.input.key-name-for-date}}\": \"{{date}}\"\n}\n\nYou can represent the value as a string, number, boolean, array, or object.\n\nExample:\n{\n \"name\": \"john\",\n \"age\": 20,\n \"date\": \"2021-01-01\",\n \"metadata\": {\n \"unique-key\": \"{{my-tool-call-step.output.unique-key}}\"\n },\n \"array\": [\"A\", \"B\", \"C\"],\n}\n\nCaveats:\n1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.input/output.propertyName}} will reference the latest usage of the step.\n2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.input/output.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow."
+ }
+ },
+ "required": [
+ "type",
+ "name"
+ ]
+ },
+ "AssignmentMutation": {
+ "type": "object",
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "description": "This is an optional array of conditions that must be met for this mutation to be triggered.",
+ "items": {
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/ModelBasedCondition",
+ "title": "ModelBasedCondition"
+ },
+ {
+ "$ref": "#/components/schemas/RuleBasedCondition",
+ "title": "RuleBasedCondition"
+ }
+ ]
+ }
+ },
+ "type": {
+ "type": "string",
+ "description": "This mutation assigns a new value to an existing or new variable.",
+ "enum": [
+ "assignment"
+ ]
+ },
+ "variable": {
+ "type": "string",
+ "description": "This is the variable to assign a new value to.\n\nYou can reference any variable in the context of the current block execution (step):\n- \"output.your-property-name\" for current step's output\n- \"your-step-name.output.your-property-name\" for another step's output (in the same workflow; read caveat #1)\n- \"your-block-name.output.your-property-name\" for another block's output (in the same workflow; read caveat #2)\n- \"global.your-property-name\" for the global context\n\nThis needs to be the key path of the variable. If you use {{}}, it'll dereference that to the value of the variable before assignment. This can be useful if the path is dynamic. Example:\n- \"global.{{my-tool-call-step.output.my-key-name}}\"\n\nYou can also string interpolate multiple variables to get the key name:\n- \"global.{{my-tool-call-step.output.my-key-name-suffix}}-{{my-tool-call-step.output.my-key-name}}\"\n\nThe path to the new variable is created if it doesn't exist. Example:\n- \"global.this-does-not-exist.neither-does-this\" will create `this-does-not-exist` object with `neither-does-this` as a key\n\nCaveats:\n1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.output.propertyName}} will reference the latest usage of the step.\n2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.output.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow."
+ },
+ "value": {
+ "type": "string",
+ "description": "The value to assign to the variable.\n\nYou can reference any variable in the context of the current block execution (step):\n- \"{{output.your-property-name}}\" for current step's output\n- \"{{your-step-name.output.your-property-name}}\" for another step's output (in the same workflow; read caveat #1)\n- \"{{your-block-name.output.your-property-name}}\" for another block's output (in the same workflow; read caveat #2)\n- \"{{global.your-property-name}}\" for the global context\n\nOr, you can use a constant:\n- \"1\"\n- \"text\"\n- \"true\"\n- \"false\"\n\nOr, you can mix and match with string interpolation:\n- \"{{your-property-name}}-{{input.your-property-name-2}}-1\"\n\nCaveats:\n1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.output.propertyName}} will reference the latest usage of the step.\n2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.output.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow.",
+ "maxLength": 1000
+ }
+ },
+ "required": [
+ "type",
+ "variable",
+ "value"
+ ]
+ },
+ "CallbackStep": {
+ "type": "object",
+ "properties": {
+ "block": {
+ "description": "This is the block to use. To use an existing block, use `blockId`.",
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/CreateConversationBlockDTO",
+ "title": "ConversationBlock"
+ },
+ {
+ "$ref": "#/components/schemas/CreateToolCallBlockDTO",
+ "title": "ToolCallBlock"
+ },
+ {
+ "$ref": "#/components/schemas/CreateWorkflowBlockDTO",
+ "title": "WorkflowBlock",
+ "description": "This is the CreateWorkflowBlockDTO object but Swagger does not display nested schemas correctly."
+ }
+ ]
+ },
+ "type": {
+ "type": "string",
+ "description": "This is a step that calls back to the previous step after it's done. This effectively means we're spawning a new conversation thread. The previous conversation thread will resume where it left off once this step is done.\n\nUse case:\n- You are collecting a customer's order and while they were on one item, they start a new item or try to modify a previous one. You would make a OrderUpdate block which calls the same block repeatedly when a new update starts.",
+ "enum": [
+ "callback"
+ ]
+ },
+ "mutations": {
+ "type": "array",
+ "description": "This is the mutations to apply to the context after the step is done.",
+ "items": {
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/AssignmentMutation",
+ "title": "AssignmentMutation"
+ }
+ ]
+ }
+ },
+ "name": {
+ "type": "string",
+ "description": "This is the name of the step.",
+ "minLength": 1
+ },
+ "blockId": {
+ "type": "string",
+ "description": "This is the id of the block to use. To use a transient block, use `block`."
+ },
+ "input": {
+ "type": "object",
+ "description": "This is the input to the block. You can use any key-value map as input to the block.\n\nExample:\n{\n \"name\": \"John Doe\",\n \"age\": 20\n}\n\nYou can reference any variable in the context of the current block:\n- \"{{your-step-name.output.your-property-name}}\" for another step's output (in the same workflow; read caveat #1)\n- \"{{your-step-name.input.your-property-name}}\" for another step's input (in the same workflow; read caveat #1)\n- \"{{your-block-name.output.your-property-name}}\" for another block's output (in the same workflow; read caveat #2)\n- \"{{your-block-name.input.your-property-name}}\" for another block's input (in the same workflow; read caveat #2)\n- \"{{workflow.input.your-property-name}}\" for the current workflow's input\n- \"{{global.your-property-name}}\" for the global context\n\nExample:\n{\n \"name\": \"{{my-tool-call-step.output.name}}\",\n \"age\": \"{{my-tool-call-step.input.age}}\",\n \"date\": \"{{workflow.input.date}}\"\n}\n\nYou can dynamically change the key name.\n\nExample:\n{\n \"{{my-tool-call-step.output.key-name-for-name}}\": \"{{name}}\",\n \"{{my-tool-call-step.input.key-name-for-age}}\": \"{{age}}\",\n \"{{workflow.input.key-name-for-date}}\": \"{{date}}\"\n}\n\nYou can represent the value as a string, number, boolean, array, or object.\n\nExample:\n{\n \"name\": \"john\",\n \"age\": 20,\n \"date\": \"2021-01-01\",\n \"metadata\": {\n \"unique-key\": \"{{my-tool-call-step.output.unique-key}}\"\n },\n \"array\": [\"A\", \"B\", \"C\"],\n}\n\nCaveats:\n1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.input/output.propertyName}} will reference the latest usage of the step.\n2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.input/output.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow."
+ }
+ },
+ "required": [
+ "type",
+ "name"
+ ]
}
}
}
From bf0895ff8f4832d9d059efdb008f4524c6ed371c Mon Sep 17 00:00:00 2001
From: "fern-api[bot]" <115122769+fern-api[bot]@users.noreply.github.com>
Date: Thu, 10 Oct 2024 00:01:57 +0000
Subject: [PATCH 4/6] feat(openapi.json): Update JSON schema and add
PaymentsPaginatedResponse object
This commit makes changes to the openapi.json file, specifically updating the JSON schema and introducing a new 'PaymentsPaginatedResponse' object. It includes modifications to field descriptions, the addition of required fields, and the definition of a new response object for paginated payments data.
---
openapi.json | 29 ++++++++++++++++++++++++++++-
1 file changed, 28 insertions(+), 1 deletion(-)
diff --git a/openapi.json b/openapi.json
index 1efa866..384c302 100644
--- a/openapi.json
+++ b/openapi.json
@@ -10600,7 +10600,7 @@
},
"minutesOverageCost": {
"type": "number",
- "description": "The cost of minutes over the included amount. Enterprise only."
+ "description": "The per minute charge on minutes that exceed the included minutes. Enterprise only."
},
"providersIncluded": {
"description": "The list of providers included in the subscription. Enterprise only.",
@@ -10693,6 +10693,24 @@
"subscriptionId"
]
},
+ "PaymentsPaginatedResponse": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/Payment"
+ }
+ },
+ "metadata": {
+ "$ref": "#/components/schemas/PaginationMeta"
+ }
+ },
+ "required": [
+ "results",
+ "metadata"
+ ]
+ },
"SubscriptionMonthlyCharge": {
"type": "object",
"properties": {
@@ -19785,6 +19803,14 @@
"vapi"
]
},
+ "subType": {
+ "type": "string",
+ "description": "This is the sub type of the cost.",
+ "enum": [
+ "normal",
+ "overage"
+ ]
+ },
"minutes": {
"type": "number",
"description": "This is the minutes of Vapi usage. This should match `call.endedAt` - `call.startedAt`."
@@ -19796,6 +19822,7 @@
},
"required": [
"type",
+ "subType",
"minutes",
"cost"
]
From 628d5b088e7dbb50ae88fe6da686592819449245 Mon Sep 17 00:00:00 2001
From: "fern-api[bot]" <115122769+fern-api[bot]@users.noreply.github.com>
Date: Mon, 11 Nov 2024 17:45:24 +0000
Subject: [PATCH 5/6] feat(api): add id and phoneNumberId to call query
parameters
---
fern/apis/api/openapi.json | 7768 +++++++++++++++++++++++++++++-------
1 file changed, 6383 insertions(+), 1385 deletions(-)
diff --git a/fern/apis/api/openapi.json b/fern/apis/api/openapi.json
index 3f7510a..f34b8db 100644
--- a/fern/apis/api/openapi.json
+++ b/fern/apis/api/openapi.json
@@ -41,6 +41,15 @@
"operationId": "CallController_findAll",
"summary": "List Calls",
"parameters": [
+ {
+ "name": "id",
+ "required": false,
+ "in": "query",
+ "description": "This is the unique identifier for the call.",
+ "schema": {
+ "type": "string"
+ }
+ },
{
"name": "assistantId",
"required": false,
@@ -50,6 +59,15 @@
"type": "string"
}
},
+ {
+ "name": "phoneNumberId",
+ "required": false,
+ "in": "query",
+ "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.",
+ "schema": {
+ "type": "string"
+ }
+ },
{
"name": "limit",
"required": false,
@@ -167,160 +185,52 @@
]
}
},
- "/call/{id}": {
+ "/v2/call": {
"get": {
- "operationId": "CallController_findOne",
- "summary": "Get Call",
+ "operationId": "CallController_findAllPaginated",
+ "summary": "List Calls",
"parameters": [
{
- "name": "id",
- "required": true,
- "in": "path",
+ "name": "assistantId",
+ "required": false,
+ "in": "query",
+ "description": "This will return calls with the specified assistantId.",
"schema": {
"type": "string"
}
- }
- ],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Call"
- }
- }
- }
- }
- },
- "tags": [
- "Calls"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- },
- "patch": {
- "operationId": "CallController_update",
- "summary": "Update Call",
- "parameters": [
+ },
{
"name": "id",
- "required": true,
- "in": "path",
+ "required": false,
+ "in": "query",
+ "description": "This will return calls with the specified callId.",
"schema": {
"type": "string"
}
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/UpdateCallDTO"
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Call"
- }
- }
- }
- }
- },
- "tags": [
- "Calls"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- },
- "delete": {
- "operationId": "CallController_deleteCallData",
- "summary": "Delete Call Data",
- "parameters": [
+ },
{
- "name": "id",
- "required": true,
- "in": "path",
+ "name": "page",
+ "required": false,
+ "in": "query",
+ "description": "This is the page number to return. Defaults to 1.",
"schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Call"
- }
- }
+ "minimum": 1,
+ "type": "number"
}
- }
- },
- "tags": [
- "Calls"
- ],
- "security": [
+ },
{
- "bearer": []
- }
- ]
- }
- },
- "/assistant": {
- "post": {
- "operationId": "AssistantController_create",
- "summary": "Create Assistant",
- "parameters": [],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/CreateAssistantDTO"
- }
- }
- }
- },
- "responses": {
- "201": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Assistant"
- }
- }
+ "name": "sortOrder",
+ "required": false,
+ "in": "query",
+ "description": "This is the sort order for pagination. Defaults to 'ASC'.",
+ "schema": {
+ "enum": [
+ "ASC",
+ "DESC"
+ ],
+ "type": "string"
}
- }
- },
- "tags": [
- "Assistants"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- },
- "get": {
- "operationId": "AssistantController_findAll",
- "summary": "List Assistants",
- "parameters": [
+ },
{
"name": "limit",
"required": false,
@@ -419,17 +329,15 @@
"content": {
"application/json": {
"schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/Assistant"
- }
+ "$ref": "#/components/schemas/CallPaginatedResponse"
}
}
}
}
},
"tags": [
- "Assistants"
+ "Calls",
+ "extended"
],
"security": [
{
@@ -438,213 +346,52 @@
]
}
},
- "/assistant/{id}": {
+ "/v2/call/metadata": {
"get": {
- "operationId": "AssistantController_findOne",
- "summary": "Get Assistant",
+ "operationId": "CallController_findAllMetadataPaginated",
+ "summary": "List Call Metadata",
"parameters": [
{
- "name": "id",
- "required": true,
- "in": "path",
+ "name": "assistantId",
+ "required": false,
+ "in": "query",
+ "description": "This will return calls with the specified assistantId.",
"schema": {
"type": "string"
}
- }
- ],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Assistant"
- }
- }
- }
- }
- },
- "tags": [
- "Assistants"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- },
- "patch": {
- "operationId": "AssistantController_update",
- "summary": "Update Assistant",
- "parameters": [
+ },
{
"name": "id",
- "required": true,
- "in": "path",
+ "required": false,
+ "in": "query",
+ "description": "This will return calls with the specified callId.",
"schema": {
"type": "string"
}
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/UpdateAssistantDTO"
- }
+ },
+ {
+ "name": "page",
+ "required": false,
+ "in": "query",
+ "description": "This is the page number to return. Defaults to 1.",
+ "schema": {
+ "minimum": 1,
+ "type": "number"
}
- }
- },
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Assistant"
- }
- }
- }
- }
- },
- "tags": [
- "Assistants"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- },
- "delete": {
- "operationId": "AssistantController_remove",
- "summary": "Delete Assistant",
- "parameters": [
+ },
{
- "name": "id",
- "required": true,
- "in": "path",
+ "name": "sortOrder",
+ "required": false,
+ "in": "query",
+ "description": "This is the sort order for pagination. Defaults to 'ASC'.",
"schema": {
+ "enum": [
+ "ASC",
+ "DESC"
+ ],
"type": "string"
}
- }
- ],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Assistant"
- }
- }
- }
- }
- },
- "tags": [
- "Assistants"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/phone-number": {
- "post": {
- "operationId": "PhoneNumberController_create",
- "summary": "Create Phone Number",
- "parameters": [],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "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"
- }
- ],
- "discriminator": {
- "propertyName": "provider",
- "mapping": {
- "byo-phone-number": "#/components/schemas/CreateByoPhoneNumberDTO",
- "twilio": "#/components/schemas/CreateTwilioPhoneNumberDTO",
- "vonage": "#/components/schemas/CreateVonagePhoneNumberDTO",
- "vapi": "#/components/schemas/CreateVapiPhoneNumberDTO"
- }
- }
- }
- }
- }
- },
- "responses": {
- "201": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "title": "PhoneNumber",
- "oneOf": [
- {
- "$ref": "#/components/schemas/ByoPhoneNumber",
- "title": "ByoPhoneNumber"
- },
- {
- "$ref": "#/components/schemas/TwilioPhoneNumber",
- "title": "TwilioPhoneNumber"
- },
- {
- "$ref": "#/components/schemas/VonagePhoneNumber",
- "title": "VonagePhoneNumber"
- },
- {
- "$ref": "#/components/schemas/VapiPhoneNumber",
- "title": "VapiPhoneNumber"
- }
- ],
- "discriminator": {
- "propertyName": "provider",
- "mapping": {
- "byo-phone-number": "#/components/schemas/ByoPhoneNumber",
- "twilio": "#/components/schemas/TwilioPhoneNumber",
- "vonage": "#/components/schemas/VonagePhoneNumber",
- "vapi": "#/components/schemas/VapiPhoneNumber"
- }
- }
- }
- }
- }
- }
- },
- "tags": [
- "Phone Numbers"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- },
- "get": {
- "operationId": "PhoneNumberController_findAll",
- "summary": "List Phone Numbers",
- "parameters": [
+ },
{
"name": "limit",
"required": false,
@@ -743,44 +490,15 @@
"content": {
"application/json": {
"schema": {
- "type": "array",
- "items": {
- "title": "PhoneNumber",
- "oneOf": [
- {
- "$ref": "#/components/schemas/ByoPhoneNumber",
- "title": "ByoPhoneNumber"
- },
- {
- "$ref": "#/components/schemas/TwilioPhoneNumber",
- "title": "TwilioPhoneNumber"
- },
- {
- "$ref": "#/components/schemas/VonagePhoneNumber",
- "title": "VonagePhoneNumber"
- },
- {
- "$ref": "#/components/schemas/VapiPhoneNumber",
- "title": "VapiPhoneNumber"
- }
- ],
- "discriminator": {
- "propertyName": "provider",
- "mapping": {
- "byo-phone-number": "#/components/schemas/ByoPhoneNumber",
- "twilio": "#/components/schemas/TwilioPhoneNumber",
- "vonage": "#/components/schemas/VonagePhoneNumber",
- "vapi": "#/components/schemas/VapiPhoneNumber"
- }
- }
- }
+ "$ref": "#/components/schemas/CallPaginatedResponse"
}
}
}
}
},
"tags": [
- "Phone Numbers"
+ "Calls",
+ "extended"
],
"security": [
{
@@ -789,10 +507,10 @@
]
}
},
- "/phone-number/{id}": {
+ "/call/{id}": {
"get": {
- "operationId": "PhoneNumberController_findOne",
- "summary": "Get Phone Number",
+ "operationId": "CallController_findOne",
+ "summary": "Get Call",
"parameters": [
{
"name": "id",
@@ -809,41 +527,14 @@
"content": {
"application/json": {
"schema": {
- "title": "PhoneNumber",
- "oneOf": [
- {
- "$ref": "#/components/schemas/ByoPhoneNumber",
- "title": "ByoPhoneNumber"
- },
- {
- "$ref": "#/components/schemas/TwilioPhoneNumber",
- "title": "TwilioPhoneNumber"
- },
- {
- "$ref": "#/components/schemas/VonagePhoneNumber",
- "title": "VonagePhoneNumber"
- },
- {
- "$ref": "#/components/schemas/VapiPhoneNumber",
- "title": "VapiPhoneNumber"
- }
- ],
- "discriminator": {
- "propertyName": "provider",
- "mapping": {
- "byo-phone-number": "#/components/schemas/ByoPhoneNumber",
- "twilio": "#/components/schemas/TwilioPhoneNumber",
- "vonage": "#/components/schemas/VonagePhoneNumber",
- "vapi": "#/components/schemas/VapiPhoneNumber"
- }
- }
+ "$ref": "#/components/schemas/Call"
}
}
}
}
},
"tags": [
- "Phone Numbers"
+ "Calls"
],
"security": [
{
@@ -852,8 +543,8 @@
]
},
"patch": {
- "operationId": "PhoneNumberController_update",
- "summary": "Update Phone Number",
+ "operationId": "CallController_update",
+ "summary": "Update Call",
"parameters": [
{
"name": "id",
@@ -869,7 +560,7 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/UpdatePhoneNumberDTO"
+ "$ref": "#/components/schemas/UpdateCallDTO"
}
}
}
@@ -880,41 +571,14 @@
"content": {
"application/json": {
"schema": {
- "title": "PhoneNumber",
- "oneOf": [
- {
- "$ref": "#/components/schemas/ByoPhoneNumber",
- "title": "ByoPhoneNumber"
- },
- {
- "$ref": "#/components/schemas/TwilioPhoneNumber",
- "title": "TwilioPhoneNumber"
- },
- {
- "$ref": "#/components/schemas/VonagePhoneNumber",
- "title": "VonagePhoneNumber"
- },
- {
- "$ref": "#/components/schemas/VapiPhoneNumber",
- "title": "VapiPhoneNumber"
- }
- ],
- "discriminator": {
- "propertyName": "provider",
- "mapping": {
- "byo-phone-number": "#/components/schemas/ByoPhoneNumber",
- "twilio": "#/components/schemas/TwilioPhoneNumber",
- "vonage": "#/components/schemas/VonagePhoneNumber",
- "vapi": "#/components/schemas/VapiPhoneNumber"
- }
- }
+ "$ref": "#/components/schemas/Call"
}
}
}
}
},
"tags": [
- "Phone Numbers"
+ "Calls"
],
"security": [
{
@@ -923,9 +587,9 @@
]
},
"delete": {
- "operationId": "PhoneNumberController_remove",
- "summary": "Delete Phone Number",
- "parameters": [
+ "operationId": "CallController_deleteCallData",
+ "summary": "Delete Call Data",
+ "parameters": [
{
"name": "id",
"required": true,
@@ -941,41 +605,14 @@
"content": {
"application/json": {
"schema": {
- "title": "PhoneNumber",
- "oneOf": [
- {
- "$ref": "#/components/schemas/ByoPhoneNumber",
- "title": "ByoPhoneNumber"
- },
- {
- "$ref": "#/components/schemas/TwilioPhoneNumber",
- "title": "TwilioPhoneNumber"
- },
- {
- "$ref": "#/components/schemas/VonagePhoneNumber",
- "title": "VonagePhoneNumber"
- },
- {
- "$ref": "#/components/schemas/VapiPhoneNumber",
- "title": "VapiPhoneNumber"
- }
- ],
- "discriminator": {
- "propertyName": "provider",
- "mapping": {
- "byo-phone-number": "#/components/schemas/ByoPhoneNumber",
- "twilio": "#/components/schemas/TwilioPhoneNumber",
- "vonage": "#/components/schemas/VonagePhoneNumber",
- "vapi": "#/components/schemas/VapiPhoneNumber"
- }
- }
+ "$ref": "#/components/schemas/Call"
}
}
}
}
},
"tags": [
- "Phone Numbers"
+ "Calls"
],
"security": [
{
@@ -984,17 +621,17 @@
]
}
},
- "/squad": {
+ "/call/phone": {
"post": {
- "operationId": "SquadController_create",
- "summary": "Create Squad",
+ "operationId": "CallController_createPhoneCall",
+ "summary": "Create Phone Call",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/CreateSquadDTO"
+ "$ref": "#/components/schemas/CreateOutboundCallDTO"
}
}
}
@@ -1005,14 +642,90 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/Squad"
+ "$ref": "#/components/schemas/Call"
}
}
}
}
},
"tags": [
- "Squads"
+ "Calls",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/call/web": {
+ "post": {
+ "operationId": "CallController_createWebCall",
+ "summary": "Create Web Call",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CreateWebCallDTO"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Call"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Calls",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/assistant": {
+ "post": {
+ "operationId": "AssistantController_create",
+ "summary": "Create Assistant",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CreateAssistantDTO"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Assistant"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Assistants"
],
"security": [
{
@@ -1021,8 +734,8 @@
]
},
"get": {
- "operationId": "SquadController_findAll",
- "summary": "List Squads",
+ "operationId": "AssistantController_findAll",
+ "summary": "List Assistants",
"parameters": [
{
"name": "limit",
@@ -1124,7 +837,7 @@
"schema": {
"type": "array",
"items": {
- "$ref": "#/components/schemas/Squad"
+ "$ref": "#/components/schemas/Assistant"
}
}
}
@@ -1132,7 +845,7 @@
}
},
"tags": [
- "Squads"
+ "Assistants"
],
"security": [
{
@@ -1141,10 +854,10 @@
]
}
},
- "/squad/{id}": {
+ "/assistant/{id}": {
"get": {
- "operationId": "SquadController_findOne",
- "summary": "Get Squad",
+ "operationId": "AssistantController_findOne",
+ "summary": "Get Assistant",
"parameters": [
{
"name": "id",
@@ -1161,14 +874,14 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/Squad"
+ "$ref": "#/components/schemas/Assistant"
}
}
}
}
},
"tags": [
- "Squads"
+ "Assistants"
],
"security": [
{
@@ -1177,8 +890,8 @@
]
},
"patch": {
- "operationId": "SquadController_update",
- "summary": "Update Squad",
+ "operationId": "AssistantController_update",
+ "summary": "Update Assistant",
"parameters": [
{
"name": "id",
@@ -1194,7 +907,7 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/UpdateSquadDTO"
+ "$ref": "#/components/schemas/UpdateAssistantDTO"
}
}
}
@@ -1205,14 +918,59 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/Squad"
+ "$ref": "#/components/schemas/Assistant"
}
}
}
}
},
"tags": [
- "Squads"
+ "Assistants"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "put": {
+ "operationId": "AssistantController_replace",
+ "summary": "Replace Assistant",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/UpdateAssistantDTO"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Assistant"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Assistants",
+ "extended"
],
"security": [
{
@@ -1221,8 +979,8 @@
]
},
"delete": {
- "operationId": "SquadController_remove",
- "summary": "Delete Squad",
+ "operationId": "AssistantController_remove",
+ "summary": "Delete Assistant",
"parameters": [
{
"name": "id",
@@ -1239,14 +997,14 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/Squad"
+ "$ref": "#/components/schemas/Assistant"
}
}
}
}
},
"tags": [
- "Squads"
+ "Assistants"
],
"security": [
{
@@ -1255,38 +1013,17 @@
]
}
},
- "/block": {
+ "/phone-number/buy": {
"post": {
- "operationId": "BlockController_create",
- "summary": "Create Block",
+ "operationId": "PhoneNumberController_buy",
+ "summary": "Buy Phone Number",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
- "oneOf": [
- {
- "$ref": "#/components/schemas/CreateConversationBlockDTO",
- "title": "ConversationBlock"
- },
- {
- "$ref": "#/components/schemas/CreateToolCallBlockDTO",
- "title": "ToolCallBlock"
- },
- {
- "$ref": "#/components/schemas/CreateWorkflowBlockDTO",
- "title": "WorkflowBlock"
- }
- ],
- "discriminator": {
- "propertyName": "type",
- "mapping": {
- "conversation": "#/components/schemas/CreateConversationBlockDTO",
- "tool-call": "#/components/schemas/CreateToolCallBlockDTO",
- "workflow": "#/components/schemas/CreateWorkflowBlockDTO"
- }
- }
+ "$ref": "#/components/schemas/BuyPhoneNumberDTO"
}
}
}
@@ -1297,26 +1034,32 @@
"content": {
"application/json": {
"schema": {
+ "title": "PhoneNumber",
"oneOf": [
{
- "$ref": "#/components/schemas/ConversationBlock",
- "title": "ConversationBlock"
+ "$ref": "#/components/schemas/ByoPhoneNumber",
+ "title": "ByoPhoneNumber"
},
{
- "$ref": "#/components/schemas/ToolCallBlock",
- "title": "ToolCallBlock"
+ "$ref": "#/components/schemas/TwilioPhoneNumber",
+ "title": "TwilioPhoneNumber"
},
{
- "$ref": "#/components/schemas/WorkflowBlock",
- "title": "WorkflowBlock"
+ "$ref": "#/components/schemas/VonagePhoneNumber",
+ "title": "VonagePhoneNumber"
+ },
+ {
+ "$ref": "#/components/schemas/VapiPhoneNumber",
+ "title": "VapiPhoneNumber"
}
],
"discriminator": {
- "propertyName": "type",
+ "propertyName": "provider",
"mapping": {
- "conversation": "#/components/schemas/ConversationBlock",
- "tool-call": "#/components/schemas/ToolCallBlock",
- "workflow": "#/components/schemas/WorkflowBlock"
+ "byo-phone-number": "#/components/schemas/ByoPhoneNumber",
+ "twilio": "#/components/schemas/TwilioPhoneNumber",
+ "vonage": "#/components/schemas/VonagePhoneNumber",
+ "vapi": "#/components/schemas/VapiPhoneNumber"
}
}
}
@@ -1325,31 +1068,256 @@
}
},
"tags": [
- "Blocks"
+ "Phone Numbers",
+ "extended"
],
"security": [
{
"bearer": []
}
]
- },
- "get": {
- "operationId": "BlockController_findAll",
- "summary": "List Blocks",
- "parameters": [
- {
- "name": "limit",
- "required": false,
- "in": "query",
- "description": "This is the maximum number of items to return. Defaults to 100.",
- "schema": {
- "minimum": 0,
- "maximum": 1000,
- "type": "number"
- }
- },
- {
- "name": "createdAtGt",
+ }
+ },
+ "/phone-number/import/twilio": {
+ "post": {
+ "operationId": "PhoneNumberController_importTwilio",
+ "summary": "Import Twilio Number",
+ "description": "Use POST /phone-number instead.",
+ "deprecated": true,
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ImportTwilioPhoneNumberDTO"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "title": "PhoneNumber",
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/ByoPhoneNumber",
+ "title": "ByoPhoneNumber"
+ },
+ {
+ "$ref": "#/components/schemas/TwilioPhoneNumber",
+ "title": "TwilioPhoneNumber"
+ },
+ {
+ "$ref": "#/components/schemas/VonagePhoneNumber",
+ "title": "VonagePhoneNumber"
+ },
+ {
+ "$ref": "#/components/schemas/VapiPhoneNumber",
+ "title": "VapiPhoneNumber"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "provider",
+ "mapping": {
+ "byo-phone-number": "#/components/schemas/ByoPhoneNumber",
+ "twilio": "#/components/schemas/TwilioPhoneNumber",
+ "vonage": "#/components/schemas/VonagePhoneNumber",
+ "vapi": "#/components/schemas/VapiPhoneNumber"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Phone Numbers",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/phone-number/import/vonage": {
+ "post": {
+ "operationId": "PhoneNumberController_importVonage",
+ "summary": "Import Vonage Number",
+ "description": "Use POST /phone-number instead.",
+ "deprecated": true,
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ImportVonagePhoneNumberDTO"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "title": "PhoneNumber",
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/ByoPhoneNumber",
+ "title": "ByoPhoneNumber"
+ },
+ {
+ "$ref": "#/components/schemas/TwilioPhoneNumber",
+ "title": "TwilioPhoneNumber"
+ },
+ {
+ "$ref": "#/components/schemas/VonagePhoneNumber",
+ "title": "VonagePhoneNumber"
+ },
+ {
+ "$ref": "#/components/schemas/VapiPhoneNumber",
+ "title": "VapiPhoneNumber"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "provider",
+ "mapping": {
+ "byo-phone-number": "#/components/schemas/ByoPhoneNumber",
+ "twilio": "#/components/schemas/TwilioPhoneNumber",
+ "vonage": "#/components/schemas/VonagePhoneNumber",
+ "vapi": "#/components/schemas/VapiPhoneNumber"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Phone Numbers",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/phone-number": {
+ "post": {
+ "operationId": "PhoneNumberController_create",
+ "summary": "Create Phone Number",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "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"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "provider",
+ "mapping": {
+ "byo-phone-number": "#/components/schemas/CreateByoPhoneNumberDTO",
+ "twilio": "#/components/schemas/CreateTwilioPhoneNumberDTO",
+ "vonage": "#/components/schemas/CreateVonagePhoneNumberDTO",
+ "vapi": "#/components/schemas/CreateVapiPhoneNumberDTO"
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "title": "PhoneNumber",
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/ByoPhoneNumber",
+ "title": "ByoPhoneNumber"
+ },
+ {
+ "$ref": "#/components/schemas/TwilioPhoneNumber",
+ "title": "TwilioPhoneNumber"
+ },
+ {
+ "$ref": "#/components/schemas/VonagePhoneNumber",
+ "title": "VonagePhoneNumber"
+ },
+ {
+ "$ref": "#/components/schemas/VapiPhoneNumber",
+ "title": "VapiPhoneNumber"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "provider",
+ "mapping": {
+ "byo-phone-number": "#/components/schemas/ByoPhoneNumber",
+ "twilio": "#/components/schemas/TwilioPhoneNumber",
+ "vonage": "#/components/schemas/VonagePhoneNumber",
+ "vapi": "#/components/schemas/VapiPhoneNumber"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Phone Numbers"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "get": {
+ "operationId": "PhoneNumberController_findAll",
+ "summary": "List Phone Numbers",
+ "parameters": [
+ {
+ "name": "limit",
+ "required": false,
+ "in": "query",
+ "description": "This is the maximum number of items to return. Defaults to 100.",
+ "schema": {
+ "minimum": 0,
+ "maximum": 1000,
+ "type": "number"
+ }
+ },
+ {
+ "name": "createdAtGt",
"required": false,
"in": "query",
"description": "This will return items where the createdAt is greater than the specified value.",
@@ -1437,26 +1405,32 @@
"schema": {
"type": "array",
"items": {
+ "title": "PhoneNumber",
"oneOf": [
{
- "$ref": "#/components/schemas/ConversationBlock",
- "title": "ConversationBlock"
+ "$ref": "#/components/schemas/ByoPhoneNumber",
+ "title": "ByoPhoneNumber"
},
{
- "$ref": "#/components/schemas/ToolCallBlock",
- "title": "ToolCallBlock"
+ "$ref": "#/components/schemas/TwilioPhoneNumber",
+ "title": "TwilioPhoneNumber"
},
{
- "$ref": "#/components/schemas/WorkflowBlock",
- "title": "WorkflowBlock"
+ "$ref": "#/components/schemas/VonagePhoneNumber",
+ "title": "VonagePhoneNumber"
+ },
+ {
+ "$ref": "#/components/schemas/VapiPhoneNumber",
+ "title": "VapiPhoneNumber"
}
],
"discriminator": {
- "propertyName": "type",
+ "propertyName": "provider",
"mapping": {
- "conversation": "#/components/schemas/ConversationBlock",
- "tool-call": "#/components/schemas/ToolCallBlock",
- "workflow": "#/components/schemas/WorkflowBlock"
+ "byo-phone-number": "#/components/schemas/ByoPhoneNumber",
+ "twilio": "#/components/schemas/TwilioPhoneNumber",
+ "vonage": "#/components/schemas/VonagePhoneNumber",
+ "vapi": "#/components/schemas/VapiPhoneNumber"
}
}
}
@@ -1466,7 +1440,7 @@
}
},
"tags": [
- "Blocks"
+ "Phone Numbers"
],
"security": [
{
@@ -1475,10 +1449,153 @@
]
}
},
- "/block/{id}": {
+ "/v2/phone-number": {
"get": {
- "operationId": "BlockController_findOne",
- "summary": "Get Block",
+ "operationId": "PhoneNumberController_findAllPaginated",
+ "summary": "List Phone Numbers",
+ "parameters": [
+ {
+ "name": "page",
+ "required": false,
+ "in": "query",
+ "description": "This is the page number to return. Defaults to 1.",
+ "schema": {
+ "minimum": 1,
+ "type": "number"
+ }
+ },
+ {
+ "name": "sortOrder",
+ "required": false,
+ "in": "query",
+ "description": "This is the sort order for pagination. Defaults to 'ASC'.",
+ "schema": {
+ "enum": [
+ "ASC",
+ "DESC"
+ ],
+ "type": "string"
+ }
+ },
+ {
+ "name": "limit",
+ "required": false,
+ "in": "query",
+ "description": "This is the maximum number of items to return. Defaults to 100.",
+ "schema": {
+ "minimum": 0,
+ "maximum": 1000,
+ "type": "number"
+ }
+ },
+ {
+ "name": "createdAtGt",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the createdAt is greater than the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "createdAtLt",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the createdAt is less than the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "createdAtGe",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the createdAt is greater than or equal to the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "createdAtLe",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the createdAt is less than or equal to the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "updatedAtGt",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the updatedAt is greater than the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "updatedAtLt",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the updatedAt is less than the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "updatedAtGe",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the updatedAt is greater than or equal to the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "updatedAtLe",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the updatedAt is less than or equal to the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/PhoneNumberPaginatedResponse"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Phone Numbers",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/phone-number/{id}": {
+ "get": {
+ "operationId": "PhoneNumberController_findOne",
+ "summary": "Get Phone Number",
"parameters": [
{
"name": "id",
@@ -1495,26 +1612,32 @@
"content": {
"application/json": {
"schema": {
+ "title": "PhoneNumber",
"oneOf": [
{
- "$ref": "#/components/schemas/ConversationBlock",
- "title": "ConversationBlock"
+ "$ref": "#/components/schemas/ByoPhoneNumber",
+ "title": "ByoPhoneNumber"
},
{
- "$ref": "#/components/schemas/ToolCallBlock",
- "title": "ToolCallBlock"
+ "$ref": "#/components/schemas/TwilioPhoneNumber",
+ "title": "TwilioPhoneNumber"
},
{
- "$ref": "#/components/schemas/WorkflowBlock",
- "title": "WorkflowBlock"
+ "$ref": "#/components/schemas/VonagePhoneNumber",
+ "title": "VonagePhoneNumber"
+ },
+ {
+ "$ref": "#/components/schemas/VapiPhoneNumber",
+ "title": "VapiPhoneNumber"
}
],
"discriminator": {
- "propertyName": "type",
+ "propertyName": "provider",
"mapping": {
- "conversation": "#/components/schemas/ConversationBlock",
- "tool-call": "#/components/schemas/ToolCallBlock",
- "workflow": "#/components/schemas/WorkflowBlock"
+ "byo-phone-number": "#/components/schemas/ByoPhoneNumber",
+ "twilio": "#/components/schemas/TwilioPhoneNumber",
+ "vonage": "#/components/schemas/VonagePhoneNumber",
+ "vapi": "#/components/schemas/VapiPhoneNumber"
}
}
}
@@ -1523,7 +1646,7 @@
}
},
"tags": [
- "Blocks"
+ "Phone Numbers"
],
"security": [
{
@@ -1532,8 +1655,8 @@
]
},
"patch": {
- "operationId": "BlockController_update",
- "summary": "Update Block",
+ "operationId": "PhoneNumberController_update",
+ "summary": "Update Phone Number",
"parameters": [
{
"name": "id",
@@ -1549,7 +1672,7 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/UpdateBlockDTO"
+ "$ref": "#/components/schemas/UpdatePhoneNumberDTO"
}
}
}
@@ -1560,26 +1683,32 @@
"content": {
"application/json": {
"schema": {
+ "title": "PhoneNumber",
"oneOf": [
{
- "$ref": "#/components/schemas/ConversationBlock",
- "title": "ConversationBlock"
+ "$ref": "#/components/schemas/ByoPhoneNumber",
+ "title": "ByoPhoneNumber"
},
{
- "$ref": "#/components/schemas/ToolCallBlock",
- "title": "ToolCallBlock"
+ "$ref": "#/components/schemas/TwilioPhoneNumber",
+ "title": "TwilioPhoneNumber"
},
{
- "$ref": "#/components/schemas/WorkflowBlock",
- "title": "WorkflowBlock"
+ "$ref": "#/components/schemas/VonagePhoneNumber",
+ "title": "VonagePhoneNumber"
+ },
+ {
+ "$ref": "#/components/schemas/VapiPhoneNumber",
+ "title": "VapiPhoneNumber"
}
],
"discriminator": {
- "propertyName": "type",
+ "propertyName": "provider",
"mapping": {
- "conversation": "#/components/schemas/ConversationBlock",
- "tool-call": "#/components/schemas/ToolCallBlock",
- "workflow": "#/components/schemas/WorkflowBlock"
+ "byo-phone-number": "#/components/schemas/ByoPhoneNumber",
+ "twilio": "#/components/schemas/TwilioPhoneNumber",
+ "vonage": "#/components/schemas/VonagePhoneNumber",
+ "vapi": "#/components/schemas/VapiPhoneNumber"
}
}
}
@@ -1588,7 +1717,7 @@
}
},
"tags": [
- "Blocks"
+ "Phone Numbers"
],
"security": [
{
@@ -1597,8 +1726,8 @@
]
},
"delete": {
- "operationId": "BlockController_remove",
- "summary": "Delete Block",
+ "operationId": "PhoneNumberController_remove",
+ "summary": "Delete Phone Number",
"parameters": [
{
"name": "id",
@@ -1615,26 +1744,32 @@
"content": {
"application/json": {
"schema": {
+ "title": "PhoneNumber",
"oneOf": [
{
- "$ref": "#/components/schemas/ConversationBlock",
- "title": "ConversationBlock"
+ "$ref": "#/components/schemas/ByoPhoneNumber",
+ "title": "ByoPhoneNumber"
},
{
- "$ref": "#/components/schemas/ToolCallBlock",
- "title": "ToolCallBlock"
+ "$ref": "#/components/schemas/TwilioPhoneNumber",
+ "title": "TwilioPhoneNumber"
},
{
- "$ref": "#/components/schemas/WorkflowBlock",
- "title": "WorkflowBlock"
+ "$ref": "#/components/schemas/VonagePhoneNumber",
+ "title": "VonagePhoneNumber"
+ },
+ {
+ "$ref": "#/components/schemas/VapiPhoneNumber",
+ "title": "VapiPhoneNumber"
}
],
"discriminator": {
- "propertyName": "type",
+ "propertyName": "provider",
"mapping": {
- "conversation": "#/components/schemas/ConversationBlock",
- "tool-call": "#/components/schemas/ToolCallBlock",
- "workflow": "#/components/schemas/WorkflowBlock"
+ "byo-phone-number": "#/components/schemas/ByoPhoneNumber",
+ "twilio": "#/components/schemas/TwilioPhoneNumber",
+ "vonage": "#/components/schemas/VonagePhoneNumber",
+ "vapi": "#/components/schemas/VapiPhoneNumber"
}
}
}
@@ -1643,7 +1778,7 @@
}
},
"tags": [
- "Blocks"
+ "Phone Numbers"
],
"security": [
{
@@ -1652,128 +1787,156 @@
]
}
},
- "/tool": {
- "post": {
- "operationId": "ToolController_create",
- "summary": "Create Tool",
- "parameters": [],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "oneOf": [
- {
- "$ref": "#/components/schemas/CreateDtmfToolDTO",
- "title": "DtmfTool"
- },
- {
- "$ref": "#/components/schemas/CreateEndCallToolDTO",
- "title": "EndCallTool"
- },
- {
- "$ref": "#/components/schemas/CreateFunctionToolDTO",
- "title": "FunctionTool"
- },
- {
- "$ref": "#/components/schemas/CreateGhlToolDTO",
- "title": "GhlTool"
- },
- {
- "$ref": "#/components/schemas/CreateMakeToolDTO",
- "title": "MakeTool"
- },
- {
- "$ref": "#/components/schemas/CreateTransferCallToolDTO",
- "title": "TransferCallTool"
- },
- {
- "$ref": "#/components/schemas/CreateOutputToolDTO",
- "title": "OutputTool"
- }
- ],
- "discriminator": {
- "propertyName": "type",
- "mapping": {
- "dtmf": "#/components/schemas/CreateDtmfToolDTO",
- "endCall": "#/components/schemas/CreateEndCallToolDTO",
- "function": "#/components/schemas/CreateFunctionToolDTO",
- "ghl": "#/components/schemas/CreateGhlToolDTO",
- "make": "#/components/schemas/CreateMakeToolDTO",
- "transferCall": "#/components/schemas/CreateTransferCallToolDTO",
- "output": "#/components/schemas/CreateOutputToolDTO"
- }
- }
- }
+ "/subscription/{id}": {
+ "get": {
+ "operationId": "SubscriptionController_get",
+ "summary": "Get subscription",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
}
}
- },
+ ],
"responses": {
- "201": {
+ "200": {
"description": "",
"content": {
"application/json": {
"schema": {
- "oneOf": [
- {
- "$ref": "#/components/schemas/DtmfTool",
- "title": "DtmfTool"
- },
- {
- "$ref": "#/components/schemas/EndCallTool",
- "title": "EndCallTool"
- },
- {
- "$ref": "#/components/schemas/FunctionTool",
- "title": "FunctionTool"
- },
- {
- "$ref": "#/components/schemas/GhlTool",
- "title": "GhlTool"
- },
- {
- "$ref": "#/components/schemas/MakeTool",
- "title": "MakeTool"
- },
- {
- "$ref": "#/components/schemas/TransferCallTool",
- "title": "TransferCallTool"
- },
- {
- "$ref": "#/components/schemas/OutputTool",
- "title": "OutputTool"
- }
- ],
- "discriminator": {
- "propertyName": "type",
- "mapping": {
- "dtmf": "#/components/schemas/DtmfTool",
- "endCall": "#/components/schemas/EndCallTool",
- "function": "#/components/schemas/FunctionTool",
- "ghl": "#/components/schemas/GhlTool",
- "make": "#/components/schemas/MakeTool",
- "transferCall": "#/components/schemas/TransferCallTool",
- "output": "#/components/schemas/OutputTool"
- }
- }
+ "$ref": "#/components/schemas/Subscription"
}
}
}
}
},
"tags": [
- "Tools"
+ "Subscriptions",
+ "extended"
],
"security": [
{
"bearer": []
}
]
- },
+ }
+ },
+ "/subscription/{id}/payment": {
"get": {
- "operationId": "ToolController_findAll",
- "summary": "List Tools",
+ "operationId": "SubscriptionPaymentController_paymentsGet",
+ "summary": "Find all payments",
"parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "status",
+ "required": true,
+ "in": "query",
+ "description": "Status of the payment",
+ "schema": {
+ "enum": [
+ "past-due",
+ "finalized",
+ "refunded"
+ ],
+ "type": "string"
+ }
+ },
+ {
+ "name": "costLe",
+ "required": true,
+ "in": "query",
+ "description": "This will return items where the cost is less than or equal to the specified value.",
+ "schema": {
+ "type": "number"
+ }
+ },
+ {
+ "name": "costLt",
+ "required": true,
+ "in": "query",
+ "description": "This will return items where the cost is less than the specified value.",
+ "schema": {
+ "type": "number"
+ }
+ },
+ {
+ "name": "costGe",
+ "required": true,
+ "in": "query",
+ "description": "This will return items where the cost is greater than or equal to the specified value.",
+ "schema": {
+ "type": "number"
+ }
+ },
+ {
+ "name": "costGt",
+ "required": true,
+ "in": "query",
+ "description": "This will return items where the cost is greater than the specified value.",
+ "schema": {
+ "type": "number"
+ }
+ },
+ {
+ "name": "orgId",
+ "required": false,
+ "in": "query",
+ "description": "Unique identifier for the organization",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "callId",
+ "required": false,
+ "in": "query",
+ "description": "Unique identifier for the call",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "phoneNumberId",
+ "required": false,
+ "in": "query",
+ "description": "Unique identifier of the associated phone number",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "page",
+ "required": false,
+ "in": "query",
+ "description": "This is the page number to return. Defaults to 1.",
+ "schema": {
+ "minimum": 1,
+ "type": "number"
+ }
+ },
+ {
+ "name": "sortOrder",
+ "required": false,
+ "in": "query",
+ "description": "This is the sort order for pagination. Defaults to 'ASC'.",
+ "schema": {
+ "enum": [
+ "ASC",
+ "DESC"
+ ],
+ "type": "string"
+ }
+ },
{
"name": "limit",
"required": false,
@@ -1872,58 +2035,15 @@
"content": {
"application/json": {
"schema": {
- "type": "array",
- "items": {
- "oneOf": [
- {
- "$ref": "#/components/schemas/DtmfTool",
- "title": "DtmfTool"
- },
- {
- "$ref": "#/components/schemas/EndCallTool",
- "title": "EndCallTool"
- },
- {
- "$ref": "#/components/schemas/FunctionTool",
- "title": "FunctionTool"
- },
- {
- "$ref": "#/components/schemas/GhlTool",
- "title": "GhlTool"
- },
- {
- "$ref": "#/components/schemas/MakeTool",
- "title": "MakeTool"
- },
- {
- "$ref": "#/components/schemas/TransferCallTool",
- "title": "TransferCallTool"
- },
- {
- "$ref": "#/components/schemas/OutputTool",
- "title": "OutputTool"
- }
- ],
- "discriminator": {
- "propertyName": "type",
- "mapping": {
- "dtmf": "#/components/schemas/DtmfTool",
- "endCall": "#/components/schemas/EndCallTool",
- "function": "#/components/schemas/FunctionTool",
- "ghl": "#/components/schemas/GhlTool",
- "make": "#/components/schemas/MakeTool",
- "transferCall": "#/components/schemas/TransferCallTool",
- "output": "#/components/schemas/OutputTool"
- }
- }
- }
+ "$ref": "#/components/schemas/PaymentsPaginatedResponse"
}
}
}
}
},
"tags": [
- "Tools"
+ "Subscriptions",
+ "extended"
],
"security": [
{
@@ -1932,10 +2052,10 @@
]
}
},
- "/tool/{id}": {
+ "/subscription/{id}/monthly-charge": {
"get": {
- "operationId": "ToolController_findOne",
- "summary": "Get Tool",
+ "operationId": "SubscriptionPaymentController_monthlyChargeGet",
+ "summary": "Get monthly charge",
"parameters": [
{
"name": "id",
@@ -1952,65 +2072,27 @@
"content": {
"application/json": {
"schema": {
- "oneOf": [
- {
- "$ref": "#/components/schemas/DtmfTool",
- "title": "DtmfTool"
- },
- {
- "$ref": "#/components/schemas/EndCallTool",
- "title": "EndCallTool"
- },
- {
- "$ref": "#/components/schemas/FunctionTool",
- "title": "FunctionTool"
- },
- {
- "$ref": "#/components/schemas/GhlTool",
- "title": "GhlTool"
- },
- {
- "$ref": "#/components/schemas/MakeTool",
- "title": "MakeTool"
- },
- {
- "$ref": "#/components/schemas/TransferCallTool",
- "title": "TransferCallTool"
- },
- {
- "$ref": "#/components/schemas/OutputTool",
- "title": "OutputTool"
- }
- ],
- "discriminator": {
- "propertyName": "type",
- "mapping": {
- "dtmf": "#/components/schemas/DtmfTool",
- "endCall": "#/components/schemas/EndCallTool",
- "function": "#/components/schemas/FunctionTool",
- "ghl": "#/components/schemas/GhlTool",
- "make": "#/components/schemas/MakeTool",
- "transferCall": "#/components/schemas/TransferCallTool",
- "output": "#/components/schemas/OutputTool"
- }
- }
+ "$ref": "#/components/schemas/SubscriptionMonthlyCharge"
}
}
}
}
},
"tags": [
- "Tools"
+ "Subscriptions",
+ "extended"
],
"security": [
{
"bearer": []
}
]
- },
- "patch": {
- "operationId": "ToolController_update",
- "summary": "Update Tool",
+ }
+ },
+ "/subscription/{id}/credit": {
+ "post": {
+ "operationId": "SubscriptionPaymentController_charge",
+ "summary": "Update subscription credits",
"parameters": [
{
"name": "id",
@@ -2026,7 +2108,7 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/UpdateToolDTO"
+ "$ref": "#/components/schemas/ChargeDTO"
}
}
}
@@ -2037,65 +2119,37 @@
"content": {
"application/json": {
"schema": {
- "oneOf": [
- {
- "$ref": "#/components/schemas/DtmfTool",
- "title": "DtmfTool"
- },
- {
- "$ref": "#/components/schemas/EndCallTool",
- "title": "EndCallTool"
- },
- {
- "$ref": "#/components/schemas/FunctionTool",
- "title": "FunctionTool"
- },
- {
- "$ref": "#/components/schemas/GhlTool",
- "title": "GhlTool"
- },
- {
- "$ref": "#/components/schemas/MakeTool",
- "title": "MakeTool"
- },
- {
- "$ref": "#/components/schemas/TransferCallTool",
- "title": "TransferCallTool"
- },
- {
- "$ref": "#/components/schemas/OutputTool",
- "title": "OutputTool"
- }
- ],
- "discriminator": {
- "propertyName": "type",
- "mapping": {
- "dtmf": "#/components/schemas/DtmfTool",
- "endCall": "#/components/schemas/EndCallTool",
- "function": "#/components/schemas/FunctionTool",
- "ghl": "#/components/schemas/GhlTool",
- "make": "#/components/schemas/MakeTool",
- "transferCall": "#/components/schemas/TransferCallTool",
- "output": "#/components/schemas/OutputTool"
- }
- }
+ "$ref": "#/components/schemas/Subscription"
+ }
+ }
+ }
+ },
+ "201": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Subscription"
}
}
}
}
},
"tags": [
- "Tools"
+ "Subscriptions",
+ "extended"
],
"security": [
{
"bearer": []
}
]
- },
- "delete": {
- "operationId": "ToolController_remove",
- "summary": "Delete Tool",
+ }
+ },
+ "/subscription/{id}/auto-reload-plan": {
+ "put": {
+ "operationId": "SubscriptionPaymentController_updateAutoReloadPlan",
+ "summary": "Update auto-reload plan",
"parameters": [
{
"name": "id",
@@ -2106,61 +2160,31 @@
}
}
],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/AutoReloadPlanDTO"
+ }
+ }
+ }
+ },
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
- "oneOf": [
- {
- "$ref": "#/components/schemas/DtmfTool",
- "title": "DtmfTool"
- },
- {
- "$ref": "#/components/schemas/EndCallTool",
- "title": "EndCallTool"
- },
- {
- "$ref": "#/components/schemas/FunctionTool",
- "title": "FunctionTool"
- },
- {
- "$ref": "#/components/schemas/GhlTool",
- "title": "GhlTool"
- },
- {
- "$ref": "#/components/schemas/MakeTool",
- "title": "MakeTool"
- },
- {
- "$ref": "#/components/schemas/TransferCallTool",
- "title": "TransferCallTool"
- },
- {
- "$ref": "#/components/schemas/OutputTool",
- "title": "OutputTool"
- }
- ],
- "discriminator": {
- "propertyName": "type",
- "mapping": {
- "dtmf": "#/components/schemas/DtmfTool",
- "endCall": "#/components/schemas/EndCallTool",
- "function": "#/components/schemas/FunctionTool",
- "ghl": "#/components/schemas/GhlTool",
- "make": "#/components/schemas/MakeTool",
- "transferCall": "#/components/schemas/TransferCallTool",
- "output": "#/components/schemas/OutputTool"
- }
- }
+ "$ref": "#/components/schemas/Subscription"
}
}
}
}
},
"tags": [
- "Tools"
+ "Subscriptions",
+ "extended"
],
"security": [
{
@@ -2169,48 +2193,4187 @@
]
}
},
- "/file": {
+ "/subscription/{id}/payment/retry": {
"post": {
- "operationId": "FileController_create",
- "summary": "Upload File",
- "parameters": [],
+ "operationId": "SubscriptionPaymentController_pastDuePaymentRetry",
+ "summary": "Retry past due payment",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
"requestBody": {
"required": true,
"content": {
- "multipart/form-data": {
+ "application/json": {
"schema": {
- "$ref": "#/components/schemas/CreateFileDTO"
+ "$ref": "#/components/schemas/PaymentRetryDTO"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Payment"
+ }
+ }
+ }
+ },
+ "201": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Payment"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Subscriptions",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/subscription/{id}/concurrency": {
+ "post": {
+ "operationId": "SubscriptionPaymentController_concurrencyLineBuy",
+ "summary": "Buy extra concurrency",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/SubscriptionConcurrencyLineBuyDTO"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Subscription"
+ }
+ }
+ }
+ },
+ "201": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Subscription"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Subscriptions",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "delete": {
+ "operationId": "SubscriptionPaymentController_concurrencyLineRemove",
+ "summary": "Remove extra concurrency",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/SubscriptionConcurrencyLineRemoveDTO"
}
}
}
- },
+ },
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Subscription"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Subscriptions",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/subscription/{id}/hipaa": {
+ "post": {
+ "operationId": "SubscriptionPaymentController_hipaaEnable",
+ "summary": "Purchase HIPAA add-on",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/HipaaBuyDTO"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Subscription"
+ }
+ }
+ }
+ },
+ "201": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Subscription"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Subscriptions",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "delete": {
+ "operationId": "SubscriptionPaymentController_hipaaRemove",
+ "summary": "Remove HIPAA add-on",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Subscription"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Subscriptions",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/subscription/{id}/slack-support": {
+ "post": {
+ "operationId": "SubscriptionPaymentController_slackSupportBuy",
+ "summary": "Purchase Slack Support add-on",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Subscription"
+ }
+ }
+ }
+ },
+ "201": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Subscriptions",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "delete": {
+ "operationId": "SubscriptionPaymentController_slackSupportRemove",
+ "summary": "Remove Slack Support add-on",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Subscription"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Subscriptions",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/subscription/{id}/coupon": {
+ "post": {
+ "operationId": "SubscriptionPaymentController_couponAdd",
+ "summary": "Attach coupon to subscription",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/SubscriptionCouponAddDTO"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Subscription"
+ }
+ }
+ }
+ },
+ "201": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Subscription"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Subscriptions",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/squad": {
+ "post": {
+ "operationId": "SquadController_create",
+ "summary": "Create Squad",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CreateSquadDTO"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Squad"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Squads"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "get": {
+ "operationId": "SquadController_findAll",
+ "summary": "List Squads",
+ "parameters": [
+ {
+ "name": "limit",
+ "required": false,
+ "in": "query",
+ "description": "This is the maximum number of items to return. Defaults to 100.",
+ "schema": {
+ "minimum": 0,
+ "maximum": 1000,
+ "type": "number"
+ }
+ },
+ {
+ "name": "createdAtGt",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the createdAt is greater than the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "createdAtLt",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the createdAt is less than the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "createdAtGe",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the createdAt is greater than or equal to the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "createdAtLe",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the createdAt is less than or equal to the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "updatedAtGt",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the updatedAt is greater than the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "updatedAtLt",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the updatedAt is less than the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "updatedAtGe",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the updatedAt is greater than or equal to the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "updatedAtLe",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the updatedAt is less than or equal to the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/Squad"
+ }
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Squads"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/squad/{id}": {
+ "get": {
+ "operationId": "SquadController_findOne",
+ "summary": "Get Squad",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Squad"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Squads"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "patch": {
+ "operationId": "SquadController_update",
+ "summary": "Update Squad",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/UpdateSquadDTO"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Squad"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Squads"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "delete": {
+ "operationId": "SquadController_remove",
+ "summary": "Delete Squad",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Squad"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Squads"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/block": {
+ "post": {
+ "operationId": "BlockController_create",
+ "summary": "Create Block",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/CreateConversationBlockDTO",
+ "title": "ConversationBlock"
+ },
+ {
+ "$ref": "#/components/schemas/CreateToolCallBlockDTO",
+ "title": "ToolCallBlock"
+ },
+ {
+ "$ref": "#/components/schemas/CreateWorkflowBlockDTO",
+ "title": "WorkflowBlock"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "type",
+ "mapping": {
+ "conversation": "#/components/schemas/CreateConversationBlockDTO",
+ "tool-call": "#/components/schemas/CreateToolCallBlockDTO",
+ "workflow": "#/components/schemas/CreateWorkflowBlockDTO"
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/ConversationBlock",
+ "title": "ConversationBlock"
+ },
+ {
+ "$ref": "#/components/schemas/ToolCallBlock",
+ "title": "ToolCallBlock"
+ },
+ {
+ "$ref": "#/components/schemas/WorkflowBlock",
+ "title": "WorkflowBlock"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "type",
+ "mapping": {
+ "conversation": "#/components/schemas/ConversationBlock",
+ "tool-call": "#/components/schemas/ToolCallBlock",
+ "workflow": "#/components/schemas/WorkflowBlock"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Blocks"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "get": {
+ "operationId": "BlockController_findAll",
+ "summary": "List Blocks",
+ "parameters": [
+ {
+ "name": "limit",
+ "required": false,
+ "in": "query",
+ "description": "This is the maximum number of items to return. Defaults to 100.",
+ "schema": {
+ "minimum": 0,
+ "maximum": 1000,
+ "type": "number"
+ }
+ },
+ {
+ "name": "createdAtGt",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the createdAt is greater than the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "createdAtLt",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the createdAt is less than the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "createdAtGe",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the createdAt is greater than or equal to the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "createdAtLe",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the createdAt is less than or equal to the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "updatedAtGt",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the updatedAt is greater than the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "updatedAtLt",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the updatedAt is less than the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "updatedAtGe",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the updatedAt is greater than or equal to the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "updatedAtLe",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the updatedAt is less than or equal to the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/ConversationBlock",
+ "title": "ConversationBlock"
+ },
+ {
+ "$ref": "#/components/schemas/ToolCallBlock",
+ "title": "ToolCallBlock"
+ },
+ {
+ "$ref": "#/components/schemas/WorkflowBlock",
+ "title": "WorkflowBlock"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "type",
+ "mapping": {
+ "conversation": "#/components/schemas/ConversationBlock",
+ "tool-call": "#/components/schemas/ToolCallBlock",
+ "workflow": "#/components/schemas/WorkflowBlock"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Blocks"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/block/{id}": {
+ "get": {
+ "operationId": "BlockController_findOne",
+ "summary": "Get Block",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/ConversationBlock",
+ "title": "ConversationBlock"
+ },
+ {
+ "$ref": "#/components/schemas/ToolCallBlock",
+ "title": "ToolCallBlock"
+ },
+ {
+ "$ref": "#/components/schemas/WorkflowBlock",
+ "title": "WorkflowBlock"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "type",
+ "mapping": {
+ "conversation": "#/components/schemas/ConversationBlock",
+ "tool-call": "#/components/schemas/ToolCallBlock",
+ "workflow": "#/components/schemas/WorkflowBlock"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Blocks"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "patch": {
+ "operationId": "BlockController_update",
+ "summary": "Update Block",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/UpdateBlockDTO"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/ConversationBlock",
+ "title": "ConversationBlock"
+ },
+ {
+ "$ref": "#/components/schemas/ToolCallBlock",
+ "title": "ToolCallBlock"
+ },
+ {
+ "$ref": "#/components/schemas/WorkflowBlock",
+ "title": "WorkflowBlock"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "type",
+ "mapping": {
+ "conversation": "#/components/schemas/ConversationBlock",
+ "tool-call": "#/components/schemas/ToolCallBlock",
+ "workflow": "#/components/schemas/WorkflowBlock"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Blocks"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "delete": {
+ "operationId": "BlockController_remove",
+ "summary": "Delete Block",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/ConversationBlock",
+ "title": "ConversationBlock"
+ },
+ {
+ "$ref": "#/components/schemas/ToolCallBlock",
+ "title": "ToolCallBlock"
+ },
+ {
+ "$ref": "#/components/schemas/WorkflowBlock",
+ "title": "WorkflowBlock"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "type",
+ "mapping": {
+ "conversation": "#/components/schemas/ConversationBlock",
+ "tool-call": "#/components/schemas/ToolCallBlock",
+ "workflow": "#/components/schemas/WorkflowBlock"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Blocks"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/tool": {
+ "post": {
+ "operationId": "ToolController_create",
+ "summary": "Create Tool",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/CreateDtmfToolDTO",
+ "title": "DtmfTool"
+ },
+ {
+ "$ref": "#/components/schemas/CreateEndCallToolDTO",
+ "title": "EndCallTool"
+ },
+ {
+ "$ref": "#/components/schemas/CreateFunctionToolDTO",
+ "title": "FunctionTool"
+ },
+ {
+ "$ref": "#/components/schemas/CreateGhlToolDTO",
+ "title": "GhlTool"
+ },
+ {
+ "$ref": "#/components/schemas/CreateMakeToolDTO",
+ "title": "MakeTool"
+ },
+ {
+ "$ref": "#/components/schemas/CreateTransferCallToolDTO",
+ "title": "TransferCallTool"
+ },
+ {
+ "$ref": "#/components/schemas/CreateOutputToolDTO",
+ "title": "OutputTool"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "type",
+ "mapping": {
+ "dtmf": "#/components/schemas/CreateDtmfToolDTO",
+ "endCall": "#/components/schemas/CreateEndCallToolDTO",
+ "function": "#/components/schemas/CreateFunctionToolDTO",
+ "ghl": "#/components/schemas/CreateGhlToolDTO",
+ "make": "#/components/schemas/CreateMakeToolDTO",
+ "transferCall": "#/components/schemas/CreateTransferCallToolDTO",
+ "output": "#/components/schemas/CreateOutputToolDTO"
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/DtmfTool",
+ "title": "DtmfTool"
+ },
+ {
+ "$ref": "#/components/schemas/EndCallTool",
+ "title": "EndCallTool"
+ },
+ {
+ "$ref": "#/components/schemas/FunctionTool",
+ "title": "FunctionTool"
+ },
+ {
+ "$ref": "#/components/schemas/GhlTool",
+ "title": "GhlTool"
+ },
+ {
+ "$ref": "#/components/schemas/MakeTool",
+ "title": "MakeTool"
+ },
+ {
+ "$ref": "#/components/schemas/TransferCallTool",
+ "title": "TransferCallTool"
+ },
+ {
+ "$ref": "#/components/schemas/OutputTool",
+ "title": "OutputTool"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "type",
+ "mapping": {
+ "dtmf": "#/components/schemas/DtmfTool",
+ "endCall": "#/components/schemas/EndCallTool",
+ "function": "#/components/schemas/FunctionTool",
+ "ghl": "#/components/schemas/GhlTool",
+ "make": "#/components/schemas/MakeTool",
+ "transferCall": "#/components/schemas/TransferCallTool",
+ "output": "#/components/schemas/OutputTool"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Tools"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "get": {
+ "operationId": "ToolController_findAll",
+ "summary": "List Tools",
+ "parameters": [
+ {
+ "name": "limit",
+ "required": false,
+ "in": "query",
+ "description": "This is the maximum number of items to return. Defaults to 100.",
+ "schema": {
+ "minimum": 0,
+ "maximum": 1000,
+ "type": "number"
+ }
+ },
+ {
+ "name": "createdAtGt",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the createdAt is greater than the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "createdAtLt",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the createdAt is less than the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "createdAtGe",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the createdAt is greater than or equal to the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "createdAtLe",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the createdAt is less than or equal to the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "updatedAtGt",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the updatedAt is greater than the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "updatedAtLt",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the updatedAt is less than the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "updatedAtGe",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the updatedAt is greater than or equal to the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "updatedAtLe",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the updatedAt is less than or equal to the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/DtmfTool",
+ "title": "DtmfTool"
+ },
+ {
+ "$ref": "#/components/schemas/EndCallTool",
+ "title": "EndCallTool"
+ },
+ {
+ "$ref": "#/components/schemas/FunctionTool",
+ "title": "FunctionTool"
+ },
+ {
+ "$ref": "#/components/schemas/GhlTool",
+ "title": "GhlTool"
+ },
+ {
+ "$ref": "#/components/schemas/MakeTool",
+ "title": "MakeTool"
+ },
+ {
+ "$ref": "#/components/schemas/TransferCallTool",
+ "title": "TransferCallTool"
+ },
+ {
+ "$ref": "#/components/schemas/OutputTool",
+ "title": "OutputTool"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "type",
+ "mapping": {
+ "dtmf": "#/components/schemas/DtmfTool",
+ "endCall": "#/components/schemas/EndCallTool",
+ "function": "#/components/schemas/FunctionTool",
+ "ghl": "#/components/schemas/GhlTool",
+ "make": "#/components/schemas/MakeTool",
+ "transferCall": "#/components/schemas/TransferCallTool",
+ "output": "#/components/schemas/OutputTool"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Tools"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/tool/{id}": {
+ "get": {
+ "operationId": "ToolController_findOne",
+ "summary": "Get Tool",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/DtmfTool",
+ "title": "DtmfTool"
+ },
+ {
+ "$ref": "#/components/schemas/EndCallTool",
+ "title": "EndCallTool"
+ },
+ {
+ "$ref": "#/components/schemas/FunctionTool",
+ "title": "FunctionTool"
+ },
+ {
+ "$ref": "#/components/schemas/GhlTool",
+ "title": "GhlTool"
+ },
+ {
+ "$ref": "#/components/schemas/MakeTool",
+ "title": "MakeTool"
+ },
+ {
+ "$ref": "#/components/schemas/TransferCallTool",
+ "title": "TransferCallTool"
+ },
+ {
+ "$ref": "#/components/schemas/OutputTool",
+ "title": "OutputTool"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "type",
+ "mapping": {
+ "dtmf": "#/components/schemas/DtmfTool",
+ "endCall": "#/components/schemas/EndCallTool",
+ "function": "#/components/schemas/FunctionTool",
+ "ghl": "#/components/schemas/GhlTool",
+ "make": "#/components/schemas/MakeTool",
+ "transferCall": "#/components/schemas/TransferCallTool",
+ "output": "#/components/schemas/OutputTool"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Tools"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "patch": {
+ "operationId": "ToolController_update",
+ "summary": "Update Tool",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/UpdateToolDTO"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/DtmfTool",
+ "title": "DtmfTool"
+ },
+ {
+ "$ref": "#/components/schemas/EndCallTool",
+ "title": "EndCallTool"
+ },
+ {
+ "$ref": "#/components/schemas/FunctionTool",
+ "title": "FunctionTool"
+ },
+ {
+ "$ref": "#/components/schemas/GhlTool",
+ "title": "GhlTool"
+ },
+ {
+ "$ref": "#/components/schemas/MakeTool",
+ "title": "MakeTool"
+ },
+ {
+ "$ref": "#/components/schemas/TransferCallTool",
+ "title": "TransferCallTool"
+ },
+ {
+ "$ref": "#/components/schemas/OutputTool",
+ "title": "OutputTool"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "type",
+ "mapping": {
+ "dtmf": "#/components/schemas/DtmfTool",
+ "endCall": "#/components/schemas/EndCallTool",
+ "function": "#/components/schemas/FunctionTool",
+ "ghl": "#/components/schemas/GhlTool",
+ "make": "#/components/schemas/MakeTool",
+ "transferCall": "#/components/schemas/TransferCallTool",
+ "output": "#/components/schemas/OutputTool"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Tools"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "delete": {
+ "operationId": "ToolController_remove",
+ "summary": "Delete Tool",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/DtmfTool",
+ "title": "DtmfTool"
+ },
+ {
+ "$ref": "#/components/schemas/EndCallTool",
+ "title": "EndCallTool"
+ },
+ {
+ "$ref": "#/components/schemas/FunctionTool",
+ "title": "FunctionTool"
+ },
+ {
+ "$ref": "#/components/schemas/GhlTool",
+ "title": "GhlTool"
+ },
+ {
+ "$ref": "#/components/schemas/MakeTool",
+ "title": "MakeTool"
+ },
+ {
+ "$ref": "#/components/schemas/TransferCallTool",
+ "title": "TransferCallTool"
+ },
+ {
+ "$ref": "#/components/schemas/OutputTool",
+ "title": "OutputTool"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "type",
+ "mapping": {
+ "dtmf": "#/components/schemas/DtmfTool",
+ "endCall": "#/components/schemas/EndCallTool",
+ "function": "#/components/schemas/FunctionTool",
+ "ghl": "#/components/schemas/GhlTool",
+ "make": "#/components/schemas/MakeTool",
+ "transferCall": "#/components/schemas/TransferCallTool",
+ "output": "#/components/schemas/OutputTool"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Tools"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/file/upload": {
+ "post": {
+ "operationId": "FileController_createDeprecated",
+ "summary": "Upload File",
+ "deprecated": true,
+ "description": "Use POST /file instead.",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "multipart/form-data": {
+ "schema": {
+ "$ref": "#/components/schemas/CreateFileDTO"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": "File uploaded successfully",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/File"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Invalid file"
+ }
+ },
+ "tags": [
+ "Files",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/file": {
+ "post": {
+ "operationId": "FileController_create",
+ "summary": "Upload File",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "multipart/form-data": {
+ "schema": {
+ "$ref": "#/components/schemas/CreateFileDTO"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": "File uploaded successfully",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/File"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Invalid file"
+ }
+ },
+ "tags": [
+ "Files"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "get": {
+ "operationId": "FileController_findAll",
+ "summary": "List Files",
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/File"
+ }
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Files"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/file/{id}": {
+ "get": {
+ "operationId": "FileController_findOne",
+ "summary": "Get File",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/File"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Files"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "patch": {
+ "operationId": "FileController_update",
+ "summary": "Update File",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/UpdateFileDTO"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/File"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Files"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "delete": {
+ "operationId": "FileController_remove",
+ "summary": "Delete File",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/File"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Files"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/metrics": {
+ "get": {
+ "operationId": "AnalyticsController_findAllDeprecated",
+ "summary": "List Billing Metrics",
+ "deprecated": true,
+ "description": "Use GET /metric instead",
+ "parameters": [
+ {
+ "name": "timezone",
+ "required": false,
+ "in": "query",
+ "example": "PST",
+ "description": "Convert date & and time to provided timezone. https://popsql.com/learn-sql/postgresql/how-to-convert-utc-to-local-time-zone-in-postgresql",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "rangeStart",
+ "required": false,
+ "in": "query",
+ "description": "This will include calls with a createdAt timestamp greater than or equal to the specified value.\n\nIf not provided, defaults to the org's current period start.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "rangeEnd",
+ "required": false,
+ "in": "query",
+ "description": "This will include calls with a createdAt timestamp less than the specified value.\n\nIf not provided, the default value will be the current timestamp.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/Metrics"
+ }
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Analytics",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/analytics": {
+ "post": {
+ "operationId": "AnalyticsController_query",
+ "summary": "Create Analytics Queries",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/AnalyticsQueryDTO"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/AnalyticsQueryResult"
+ }
+ }
+ }
+ }
+ },
+ "201": {
+ "description": ""
+ }
+ },
+ "tags": [
+ "Analytics"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/log": {
+ "get": {
+ "operationId": "LoggingController_getCallLogs",
+ "parameters": [
+ {
+ "name": "callId",
+ "required": true,
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "page",
+ "required": false,
+ "in": "query",
+ "description": "This is the page number to return. Defaults to 1.",
+ "schema": {
+ "minimum": 1,
+ "type": "number"
+ }
+ },
+ {
+ "name": "sortOrder",
+ "required": false,
+ "in": "query",
+ "description": "This is the sort order for pagination. Defaults to 'ASC'.",
+ "schema": {
+ "enum": [
+ "ASC",
+ "DESC"
+ ],
+ "type": "string"
+ }
+ },
+ {
+ "name": "limit",
+ "required": false,
+ "in": "query",
+ "description": "This is the maximum number of items to return. Defaults to 100.",
+ "schema": {
+ "minimum": 0,
+ "maximum": 1000,
+ "type": "number"
+ }
+ },
+ {
+ "name": "createdAtGt",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the createdAt is greater than the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "createdAtLt",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the createdAt is less than the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "createdAtGe",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the createdAt is greater than or equal to the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "createdAtLe",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the createdAt is less than or equal to the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "updatedAtGt",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the updatedAt is greater than the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "updatedAtLt",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the updatedAt is less than the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "updatedAtGe",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the updatedAt is greater than or equal to the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "updatedAtLe",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the updatedAt is less than or equal to the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CallLogsPaginatedResponse"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Logs",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/logs": {
+ "get": {
+ "operationId": "LoggingController_queryLogs",
+ "summary": "List logs",
+ "parameters": [
+ {
+ "name": "orgId",
+ "required": false,
+ "in": "query",
+ "description": "This is the unique identifier for the org that this log belongs to.",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "type",
+ "required": false,
+ "in": "query",
+ "description": "This is the type of the log.",
+ "schema": {
+ "enum": [
+ "API",
+ "Webhook",
+ "Call",
+ "Provider"
+ ],
+ "type": "string"
+ }
+ },
+ {
+ "name": "webhookType",
+ "required": false,
+ "in": "query",
+ "description": "This is the type of the webhook, given the log is from a webhook.",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "assistantId",
+ "required": false,
+ "in": "query",
+ "description": "This is the ID of the assistant.",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "phoneNumberId",
+ "required": false,
+ "in": "query",
+ "description": "This is the ID of the phone number.",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "customerId",
+ "required": false,
+ "in": "query",
+ "description": "This is the ID of the customer.",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "squadId",
+ "required": false,
+ "in": "query",
+ "description": "This is the ID of the squad.",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "callId",
+ "required": false,
+ "in": "query",
+ "description": "This is the ID of the call.",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "page",
+ "required": false,
+ "in": "query",
+ "description": "This is the page number to return. Defaults to 1.",
+ "schema": {
+ "minimum": 1,
+ "type": "number"
+ }
+ },
+ {
+ "name": "sortOrder",
+ "required": false,
+ "in": "query",
+ "description": "This is the sort order for pagination. Defaults to 'ASC'.",
+ "schema": {
+ "enum": [
+ "ASC",
+ "DESC"
+ ],
+ "type": "string"
+ }
+ },
+ {
+ "name": "limit",
+ "required": false,
+ "in": "query",
+ "description": "This is the maximum number of items to return. Defaults to 100.",
+ "schema": {
+ "minimum": 0,
+ "maximum": 1000,
+ "type": "number"
+ }
+ },
+ {
+ "name": "createdAtGt",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the createdAt is greater than the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "createdAtLt",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the createdAt is less than the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "createdAtGe",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the createdAt is greater than or equal to the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "createdAtLe",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the createdAt is less than or equal to the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "updatedAtGt",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the updatedAt is greater than the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "updatedAtLt",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the updatedAt is less than the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "updatedAtGe",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the updatedAt is greater than or equal to the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "updatedAtLe",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the updatedAt is less than or equal to the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/LogsPaginatedResponse"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Logs"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/credential": {
+ "post": {
+ "operationId": "CredentialController_create",
+ "summary": "Create Credential",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/CreateAnthropicCredentialDTO",
+ "title": "AnthropicCredential"
+ },
+ {
+ "$ref": "#/components/schemas/CreateAnyscaleCredentialDTO",
+ "title": "AnyscaleCredential"
+ },
+ {
+ "$ref": "#/components/schemas/CreateAzureOpenAICredentialDTO",
+ "title": "AzureOpenAICredential"
+ },
+ {
+ "$ref": "#/components/schemas/CreateByoSipTrunkCredentialDTO",
+ "title": "ByoSipTrunkCredential"
+ },
+ {
+ "$ref": "#/components/schemas/CreateCartesiaCredentialDTO",
+ "title": "CartesiaCredential"
+ },
+ {
+ "$ref": "#/components/schemas/CreateCustomLLMCredentialDTO",
+ "title": "CustomLLMCredential"
+ },
+ {
+ "$ref": "#/components/schemas/CreateDeepgramCredentialDTO",
+ "title": "DeepgramCredential"
+ },
+ {
+ "$ref": "#/components/schemas/CreateGcpCredentialDTO",
+ "title": "GcpCredential"
+ },
+ {
+ "$ref": "#/components/schemas/CreateGladiaCredentialDTO",
+ "title": "GladiaCredential"
+ },
+ {
+ "$ref": "#/components/schemas/CreateDeepInfraCredentialDTO",
+ "title": "DeepInfraCredential"
+ },
+ {
+ "$ref": "#/components/schemas/CreateElevenLabsCredentialDTO",
+ "title": "ElevenLabsCredential"
+ },
+ {
+ "$ref": "#/components/schemas/CreateGoHighLevelCredentialDTO",
+ "title": "GhlCredential"
+ },
+ {
+ "$ref": "#/components/schemas/CreateGroqCredentialDTO",
+ "title": "GroqCredential"
+ },
+ {
+ "$ref": "#/components/schemas/CreateLmntCredentialDTO",
+ "title": "LmntCredential"
+ },
+ {
+ "$ref": "#/components/schemas/CreateMakeCredentialDTO",
+ "title": "MakeCredential"
+ },
+ {
+ "$ref": "#/components/schemas/CreateOpenAICredentialDTO",
+ "title": "OpenAICredential"
+ },
+ {
+ "$ref": "#/components/schemas/CreateOpenRouterCredentialDTO",
+ "title": "OpenRouterCredential"
+ },
+ {
+ "$ref": "#/components/schemas/CreatePerplexityAICredentialDTO",
+ "title": "PerplexityAICredential"
+ },
+ {
+ "$ref": "#/components/schemas/CreatePlayHTCredentialDTO",
+ "title": "PlayHTCredential"
+ },
+ {
+ "$ref": "#/components/schemas/CreateRimeAICredentialDTO",
+ "title": "RimeAICredential"
+ },
+ {
+ "$ref": "#/components/schemas/CreateRunpodCredentialDTO",
+ "title": "RunpodCredential"
+ },
+ {
+ "$ref": "#/components/schemas/CreateS3CredentialDTO",
+ "title": "S3Credential"
+ },
+ {
+ "$ref": "#/components/schemas/CreateTavusCredentialDTO",
+ "title": "TavusCredential"
+ },
+ {
+ "$ref": "#/components/schemas/CreateTogetherAICredentialDTO",
+ "title": "TogetherAICredential"
+ },
+ {
+ "$ref": "#/components/schemas/CreateTwilioCredentialDTO",
+ "title": "TwilioCredential"
+ },
+ {
+ "$ref": "#/components/schemas/CreateVonageCredentialDTO",
+ "title": "VonageCredential"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "provider",
+ "mapping": {
+ "11labs": "#/components/schemas/CreateElevenLabsCredentialDTO",
+ "anthropic": "#/components/schemas/CreateAnthropicCredentialDTO",
+ "anyscale": "#/components/schemas/CreateAnyscaleCredentialDTO",
+ "azure-openai": "#/components/schemas/CreateAzureOpenAICredentialDTO",
+ "byo-sip-trunk": "#/components/schemas/CreateByoSipTrunkCredentialDTO",
+ "cartesia": "#/components/schemas/CreateCartesiaCredentialDTO",
+ "custom-llm": "#/components/schemas/CreateCustomLLMCredentialDTO",
+ "deepgram": "#/components/schemas/CreateDeepgramCredentialDTO",
+ "gcp": "#/components/schemas/CreateGcpCredentialDTO",
+ "gladia": "#/components/schemas/CreateGladiaCredentialDTO",
+ "deepinfra": "#/components/schemas/CreateDeepInfraCredentialDTO",
+ "gohighlevel": "#/components/schemas/CreateGoHighLevelCredentialDTO",
+ "groq": "#/components/schemas/CreateGroqCredentialDTO",
+ "lmnt": "#/components/schemas/CreateLmntCredentialDTO",
+ "make": "#/components/schemas/CreateMakeCredentialDTO",
+ "openai": "#/components/schemas/CreateOpenAICredentialDTO",
+ "openrouter": "#/components/schemas/CreateOpenRouterCredentialDTO",
+ "perplexity-ai": "#/components/schemas/CreatePerplexityAICredentialDTO",
+ "playht": "#/components/schemas/CreatePlayHTCredentialDTO",
+ "rime-ai": "#/components/schemas/CreateRimeAICredentialDTO",
+ "runpod": "#/components/schemas/CreateRunpodCredentialDTO",
+ "s3": "#/components/schemas/CreateS3CredentialDTO",
+ "tavus": "#/components/schemas/CreateTavusCredentialDTO",
+ "together-ai": "#/components/schemas/CreateTogetherAICredentialDTO",
+ "twilio": "#/components/schemas/CreateTwilioCredentialDTO",
+ "google": "#/components/schemas/CreateGoogleCredentialDTO",
+ "xai": "#/components/schemas/CreateXAiCredentialDTO",
+ "vonage": "#/components/schemas/CreateVonageCredentialDTO"
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/AnyscaleCredential",
+ "title": "AnyscaleCredential"
+ },
+ {
+ "$ref": "#/components/schemas/AzureOpenAICredential",
+ "title": "AzureOpenAICredential"
+ },
+ {
+ "$ref": "#/components/schemas/ByoSipTrunkCredential",
+ "title": "ByoSipTrunkCredential"
+ },
+ {
+ "$ref": "#/components/schemas/CartesiaCredential",
+ "title": "CartesiaCredential"
+ },
+ {
+ "$ref": "#/components/schemas/CustomLLMCredential",
+ "title": "CustomLLMCredential"
+ },
+ {
+ "$ref": "#/components/schemas/DeepgramCredential",
+ "title": "DeepgramCredential"
+ },
+ {
+ "$ref": "#/components/schemas/GcpCredential",
+ "title": "GcpCredential"
+ },
+ {
+ "$ref": "#/components/schemas/GladiaCredential",
+ "title": "GladiaCredential"
+ },
+ {
+ "$ref": "#/components/schemas/DeepInfraCredential",
+ "title": "DeepInfraCredential"
+ },
+ {
+ "$ref": "#/components/schemas/ElevenLabsCredential",
+ "title": "ElevenLabsCredential"
+ },
+ {
+ "$ref": "#/components/schemas/GoHighLevelCredential",
+ "title": "GhlCredential"
+ },
+ {
+ "$ref": "#/components/schemas/GroqCredential",
+ "title": "GroqCredential"
+ },
+ {
+ "$ref": "#/components/schemas/LmntCredential",
+ "title": "LmntCredential"
+ },
+ {
+ "$ref": "#/components/schemas/MakeCredential",
+ "title": "MakeCredential"
+ },
+ {
+ "$ref": "#/components/schemas/OpenAICredential",
+ "title": "OpenAICredential"
+ },
+ {
+ "$ref": "#/components/schemas/OpenRouterCredential",
+ "title": "OpenRouterCredential"
+ },
+ {
+ "$ref": "#/components/schemas/PerplexityAICredential",
+ "title": "PerplexityAICredential"
+ },
+ {
+ "$ref": "#/components/schemas/PlayHTCredential",
+ "title": "PlayHTCredential"
+ },
+ {
+ "$ref": "#/components/schemas/RimeAICredential",
+ "title": "RimeAICredential"
+ },
+ {
+ "$ref": "#/components/schemas/AnthropicCredential",
+ "title": "AnthropicCredential"
+ },
+ {
+ "$ref": "#/components/schemas/RunpodCredential",
+ "title": "RunpodCredential"
+ },
+ {
+ "$ref": "#/components/schemas/S3Credential",
+ "title": "S3Credential"
+ },
+ {
+ "$ref": "#/components/schemas/TavusCredential",
+ "title": "TavusCredential"
+ },
+ {
+ "$ref": "#/components/schemas/TogetherAICredential",
+ "title": "TogetherAICredential"
+ },
+ {
+ "$ref": "#/components/schemas/TwilioCredential",
+ "title": "TwilioCredential"
+ },
+ {
+ "$ref": "#/components/schemas/GoogleCredential",
+ "title": "GoogleCredential"
+ },
+ {
+ "$ref": "#/components/schemas/XAiCredential",
+ "title": "XAiCredential"
+ },
+ {
+ "$ref": "#/components/schemas/VonageCredential",
+ "title": "VonageCredential"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "provider",
+ "mapping": {
+ "11labs": "#/components/schemas/ElevenLabsCredential",
+ "anthropic": "#/components/schemas/AnthropicCredential",
+ "anyscale": "#/components/schemas/AnyscaleCredential",
+ "azure-openai": "#/components/schemas/AzureOpenAICredential",
+ "byo-sip-trunk": "#/components/schemas/ByoSipTrunkCredential",
+ "cartesia": "#/components/schemas/CartesiaCredential",
+ "custom-llm": "#/components/schemas/CustomLLMCredential",
+ "deepgram": "#/components/schemas/DeepgramCredential",
+ "gcp": "#/components/schemas/GcpCredential",
+ "gladia": "#/components/schemas/GladiaCredential",
+ "deepinfra": "#/components/schemas/DeepInfraCredential",
+ "gohighlevel": "#/components/schemas/GoHighLevelCredential",
+ "groq": "#/components/schemas/GroqCredential",
+ "lmnt": "#/components/schemas/LmntCredential",
+ "make": "#/components/schemas/MakeCredential",
+ "openai": "#/components/schemas/OpenAICredential",
+ "openrouter": "#/components/schemas/OpenRouterCredential",
+ "perplexity-ai": "#/components/schemas/PerplexityAICredential",
+ "playht": "#/components/schemas/PlayHTCredential",
+ "rime-ai": "#/components/schemas/RimeAICredential",
+ "runpod": "#/components/schemas/RunpodCredential",
+ "s3": "#/components/schemas/S3Credential",
+ "tavus": "#/components/schemas/TavusCredential",
+ "together-ai": "#/components/schemas/TogetherAICredential",
+ "twilio": "#/components/schemas/TwilioCredential",
+ "google": "#/components/schemas/GoogleCredential",
+ "xai": "#/components/schemas/XAiCredential",
+ "vonage": "#/components/schemas/VonageCredential"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Credentials",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "get": {
+ "operationId": "CredentialController_findAll",
+ "summary": "List Credentials",
+ "parameters": [
+ {
+ "name": "limit",
+ "required": false,
+ "in": "query",
+ "description": "This is the maximum number of items to return. Defaults to 100.",
+ "schema": {
+ "minimum": 0,
+ "maximum": 1000,
+ "type": "number"
+ }
+ },
+ {
+ "name": "createdAtGt",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the createdAt is greater than the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "createdAtLt",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the createdAt is less than the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "createdAtGe",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the createdAt is greater than or equal to the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "createdAtLe",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the createdAt is less than or equal to the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "updatedAtGt",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the updatedAt is greater than the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "updatedAtLt",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the updatedAt is less than the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "updatedAtGe",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the updatedAt is greater than or equal to the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "updatedAtLe",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the updatedAt is less than or equal to the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/AnyscaleCredential",
+ "title": "AnyscaleCredential"
+ },
+ {
+ "$ref": "#/components/schemas/AzureOpenAICredential",
+ "title": "AzureOpenAICredential"
+ },
+ {
+ "$ref": "#/components/schemas/ByoSipTrunkCredential",
+ "title": "ByoSipTrunkCredential"
+ },
+ {
+ "$ref": "#/components/schemas/CartesiaCredential",
+ "title": "CartesiaCredential"
+ },
+ {
+ "$ref": "#/components/schemas/CustomLLMCredential",
+ "title": "CustomLLMCredential"
+ },
+ {
+ "$ref": "#/components/schemas/DeepgramCredential",
+ "title": "DeepgramCredential"
+ },
+ {
+ "$ref": "#/components/schemas/GcpCredential",
+ "title": "GcpCredential"
+ },
+ {
+ "$ref": "#/components/schemas/GladiaCredential",
+ "title": "GladiaCredential"
+ },
+ {
+ "$ref": "#/components/schemas/DeepInfraCredential",
+ "title": "DeepInfraCredential"
+ },
+ {
+ "$ref": "#/components/schemas/ElevenLabsCredential",
+ "title": "ElevenLabsCredential"
+ },
+ {
+ "$ref": "#/components/schemas/GoHighLevelCredential",
+ "title": "GhlCredential"
+ },
+ {
+ "$ref": "#/components/schemas/GroqCredential",
+ "title": "GroqCredential"
+ },
+ {
+ "$ref": "#/components/schemas/LmntCredential",
+ "title": "LmntCredential"
+ },
+ {
+ "$ref": "#/components/schemas/MakeCredential",
+ "title": "MakeCredential"
+ },
+ {
+ "$ref": "#/components/schemas/OpenAICredential",
+ "title": "OpenAICredential"
+ },
+ {
+ "$ref": "#/components/schemas/OpenRouterCredential",
+ "title": "OpenRouterCredential"
+ },
+ {
+ "$ref": "#/components/schemas/PerplexityAICredential",
+ "title": "PerplexityAICredential"
+ },
+ {
+ "$ref": "#/components/schemas/PlayHTCredential",
+ "title": "PlayHTCredential"
+ },
+ {
+ "$ref": "#/components/schemas/RimeAICredential",
+ "title": "RimeAICredential"
+ },
+ {
+ "$ref": "#/components/schemas/AnthropicCredential",
+ "title": "AnthropicCredential"
+ },
+ {
+ "$ref": "#/components/schemas/RunpodCredential",
+ "title": "RunpodCredential"
+ },
+ {
+ "$ref": "#/components/schemas/S3Credential",
+ "title": "S3Credential"
+ },
+ {
+ "$ref": "#/components/schemas/TavusCredential",
+ "title": "TavusCredential"
+ },
+ {
+ "$ref": "#/components/schemas/TogetherAICredential",
+ "title": "TogetherAICredential"
+ },
+ {
+ "$ref": "#/components/schemas/TwilioCredential",
+ "title": "TwilioCredential"
+ },
+ {
+ "$ref": "#/components/schemas/GoogleCredential",
+ "title": "GoogleCredential"
+ },
+ {
+ "$ref": "#/components/schemas/XAiCredential",
+ "title": "XAiCredential"
+ },
+ {
+ "$ref": "#/components/schemas/VonageCredential",
+ "title": "VonageCredential"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "provider",
+ "mapping": {
+ "11labs": "#/components/schemas/ElevenLabsCredential",
+ "anthropic": "#/components/schemas/AnthropicCredential",
+ "anyscale": "#/components/schemas/AnyscaleCredential",
+ "azure-openai": "#/components/schemas/AzureOpenAICredential",
+ "byo-sip-trunk": "#/components/schemas/ByoSipTrunkCredential",
+ "cartesia": "#/components/schemas/CartesiaCredential",
+ "custom-llm": "#/components/schemas/CustomLLMCredential",
+ "deepgram": "#/components/schemas/DeepgramCredential",
+ "gcp": "#/components/schemas/GcpCredential",
+ "gladia": "#/components/schemas/GladiaCredential",
+ "deepinfra": "#/components/schemas/DeepInfraCredential",
+ "gohighlevel": "#/components/schemas/GoHighLevelCredential",
+ "groq": "#/components/schemas/GroqCredential",
+ "lmnt": "#/components/schemas/LmntCredential",
+ "make": "#/components/schemas/MakeCredential",
+ "openai": "#/components/schemas/OpenAICredential",
+ "openrouter": "#/components/schemas/OpenRouterCredential",
+ "perplexity-ai": "#/components/schemas/PerplexityAICredential",
+ "playht": "#/components/schemas/PlayHTCredential",
+ "rime-ai": "#/components/schemas/RimeAICredential",
+ "runpod": "#/components/schemas/RunpodCredential",
+ "s3": "#/components/schemas/S3Credential",
+ "tavus": "#/components/schemas/TavusCredential",
+ "together-ai": "#/components/schemas/TogetherAICredential",
+ "twilio": "#/components/schemas/TwilioCredential",
+ "google": "#/components/schemas/GoogleCredential",
+ "xai": "#/components/schemas/XAiCredential",
+ "vonage": "#/components/schemas/VonageCredential"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Credentials",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/credential/{id}": {
+ "get": {
+ "operationId": "CredentialController_findOne",
+ "summary": "Get Credential",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/AnyscaleCredential",
+ "title": "AnyscaleCredential"
+ },
+ {
+ "$ref": "#/components/schemas/AzureOpenAICredential",
+ "title": "AzureOpenAICredential"
+ },
+ {
+ "$ref": "#/components/schemas/ByoSipTrunkCredential",
+ "title": "ByoSipTrunkCredential"
+ },
+ {
+ "$ref": "#/components/schemas/CartesiaCredential",
+ "title": "CartesiaCredential"
+ },
+ {
+ "$ref": "#/components/schemas/CustomLLMCredential",
+ "title": "CustomLLMCredential"
+ },
+ {
+ "$ref": "#/components/schemas/DeepgramCredential",
+ "title": "DeepgramCredential"
+ },
+ {
+ "$ref": "#/components/schemas/GcpCredential",
+ "title": "GcpCredential"
+ },
+ {
+ "$ref": "#/components/schemas/GladiaCredential",
+ "title": "GladiaCredential"
+ },
+ {
+ "$ref": "#/components/schemas/DeepInfraCredential",
+ "title": "DeepInfraCredential"
+ },
+ {
+ "$ref": "#/components/schemas/ElevenLabsCredential",
+ "title": "ElevenLabsCredential"
+ },
+ {
+ "$ref": "#/components/schemas/GoHighLevelCredential",
+ "title": "GhlCredential"
+ },
+ {
+ "$ref": "#/components/schemas/GroqCredential",
+ "title": "GroqCredential"
+ },
+ {
+ "$ref": "#/components/schemas/LmntCredential",
+ "title": "LmntCredential"
+ },
+ {
+ "$ref": "#/components/schemas/MakeCredential",
+ "title": "MakeCredential"
+ },
+ {
+ "$ref": "#/components/schemas/OpenAICredential",
+ "title": "OpenAICredential"
+ },
+ {
+ "$ref": "#/components/schemas/OpenRouterCredential",
+ "title": "OpenRouterCredential"
+ },
+ {
+ "$ref": "#/components/schemas/PerplexityAICredential",
+ "title": "PerplexityAICredential"
+ },
+ {
+ "$ref": "#/components/schemas/PlayHTCredential",
+ "title": "PlayHTCredential"
+ },
+ {
+ "$ref": "#/components/schemas/RimeAICredential",
+ "title": "RimeAICredential"
+ },
+ {
+ "$ref": "#/components/schemas/AnthropicCredential",
+ "title": "AnthropicCredential"
+ },
+ {
+ "$ref": "#/components/schemas/RunpodCredential",
+ "title": "RunpodCredential"
+ },
+ {
+ "$ref": "#/components/schemas/S3Credential",
+ "title": "S3Credential"
+ },
+ {
+ "$ref": "#/components/schemas/TavusCredential",
+ "title": "TavusCredential"
+ },
+ {
+ "$ref": "#/components/schemas/TogetherAICredential",
+ "title": "TogetherAICredential"
+ },
+ {
+ "$ref": "#/components/schemas/TwilioCredential",
+ "title": "TwilioCredential"
+ },
+ {
+ "$ref": "#/components/schemas/GoogleCredential",
+ "title": "GoogleCredential"
+ },
+ {
+ "$ref": "#/components/schemas/XAiCredential",
+ "title": "XAiCredential"
+ },
+ {
+ "$ref": "#/components/schemas/VonageCredential",
+ "title": "VonageCredential"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "provider",
+ "mapping": {
+ "11labs": "#/components/schemas/ElevenLabsCredential",
+ "anthropic": "#/components/schemas/AnthropicCredential",
+ "anyscale": "#/components/schemas/AnyscaleCredential",
+ "azure-openai": "#/components/schemas/AzureOpenAICredential",
+ "byo-sip-trunk": "#/components/schemas/ByoSipTrunkCredential",
+ "cartesia": "#/components/schemas/CartesiaCredential",
+ "custom-llm": "#/components/schemas/CustomLLMCredential",
+ "deepgram": "#/components/schemas/DeepgramCredential",
+ "gcp": "#/components/schemas/GcpCredential",
+ "gladia": "#/components/schemas/GladiaCredential",
+ "deepinfra": "#/components/schemas/DeepInfraCredential",
+ "gohighlevel": "#/components/schemas/GoHighLevelCredential",
+ "groq": "#/components/schemas/GroqCredential",
+ "lmnt": "#/components/schemas/LmntCredential",
+ "make": "#/components/schemas/MakeCredential",
+ "openai": "#/components/schemas/OpenAICredential",
+ "openrouter": "#/components/schemas/OpenRouterCredential",
+ "perplexity-ai": "#/components/schemas/PerplexityAICredential",
+ "playht": "#/components/schemas/PlayHTCredential",
+ "rime-ai": "#/components/schemas/RimeAICredential",
+ "runpod": "#/components/schemas/RunpodCredential",
+ "s3": "#/components/schemas/S3Credential",
+ "tavus": "#/components/schemas/TavusCredential",
+ "together-ai": "#/components/schemas/TogetherAICredential",
+ "twilio": "#/components/schemas/TwilioCredential",
+ "google": "#/components/schemas/GoogleCredential",
+ "xai": "#/components/schemas/XAiCredential",
+ "vonage": "#/components/schemas/VonageCredential"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Credentials",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "delete": {
+ "operationId": "CredentialController_remove",
+ "summary": "Delete Credential",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/AnyscaleCredential",
+ "title": "AnyscaleCredential"
+ },
+ {
+ "$ref": "#/components/schemas/AzureOpenAICredential",
+ "title": "AzureOpenAICredential"
+ },
+ {
+ "$ref": "#/components/schemas/ByoSipTrunkCredential",
+ "title": "ByoSipTrunkCredential"
+ },
+ {
+ "$ref": "#/components/schemas/CartesiaCredential",
+ "title": "CartesiaCredential"
+ },
+ {
+ "$ref": "#/components/schemas/CustomLLMCredential",
+ "title": "CustomLLMCredential"
+ },
+ {
+ "$ref": "#/components/schemas/DeepgramCredential",
+ "title": "DeepgramCredential"
+ },
+ {
+ "$ref": "#/components/schemas/GcpCredential",
+ "title": "GcpCredential"
+ },
+ {
+ "$ref": "#/components/schemas/GladiaCredential",
+ "title": "GladiaCredential"
+ },
+ {
+ "$ref": "#/components/schemas/DeepInfraCredential",
+ "title": "DeepInfraCredential"
+ },
+ {
+ "$ref": "#/components/schemas/ElevenLabsCredential",
+ "title": "ElevenLabsCredential"
+ },
+ {
+ "$ref": "#/components/schemas/GoHighLevelCredential",
+ "title": "GhlCredential"
+ },
+ {
+ "$ref": "#/components/schemas/GroqCredential",
+ "title": "GroqCredential"
+ },
+ {
+ "$ref": "#/components/schemas/LmntCredential",
+ "title": "LmntCredential"
+ },
+ {
+ "$ref": "#/components/schemas/MakeCredential",
+ "title": "MakeCredential"
+ },
+ {
+ "$ref": "#/components/schemas/OpenAICredential",
+ "title": "OpenAICredential"
+ },
+ {
+ "$ref": "#/components/schemas/OpenRouterCredential",
+ "title": "OpenRouterCredential"
+ },
+ {
+ "$ref": "#/components/schemas/PerplexityAICredential",
+ "title": "PerplexityAICredential"
+ },
+ {
+ "$ref": "#/components/schemas/PlayHTCredential",
+ "title": "PlayHTCredential"
+ },
+ {
+ "$ref": "#/components/schemas/RimeAICredential",
+ "title": "RimeAICredential"
+ },
+ {
+ "$ref": "#/components/schemas/AnthropicCredential",
+ "title": "AnthropicCredential"
+ },
+ {
+ "$ref": "#/components/schemas/RunpodCredential",
+ "title": "RunpodCredential"
+ },
+ {
+ "$ref": "#/components/schemas/S3Credential",
+ "title": "S3Credential"
+ },
+ {
+ "$ref": "#/components/schemas/TavusCredential",
+ "title": "TavusCredential"
+ },
+ {
+ "$ref": "#/components/schemas/TogetherAICredential",
+ "title": "TogetherAICredential"
+ },
+ {
+ "$ref": "#/components/schemas/TwilioCredential",
+ "title": "TwilioCredential"
+ },
+ {
+ "$ref": "#/components/schemas/GoogleCredential",
+ "title": "GoogleCredential"
+ },
+ {
+ "$ref": "#/components/schemas/XAiCredential",
+ "title": "XAiCredential"
+ },
+ {
+ "$ref": "#/components/schemas/VonageCredential",
+ "title": "VonageCredential"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "provider",
+ "mapping": {
+ "11labs": "#/components/schemas/ElevenLabsCredential",
+ "anthropic": "#/components/schemas/AnthropicCredential",
+ "anyscale": "#/components/schemas/AnyscaleCredential",
+ "azure-openai": "#/components/schemas/AzureOpenAICredential",
+ "byo-sip-trunk": "#/components/schemas/ByoSipTrunkCredential",
+ "cartesia": "#/components/schemas/CartesiaCredential",
+ "custom-llm": "#/components/schemas/CustomLLMCredential",
+ "deepgram": "#/components/schemas/DeepgramCredential",
+ "gcp": "#/components/schemas/GcpCredential",
+ "gladia": "#/components/schemas/GladiaCredential",
+ "deepinfra": "#/components/schemas/DeepInfraCredential",
+ "gohighlevel": "#/components/schemas/GoHighLevelCredential",
+ "groq": "#/components/schemas/GroqCredential",
+ "lmnt": "#/components/schemas/LmntCredential",
+ "make": "#/components/schemas/MakeCredential",
+ "openai": "#/components/schemas/OpenAICredential",
+ "openrouter": "#/components/schemas/OpenRouterCredential",
+ "perplexity-ai": "#/components/schemas/PerplexityAICredential",
+ "playht": "#/components/schemas/PlayHTCredential",
+ "rime-ai": "#/components/schemas/RimeAICredential",
+ "runpod": "#/components/schemas/RunpodCredential",
+ "s3": "#/components/schemas/S3Credential",
+ "tavus": "#/components/schemas/TavusCredential",
+ "together-ai": "#/components/schemas/TogetherAICredential",
+ "twilio": "#/components/schemas/TwilioCredential",
+ "google": "#/components/schemas/GoogleCredential",
+ "xai": "#/components/schemas/XAiCredential",
+ "vonage": "#/components/schemas/VonageCredential"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Credentials",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/org": {
+ "post": {
+ "operationId": "OrgController_create",
+ "summary": "Create Org",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CreateOrgDTO"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Org"
+ }
+ }
+ }
+ },
+ "201": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Org"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Orgs",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "get": {
+ "operationId": "OrgController_findAll",
+ "summary": "List Orgs",
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/Org"
+ }
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Orgs",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/org/{id}": {
+ "get": {
+ "operationId": "OrgController_findOne",
+ "summary": "Get Org",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Org"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Orgs",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "patch": {
+ "operationId": "OrgController_update",
+ "summary": "Update Org",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/UpdateOrgDTO"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Org"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Orgs",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "delete": {
+ "operationId": "OrgController_deleteOrg",
+ "summary": "Delete Org",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ }
+ },
+ "tags": [
+ "Orgs",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/org/{id}/user": {
+ "get": {
+ "operationId": "OrgController_findAllUsers",
+ "summary": "List Users",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/User"
+ }
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Orgs",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/org/{id}/leave": {
+ "delete": {
+ "operationId": "OrgController_orgLeave",
+ "summary": "Leave Org",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ }
+ },
+ "tags": [
+ "Orgs",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/org/{id}/member/{memberId}/leave": {
+ "delete": {
+ "operationId": "OrgController_orgRemoveUser",
+ "summary": "Leave Org",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "memberId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ }
+ },
+ "tags": [
+ "Orgs",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/org/{id}/invite": {
+ "post": {
+ "operationId": "OrgController_usersInvite",
+ "summary": "Invite User",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/InviteUserDTO"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "201": {
+ "description": ""
+ }
+ },
+ "tags": [
+ "Orgs",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/org/{id}/subscription-migrate": {
+ "post": {
+ "operationId": "OrgController_subscriptionMigrate",
+ "summary": "Migrates to subscription based billing",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "201": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/OrgWithOrgUser"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Orgs",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/org/{id}/role": {
+ "patch": {
+ "operationId": "OrgController_userUpdate",
+ "summary": "Update User Role",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/UpdateUserRoleDTO"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": ""
+ }
+ },
+ "tags": [
+ "Orgs",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/{provider}/workflows": {
+ "get": {
+ "operationId": "ProviderController_getWorkflows",
+ "parameters": [
+ {
+ "name": "provider",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "enum": [
+ "make",
+ "ghl"
+ ],
+ "type": "string"
+ }
+ },
+ {
+ "name": "locationId",
+ "required": false,
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Providers",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/{provider}/workflows/{workflowId}/hooks": {
+ "get": {
+ "operationId": "ProviderController_getWorkflowTriggerHook",
+ "parameters": [
+ {
+ "name": "provider",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "enum": [
+ "make",
+ "ghl"
+ ],
+ "type": "string"
+ }
+ },
+ {
+ "name": "workflowId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Providers",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/{provider}/locations": {
+ "get": {
+ "operationId": "ProviderController_getLocations",
+ "parameters": [
+ {
+ "name": "provider",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "enum": [
+ "make",
+ "ghl"
+ ],
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Providers",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/{provider}/voices/search": {
+ "get": {
+ "operationId": "VoiceProviderController_searchVoices",
+ "summary": "Search Voice from Provider Voice Library.",
+ "deprecated": true,
+ "parameters": [
+ {
+ "name": "name",
+ "required": true,
+ "in": "query",
+ "description": "The name of the voice from the provider you want to search.",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/VoiceLibraryVoiceResponse"
+ }
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Providers",
+ "extended",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/{provider}/voice/search": {
+ "get": {
+ "operationId": "VoiceProviderController_searchVoice",
+ "summary": "Search Voice from Provider Voice Library.",
+ "parameters": [
+ {
+ "name": "name",
+ "required": true,
+ "in": "query",
+ "description": "The name of the voice from the provider you want to search.",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/VoiceLibraryVoiceResponse"
+ }
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Providers",
+ "extended",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/{provider}/voices/add": {
+ "post": {
+ "operationId": "VoiceProviderController_addVoices",
+ "summary": "Add Shared Voice to your Provider Account.",
+ "deprecated": true,
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/AddVoiceToProviderDTO"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/VoiceLibrary"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Providers",
+ "extended",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/{provider}/voice/add": {
+ "post": {
+ "operationId": "VoiceProviderController_addVoice",
+ "summary": "Add Shared Voice to your Provider Account.",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/AddVoiceToProviderDTO"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/VoiceLibrary"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Providers",
+ "extended",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/11labs/voice/clone": {
+ "post": {
+ "operationId": "VoiceProviderController_cloneVoices",
+ "summary": "Clone a voice to the provider account and add to Vapi Voice Library.",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "multipart/form-data": {
+ "schema": {
+ "$ref": "#/components/schemas/CloneVoiceDTO"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Voice Clone Error."
+ }
+ },
+ "tags": [
+ "Providers",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/template": {
+ "post": {
+ "operationId": "TemplateController_create",
+ "summary": "Create Template",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/CreateToolTemplateDTO"
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Template"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Templates",
+ "extended"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "get": {
+ "operationId": "TemplateController_findAll",
+ "summary": "List Templates",
+ "parameters": [
+ {
+ "name": "collectionId",
+ "required": false,
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "visibility",
+ "required": false,
+ "in": "query",
+ "schema": {
+ "enum": [
+ "public",
+ "private"
+ ],
+ "type": "string"
+ }
+ },
+ {
+ "name": "provider",
+ "required": false,
+ "in": "query",
+ "schema": {
+ "enum": [
+ "make",
+ "gohighlevel",
+ "function"
+ ],
+ "type": "string"
+ }
+ },
+ {
+ "name": "limit",
+ "required": false,
+ "in": "query",
+ "description": "This is the maximum number of items to return. Defaults to 100.",
+ "schema": {
+ "minimum": 0,
+ "maximum": 1000,
+ "type": "number"
+ }
+ },
+ {
+ "name": "createdAtGt",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the createdAt is greater than the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "createdAtLt",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the createdAt is less than the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "createdAtGe",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the createdAt is greater than or equal to the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "createdAtLe",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the createdAt is less than or equal to the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "updatedAtGt",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the updatedAt is greater than the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "updatedAtLt",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the updatedAt is less than the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "updatedAtGe",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the updatedAt is greater than or equal to the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "updatedAtLe",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the updatedAt is less than or equal to the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ }
+ ],
"responses": {
- "201": {
- "description": "File uploaded successfully",
+ "200": {
+ "description": "",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/File"
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/Template"
+ }
}
}
}
- },
- "400": {
- "description": "Invalid file"
}
},
"tags": [
- "Files"
+ "Templates",
+ "extended"
],
"security": [
{
"bearer": []
}
]
- },
+ }
+ },
+ "/template/pinned": {
"get": {
- "operationId": "FileController_findAll",
- "summary": "List Files",
+ "operationId": "TemplateController_findAllPinned",
+ "summary": "List Templates",
"parameters": [],
"responses": {
"200": {
@@ -2220,7 +6383,7 @@
"schema": {
"type": "array",
"items": {
- "$ref": "#/components/schemas/File"
+ "$ref": "#/components/schemas/Template"
}
}
}
@@ -2228,7 +6391,8 @@
}
},
"tags": [
- "Files"
+ "Templates",
+ "extended"
],
"security": [
{
@@ -2237,10 +6401,10 @@
]
}
},
- "/file/{id}": {
+ "/template/{id}": {
"get": {
- "operationId": "FileController_findOne",
- "summary": "Get File",
+ "operationId": "TemplateController_findOne",
+ "summary": "Get Template",
"parameters": [
{
"name": "id",
@@ -2257,14 +6421,15 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/File"
+ "$ref": "#/components/schemas/Template"
}
}
}
}
},
"tags": [
- "Files"
+ "Templates",
+ "extended"
],
"security": [
{
@@ -2273,8 +6438,8 @@
]
},
"patch": {
- "operationId": "FileController_update",
- "summary": "Update File",
+ "operationId": "TemplateController_update",
+ "summary": "Update Template",
"parameters": [
{
"name": "id",
@@ -2290,7 +6455,7 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/UpdateFileDTO"
+ "$ref": "#/components/schemas/UpdateToolTemplateDTO"
}
}
}
@@ -2301,14 +6466,15 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/File"
+ "$ref": "#/components/schemas/Template"
}
}
}
}
},
"tags": [
- "Files"
+ "Templates",
+ "extended"
],
"security": [
{
@@ -2317,8 +6483,8 @@
]
},
"delete": {
- "operationId": "FileController_remove",
- "summary": "Delete File",
+ "operationId": "TemplateController_remove",
+ "summary": "Delete Template",
"parameters": [
{
"name": "id",
@@ -2335,14 +6501,15 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/File"
+ "$ref": "#/components/schemas/Template"
}
}
}
}
},
"tags": [
- "Files"
+ "Templates",
+ "extended"
],
"security": [
{
@@ -2351,84 +6518,47 @@
]
}
},
- "/analytics": {
+ "/token": {
"post": {
- "operationId": "AnalyticsController_query",
- "summary": "Create Analytics Queries",
+ "operationId": "TokenController_create",
+ "summary": "Create Token",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/AnalyticsQueryDTO"
+ "$ref": "#/components/schemas/CreateTokenDTO"
}
}
}
},
"responses": {
- "200": {
+ "201": {
"description": "",
"content": {
"application/json": {
"schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/AnalyticsQueryResult"
- }
+ "$ref": "#/components/schemas/Token"
}
}
}
- },
- "201": {
- "description": ""
}
},
"tags": [
- "Analytics"
+ "Tokens",
+ "extended"
],
"security": [
{
"bearer": []
}
]
- }
- },
- "/log": {
+ },
"get": {
- "operationId": "LoggingController_getCallLogs",
+ "operationId": "TokenController_findAll",
+ "summary": "List Tokens",
"parameters": [
- {
- "name": "callId",
- "required": true,
- "in": "query",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "page",
- "required": false,
- "in": "query",
- "description": "This is the page number to return. Defaults to 1.",
- "schema": {
- "minimum": 1,
- "type": "number"
- }
- },
- {
- "name": "sortOrder",
- "required": false,
- "in": "query",
- "description": "This is the sort order for pagination. Defaults to 'ASC'.",
- "schema": {
- "enum": [
- "ASC",
- "DESC"
- ],
- "type": "string"
- }
- },
{
"name": "limit",
"required": false,
@@ -2527,14 +6657,18 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/CallLogsPaginatedResponse"
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/Token"
+ }
}
}
}
}
},
"tags": [
- "Logs"
+ "Tokens",
+ "extended"
],
"security": [
{
@@ -2543,218 +6677,286 @@
]
}
},
- "/logs": {
+ "/token/{id}": {
"get": {
- "operationId": "LoggingController_queryLogs",
- "summary": "List logs",
+ "operationId": "TokenController_findOne",
+ "summary": "Get Token",
"parameters": [
{
- "name": "orgId",
- "required": false,
- "in": "query",
- "description": "This is the unique identifier for the org that this log belongs to.",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "type",
- "required": false,
- "in": "query",
- "description": "This is the type of the log.",
- "schema": {
- "enum": [
- "API",
- "Webhook",
- "Call",
- "Provider"
- ],
- "type": "string"
- }
- },
- {
- "name": "webhookType",
- "required": false,
- "in": "query",
- "description": "This is the type of the webhook, given the log is from a webhook.",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "assistantId",
- "required": false,
- "in": "query",
- "description": "This is the ID of the assistant.",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "phoneNumberId",
- "required": false,
- "in": "query",
- "description": "This is the ID of the phone number.",
+ "name": "id",
+ "required": true,
+ "in": "path",
"schema": {
"type": "string"
}
- },
- {
- "name": "customerId",
- "required": false,
- "in": "query",
- "description": "This is the ID of the customer.",
- "schema": {
- "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Token"
+ }
+ }
}
- },
+ }
+ },
+ "tags": [
+ "Tokens",
+ "extended"
+ ],
+ "security": [
{
- "name": "squadId",
- "required": false,
- "in": "query",
- "description": "This is the ID of the squad.",
- "schema": {
- "type": "string"
- }
- },
+ "bearer": []
+ }
+ ]
+ },
+ "patch": {
+ "operationId": "TokenController_update",
+ "summary": "Update Token",
+ "parameters": [
{
- "name": "callId",
- "required": false,
- "in": "query",
- "description": "This is the ID of the call.",
+ "name": "id",
+ "required": true,
+ "in": "path",
"schema": {
"type": "string"
}
- },
- {
- "name": "page",
- "required": false,
- "in": "query",
- "description": "This is the page number to return. Defaults to 1.",
- "schema": {
- "minimum": 1,
- "type": "integer"
- }
- },
- {
- "name": "sortOrder",
- "required": false,
- "in": "query",
- "description": "This is the sort order for pagination. Defaults to 'ASC'.",
- "schema": {
- "enum": [
- "ASC",
- "DESC"
- ],
- "type": "string"
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CreateTokenDTO"
+ }
}
- },
- {
- "name": "limit",
- "required": false,
- "in": "query",
- "description": "This is the maximum number of items to return. Defaults to 100.",
- "schema": {
- "minimum": 0,
- "maximum": 1000,
- "type": "number"
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Token"
+ }
+ }
}
- },
+ }
+ },
+ "tags": [
+ "Tokens",
+ "extended"
+ ],
+ "security": [
{
- "name": "createdAtGt",
- "required": false,
- "in": "query",
- "description": "This will return items where the createdAt is greater than the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
+ "bearer": []
+ }
+ ]
+ },
+ "delete": {
+ "operationId": "TokenController_remove",
+ "summary": "Delete Token",
+ "parameters": [
{
- "name": "createdAtLt",
- "required": false,
- "in": "query",
- "description": "This will return items where the createdAt is less than the specified value.",
+ "name": "id",
+ "required": true,
+ "in": "path",
"schema": {
- "format": "date-time",
"type": "string"
}
- },
- {
- "name": "createdAtGe",
- "required": false,
- "in": "query",
- "description": "This will return items where the createdAt is greater than or equal to the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Token"
+ }
+ }
}
- },
+ }
+ },
+ "tags": [
+ "Tokens",
+ "extended"
+ ],
+ "security": [
{
- "name": "createdAtLe",
- "required": false,
- "in": "query",
- "description": "This will return items where the createdAt is less than or equal to the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/voice-library/{provider}": {
+ "get": {
+ "operationId": "VoiceLibraryController_voiceGetByProvider",
+ "summary": "Get voices in Voice Library by Provider",
+ "parameters": [
{
- "name": "updatedAtGt",
- "required": false,
- "in": "query",
- "description": "This will return items where the updatedAt is greater than the specified value.",
+ "name": "provider",
+ "required": true,
+ "in": "path",
"schema": {
- "format": "date-time",
+ "enum": [
+ "11labs",
+ "azure",
+ "cartesia",
+ "custom-voice",
+ "deepgram",
+ "lmnt",
+ "neets",
+ "openai",
+ "playht",
+ "rime-ai",
+ "tavus"
+ ],
"type": "string"
}
- },
- {
- "name": "updatedAtLt",
- "required": false,
- "in": "query",
- "description": "This will return items where the updatedAt is less than the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/VoiceLibrary"
+ }
+ }
+ }
}
- },
+ }
+ },
+ "tags": [
+ "Voice Library",
+ "extended"
+ ],
+ "security": [
{
- "name": "updatedAtGe",
- "required": false,
- "in": "query",
- "description": "This will return items where the updatedAt is greater than or equal to the specified value.",
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/voice-library/sync/{provider}": {
+ "post": {
+ "operationId": "VoiceLibraryController_voiceLibrarySyncByProvider",
+ "summary": "Sync Private voices in Voice Library by Provider",
+ "parameters": [
+ {
+ "name": "provider",
+ "required": true,
+ "in": "path",
"schema": {
- "format": "date-time",
+ "enum": [
+ "11labs",
+ "azure",
+ "cartesia",
+ "custom-voice",
+ "deepgram",
+ "lmnt",
+ "neets",
+ "openai",
+ "playht",
+ "rime-ai",
+ "tavus"
+ ],
"type": "string"
}
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/VoiceLibrary"
+ }
+ }
+ }
+ }
},
- {
- "name": "updatedAtLe",
- "required": false,
- "in": "query",
- "description": "This will return items where the updatedAt is less than or equal to the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
+ "201": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object"
+ }
+ }
}
}
+ },
+ "tags": [
+ "Voice Library",
+ "extended"
],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/voice-library/sync": {
+ "post": {
+ "operationId": "VoiceLibraryController_voiceLibrarySyncDefaultVoices",
+ "summary": "Sync Default voices in Voice Library by Providers",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/SyncVoiceLibraryDTO"
+ }
+ }
+ }
+ },
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/LogsPaginatedResponse"
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/VoiceLibrary"
+ }
+ }
+ }
+ }
+ },
+ "201": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/VoiceLibrary"
+ }
}
}
}
}
},
"tags": [
- "Logs"
+ "Voice Library",
+ "extended",
+ "extended"
],
"security": [
{
@@ -2786,6 +6988,57 @@
}
},
"schemas": {
+ "Server": {
+ "type": "object",
+ "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",
+ "minimum": 1,
+ "maximum": 60,
+ "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."
+ },
+ "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."
+ }
+ },
+ "required": [
+ "url"
+ ]
+ },
+ "CustomTranscriber": {
+ "type": "object",
+ "properties": {
+ "provider": {
+ "type": "string",
+ "description": "This is the transcription provider that will be used. Use `custom-transcriber` for providers that are not natively supported.",
+ "enum": [
+ "custom-transcriber"
+ ]
+ },
+ "server": {
+ "description": "This is where the transcription request will be sent.\n\nUsage:\n1. Vapi will initiate a websocket connection with `server.url`.\n\n2. Vapi will send an initial text frame with the sample rate. Format:\n```\n {\n \"type\": \"start\",\n \"encoding\": \"linear16\", // 16-bit raw PCM format\n \"container\": \"raw\",\n \"sampleRate\": {{sampleRate}},\n \"channels\": 2 // customer is channel 0, assistant is channel 1\n }\n```\n\n3. Vapi will send the audio data in 16-bit raw PCM format as binary frames.\n\n4. You can read the messages something like this:\n```\nws.on('message', (data, isBinary) => {\n if (isBinary) {\n pcmBuffer = Buffer.concat([pcmBuffer, data]);\n console.log(`Received PCM data, buffer size: ${pcmBuffer.length}`);\n } else {\n console.log('Received message:', JSON.parse(data.toString()));\n }\n});\n```\n\n5. You will respond with transcriptions as you have them. Format:\n```\n {\n \"type\": \"transcriber-response\",\n \"transcription\": \"Hello, world!\",\n \"channel\": \"customer\" | \"assistant\"\n }\n```",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/Server"
+ }
+ ]
+ }
+ },
+ "required": [
+ "provider",
+ "server"
+ ]
+ },
"DeepgramTranscriber": {
"type": "object",
"properties": {
@@ -3463,6 +7716,7 @@
"properties": {
"contents": {
"type": "array",
+ "description": "This is an alternative to the `content` property. It allows to specify variants of the same content, one per language.\n\nUsage:\n- If your assistants are multilingual, you can provide content for each language.\n- If you don't provide content for a language, the first item in the array will be automatically translated to the active language at that moment.\n\nThis will override the `content` property.",
"items": {
"oneOf": [
{
@@ -3501,6 +7755,7 @@
"properties": {
"contents": {
"type": "array",
+ "description": "This is an alternative to the `content` property. It allows to specify variants of the same content, one per language.\n\nUsage:\n- If your assistants are multilingual, you can provide content for each language.\n- If you don't provide content for a language, the first item in the array will be automatically translated to the active language at that moment.\n\nThis will override the `content` property.",
"items": {
"oneOf": [
{
@@ -3552,6 +7807,7 @@
"properties": {
"contents": {
"type": "array",
+ "description": "This is an alternative to the `content` property. It allows to specify variants of the same content, one per language.\n\nUsage:\n- If your assistants are multilingual, you can provide content for each language.\n- If you don't provide content for a language, the first item in the array will be automatically translated to the active language at that moment.\n\nThis will override the `content` property.",
"items": {
"oneOf": [
{
@@ -3595,6 +7851,7 @@
"properties": {
"contents": {
"type": "array",
+ "description": "This is an alternative to the `content` property. It allows to specify variants of the same content, one per language.\n\nUsage:\n- If your assistants are multilingual, you can provide content for each language.\n- If you don't provide content for a language, the first item in the array will be automatically translated to the active language at that moment.\n\nThis will override the `content` property.",
"items": {
"oneOf": [
{
@@ -3736,29 +7993,6 @@
"name"
]
},
- "Server": {
- "type": "object",
- "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",
- "minimum": 1,
- "maximum": 60,
- "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."
- }
- },
- "required": [
- "url"
- ]
- },
"CreateDtmfToolDTO": {
"type": "object",
"properties": {
@@ -4154,7 +8388,7 @@
"properties": {
"contents": {
"type": "array",
- "description": "This is an alternative to the `content` property. It allows to specify variants of the same content, one per language.\n\nUsage:\n- If your assistants are multilingual, you can provide content for each language.\n\nThis will override the `content` property.",
+ "description": "This is an alternative to the `content` property. It allows to specify variants of the same content, one per language.\n\nUsage:\n- If your assistants are multilingual, you can provide content for each language.\n- If you don't provide content for a language, the first item in the array will be automatically translated to the active language at that moment.\n\nThis will override the `content` property.",
"items": {
"oneOf": [
{
@@ -4285,15 +8519,17 @@
"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- `warm-transfer-with-message`: The assistant dials the destination, delivers the `message` to the destination party, connects the customer, and leaves the call.\n- `warm-transfer-with-summary`: The assistant dials the destination, provides a summary of the call to the destination party, 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- `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\n@default 'blind-transfer'",
"enum": [
"blind-transfer",
- "warm-transfer-with-message",
- "warm-transfer-with-summary"
+ "warm-transfer-say-message",
+ "warm-transfer-say-summary",
+ "warm-transfer-wait-for-operator-to-speak-first-and-then-say-message",
+ "warm-transfer-wait-for-operator-to-speak-first-and-then-say-summary"
]
},
"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 `warm-transfer-with-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 `warm-transfer-say-message` or `warm-transfer-wait-for-operator-to-speak-first-and-then-say-message`.",
"oneOf": [
{
"type": "string"
@@ -4304,7 +8540,7 @@
]
},
"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 `warm-transfer-with-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 `warm-transfer-say-summary` or `warm-transfer-wait-for-operator-to-speak-first-and-then-say-summary`.",
"allOf": [
{
"$ref": "#/components/schemas/SummaryPlan"
@@ -4754,7 +8990,9 @@
"claude-3-opus-20240229",
"claude-3-sonnet-20240229",
"claude-3-haiku-20240307",
- "claude-3-5-sonnet-20240620"
+ "claude-3-5-sonnet-20240620",
+ "claude-3-5-sonnet-20241022",
+ "claude-3-5-haiku-20241022"
]
},
"provider": {
@@ -5011,6 +9249,116 @@
"model"
]
},
+ "GoogleModel": {
+ "type": "object",
+ "properties": {
+ "messages": {
+ "description": "This is the starting state for the conversation.",
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/OpenAIMessage"
+ }
+ },
+ "tools": {
+ "type": "array",
+ "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/CreateDtmfToolDTO",
+ "title": "DtmfTool"
+ },
+ {
+ "$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/CreateMakeToolDTO",
+ "title": "MakeTool"
+ },
+ {
+ "$ref": "#/components/schemas/CreateTransferCallToolDTO",
+ "title": "TransferTool"
+ }
+ ]
+ }
+ },
+ "toolIds": {
+ "description": "These are the tools that the assistant can use during the call. To use transient tools, use `tools`.\n\nBoth `tools` and `toolIds` can be used together.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "knowledgeBase": {
+ "description": "These are the options for the knowledge base.",
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/CanonicalKnowledgeBase",
+ "title": "Canonical"
+ },
+ {
+ "$ref": "#/components/schemas/CustomKnowledgeBase",
+ "title": "Custom"
+ }
+ ]
+ },
+ "model": {
+ "type": "string",
+ "description": "This is the Google model that will be used.",
+ "enum": [
+ "gemini-1.5-flash",
+ "gemini-1.5-flash-002",
+ "gemini-1.5-pro",
+ "gemini-1.5-pro-002",
+ "gemini-1.0-pro"
+ ]
+ },
+ "provider": {
+ "type": "string",
+ "enum": [
+ "google"
+ ]
+ },
+ "temperature": {
+ "type": "number",
+ "description": "This is the temperature that will be used for calls. Default is 0 to leverage caching for lower latency.",
+ "minimum": 0,
+ "maximum": 2
+ },
+ "maxTokens": {
+ "type": "number",
+ "description": "This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250.",
+ "minimum": 50,
+ "maximum": 10000
+ },
+ "emotionRecognitionEnabled": {
+ "type": "boolean",
+ "description": "This determines whether we detect user's emotion while they speak and send it as an additional info to model.\n\nDefault `false` because the model is usually are good at understanding the user's emotion from text.\n\n@default false"
+ },
+ "numFastTurns": {
+ "type": "number",
+ "description": "This sets how many turns at the start of the conversation to use a smaller, faster model from the same provider before switching to the primary model. Example, gpt-3.5-turbo if provider is openai.\n\nDefault is 0.\n\n@default 0",
+ "minimum": 0
+ }
+ },
+ "required": [
+ "model",
+ "provider"
+ ]
+ },
"GroqModel": {
"type": "object",
"properties": {
@@ -5203,6 +9551,7 @@
"type": "string",
"description": "This is the OpenAI model that will be used.",
"enum": [
+ "gpt-4o-realtime-preview-2024-10-01",
"gpt-4o-mini",
"gpt-4o-mini-2024-07-18",
"gpt-4o",
@@ -5226,6 +9575,7 @@
"type": "array",
"description": "These are the fallback models that will be used if the primary model fails. This shouldn't be specified unless you have a specific reason to do so. Vapi will automatically find the fastest fallbacks that make sense.",
"enum": [
+ "gpt-4o-realtime-preview-2024-10-01",
"gpt-4o-mini",
"gpt-4o-mini-2024-07-18",
"gpt-4o",
@@ -5251,6 +9601,7 @@
"items": {
"type": "string",
"enum": [
+ "gpt-4o-realtime-preview-2024-10-01",
"gpt-4o-mini",
"gpt-4o-mini-2024-07-18",
"gpt-4o",
@@ -6005,13 +10356,21 @@
"type": "string",
"description": "This is the language that will be used. This is optional and will default to the correct language for the voiceId.",
"enum": [
- "de",
"en",
+ "de",
"es",
"fr",
"ja",
"pt",
- "zh"
+ "zh",
+ "hi",
+ "it",
+ "ko",
+ "nl",
+ "pl",
+ "ru",
+ "sv",
+ "tr"
],
"example": "en"
},
@@ -6049,7 +10408,7 @@
]
},
"server": {
- "description": "This is where the voice request will be sent.\n\nRequest Example:\n\nPOST https://{server.url}\nContent-Type: application/json\n\n{\n \"messsage\": {\n \"type\": \"voice-request\",\n \"text\": \"Hello, world!\",\n \"sampleRate\": 24000,\n ...other metadata about the call...\n }\n}\n\nResponse Expected: 1-channel 16-bit raw PCM audio at the sample rate specified in the request. Here is how the response will be piped to the transport:\n```\nresponse.on('data', (chunk: Buffer) => {\n outputStream.write(chunk);\n});\n```",
+ "description": "This is where the voice request will be sent.\n\nRequest Example:\n\nPOST https://{server.url}\nContent-Type: application/json\n\n{\n \"message\": {\n \"type\": \"voice-request\",\n \"text\": \"Hello, world!\",\n \"sampleRate\": 24000,\n ...other metadata about the call...\n }\n}\n\nResponse Expected: 1-channel 16-bit raw PCM audio at the sample rate specified in the request. Here is how the response will be piped to the transport:\n```\nresponse.on('data', (chunk: Buffer) => {\n outputStream.write(chunk);\n});\n```",
"allOf": [
{
"$ref": "#/components/schemas/Server"
@@ -6496,6 +10855,15 @@
"maximum": 2,
"example": null
},
+ "model": {
+ "type": "string",
+ "description": "Playht voice model/engine to use.",
+ "enum": [
+ "PlayHT2.0",
+ "PlayHT2.0-turbo",
+ "Play3.0-mini"
+ ]
+ },
"chunkPlan": {
"description": "This is the plan for chunking the model output before it is sent to the voice provider.",
"allOf": [
@@ -6650,6 +11018,124 @@
"voiceId"
]
},
+ "TavusConversationProperties": {
+ "type": "object",
+ "properties": {
+ "maxCallDuration": {
+ "type": "number",
+ "description": "The maximum duration of the call in seconds. The default `maxCallDuration` is 3600 seconds (1 hour).\nOnce the time limit specified by this parameter has been reached, the conversation will automatically shut down."
+ },
+ "participantLeftTimeout": {
+ "type": "number",
+ "description": "The duration in seconds after which the call will be automatically shut down once the last participant leaves."
+ },
+ "participantAbsentTimeout": {
+ "type": "number",
+ "description": "Starting from conversation creation, the duration in seconds after which the call will be automatically shut down if no participant joins the call.\nDefault is 300 seconds (5 minutes)."
+ },
+ "enableRecording": {
+ "type": "boolean",
+ "description": "If true, the user will be able to record the conversation."
+ },
+ "enableTranscription": {
+ "type": "boolean",
+ "description": "If true, the user will be able to transcribe the conversation.\nYou can find more instructions on displaying transcriptions if you are using your custom DailyJS components here.\nYou need to have an event listener on Daily that listens for `app-messages`."
+ },
+ "applyGreenscreen": {
+ "type": "boolean",
+ "description": "If true, the background will be replaced with a greenscreen (RGB values: `[0, 255, 155]`).\nYou can use WebGL on the frontend to make the greenscreen transparent or change its color."
+ },
+ "language": {
+ "type": "string",
+ "description": "The language of the conversation. Please provide the **full language name**, not the two-letter code.\nIf you are using your own TTS voice, please ensure it supports the language you provide.\nIf you are using a stock replica or default persona, please note that only ElevenLabs and Cartesia supported languages are available.\nYou can find a full list of supported languages for Cartesia here, for ElevenLabs here, and for PlayHT here."
+ },
+ "recordingS3BucketName": {
+ "type": "string",
+ "description": "The name of the S3 bucket where the recording will be stored."
+ },
+ "recordingS3BucketRegion": {
+ "type": "string",
+ "description": "The region of the S3 bucket where the recording will be stored."
+ },
+ "awsAssumeRoleArn": {
+ "type": "string",
+ "description": "The ARN of the role that will be assumed to access the S3 bucket."
+ }
+ }
+ },
+ "TavusVoice": {
+ "type": "object",
+ "properties": {
+ "fillerInjectionEnabled": {
+ "type": "boolean",
+ "description": "This determines whether fillers are injected into the model output before inputting it into the voice provider.\n\nDefault `false` because you can achieve better results with prompting the model.",
+ "example": false
+ },
+ "provider": {
+ "type": "string",
+ "description": "This is the voice provider that will be used.",
+ "enum": [
+ "tavus"
+ ]
+ },
+ "voiceId": {
+ "description": "This is the provider-specific ID that will be used.",
+ "oneOf": [
+ {
+ "type": "string",
+ "enum": [
+ "r52da2535a"
+ ],
+ "title": "Preset Voice Options"
+ },
+ {
+ "type": "string",
+ "title": "Tavus Voice ID"
+ }
+ ]
+ },
+ "personaId": {
+ "type": "string",
+ "description": "This is the unique identifier for the persona that the replica will use in the conversation."
+ },
+ "callbackUrl": {
+ "type": "string",
+ "description": "This is the url that will receive webhooks with updates regarding the conversation state."
+ },
+ "conversationName": {
+ "type": "string",
+ "description": "This is the name for the conversation."
+ },
+ "conversationalContext": {
+ "type": "string",
+ "description": "This is the context that will be appended to any context provided in the persona, if one is provided."
+ },
+ "customGreeting": {
+ "type": "string",
+ "description": "This is the custom greeting that the replica will give once a participant joines the conversation."
+ },
+ "properties": {
+ "description": "These are optional properties used to customize the conversation.",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/TavusConversationProperties"
+ }
+ ]
+ },
+ "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"
+ ]
+ },
"TransportConfigurationTwilio": {
"type": "object",
"properties": {
@@ -7153,17 +11639,21 @@
"transcriber": {
"description": "These are the options for the assistant's transcriber.",
"oneOf": [
+ {
+ "$ref": "#/components/schemas/CustomTranscriber",
+ "title": "CustomTranscriber"
+ },
{
"$ref": "#/components/schemas/DeepgramTranscriber",
- "title": "DeepgramTranscriber"
+ "title": "Deepgram"
},
{
"$ref": "#/components/schemas/GladiaTranscriber",
- "title": "GladiaTranscriber"
+ "title": "Gladia"
},
{
"$ref": "#/components/schemas/TalkscriberTranscriber",
- "title": "TalkscriberTranscriber"
+ "title": "Talkscriber"
}
]
},
@@ -7172,43 +11662,47 @@
"oneOf": [
{
"$ref": "#/components/schemas/AnyscaleModel",
- "title": "AnyscaleModel"
+ "title": "Anyscale"
},
{
"$ref": "#/components/schemas/AnthropicModel",
- "title": "AnthropicModel"
+ "title": "Anthropic"
},
{
"$ref": "#/components/schemas/CustomLLMModel",
- "title": "CustomLLMModel"
+ "title": "CustomLLM"
},
{
"$ref": "#/components/schemas/DeepInfraModel",
- "title": "DeepInfraModel"
+ "title": "DeepInfra"
+ },
+ {
+ "$ref": "#/components/schemas/GoogleModel",
+ "title": "Google"
},
{
"$ref": "#/components/schemas/GroqModel",
- "title": "GroqModel"
+ "title": "Groq"
},
{
"$ref": "#/components/schemas/OpenAIModel",
- "title": "OpenAIModel"
+ "title": "OpenAI"
},
{
"$ref": "#/components/schemas/OpenRouterModel",
- "title": "OpenRouterModel"
+ "title": "OpenRouter"
},
{
"$ref": "#/components/schemas/PerplexityAIModel",
- "title": "PerplexityAIModel"
+ "title": "PerplexityAI"
},
{
"$ref": "#/components/schemas/TogetherAIModel",
- "title": "TogetherAIModel"
+ "title": "Together"
},
{
"$ref": "#/components/schemas/VapiModel",
- "title": "VapiModel"
+ "title": "Vapi"
}
]
},
@@ -7217,11 +11711,11 @@
"oneOf": [
{
"$ref": "#/components/schemas/AzureVoice",
- "title": "AzureVoice"
+ "title": "Azure"
},
{
"$ref": "#/components/schemas/CartesiaVoice",
- "title": "CartesiaVoice"
+ "title": "Cartesia"
},
{
"$ref": "#/components/schemas/CustomVoice",
@@ -7229,31 +11723,35 @@
},
{
"$ref": "#/components/schemas/DeepgramVoice",
- "title": "DeepgramVoice"
+ "title": "Deepgram"
},
{
"$ref": "#/components/schemas/ElevenLabsVoice",
- "title": "ElevenLabsVoice"
+ "title": "ElevenLabs"
},
{
"$ref": "#/components/schemas/LMNTVoice",
- "title": "LMNTVoice"
+ "title": "LMNT"
},
{
"$ref": "#/components/schemas/NeetsVoice",
- "title": "NeetsVoice"
+ "title": "Neets"
},
{
"$ref": "#/components/schemas/OpenAIVoice",
- "title": "OpenAIVoice"
+ "title": "OpenAI"
},
{
"$ref": "#/components/schemas/PlayHTVoice",
- "title": "PlayHTVoice"
+ "title": "PlayHT"
},
{
"$ref": "#/components/schemas/RimeAIVoice",
- "title": "RimeAIVoice"
+ "title": "RimeAI"
+ },
+ {
+ "$ref": "#/components/schemas/TavusVoice",
+ "title": "TavusVoice"
}
],
"default": {
@@ -7395,7 +11893,7 @@
"type": "number",
"description": "This is the maximum number of seconds that the call will last. When the call reaches this duration, it will be ended.\n\n@default 600 (10 minutes)",
"minimum": 10,
- "maximum": 21600,
+ "maximum": 43200,
"example": 600
},
"backgroundSound": {
@@ -7407,11 +11905,6 @@
],
"example": "office"
},
- "backchannelingEnabled": {
- "type": "boolean",
- "description": "This determines whether the model says 'mhmm', 'ahem' etc. while user is speaking.\n\nDefault `false` while in beta.\n\n@default false",
- "example": false
- },
"backgroundDenoisingEnabled": {
"type": "boolean",
"description": "This enables filtering of noise and background speech while the user is talking.\n\nDefault `false` while in beta.\n\n@default false",
@@ -7475,15 +11968,6 @@
"type": "object",
"description": "This is for metadata you want to store on the assistant."
},
- "serverUrl": {
- "type": "string",
- "description": "This is the URL Vapi will communicate with via HTTP GET and POST Requests. This is used for retrieving context, function calling, and end-of-call reports.\n\nAll requests will be sent with the call object among other things relevant to that message. 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: tool.server.url > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl"
- },
- "serverUrlSecret": {
- "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 serverUrl.",
- "maxLength": 1000
- },
"analysisPlan": {
"description": "This is the plan for analysis of assistant's calls. Stored in `call.analysis`.",
"allOf": [
@@ -7538,6 +12022,14 @@
"items": {
"type": "string"
}
+ },
+ "server": {
+ "description": "/**\nThis 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.url\n2. phoneNumber.serverUrl\n3. org.serverUrl",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/Server"
+ }
+ ]
}
}
},
@@ -7547,17 +12039,21 @@
"transcriber": {
"description": "These are the options for the assistant's transcriber.",
"oneOf": [
+ {
+ "$ref": "#/components/schemas/CustomTranscriber",
+ "title": "CustomTranscriber"
+ },
{
"$ref": "#/components/schemas/DeepgramTranscriber",
- "title": "DeepgramTranscriber"
+ "title": "Deepgram"
},
{
"$ref": "#/components/schemas/GladiaTranscriber",
- "title": "GladiaTranscriber"
+ "title": "Gladia"
},
{
"$ref": "#/components/schemas/TalkscriberTranscriber",
- "title": "TalkscriberTranscriber"
+ "title": "Talkscriber"
}
]
},
@@ -7566,43 +12062,47 @@
"oneOf": [
{
"$ref": "#/components/schemas/AnyscaleModel",
- "title": "AnyscaleModel"
+ "title": "Anyscale"
},
{
"$ref": "#/components/schemas/AnthropicModel",
- "title": "AnthropicModel"
+ "title": "Anthropic"
},
{
"$ref": "#/components/schemas/CustomLLMModel",
- "title": "CustomLLMModel"
+ "title": "CustomLLM"
},
{
"$ref": "#/components/schemas/DeepInfraModel",
- "title": "DeepInfraModel"
+ "title": "DeepInfra"
+ },
+ {
+ "$ref": "#/components/schemas/GoogleModel",
+ "title": "Google"
},
{
"$ref": "#/components/schemas/GroqModel",
- "title": "GroqModel"
+ "title": "Groq"
},
{
"$ref": "#/components/schemas/OpenAIModel",
- "title": "OpenAIModel"
+ "title": "OpenAI"
},
{
"$ref": "#/components/schemas/OpenRouterModel",
- "title": "OpenRouterModel"
+ "title": "OpenRouter"
},
{
"$ref": "#/components/schemas/PerplexityAIModel",
- "title": "PerplexityAIModel"
+ "title": "PerplexityAI"
},
{
"$ref": "#/components/schemas/TogetherAIModel",
- "title": "TogetherAIModel"
+ "title": "Together"
},
{
"$ref": "#/components/schemas/VapiModel",
- "title": "VapiModel"
+ "title": "Vapi"
}
]
},
@@ -7611,11 +12111,11 @@
"oneOf": [
{
"$ref": "#/components/schemas/AzureVoice",
- "title": "AzureVoice"
+ "title": "Azure"
},
{
"$ref": "#/components/schemas/CartesiaVoice",
- "title": "CartesiaVoice"
+ "title": "Cartesia"
},
{
"$ref": "#/components/schemas/CustomVoice",
@@ -7623,31 +12123,35 @@
},
{
"$ref": "#/components/schemas/DeepgramVoice",
- "title": "DeepgramVoice"
+ "title": "Deepgram"
},
{
"$ref": "#/components/schemas/ElevenLabsVoice",
- "title": "ElevenLabsVoice"
+ "title": "ElevenLabs"
},
{
"$ref": "#/components/schemas/LMNTVoice",
- "title": "LMNTVoice"
+ "title": "LMNT"
},
{
"$ref": "#/components/schemas/NeetsVoice",
- "title": "NeetsVoice"
+ "title": "Neets"
},
{
"$ref": "#/components/schemas/OpenAIVoice",
- "title": "OpenAIVoice"
+ "title": "OpenAI"
},
{
"$ref": "#/components/schemas/PlayHTVoice",
- "title": "PlayHTVoice"
+ "title": "PlayHT"
},
{
"$ref": "#/components/schemas/RimeAIVoice",
- "title": "RimeAIVoice"
+ "title": "RimeAI"
+ },
+ {
+ "$ref": "#/components/schemas/TavusVoice",
+ "title": "TavusVoice"
}
],
"default": {
@@ -7789,7 +12293,7 @@
"type": "number",
"description": "This is the maximum number of seconds that the call will last. When the call reaches this duration, it will be ended.\n\n@default 600 (10 minutes)",
"minimum": 10,
- "maximum": 21600,
+ "maximum": 43200,
"example": 600
},
"backgroundSound": {
@@ -7801,11 +12305,6 @@
],
"example": "office"
},
- "backchannelingEnabled": {
- "type": "boolean",
- "description": "This determines whether the model says 'mhmm', 'ahem' etc. while user is speaking.\n\nDefault `false` while in beta.\n\n@default false",
- "example": false
- },
"backgroundDenoisingEnabled": {
"type": "boolean",
"description": "This enables filtering of noise and background speech while the user is talking.\n\nDefault `false` while in beta.\n\n@default false",
@@ -7830,7 +12329,7 @@
},
"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."
+ "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."
},
"name": {
"type": "string",
@@ -7873,15 +12372,6 @@
"type": "object",
"description": "This is for metadata you want to store on the assistant."
},
- "serverUrl": {
- "type": "string",
- "description": "This is the URL Vapi will communicate with via HTTP GET and POST Requests. This is used for retrieving context, function calling, and end-of-call reports.\n\nAll requests will be sent with the call object among other things relevant to that message. 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: tool.server.url > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl"
- },
- "serverUrlSecret": {
- "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 serverUrl.",
- "maxLength": 1000
- },
"analysisPlan": {
"description": "This is the plan for analysis of assistant's calls. Stored in `call.analysis`.",
"allOf": [
@@ -7936,6 +12426,14 @@
"items": {
"type": "string"
}
+ },
+ "server": {
+ "description": "/**\nThis 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.url\n2. phoneNumber.serverUrl\n3. org.serverUrl",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/Server"
+ }
+ ]
}
}
},
@@ -8333,6 +12831,25 @@
}
}
},
+ "Transport": {
+ "type": "object",
+ "properties": {
+ "provider": {
+ "type": "string",
+ "description": "This is the provider used for the call.",
+ "enum": [
+ "twilio",
+ "vonage",
+ "vapi",
+ "daily"
+ ]
+ },
+ "assistantVideoEnabled": {
+ "type": "boolean",
+ "description": "This is determines whether the assistant will have video enabled.\n\nOnly relevant for `webCall` type."
+ }
+ }
+ },
"Call": {
"type": "object",
"properties": {
@@ -8472,6 +12989,8 @@
"pipeline-error-openai-llm-failed",
"pipeline-error-azure-openai-llm-failed",
"pipeline-error-groq-llm-failed",
+ "pipeline-error-google-llm-failed",
+ "pipeline-error-xai-llm-failed",
"assistant-not-invalid",
"assistant-not-provided",
"call-start-error-neither-assistant-nor-server-set",
@@ -8498,6 +13017,16 @@
"pipeline-error-openai-403-model-access-denied",
"pipeline-error-openai-429-exceeded-quota",
"pipeline-error-openai-500-server-error",
+ "pipeline-error-google-400-bad-request-validation-failed",
+ "pipeline-error-google-401-unauthorized",
+ "pipeline-error-google-403-model-access-denied",
+ "pipeline-error-google-429-exceeded-quota",
+ "pipeline-error-google-500-server-error",
+ "pipeline-error-xai-400-bad-request-validation-failed",
+ "pipeline-error-xai-401-unauthorized",
+ "pipeline-error-xai-403-model-access-denied",
+ "pipeline-error-xai-429-exceeded-quota",
+ "pipeline-error-xai-500-server-error",
"pipeline-error-azure-openai-400-bad-request-validation-failed",
"pipeline-error-azure-openai-401-unauthorized",
"pipeline-error-azure-openai-403-model-access-denied",
@@ -8602,6 +13131,7 @@
"pipeline-error-deepgram-returning-500-invalid-json",
"pipeline-error-deepgram-returning-502-network-error",
"pipeline-error-deepgram-returning-502-bad-gateway-ehostunreach",
+ "pipeline-error-custom-transcriber-failed",
"silence-timed-out",
"sip-gateway-failed-to-connect-call",
"twilio-failed-to-connect-call",
@@ -8695,6 +13225,14 @@
}
]
},
+ "transport": {
+ "description": "This is the transport used for the call.",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/Transport"
+ }
+ ]
+ },
"phoneCallProviderId": {
"type": "string",
"description": "The ID of the call as provided by the phone number service. callSid in Twilio. conversationUuid in Vonage.\n\nOnly relevant for `outboundPhoneCall` and `inboundPhoneCall` type."
@@ -8924,17 +13462,21 @@
"transcriber": {
"description": "These are the options for the assistant's transcriber.",
"oneOf": [
+ {
+ "$ref": "#/components/schemas/CustomTranscriber",
+ "title": "CustomTranscriber"
+ },
{
"$ref": "#/components/schemas/DeepgramTranscriber",
- "title": "DeepgramTranscriber"
+ "title": "Deepgram"
},
{
"$ref": "#/components/schemas/GladiaTranscriber",
- "title": "GladiaTranscriber"
+ "title": "Gladia"
},
{
"$ref": "#/components/schemas/TalkscriberTranscriber",
- "title": "TalkscriberTranscriber"
+ "title": "Talkscriber"
}
]
},
@@ -8943,43 +13485,47 @@
"oneOf": [
{
"$ref": "#/components/schemas/AnyscaleModel",
- "title": "AnyscaleModel"
+ "title": "Anyscale"
},
{
"$ref": "#/components/schemas/AnthropicModel",
- "title": "AnthropicModel"
+ "title": "Anthropic"
},
{
"$ref": "#/components/schemas/CustomLLMModel",
- "title": "CustomLLMModel"
+ "title": "CustomLLM"
},
{
"$ref": "#/components/schemas/DeepInfraModel",
- "title": "DeepInfraModel"
+ "title": "DeepInfra"
+ },
+ {
+ "$ref": "#/components/schemas/GoogleModel",
+ "title": "Google"
},
{
"$ref": "#/components/schemas/GroqModel",
- "title": "GroqModel"
+ "title": "Groq"
},
{
"$ref": "#/components/schemas/OpenAIModel",
- "title": "OpenAIModel"
+ "title": "OpenAI"
},
{
"$ref": "#/components/schemas/OpenRouterModel",
- "title": "OpenRouterModel"
+ "title": "OpenRouter"
},
{
"$ref": "#/components/schemas/PerplexityAIModel",
- "title": "PerplexityAIModel"
+ "title": "PerplexityAI"
},
{
"$ref": "#/components/schemas/TogetherAIModel",
- "title": "TogetherAIModel"
+ "title": "Together"
},
{
"$ref": "#/components/schemas/VapiModel",
- "title": "VapiModel"
+ "title": "Vapi"
}
]
},
@@ -8988,11 +13534,11 @@
"oneOf": [
{
"$ref": "#/components/schemas/AzureVoice",
- "title": "AzureVoice"
+ "title": "Azure"
},
{
"$ref": "#/components/schemas/CartesiaVoice",
- "title": "CartesiaVoice"
+ "title": "Cartesia"
},
{
"$ref": "#/components/schemas/CustomVoice",
@@ -9000,31 +13546,35 @@
},
{
"$ref": "#/components/schemas/DeepgramVoice",
- "title": "DeepgramVoice"
+ "title": "Deepgram"
},
{
"$ref": "#/components/schemas/ElevenLabsVoice",
- "title": "ElevenLabsVoice"
+ "title": "ElevenLabs"
},
{
"$ref": "#/components/schemas/LMNTVoice",
- "title": "LMNTVoice"
+ "title": "LMNT"
},
{
"$ref": "#/components/schemas/NeetsVoice",
- "title": "NeetsVoice"
+ "title": "Neets"
},
{
"$ref": "#/components/schemas/OpenAIVoice",
- "title": "OpenAIVoice"
+ "title": "OpenAI"
},
{
"$ref": "#/components/schemas/PlayHTVoice",
- "title": "PlayHTVoice"
+ "title": "PlayHT"
},
{
"$ref": "#/components/schemas/RimeAIVoice",
- "title": "RimeAIVoice"
+ "title": "RimeAI"
+ },
+ {
+ "$ref": "#/components/schemas/TavusVoice",
+ "title": "TavusVoice"
}
],
"default": {
@@ -9166,7 +13716,7 @@
"type": "number",
"description": "This is the maximum number of seconds that the call will last. When the call reaches this duration, it will be ended.\n\n@default 600 (10 minutes)",
"minimum": 10,
- "maximum": 21600,
+ "maximum": 43200,
"example": 600
},
"backgroundSound": {
@@ -9178,11 +13728,6 @@
],
"example": "office"
},
- "backchannelingEnabled": {
- "type": "boolean",
- "description": "This determines whether the model says 'mhmm', 'ahem' etc. while user is speaking.\n\nDefault `false` while in beta.\n\n@default false",
- "example": false
- },
"backgroundDenoisingEnabled": {
"type": "boolean",
"description": "This enables filtering of noise and background speech while the user is talking.\n\nDefault `false` while in beta.\n\n@default false",
@@ -9246,15 +13791,6 @@
"type": "object",
"description": "This is for metadata you want to store on the assistant."
},
- "serverUrl": {
- "type": "string",
- "description": "This is the URL Vapi will communicate with via HTTP GET and POST Requests. This is used for retrieving context, function calling, and end-of-call reports.\n\nAll requests will be sent with the call object among other things relevant to that message. 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: tool.server.url > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl"
- },
- "serverUrlSecret": {
- "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 serverUrl.",
- "maxLength": 1000
- },
"analysisPlan": {
"description": "This is the plan for analysis of assistant's calls. Stored in `call.analysis`.",
"allOf": [
@@ -9310,6 +13846,14 @@
"type": "string"
}
},
+ "server": {
+ "description": "/**\nThis 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.url\n2. phoneNumber.serverUrl\n3. org.serverUrl",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/Server"
+ }
+ ]
+ },
"id": {
"type": "string",
"description": "This is the unique identifier for the assistant."
@@ -9342,17 +13886,21 @@
"transcriber": {
"description": "These are the options for the assistant's transcriber.",
"oneOf": [
+ {
+ "$ref": "#/components/schemas/CustomTranscriber",
+ "title": "CustomTranscriber"
+ },
{
"$ref": "#/components/schemas/DeepgramTranscriber",
- "title": "DeepgramTranscriber"
+ "title": "Deepgram"
},
{
"$ref": "#/components/schemas/GladiaTranscriber",
- "title": "GladiaTranscriber"
+ "title": "Gladia"
},
{
"$ref": "#/components/schemas/TalkscriberTranscriber",
- "title": "TalkscriberTranscriber"
+ "title": "Talkscriber"
}
]
},
@@ -9361,43 +13909,47 @@
"oneOf": [
{
"$ref": "#/components/schemas/AnyscaleModel",
- "title": "AnyscaleModel"
+ "title": "Anyscale"
},
{
"$ref": "#/components/schemas/AnthropicModel",
- "title": "AnthropicModel"
+ "title": "Anthropic"
},
{
"$ref": "#/components/schemas/CustomLLMModel",
- "title": "CustomLLMModel"
+ "title": "CustomLLM"
},
{
"$ref": "#/components/schemas/DeepInfraModel",
- "title": "DeepInfraModel"
+ "title": "DeepInfra"
+ },
+ {
+ "$ref": "#/components/schemas/GoogleModel",
+ "title": "Google"
},
{
"$ref": "#/components/schemas/GroqModel",
- "title": "GroqModel"
+ "title": "Groq"
},
{
"$ref": "#/components/schemas/OpenAIModel",
- "title": "OpenAIModel"
+ "title": "OpenAI"
},
{
"$ref": "#/components/schemas/OpenRouterModel",
- "title": "OpenRouterModel"
+ "title": "OpenRouter"
},
{
"$ref": "#/components/schemas/PerplexityAIModel",
- "title": "PerplexityAIModel"
+ "title": "PerplexityAI"
},
{
"$ref": "#/components/schemas/TogetherAIModel",
- "title": "TogetherAIModel"
+ "title": "Together"
},
{
"$ref": "#/components/schemas/VapiModel",
- "title": "VapiModel"
+ "title": "Vapi"
}
]
},
@@ -9406,11 +13958,11 @@
"oneOf": [
{
"$ref": "#/components/schemas/AzureVoice",
- "title": "AzureVoice"
+ "title": "Azure"
},
{
"$ref": "#/components/schemas/CartesiaVoice",
- "title": "CartesiaVoice"
+ "title": "Cartesia"
},
{
"$ref": "#/components/schemas/CustomVoice",
@@ -9418,31 +13970,35 @@
},
{
"$ref": "#/components/schemas/DeepgramVoice",
- "title": "DeepgramVoice"
+ "title": "Deepgram"
},
{
"$ref": "#/components/schemas/ElevenLabsVoice",
- "title": "ElevenLabsVoice"
+ "title": "ElevenLabs"
},
{
"$ref": "#/components/schemas/LMNTVoice",
- "title": "LMNTVoice"
+ "title": "LMNT"
},
{
"$ref": "#/components/schemas/NeetsVoice",
- "title": "NeetsVoice"
+ "title": "Neets"
},
{
"$ref": "#/components/schemas/OpenAIVoice",
- "title": "OpenAIVoice"
+ "title": "OpenAI"
},
{
"$ref": "#/components/schemas/PlayHTVoice",
- "title": "PlayHTVoice"
+ "title": "PlayHT"
},
{
"$ref": "#/components/schemas/RimeAIVoice",
- "title": "RimeAIVoice"
+ "title": "RimeAI"
+ },
+ {
+ "$ref": "#/components/schemas/TavusVoice",
+ "title": "TavusVoice"
}
],
"default": {
@@ -9584,7 +14140,7 @@
"type": "number",
"description": "This is the maximum number of seconds that the call will last. When the call reaches this duration, it will be ended.\n\n@default 600 (10 minutes)",
"minimum": 10,
- "maximum": 21600,
+ "maximum": 43200,
"example": 600
},
"backgroundSound": {
@@ -9596,11 +14152,6 @@
],
"example": "office"
},
- "backchannelingEnabled": {
- "type": "boolean",
- "description": "This determines whether the model says 'mhmm', 'ahem' etc. while user is speaking.\n\nDefault `false` while in beta.\n\n@default false",
- "example": false
- },
"backgroundDenoisingEnabled": {
"type": "boolean",
"description": "This enables filtering of noise and background speech while the user is talking.\n\nDefault `false` while in beta.\n\n@default false",
@@ -9664,15 +14215,6 @@
"type": "object",
"description": "This is for metadata you want to store on the assistant."
},
- "serverUrl": {
- "type": "string",
- "description": "This is the URL Vapi will communicate with via HTTP GET and POST Requests. This is used for retrieving context, function calling, and end-of-call reports.\n\nAll requests will be sent with the call object among other things relevant to that message. 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: tool.server.url > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl"
- },
- "serverUrlSecret": {
- "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 serverUrl.",
- "maxLength": 1000
- },
"analysisPlan": {
"description": "This is the plan for analysis of assistant's calls. Stored in `call.analysis`.",
"allOf": [
@@ -9727,6 +14269,14 @@
"items": {
"type": "string"
}
+ },
+ "server": {
+ "description": "/**\nThis 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.url\n2. phoneNumber.serverUrl\n3. org.serverUrl",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/Server"
+ }
+ ]
}
}
},
@@ -10443,6 +14993,43 @@
"credentialId"
]
},
+ "PhoneNumberPaginatedResponse": {
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "array",
+ "description": "A list of phone numbers, which can be of any provider type.",
+ "items": {
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/ByoPhoneNumber"
+ },
+ {
+ "$ref": "#/components/schemas/TwilioPhoneNumber"
+ },
+ {
+ "$ref": "#/components/schemas/VonagePhoneNumber"
+ },
+ {
+ "$ref": "#/components/schemas/VapiPhoneNumber"
+ }
+ ]
+ }
+ },
+ "metadata": {
+ "description": "Metadata about the pagination.",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/PaginationMeta"
+ }
+ ]
+ }
+ },
+ "required": [
+ "results",
+ "metadata"
+ ]
+ },
"UpdatePhoneNumberDTO": {
"type": "object",
"properties": {
@@ -10530,18 +15117,26 @@
"description": "This is the status of the subscription. Past due subscriptions are subscriptions\nwith past due payments.",
"enum": [
"active",
- "past-due"
+ "frozen"
]
},
"credits": {
- "type": "number",
- "description": "This is the number of credits the subscription currently has."
+ "type": "string",
+ "description": "This is the number of credits the subscription currently has.\n\nNote: This is a string to avoid floating point precision issues."
},
"concurrencyLimit": {
"type": "number",
- "description": "This is the concurrency limit for the subscription",
+ "description": "This is the total concurrency limit for the subscription.",
"minimum": 10
},
+ "concurrencyLimitIncluded": {
+ "type": "number",
+ "description": "This is the default concurrency limit for the subscription."
+ },
+ "concurrencyLimitPurchased": {
+ "type": "number",
+ "description": "This is the purchased add-on concurrency limit for the subscription."
+ },
"monthlyChargeScheduleId": {
"type": "number",
"description": "This is the ID of the monthly job that charges for subscription add ons and phone numbers."
@@ -10598,6 +15193,10 @@
"type": "number",
"description": "The number of minutes included in the subscription. Enterprise only."
},
+ "minutesUsed": {
+ "type": "number",
+ "description": "The number of minutes used in the subscription. Enterprise only."
+ },
"minutesOverageCost": {
"type": "number",
"description": "The per minute charge on minutes that exceed the included minutes. Enterprise only."
@@ -10608,6 +15207,32 @@
"items": {
"type": "string"
}
+ },
+ "outboundCallsDailyLimit": {
+ "type": "number",
+ "description": "The maximum number of outbound calls this subscription may make in a day. Resets every night.",
+ "minimum": 10
+ },
+ "outboundCallsCounter": {
+ "type": "number",
+ "description": "The current number of outbound calls the subscription has made in the current day.",
+ "minimum": 0
+ },
+ "outboundCallsCounterNextResetAt": {
+ "format": "date-time",
+ "type": "string",
+ "description": "This is the timestamp at which the outbound calls counter is scheduled to reset at."
+ },
+ "couponIds": {
+ "description": "This is the IDs of the coupons applicable to this subscription.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "couponUsageLeft": {
+ "type": "string",
+ "description": "This is the number of credits left obtained from a coupon."
}
},
"required": [
@@ -10617,7 +15242,9 @@
"type",
"status",
"credits",
- "concurrencyLimit"
+ "concurrencyLimit",
+ "concurrencyLimitIncluded",
+ "concurrencyLimitPurchased"
]
},
"Payment": {
@@ -10632,8 +15259,8 @@
"description": "Unique identifier for the organization"
},
"cost": {
- "type": "number",
- "description": "This is the total cost of the payment, which is the sum of all the costs in the costs object."
+ "type": "string",
+ "description": "This is the total cost of the payment, which is the sum of all the costs in the costs object.\n\nNote: this is a string to avoid floating point precision issues."
},
"costs": {
"description": "The different costs for the payment.",
@@ -10737,9 +15364,17 @@
"credits": {
"type": "number",
"description": "This is the number of credits to add to the subscription."
- },
+ }
+ },
+ "required": [
+ "credits"
+ ]
+ },
+ "AutoReloadPlanDTO": {
+ "type": "object",
+ "properties": {
"autoReloadPlan": {
- "description": "This is the auto reload plan to be configured for the subscription.",
+ "description": "This is the auto reload plan to be configured for the subscription.\nIt can be null if no auto reload plan is set.",
"allOf": [
{
"$ref": "#/components/schemas/AutoReloadPlan"
@@ -10801,6 +15436,23 @@
"recipientOrganization"
]
},
+ "SubscriptionCouponAddDTO": {
+ "type": "object",
+ "properties": {
+ "orgId": {
+ "type": "string",
+ "description": "This is the ID of the org within the subscription which the coupon will take effect on."
+ },
+ "couponCode": {
+ "type": "string",
+ "description": "This is the code of the coupon to apply to the subscription."
+ }
+ },
+ "required": [
+ "orgId",
+ "couponCode"
+ ]
+ },
"Squad": {
"type": "object",
"properties": {
@@ -11221,7 +15873,7 @@
"properties": {
"contents": {
"type": "array",
- "description": "This is an alternative to the `content` property. It allows to specify variants of the same content, one per language.\n\nUsage:\n- If your assistants are multilingual, you can provide content for each language.\n\nThis will override the `content` property.",
+ "description": "This is an alternative to the `content` property. It allows to specify variants of the same content, one per language.\n\nUsage:\n- If your assistants are multilingual, you can provide content for each language.\n- If you don't provide content for a language, the first item in the array will be automatically translated to the active language at that moment.\n\nThis will override the `content` property.",
"items": {
"oneOf": [
{
@@ -11269,7 +15921,7 @@
"properties": {
"contents": {
"type": "array",
- "description": "This is an alternative to the `content` property. It allows to specify variants of the same content, one per language.\n\nUsage:\n- If your assistants are multilingual, you can provide content for each language.\n\nThis will override the `content` property.",
+ "description": "This is an alternative to the `content` property. It allows to specify variants of the same content, one per language.\n\nUsage:\n- If your assistants are multilingual, you can provide content for each language.\n- If you don't provide content for a language, the first item in the array will be automatically translated to the active language at that moment.\n\nThis will override the `content` property.",
"items": {
"oneOf": [
{
@@ -13874,7 +18526,134 @@
"provider": {
"type": "string",
"enum": [
- "openrouter"
+ "openrouter"
+ ]
+ },
+ "apiKey": {
+ "type": "string",
+ "description": "This is not returned in the API."
+ },
+ "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."
+ }
+ },
+ "required": [
+ "provider",
+ "apiKey",
+ "id",
+ "orgId",
+ "createdAt",
+ "updatedAt"
+ ]
+ },
+ "PerplexityAICredential": {
+ "type": "object",
+ "properties": {
+ "provider": {
+ "type": "string",
+ "enum": [
+ "perplexity-ai"
+ ]
+ },
+ "apiKey": {
+ "type": "string",
+ "description": "This is not returned in the API."
+ },
+ "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."
+ }
+ },
+ "required": [
+ "provider",
+ "apiKey",
+ "id",
+ "orgId",
+ "createdAt",
+ "updatedAt"
+ ]
+ },
+ "PlayHTCredential": {
+ "type": "object",
+ "properties": {
+ "provider": {
+ "type": "string",
+ "enum": [
+ "playht"
+ ]
+ },
+ "apiKey": {
+ "type": "string",
+ "description": "This is not returned in the API."
+ },
+ "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."
+ },
+ "userId": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "provider",
+ "apiKey",
+ "id",
+ "orgId",
+ "createdAt",
+ "updatedAt",
+ "userId"
+ ]
+ },
+ "RimeAICredential": {
+ "type": "object",
+ "properties": {
+ "provider": {
+ "type": "string",
+ "enum": [
+ "rime-ai"
]
},
"apiKey": {
@@ -13909,13 +18688,13 @@
"updatedAt"
]
},
- "PerplexityAICredential": {
+ "RunpodCredential": {
"type": "object",
"properties": {
"provider": {
"type": "string",
"enum": [
- "perplexity-ai"
+ "runpod"
]
},
"apiKey": {
@@ -13950,18 +18729,35 @@
"updatedAt"
]
},
- "PlayHTCredential": {
+ "S3Credential": {
"type": "object",
"properties": {
"provider": {
"type": "string",
"enum": [
- "playht"
- ]
+ "s3"
+ ],
+ "description": "Credential provider. Only allowed value is s3"
},
- "apiKey": {
+ "awsAccessKeyId": {
"type": "string",
- "description": "This is not returned in the API."
+ "description": "AWS access key ID."
+ },
+ "awsSecretAccessKey": {
+ "type": "string",
+ "description": "AWS access key secret. This is not returned in the API."
+ },
+ "region": {
+ "type": "string",
+ "description": "AWS region in which the S3 bucket is located."
+ },
+ "s3BucketName": {
+ "type": "string",
+ "description": "AWS S3 bucket name."
+ },
+ "s3PathPrefix": {
+ "type": "string",
+ "description": "The path prefix for the uploaded recording. Ex. \"recordings/\""
},
"id": {
"type": "string",
@@ -13980,28 +18776,28 @@
"format": "date-time",
"type": "string",
"description": "This is the ISO 8601 date-time string of when the assistant was last updated."
- },
- "userId": {
- "type": "string"
}
},
"required": [
"provider",
- "apiKey",
+ "awsAccessKeyId",
+ "awsSecretAccessKey",
+ "region",
+ "s3BucketName",
+ "s3PathPrefix",
"id",
"orgId",
"createdAt",
- "updatedAt",
- "userId"
+ "updatedAt"
]
},
- "RimeAICredential": {
+ "TavusCredential": {
"type": "object",
"properties": {
"provider": {
"type": "string",
"enum": [
- "rime-ai"
+ "tavus"
]
},
"apiKey": {
@@ -14036,13 +18832,13 @@
"updatedAt"
]
},
- "RunpodCredential": {
+ "TogetherAICredential": {
"type": "object",
"properties": {
"provider": {
"type": "string",
"enum": [
- "runpod"
+ "together-ai"
]
},
"apiKey": {
@@ -14077,35 +18873,18 @@
"updatedAt"
]
},
- "S3Credential": {
+ "TwilioCredential": {
"type": "object",
"properties": {
"provider": {
"type": "string",
"enum": [
- "s3"
- ],
- "description": "Credential provider. Only allowed value is s3"
- },
- "awsAccessKeyId": {
- "type": "string",
- "description": "AWS access key ID."
- },
- "awsSecretAccessKey": {
- "type": "string",
- "description": "AWS access key secret. This is not returned in the API."
- },
- "region": {
- "type": "string",
- "description": "AWS region in which the S3 bucket is located."
- },
- "s3BucketName": {
- "type": "string",
- "description": "AWS S3 bucket name."
+ "twilio"
+ ]
},
- "s3PathPrefix": {
+ "authToken": {
"type": "string",
- "description": "The path prefix for the uploaded recording. Ex. \"recordings/\""
+ "description": "This is not returned in the API."
},
"id": {
"type": "string",
@@ -14124,32 +18903,34 @@
"format": "date-time",
"type": "string",
"description": "This is the ISO 8601 date-time string of when the assistant was last updated."
+ },
+ "accountSid": {
+ "type": "string"
}
},
"required": [
"provider",
- "awsAccessKeyId",
- "awsSecretAccessKey",
- "region",
- "s3BucketName",
- "s3PathPrefix",
+ "authToken",
"id",
"orgId",
"createdAt",
- "updatedAt"
+ "updatedAt",
+ "accountSid"
]
},
- "TogetherAICredential": {
+ "GoogleCredential": {
"type": "object",
"properties": {
"provider": {
"type": "string",
+ "description": "This is the key for Gemini in Google AI Studio. Get it from here: https://aistudio.google.com/app/apikey",
"enum": [
- "together-ai"
+ "google"
]
},
"apiKey": {
"type": "string",
+ "maxLength": 10000,
"description": "This is not returned in the API."
},
"id": {
@@ -14180,17 +18961,19 @@
"updatedAt"
]
},
- "TwilioCredential": {
+ "XAiCredential": {
"type": "object",
"properties": {
"provider": {
"type": "string",
+ "description": "This is the api key for Grok in XAi's console. Get it from here: https://console.x.ai",
"enum": [
- "twilio"
+ "xai"
]
},
- "authToken": {
+ "apiKey": {
"type": "string",
+ "maxLength": 10000,
"description": "This is not returned in the API."
},
"id": {
@@ -14210,19 +18993,15 @@
"format": "date-time",
"type": "string",
"description": "This is the ISO 8601 date-time string of when the assistant was last updated."
- },
- "accountSid": {
- "type": "string"
}
},
"required": [
"provider",
- "authToken",
+ "apiKey",
"id",
"orgId",
"createdAt",
- "updatedAt",
- "accountSid"
+ "updatedAt"
]
},
"VonageCredential": {
@@ -14850,6 +19629,25 @@
"s3PathPrefix"
]
},
+ "CreateTavusCredentialDTO": {
+ "type": "object",
+ "properties": {
+ "provider": {
+ "type": "string",
+ "enum": [
+ "tavus"
+ ]
+ },
+ "apiKey": {
+ "type": "string",
+ "description": "This is not returned in the API."
+ }
+ },
+ "required": [
+ "provider",
+ "apiKey"
+ ]
+ },
"CreateTogetherAICredentialDTO": {
"type": "object",
"properties": {
@@ -14892,6 +19690,48 @@
"accountSid"
]
},
+ "CreateGoogleCredentialDTO": {
+ "type": "object",
+ "properties": {
+ "provider": {
+ "type": "string",
+ "description": "This is the key for Gemini in Google AI Studio. Get it from here: https://aistudio.google.com/app/apikey",
+ "enum": [
+ "google"
+ ]
+ },
+ "apiKey": {
+ "type": "string",
+ "maxLength": 10000,
+ "description": "This is not returned in the API."
+ }
+ },
+ "required": [
+ "provider",
+ "apiKey"
+ ]
+ },
+ "CreateXAiCredentialDTO": {
+ "type": "object",
+ "properties": {
+ "provider": {
+ "type": "string",
+ "description": "This is the api key for Grok in XAi's console. Get it from here: https://console.x.ai",
+ "enum": [
+ "xai"
+ ]
+ },
+ "apiKey": {
+ "type": "string",
+ "maxLength": 10000,
+ "description": "This is not returned in the API."
+ }
+ },
+ "required": [
+ "provider",
+ "apiKey"
+ ]
+ },
"CreateVonageCredentialDTO": {
"type": "object",
"properties": {
@@ -15483,6 +20323,25 @@
"s3PathPrefix"
]
},
+ "UpdateTavusCredentialDTO": {
+ "type": "object",
+ "properties": {
+ "provider": {
+ "type": "string",
+ "enum": [
+ "tavus"
+ ]
+ },
+ "apiKey": {
+ "type": "string",
+ "description": "This is not returned in the API."
+ }
+ },
+ "required": [
+ "provider",
+ "apiKey"
+ ]
+ },
"UpdateTogetherAICredentialDTO": {
"type": "object",
"properties": {
@@ -15525,6 +20384,48 @@
"accountSid"
]
},
+ "UpdateGoogleCredentialDTO": {
+ "type": "object",
+ "properties": {
+ "provider": {
+ "type": "string",
+ "description": "This is the key for Gemini in Google AI Studio. Get it from here: https://aistudio.google.com/app/apikey",
+ "enum": [
+ "google"
+ ]
+ },
+ "apiKey": {
+ "type": "string",
+ "maxLength": 10000,
+ "description": "This is not returned in the API."
+ }
+ },
+ "required": [
+ "provider",
+ "apiKey"
+ ]
+ },
+ "UpdateXAiCredentialDTO": {
+ "type": "object",
+ "properties": {
+ "provider": {
+ "type": "string",
+ "description": "This is the api key for Grok in XAi's console. Get it from here: https://console.x.ai",
+ "enum": [
+ "xai"
+ ]
+ },
+ "apiKey": {
+ "type": "string",
+ "maxLength": 10000,
+ "description": "This is not returned in the API."
+ }
+ },
+ "required": [
+ "provider",
+ "apiKey"
+ ]
+ },
"UpdateVonageCredentialDTO": {
"type": "object",
"properties": {
@@ -15565,6 +20466,14 @@
"description": "This is the name of the org. This is just for your own reference.",
"maxLength": 40
},
+ "channel": {
+ "type": "string",
+ "description": "This is the channel of the org. There is the cluster the API traffic for the org will be directed.",
+ "enum": [
+ "default",
+ "weekly"
+ ]
+ },
"billingLimit": {
"type": "number",
"description": "This is the monthly billing limit for the org. To go beyond $1000/mo, please contact us at support@vapi.ai.",
@@ -15667,6 +20576,14 @@
"description": "This is the name of the org. This is just for your own reference.",
"maxLength": 40
},
+ "channel": {
+ "type": "string",
+ "description": "This is the channel of the org. There is the cluster the API traffic for the org will be directed.",
+ "enum": [
+ "default",
+ "weekly"
+ ]
+ },
"billingLimit": {
"type": "number",
"description": "This is the monthly billing limit for the org. To go beyond $1000/mo, please contact us at support@vapi.ai.",
@@ -15711,6 +20628,14 @@
"description": "This is the name of the org. This is just for your own reference.",
"maxLength": 40
},
+ "channel": {
+ "type": "string",
+ "description": "This is the channel of the org. There is the cluster the API traffic for the org will be directed.",
+ "enum": [
+ "default",
+ "weekly"
+ ]
+ },
"billingLimit": {
"type": "number",
"description": "This is the monthly billing limit for the org. To go beyond $1000/mo, please contact us at support@vapi.ai.",
@@ -15769,8 +20694,12 @@
"InviteUserDTO": {
"type": "object",
"properties": {
- "email": {
- "type": "string"
+ "emails": {
+ "maxItems": 100,
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
},
"role": {
"enum": [
@@ -15782,7 +20711,7 @@
}
},
"required": [
- "email",
+ "emails",
"role"
]
},
@@ -15849,6 +20778,14 @@
"description": "This is the name of the org. This is just for your own reference.",
"maxLength": 40
},
+ "channel": {
+ "type": "string",
+ "description": "This is the channel of the org. There is the cluster the API traffic for the org will be directed.",
+ "enum": [
+ "default",
+ "weekly"
+ ]
+ },
"billingLimit": {
"type": "number",
"description": "This is the monthly billing limit for the org. To go beyond $1000/mo, please contact us at support@vapi.ai.",
@@ -15975,7 +20912,8 @@
"neets",
"openai",
"playht",
- "rime-ai"
+ "rime-ai",
+ "tavus"
]
},
"providerId": {
@@ -16638,7 +21576,8 @@
"neets",
"openai",
"playht",
- "rime-ai"
+ "rime-ai",
+ "tavus"
],
"items": {
"type": "string",
@@ -16652,7 +21591,8 @@
"neets",
"openai",
"playht",
- "rime-ai"
+ "rime-ai",
+ "tavus"
]
}
}
@@ -16907,6 +21847,18 @@
{
"$ref": "#/components/schemas/MakeToolWithToolCall",
"title": "MakeToolWithToolCall"
+ },
+ {
+ "$ref": "#/components/schemas/BashToolWithToolCall",
+ "title": "BashToolWithToolCall"
+ },
+ {
+ "$ref": "#/components/schemas/ComputerToolWithToolCall",
+ "title": "ComputerToolWithToolCall"
+ },
+ {
+ "$ref": "#/components/schemas/TextEditorToolWithToolCall",
+ "title": "TextEditorToolWithToolCall"
}
]
}
@@ -17371,6 +22323,8 @@
"pipeline-error-openai-llm-failed",
"pipeline-error-azure-openai-llm-failed",
"pipeline-error-groq-llm-failed",
+ "pipeline-error-google-llm-failed",
+ "pipeline-error-xai-llm-failed",
"assistant-not-invalid",
"assistant-not-provided",
"call-start-error-neither-assistant-nor-server-set",
@@ -17397,6 +22351,16 @@
"pipeline-error-openai-403-model-access-denied",
"pipeline-error-openai-429-exceeded-quota",
"pipeline-error-openai-500-server-error",
+ "pipeline-error-google-400-bad-request-validation-failed",
+ "pipeline-error-google-401-unauthorized",
+ "pipeline-error-google-403-model-access-denied",
+ "pipeline-error-google-429-exceeded-quota",
+ "pipeline-error-google-500-server-error",
+ "pipeline-error-xai-400-bad-request-validation-failed",
+ "pipeline-error-xai-401-unauthorized",
+ "pipeline-error-xai-403-model-access-denied",
+ "pipeline-error-xai-429-exceeded-quota",
+ "pipeline-error-xai-500-server-error",
"pipeline-error-azure-openai-400-bad-request-validation-failed",
"pipeline-error-azure-openai-401-unauthorized",
"pipeline-error-azure-openai-403-model-access-denied",
@@ -17501,6 +22465,7 @@
"pipeline-error-deepgram-returning-500-invalid-json",
"pipeline-error-deepgram-returning-502-network-error",
"pipeline-error-deepgram-returning-502-bad-gateway-ehostunreach",
+ "pipeline-error-custom-transcriber-failed",
"silence-timed-out",
"sip-gateway-failed-to-connect-call",
"twilio-failed-to-connect-call",
@@ -18130,6 +23095,8 @@
"pipeline-error-openai-llm-failed",
"pipeline-error-azure-openai-llm-failed",
"pipeline-error-groq-llm-failed",
+ "pipeline-error-google-llm-failed",
+ "pipeline-error-xai-llm-failed",
"assistant-not-invalid",
"assistant-not-provided",
"call-start-error-neither-assistant-nor-server-set",
@@ -18156,6 +23123,16 @@
"pipeline-error-openai-403-model-access-denied",
"pipeline-error-openai-429-exceeded-quota",
"pipeline-error-openai-500-server-error",
+ "pipeline-error-google-400-bad-request-validation-failed",
+ "pipeline-error-google-401-unauthorized",
+ "pipeline-error-google-403-model-access-denied",
+ "pipeline-error-google-429-exceeded-quota",
+ "pipeline-error-google-500-server-error",
+ "pipeline-error-xai-400-bad-request-validation-failed",
+ "pipeline-error-xai-401-unauthorized",
+ "pipeline-error-xai-403-model-access-denied",
+ "pipeline-error-xai-429-exceeded-quota",
+ "pipeline-error-xai-500-server-error",
"pipeline-error-azure-openai-400-bad-request-validation-failed",
"pipeline-error-azure-openai-401-unauthorized",
"pipeline-error-azure-openai-403-model-access-denied",
@@ -18260,6 +23237,7 @@
"pipeline-error-deepgram-returning-500-invalid-json",
"pipeline-error-deepgram-returning-502-network-error",
"pipeline-error-deepgram-returning-502-bad-gateway-ehostunreach",
+ "pipeline-error-custom-transcriber-failed",
"silence-timed-out",
"sip-gateway-failed-to-connect-call",
"twilio-failed-to-connect-call",
@@ -18413,6 +23391,18 @@
{
"$ref": "#/components/schemas/MakeToolWithToolCall",
"title": "MakeToolWithToolCall"
+ },
+ {
+ "$ref": "#/components/schemas/BashToolWithToolCall",
+ "title": "BashToolWithToolCall"
+ },
+ {
+ "$ref": "#/components/schemas/ComputerToolWithToolCall",
+ "title": "ComputerToolWithToolCall"
+ },
+ {
+ "$ref": "#/components/schemas/TextEditorToolWithToolCall",
+ "title": "TextEditorToolWithToolCall"
}
]
}
@@ -19683,6 +24673,14 @@
"transport"
]
},
+ "provider": {
+ "type": "string",
+ "enum": [
+ "twilio",
+ "vonage",
+ "vapi"
+ ]
+ },
"minutes": {
"type": "number",
"description": "This is the minutes of `transport` usage. This should match `call.endedAt` - `call.startedAt`."
From 0fd60391e85982f542baf42e87b5e3aad56a7a55 Mon Sep 17 00:00:00 2001
From: "fern-api[bot]" <115122769+fern-api[bot]@users.noreply.github.com>
Date: Mon, 11 Nov 2024 23:02:53 +0000
Subject: [PATCH 6/6] feat(api): update OpenAPI spec for Calls, Assistants,
Blocks, and Phone Numbers
---
fern/apis/api/openapi.json | 6351 ++++++------------------------------
1 file changed, 1009 insertions(+), 5342 deletions(-)
diff --git a/fern/apis/api/openapi.json b/fern/apis/api/openapi.json
index f34b8db..cbbd1fb 100644
--- a/fern/apis/api/openapi.json
+++ b/fern/apis/api/openapi.json
@@ -185,52 +185,160 @@
]
}
},
- "/v2/call": {
+ "/call/{id}": {
"get": {
- "operationId": "CallController_findAllPaginated",
- "summary": "List Calls",
+ "operationId": "CallController_findOne",
+ "summary": "Get Call",
"parameters": [
{
- "name": "assistantId",
- "required": false,
- "in": "query",
- "description": "This will return calls with the specified assistantId.",
+ "name": "id",
+ "required": true,
+ "in": "path",
"schema": {
"type": "string"
}
- },
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Call"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Calls"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "patch": {
+ "operationId": "CallController_update",
+ "summary": "Update Call",
+ "parameters": [
{
"name": "id",
- "required": false,
- "in": "query",
- "description": "This will return calls with the specified callId.",
+ "required": true,
+ "in": "path",
"schema": {
"type": "string"
}
- },
- {
- "name": "page",
- "required": false,
- "in": "query",
- "description": "This is the page number to return. Defaults to 1.",
- "schema": {
- "minimum": 1,
- "type": "number"
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/UpdateCallDTO"
+ }
}
- },
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Call"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Calls"
+ ],
+ "security": [
{
- "name": "sortOrder",
- "required": false,
- "in": "query",
- "description": "This is the sort order for pagination. Defaults to 'ASC'.",
+ "bearer": []
+ }
+ ]
+ },
+ "delete": {
+ "operationId": "CallController_deleteCallData",
+ "summary": "Delete Call Data",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
"schema": {
- "enum": [
- "ASC",
- "DESC"
- ],
"type": "string"
}
- },
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Call"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Calls"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/assistant": {
+ "post": {
+ "operationId": "AssistantController_create",
+ "summary": "Create Assistant",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CreateAssistantDTO"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Assistant"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Assistants"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "get": {
+ "operationId": "AssistantController_findAll",
+ "summary": "List Assistants",
+ "parameters": [
{
"name": "limit",
"required": false,
@@ -329,15 +437,17 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/CallPaginatedResponse"
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/Assistant"
+ }
}
}
}
}
},
"tags": [
- "Calls",
- "extended"
+ "Assistants"
],
"security": [
{
@@ -346,76 +456,237 @@
]
}
},
- "/v2/call/metadata": {
+ "/assistant/{id}": {
"get": {
- "operationId": "CallController_findAllMetadataPaginated",
- "summary": "List Call Metadata",
+ "operationId": "AssistantController_findOne",
+ "summary": "Get Assistant",
"parameters": [
- {
- "name": "assistantId",
- "required": false,
- "in": "query",
- "description": "This will return calls with the specified assistantId.",
- "schema": {
- "type": "string"
- }
- },
{
"name": "id",
- "required": false,
- "in": "query",
- "description": "This will return calls with the specified callId.",
+ "required": true,
+ "in": "path",
"schema": {
"type": "string"
}
- },
- {
- "name": "page",
- "required": false,
- "in": "query",
- "description": "This is the page number to return. Defaults to 1.",
- "schema": {
- "minimum": 1,
- "type": "number"
- }
- },
- {
- "name": "sortOrder",
- "required": false,
- "in": "query",
- "description": "This is the sort order for pagination. Defaults to 'ASC'.",
- "schema": {
- "enum": [
- "ASC",
- "DESC"
- ],
- "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Assistant"
+ }
+ }
}
- },
+ }
+ },
+ "tags": [
+ "Assistants"
+ ],
+ "security": [
{
- "name": "limit",
- "required": false,
- "in": "query",
- "description": "This is the maximum number of items to return. Defaults to 100.",
- "schema": {
- "minimum": 0,
- "maximum": 1000,
- "type": "number"
- }
- },
+ "bearer": []
+ }
+ ]
+ },
+ "patch": {
+ "operationId": "AssistantController_update",
+ "summary": "Update Assistant",
+ "parameters": [
{
- "name": "createdAtGt",
- "required": false,
- "in": "query",
- "description": "This will return items where the createdAt is greater than the specified value.",
+ "name": "id",
+ "required": true,
+ "in": "path",
"schema": {
- "format": "date-time",
"type": "string"
}
- },
- {
- "name": "createdAtLt",
- "required": false,
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/UpdateAssistantDTO"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Assistant"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Assistants"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "delete": {
+ "operationId": "AssistantController_remove",
+ "summary": "Delete Assistant",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Assistant"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Assistants"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/phone-number": {
+ "post": {
+ "operationId": "PhoneNumberController_create",
+ "summary": "Create Phone Number",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "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"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "provider",
+ "mapping": {
+ "byo-phone-number": "#/components/schemas/CreateByoPhoneNumberDTO",
+ "twilio": "#/components/schemas/CreateTwilioPhoneNumberDTO",
+ "vonage": "#/components/schemas/CreateVonagePhoneNumberDTO",
+ "vapi": "#/components/schemas/CreateVapiPhoneNumberDTO"
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": "",
+ "content": {
+ "application/json": {
+ "schema": {
+ "title": "PhoneNumber",
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/ByoPhoneNumber",
+ "title": "ByoPhoneNumber"
+ },
+ {
+ "$ref": "#/components/schemas/TwilioPhoneNumber",
+ "title": "TwilioPhoneNumber"
+ },
+ {
+ "$ref": "#/components/schemas/VonagePhoneNumber",
+ "title": "VonagePhoneNumber"
+ },
+ {
+ "$ref": "#/components/schemas/VapiPhoneNumber",
+ "title": "VapiPhoneNumber"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "provider",
+ "mapping": {
+ "byo-phone-number": "#/components/schemas/ByoPhoneNumber",
+ "twilio": "#/components/schemas/TwilioPhoneNumber",
+ "vonage": "#/components/schemas/VonagePhoneNumber",
+ "vapi": "#/components/schemas/VapiPhoneNumber"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Phone Numbers"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "get": {
+ "operationId": "PhoneNumberController_findAll",
+ "summary": "List Phone Numbers",
+ "parameters": [
+ {
+ "name": "limit",
+ "required": false,
+ "in": "query",
+ "description": "This is the maximum number of items to return. Defaults to 100.",
+ "schema": {
+ "minimum": 0,
+ "maximum": 1000,
+ "type": "number"
+ }
+ },
+ {
+ "name": "createdAtGt",
+ "required": false,
+ "in": "query",
+ "description": "This will return items where the createdAt is greater than the specified value.",
+ "schema": {
+ "format": "date-time",
+ "type": "string"
+ }
+ },
+ {
+ "name": "createdAtLt",
+ "required": false,
"in": "query",
"description": "This will return items where the createdAt is less than the specified value.",
"schema": {
@@ -490,15 +761,44 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/CallPaginatedResponse"
+ "type": "array",
+ "items": {
+ "title": "PhoneNumber",
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/ByoPhoneNumber",
+ "title": "ByoPhoneNumber"
+ },
+ {
+ "$ref": "#/components/schemas/TwilioPhoneNumber",
+ "title": "TwilioPhoneNumber"
+ },
+ {
+ "$ref": "#/components/schemas/VonagePhoneNumber",
+ "title": "VonagePhoneNumber"
+ },
+ {
+ "$ref": "#/components/schemas/VapiPhoneNumber",
+ "title": "VapiPhoneNumber"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "provider",
+ "mapping": {
+ "byo-phone-number": "#/components/schemas/ByoPhoneNumber",
+ "twilio": "#/components/schemas/TwilioPhoneNumber",
+ "vonage": "#/components/schemas/VonagePhoneNumber",
+ "vapi": "#/components/schemas/VapiPhoneNumber"
+ }
+ }
+ }
}
}
}
}
},
"tags": [
- "Calls",
- "extended"
+ "Phone Numbers"
],
"security": [
{
@@ -507,10 +807,10 @@
]
}
},
- "/call/{id}": {
+ "/phone-number/{id}": {
"get": {
- "operationId": "CallController_findOne",
- "summary": "Get Call",
+ "operationId": "PhoneNumberController_findOne",
+ "summary": "Get Phone Number",
"parameters": [
{
"name": "id",
@@ -527,14 +827,41 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/Call"
+ "title": "PhoneNumber",
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/ByoPhoneNumber",
+ "title": "ByoPhoneNumber"
+ },
+ {
+ "$ref": "#/components/schemas/TwilioPhoneNumber",
+ "title": "TwilioPhoneNumber"
+ },
+ {
+ "$ref": "#/components/schemas/VonagePhoneNumber",
+ "title": "VonagePhoneNumber"
+ },
+ {
+ "$ref": "#/components/schemas/VapiPhoneNumber",
+ "title": "VapiPhoneNumber"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "provider",
+ "mapping": {
+ "byo-phone-number": "#/components/schemas/ByoPhoneNumber",
+ "twilio": "#/components/schemas/TwilioPhoneNumber",
+ "vonage": "#/components/schemas/VonagePhoneNumber",
+ "vapi": "#/components/schemas/VapiPhoneNumber"
+ }
+ }
}
}
}
}
},
"tags": [
- "Calls"
+ "Phone Numbers"
],
"security": [
{
@@ -543,8 +870,8 @@
]
},
"patch": {
- "operationId": "CallController_update",
- "summary": "Update Call",
+ "operationId": "PhoneNumberController_update",
+ "summary": "Update Phone Number",
"parameters": [
{
"name": "id",
@@ -560,7 +887,7 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/UpdateCallDTO"
+ "$ref": "#/components/schemas/UpdatePhoneNumberDTO"
}
}
}
@@ -571,14 +898,41 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/Call"
+ "title": "PhoneNumber",
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/ByoPhoneNumber",
+ "title": "ByoPhoneNumber"
+ },
+ {
+ "$ref": "#/components/schemas/TwilioPhoneNumber",
+ "title": "TwilioPhoneNumber"
+ },
+ {
+ "$ref": "#/components/schemas/VonagePhoneNumber",
+ "title": "VonagePhoneNumber"
+ },
+ {
+ "$ref": "#/components/schemas/VapiPhoneNumber",
+ "title": "VapiPhoneNumber"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "provider",
+ "mapping": {
+ "byo-phone-number": "#/components/schemas/ByoPhoneNumber",
+ "twilio": "#/components/schemas/TwilioPhoneNumber",
+ "vonage": "#/components/schemas/VonagePhoneNumber",
+ "vapi": "#/components/schemas/VapiPhoneNumber"
+ }
+ }
}
}
}
}
},
"tags": [
- "Calls"
+ "Phone Numbers"
],
"security": [
{
@@ -587,8 +941,8 @@
]
},
"delete": {
- "operationId": "CallController_deleteCallData",
- "summary": "Delete Call Data",
+ "operationId": "PhoneNumberController_remove",
+ "summary": "Delete Phone Number",
"parameters": [
{
"name": "id",
@@ -605,90 +959,41 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/Call"
- }
- }
- }
- }
- },
- "tags": [
- "Calls"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/call/phone": {
- "post": {
- "operationId": "CallController_createPhoneCall",
- "summary": "Create Phone Call",
- "parameters": [],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/CreateOutboundCallDTO"
- }
- }
- }
- },
- "responses": {
- "201": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Call"
- }
- }
- }
- }
- },
- "tags": [
- "Calls",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/call/web": {
- "post": {
- "operationId": "CallController_createWebCall",
- "summary": "Create Web Call",
- "parameters": [],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/CreateWebCallDTO"
- }
- }
- }
- },
- "responses": {
- "201": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Call"
+ "title": "PhoneNumber",
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/ByoPhoneNumber",
+ "title": "ByoPhoneNumber"
+ },
+ {
+ "$ref": "#/components/schemas/TwilioPhoneNumber",
+ "title": "TwilioPhoneNumber"
+ },
+ {
+ "$ref": "#/components/schemas/VonagePhoneNumber",
+ "title": "VonagePhoneNumber"
+ },
+ {
+ "$ref": "#/components/schemas/VapiPhoneNumber",
+ "title": "VapiPhoneNumber"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "provider",
+ "mapping": {
+ "byo-phone-number": "#/components/schemas/ByoPhoneNumber",
+ "twilio": "#/components/schemas/TwilioPhoneNumber",
+ "vonage": "#/components/schemas/VonagePhoneNumber",
+ "vapi": "#/components/schemas/VapiPhoneNumber"
+ }
+ }
}
}
}
}
},
"tags": [
- "Calls",
- "extended"
+ "Phone Numbers"
],
"security": [
{
@@ -697,17 +1002,17 @@
]
}
},
- "/assistant": {
+ "/squad": {
"post": {
- "operationId": "AssistantController_create",
- "summary": "Create Assistant",
+ "operationId": "SquadController_create",
+ "summary": "Create Squad",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/CreateAssistantDTO"
+ "$ref": "#/components/schemas/CreateSquadDTO"
}
}
}
@@ -718,14 +1023,14 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/Assistant"
+ "$ref": "#/components/schemas/Squad"
}
}
}
}
},
"tags": [
- "Assistants"
+ "Squads"
],
"security": [
{
@@ -734,8 +1039,8 @@
]
},
"get": {
- "operationId": "AssistantController_findAll",
- "summary": "List Assistants",
+ "operationId": "SquadController_findAll",
+ "summary": "List Squads",
"parameters": [
{
"name": "limit",
@@ -837,7 +1142,7 @@
"schema": {
"type": "array",
"items": {
- "$ref": "#/components/schemas/Assistant"
+ "$ref": "#/components/schemas/Squad"
}
}
}
@@ -845,7 +1150,7 @@
}
},
"tags": [
- "Assistants"
+ "Squads"
],
"security": [
{
@@ -854,10 +1159,10 @@
]
}
},
- "/assistant/{id}": {
+ "/squad/{id}": {
"get": {
- "operationId": "AssistantController_findOne",
- "summary": "Get Assistant",
+ "operationId": "SquadController_findOne",
+ "summary": "Get Squad",
"parameters": [
{
"name": "id",
@@ -874,14 +1179,14 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/Assistant"
+ "$ref": "#/components/schemas/Squad"
}
}
}
}
},
"tags": [
- "Assistants"
+ "Squads"
],
"security": [
{
@@ -890,52 +1195,8 @@
]
},
"patch": {
- "operationId": "AssistantController_update",
- "summary": "Update Assistant",
- "parameters": [
- {
- "name": "id",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/UpdateAssistantDTO"
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Assistant"
- }
- }
- }
- }
- },
- "tags": [
- "Assistants"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- },
- "put": {
- "operationId": "AssistantController_replace",
- "summary": "Replace Assistant",
+ "operationId": "SquadController_update",
+ "summary": "Update Squad",
"parameters": [
{
"name": "id",
@@ -951,7 +1212,7 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/UpdateAssistantDTO"
+ "$ref": "#/components/schemas/UpdateSquadDTO"
}
}
}
@@ -962,15 +1223,14 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/Assistant"
+ "$ref": "#/components/schemas/Squad"
}
}
}
}
},
"tags": [
- "Assistants",
- "extended"
+ "Squads"
],
"security": [
{
@@ -979,8 +1239,8 @@
]
},
"delete": {
- "operationId": "AssistantController_remove",
- "summary": "Delete Assistant",
+ "operationId": "SquadController_remove",
+ "summary": "Delete Squad",
"parameters": [
{
"name": "id",
@@ -997,14 +1257,14 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/Assistant"
+ "$ref": "#/components/schemas/Squad"
}
}
}
}
},
"tags": [
- "Assistants"
+ "Squads"
],
"security": [
{
@@ -1013,17 +1273,38 @@
]
}
},
- "/phone-number/buy": {
+ "/block": {
"post": {
- "operationId": "PhoneNumberController_buy",
- "summary": "Buy Phone Number",
+ "operationId": "BlockController_create",
+ "summary": "Create Block",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/BuyPhoneNumberDTO"
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/CreateConversationBlockDTO",
+ "title": "ConversationBlock"
+ },
+ {
+ "$ref": "#/components/schemas/CreateToolCallBlockDTO",
+ "title": "ToolCallBlock"
+ },
+ {
+ "$ref": "#/components/schemas/CreateWorkflowBlockDTO",
+ "title": "WorkflowBlock"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "type",
+ "mapping": {
+ "conversation": "#/components/schemas/CreateConversationBlockDTO",
+ "tool-call": "#/components/schemas/CreateToolCallBlockDTO",
+ "workflow": "#/components/schemas/CreateWorkflowBlockDTO"
+ }
+ }
}
}
}
@@ -1034,257 +1315,26 @@
"content": {
"application/json": {
"schema": {
- "title": "PhoneNumber",
"oneOf": [
{
- "$ref": "#/components/schemas/ByoPhoneNumber",
- "title": "ByoPhoneNumber"
+ "$ref": "#/components/schemas/ConversationBlock",
+ "title": "ConversationBlock"
},
{
- "$ref": "#/components/schemas/TwilioPhoneNumber",
- "title": "TwilioPhoneNumber"
+ "$ref": "#/components/schemas/ToolCallBlock",
+ "title": "ToolCallBlock"
},
{
- "$ref": "#/components/schemas/VonagePhoneNumber",
- "title": "VonagePhoneNumber"
- },
- {
- "$ref": "#/components/schemas/VapiPhoneNumber",
- "title": "VapiPhoneNumber"
- }
- ],
- "discriminator": {
- "propertyName": "provider",
- "mapping": {
- "byo-phone-number": "#/components/schemas/ByoPhoneNumber",
- "twilio": "#/components/schemas/TwilioPhoneNumber",
- "vonage": "#/components/schemas/VonagePhoneNumber",
- "vapi": "#/components/schemas/VapiPhoneNumber"
- }
- }
- }
- }
- }
- }
- },
- "tags": [
- "Phone Numbers",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/phone-number/import/twilio": {
- "post": {
- "operationId": "PhoneNumberController_importTwilio",
- "summary": "Import Twilio Number",
- "description": "Use POST /phone-number instead.",
- "deprecated": true,
- "parameters": [],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ImportTwilioPhoneNumberDTO"
- }
- }
- }
- },
- "responses": {
- "201": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "title": "PhoneNumber",
- "oneOf": [
- {
- "$ref": "#/components/schemas/ByoPhoneNumber",
- "title": "ByoPhoneNumber"
- },
- {
- "$ref": "#/components/schemas/TwilioPhoneNumber",
- "title": "TwilioPhoneNumber"
- },
- {
- "$ref": "#/components/schemas/VonagePhoneNumber",
- "title": "VonagePhoneNumber"
- },
- {
- "$ref": "#/components/schemas/VapiPhoneNumber",
- "title": "VapiPhoneNumber"
- }
- ],
- "discriminator": {
- "propertyName": "provider",
- "mapping": {
- "byo-phone-number": "#/components/schemas/ByoPhoneNumber",
- "twilio": "#/components/schemas/TwilioPhoneNumber",
- "vonage": "#/components/schemas/VonagePhoneNumber",
- "vapi": "#/components/schemas/VapiPhoneNumber"
- }
- }
- }
- }
- }
- }
- },
- "tags": [
- "Phone Numbers",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/phone-number/import/vonage": {
- "post": {
- "operationId": "PhoneNumberController_importVonage",
- "summary": "Import Vonage Number",
- "description": "Use POST /phone-number instead.",
- "deprecated": true,
- "parameters": [],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ImportVonagePhoneNumberDTO"
- }
- }
- }
- },
- "responses": {
- "201": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "title": "PhoneNumber",
- "oneOf": [
- {
- "$ref": "#/components/schemas/ByoPhoneNumber",
- "title": "ByoPhoneNumber"
- },
- {
- "$ref": "#/components/schemas/TwilioPhoneNumber",
- "title": "TwilioPhoneNumber"
- },
- {
- "$ref": "#/components/schemas/VonagePhoneNumber",
- "title": "VonagePhoneNumber"
- },
- {
- "$ref": "#/components/schemas/VapiPhoneNumber",
- "title": "VapiPhoneNumber"
- }
- ],
- "discriminator": {
- "propertyName": "provider",
- "mapping": {
- "byo-phone-number": "#/components/schemas/ByoPhoneNumber",
- "twilio": "#/components/schemas/TwilioPhoneNumber",
- "vonage": "#/components/schemas/VonagePhoneNumber",
- "vapi": "#/components/schemas/VapiPhoneNumber"
- }
- }
- }
- }
- }
- }
- },
- "tags": [
- "Phone Numbers",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/phone-number": {
- "post": {
- "operationId": "PhoneNumberController_create",
- "summary": "Create Phone Number",
- "parameters": [],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "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"
- }
- ],
- "discriminator": {
- "propertyName": "provider",
- "mapping": {
- "byo-phone-number": "#/components/schemas/CreateByoPhoneNumberDTO",
- "twilio": "#/components/schemas/CreateTwilioPhoneNumberDTO",
- "vonage": "#/components/schemas/CreateVonagePhoneNumberDTO",
- "vapi": "#/components/schemas/CreateVapiPhoneNumberDTO"
- }
- }
- }
- }
- }
- },
- "responses": {
- "201": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "title": "PhoneNumber",
- "oneOf": [
- {
- "$ref": "#/components/schemas/ByoPhoneNumber",
- "title": "ByoPhoneNumber"
- },
- {
- "$ref": "#/components/schemas/TwilioPhoneNumber",
- "title": "TwilioPhoneNumber"
- },
- {
- "$ref": "#/components/schemas/VonagePhoneNumber",
- "title": "VonagePhoneNumber"
- },
- {
- "$ref": "#/components/schemas/VapiPhoneNumber",
- "title": "VapiPhoneNumber"
+ "$ref": "#/components/schemas/WorkflowBlock",
+ "title": "WorkflowBlock"
}
],
"discriminator": {
- "propertyName": "provider",
+ "propertyName": "type",
"mapping": {
- "byo-phone-number": "#/components/schemas/ByoPhoneNumber",
- "twilio": "#/components/schemas/TwilioPhoneNumber",
- "vonage": "#/components/schemas/VonagePhoneNumber",
- "vapi": "#/components/schemas/VapiPhoneNumber"
+ "conversation": "#/components/schemas/ConversationBlock",
+ "tool-call": "#/components/schemas/ToolCallBlock",
+ "workflow": "#/components/schemas/WorkflowBlock"
}
}
}
@@ -1293,7 +1343,7 @@
}
},
"tags": [
- "Phone Numbers"
+ "Blocks"
],
"security": [
{
@@ -1302,8 +1352,8 @@
]
},
"get": {
- "operationId": "PhoneNumberController_findAll",
- "summary": "List Phone Numbers",
+ "operationId": "BlockController_findAll",
+ "summary": "List Blocks",
"parameters": [
{
"name": "limit",
@@ -1405,34 +1455,28 @@
"schema": {
"type": "array",
"items": {
- "title": "PhoneNumber",
"oneOf": [
{
- "$ref": "#/components/schemas/ByoPhoneNumber",
- "title": "ByoPhoneNumber"
- },
- {
- "$ref": "#/components/schemas/TwilioPhoneNumber",
- "title": "TwilioPhoneNumber"
+ "$ref": "#/components/schemas/ConversationBlock",
+ "title": "ConversationBlock"
},
{
- "$ref": "#/components/schemas/VonagePhoneNumber",
- "title": "VonagePhoneNumber"
+ "$ref": "#/components/schemas/ToolCallBlock",
+ "title": "ToolCallBlock"
},
{
- "$ref": "#/components/schemas/VapiPhoneNumber",
- "title": "VapiPhoneNumber"
+ "$ref": "#/components/schemas/WorkflowBlock",
+ "title": "WorkflowBlock"
}
],
"discriminator": {
- "propertyName": "provider",
+ "propertyName": "type",
"mapping": {
- "byo-phone-number": "#/components/schemas/ByoPhoneNumber",
- "twilio": "#/components/schemas/TwilioPhoneNumber",
- "vonage": "#/components/schemas/VonagePhoneNumber",
- "vapi": "#/components/schemas/VapiPhoneNumber"
- }
- }
+ "conversation": "#/components/schemas/ConversationBlock",
+ "tool-call": "#/components/schemas/ToolCallBlock",
+ "workflow": "#/components/schemas/WorkflowBlock"
+ }
+ }
}
}
}
@@ -1440,150 +1484,7 @@
}
},
"tags": [
- "Phone Numbers"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/v2/phone-number": {
- "get": {
- "operationId": "PhoneNumberController_findAllPaginated",
- "summary": "List Phone Numbers",
- "parameters": [
- {
- "name": "page",
- "required": false,
- "in": "query",
- "description": "This is the page number to return. Defaults to 1.",
- "schema": {
- "minimum": 1,
- "type": "number"
- }
- },
- {
- "name": "sortOrder",
- "required": false,
- "in": "query",
- "description": "This is the sort order for pagination. Defaults to 'ASC'.",
- "schema": {
- "enum": [
- "ASC",
- "DESC"
- ],
- "type": "string"
- }
- },
- {
- "name": "limit",
- "required": false,
- "in": "query",
- "description": "This is the maximum number of items to return. Defaults to 100.",
- "schema": {
- "minimum": 0,
- "maximum": 1000,
- "type": "number"
- }
- },
- {
- "name": "createdAtGt",
- "required": false,
- "in": "query",
- "description": "This will return items where the createdAt is greater than the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "createdAtLt",
- "required": false,
- "in": "query",
- "description": "This will return items where the createdAt is less than the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "createdAtGe",
- "required": false,
- "in": "query",
- "description": "This will return items where the createdAt is greater than or equal to the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "createdAtLe",
- "required": false,
- "in": "query",
- "description": "This will return items where the createdAt is less than or equal to the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "updatedAtGt",
- "required": false,
- "in": "query",
- "description": "This will return items where the updatedAt is greater than the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "updatedAtLt",
- "required": false,
- "in": "query",
- "description": "This will return items where the updatedAt is less than the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "updatedAtGe",
- "required": false,
- "in": "query",
- "description": "This will return items where the updatedAt is greater than or equal to the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "updatedAtLe",
- "required": false,
- "in": "query",
- "description": "This will return items where the updatedAt is less than or equal to the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/PhoneNumberPaginatedResponse"
- }
- }
- }
- }
- },
- "tags": [
- "Phone Numbers",
- "extended"
+ "Blocks"
],
"security": [
{
@@ -1592,10 +1493,10 @@
]
}
},
- "/phone-number/{id}": {
+ "/block/{id}": {
"get": {
- "operationId": "PhoneNumberController_findOne",
- "summary": "Get Phone Number",
+ "operationId": "BlockController_findOne",
+ "summary": "Get Block",
"parameters": [
{
"name": "id",
@@ -1612,32 +1513,26 @@
"content": {
"application/json": {
"schema": {
- "title": "PhoneNumber",
"oneOf": [
{
- "$ref": "#/components/schemas/ByoPhoneNumber",
- "title": "ByoPhoneNumber"
- },
- {
- "$ref": "#/components/schemas/TwilioPhoneNumber",
- "title": "TwilioPhoneNumber"
+ "$ref": "#/components/schemas/ConversationBlock",
+ "title": "ConversationBlock"
},
{
- "$ref": "#/components/schemas/VonagePhoneNumber",
- "title": "VonagePhoneNumber"
+ "$ref": "#/components/schemas/ToolCallBlock",
+ "title": "ToolCallBlock"
},
{
- "$ref": "#/components/schemas/VapiPhoneNumber",
- "title": "VapiPhoneNumber"
+ "$ref": "#/components/schemas/WorkflowBlock",
+ "title": "WorkflowBlock"
}
],
"discriminator": {
- "propertyName": "provider",
+ "propertyName": "type",
"mapping": {
- "byo-phone-number": "#/components/schemas/ByoPhoneNumber",
- "twilio": "#/components/schemas/TwilioPhoneNumber",
- "vonage": "#/components/schemas/VonagePhoneNumber",
- "vapi": "#/components/schemas/VapiPhoneNumber"
+ "conversation": "#/components/schemas/ConversationBlock",
+ "tool-call": "#/components/schemas/ToolCallBlock",
+ "workflow": "#/components/schemas/WorkflowBlock"
}
}
}
@@ -1646,7 +1541,7 @@
}
},
"tags": [
- "Phone Numbers"
+ "Blocks"
],
"security": [
{
@@ -1655,8 +1550,8 @@
]
},
"patch": {
- "operationId": "PhoneNumberController_update",
- "summary": "Update Phone Number",
+ "operationId": "BlockController_update",
+ "summary": "Update Block",
"parameters": [
{
"name": "id",
@@ -1672,7 +1567,7 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/UpdatePhoneNumberDTO"
+ "$ref": "#/components/schemas/UpdateBlockDTO"
}
}
}
@@ -1683,32 +1578,26 @@
"content": {
"application/json": {
"schema": {
- "title": "PhoneNumber",
"oneOf": [
{
- "$ref": "#/components/schemas/ByoPhoneNumber",
- "title": "ByoPhoneNumber"
- },
- {
- "$ref": "#/components/schemas/TwilioPhoneNumber",
- "title": "TwilioPhoneNumber"
+ "$ref": "#/components/schemas/ConversationBlock",
+ "title": "ConversationBlock"
},
{
- "$ref": "#/components/schemas/VonagePhoneNumber",
- "title": "VonagePhoneNumber"
+ "$ref": "#/components/schemas/ToolCallBlock",
+ "title": "ToolCallBlock"
},
{
- "$ref": "#/components/schemas/VapiPhoneNumber",
- "title": "VapiPhoneNumber"
+ "$ref": "#/components/schemas/WorkflowBlock",
+ "title": "WorkflowBlock"
}
],
"discriminator": {
- "propertyName": "provider",
+ "propertyName": "type",
"mapping": {
- "byo-phone-number": "#/components/schemas/ByoPhoneNumber",
- "twilio": "#/components/schemas/TwilioPhoneNumber",
- "vonage": "#/components/schemas/VonagePhoneNumber",
- "vapi": "#/components/schemas/VapiPhoneNumber"
+ "conversation": "#/components/schemas/ConversationBlock",
+ "tool-call": "#/components/schemas/ToolCallBlock",
+ "workflow": "#/components/schemas/WorkflowBlock"
}
}
}
@@ -1717,7 +1606,7 @@
}
},
"tags": [
- "Phone Numbers"
+ "Blocks"
],
"security": [
{
@@ -1726,8 +1615,8 @@
]
},
"delete": {
- "operationId": "PhoneNumberController_remove",
- "summary": "Delete Phone Number",
+ "operationId": "BlockController_remove",
+ "summary": "Delete Block",
"parameters": [
{
"name": "id",
@@ -1744,32 +1633,26 @@
"content": {
"application/json": {
"schema": {
- "title": "PhoneNumber",
"oneOf": [
{
- "$ref": "#/components/schemas/ByoPhoneNumber",
- "title": "ByoPhoneNumber"
- },
- {
- "$ref": "#/components/schemas/TwilioPhoneNumber",
- "title": "TwilioPhoneNumber"
+ "$ref": "#/components/schemas/ConversationBlock",
+ "title": "ConversationBlock"
},
{
- "$ref": "#/components/schemas/VonagePhoneNumber",
- "title": "VonagePhoneNumber"
+ "$ref": "#/components/schemas/ToolCallBlock",
+ "title": "ToolCallBlock"
},
{
- "$ref": "#/components/schemas/VapiPhoneNumber",
- "title": "VapiPhoneNumber"
+ "$ref": "#/components/schemas/WorkflowBlock",
+ "title": "WorkflowBlock"
}
],
"discriminator": {
- "propertyName": "provider",
+ "propertyName": "type",
"mapping": {
- "byo-phone-number": "#/components/schemas/ByoPhoneNumber",
- "twilio": "#/components/schemas/TwilioPhoneNumber",
- "vonage": "#/components/schemas/VonagePhoneNumber",
- "vapi": "#/components/schemas/VapiPhoneNumber"
+ "conversation": "#/components/schemas/ConversationBlock",
+ "tool-call": "#/components/schemas/ToolCallBlock",
+ "workflow": "#/components/schemas/WorkflowBlock"
}
}
}
@@ -1778,7 +1661,7 @@
}
},
"tags": [
- "Phone Numbers"
+ "Blocks"
],
"security": [
{
@@ -1787,156 +1670,128 @@
]
}
},
- "/subscription/{id}": {
- "get": {
- "operationId": "SubscriptionController_get",
- "summary": "Get subscription",
- "parameters": [
- {
- "name": "id",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
- }
- }
- ],
+ "/tool": {
+ "post": {
+ "operationId": "ToolController_create",
+ "summary": "Create Tool",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/CreateDtmfToolDTO",
+ "title": "DtmfTool"
+ },
+ {
+ "$ref": "#/components/schemas/CreateEndCallToolDTO",
+ "title": "EndCallTool"
+ },
+ {
+ "$ref": "#/components/schemas/CreateFunctionToolDTO",
+ "title": "FunctionTool"
+ },
+ {
+ "$ref": "#/components/schemas/CreateGhlToolDTO",
+ "title": "GhlTool"
+ },
+ {
+ "$ref": "#/components/schemas/CreateMakeToolDTO",
+ "title": "MakeTool"
+ },
+ {
+ "$ref": "#/components/schemas/CreateTransferCallToolDTO",
+ "title": "TransferCallTool"
+ },
+ {
+ "$ref": "#/components/schemas/CreateOutputToolDTO",
+ "title": "OutputTool"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "type",
+ "mapping": {
+ "dtmf": "#/components/schemas/CreateDtmfToolDTO",
+ "endCall": "#/components/schemas/CreateEndCallToolDTO",
+ "function": "#/components/schemas/CreateFunctionToolDTO",
+ "ghl": "#/components/schemas/CreateGhlToolDTO",
+ "make": "#/components/schemas/CreateMakeToolDTO",
+ "transferCall": "#/components/schemas/CreateTransferCallToolDTO",
+ "output": "#/components/schemas/CreateOutputToolDTO"
+ }
+ }
+ }
+ }
+ }
+ },
"responses": {
- "200": {
+ "201": {
"description": "",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/Subscription"
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/DtmfTool",
+ "title": "DtmfTool"
+ },
+ {
+ "$ref": "#/components/schemas/EndCallTool",
+ "title": "EndCallTool"
+ },
+ {
+ "$ref": "#/components/schemas/FunctionTool",
+ "title": "FunctionTool"
+ },
+ {
+ "$ref": "#/components/schemas/GhlTool",
+ "title": "GhlTool"
+ },
+ {
+ "$ref": "#/components/schemas/MakeTool",
+ "title": "MakeTool"
+ },
+ {
+ "$ref": "#/components/schemas/TransferCallTool",
+ "title": "TransferCallTool"
+ },
+ {
+ "$ref": "#/components/schemas/OutputTool",
+ "title": "OutputTool"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "type",
+ "mapping": {
+ "dtmf": "#/components/schemas/DtmfTool",
+ "endCall": "#/components/schemas/EndCallTool",
+ "function": "#/components/schemas/FunctionTool",
+ "ghl": "#/components/schemas/GhlTool",
+ "make": "#/components/schemas/MakeTool",
+ "transferCall": "#/components/schemas/TransferCallTool",
+ "output": "#/components/schemas/OutputTool"
+ }
+ }
}
}
}
}
},
"tags": [
- "Subscriptions",
- "extended"
+ "Tools"
],
"security": [
{
"bearer": []
}
]
- }
- },
- "/subscription/{id}/payment": {
+ },
"get": {
- "operationId": "SubscriptionPaymentController_paymentsGet",
- "summary": "Find all payments",
+ "operationId": "ToolController_findAll",
+ "summary": "List Tools",
"parameters": [
- {
- "name": "id",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "status",
- "required": true,
- "in": "query",
- "description": "Status of the payment",
- "schema": {
- "enum": [
- "past-due",
- "finalized",
- "refunded"
- ],
- "type": "string"
- }
- },
- {
- "name": "costLe",
- "required": true,
- "in": "query",
- "description": "This will return items where the cost is less than or equal to the specified value.",
- "schema": {
- "type": "number"
- }
- },
- {
- "name": "costLt",
- "required": true,
- "in": "query",
- "description": "This will return items where the cost is less than the specified value.",
- "schema": {
- "type": "number"
- }
- },
- {
- "name": "costGe",
- "required": true,
- "in": "query",
- "description": "This will return items where the cost is greater than or equal to the specified value.",
- "schema": {
- "type": "number"
- }
- },
- {
- "name": "costGt",
- "required": true,
- "in": "query",
- "description": "This will return items where the cost is greater than the specified value.",
- "schema": {
- "type": "number"
- }
- },
- {
- "name": "orgId",
- "required": false,
- "in": "query",
- "description": "Unique identifier for the organization",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "callId",
- "required": false,
- "in": "query",
- "description": "Unique identifier for the call",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "phoneNumberId",
- "required": false,
- "in": "query",
- "description": "Unique identifier of the associated phone number",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "page",
- "required": false,
- "in": "query",
- "description": "This is the page number to return. Defaults to 1.",
- "schema": {
- "minimum": 1,
- "type": "number"
- }
- },
- {
- "name": "sortOrder",
- "required": false,
- "in": "query",
- "description": "This is the sort order for pagination. Defaults to 'ASC'.",
- "schema": {
- "enum": [
- "ASC",
- "DESC"
- ],
- "type": "string"
- }
- },
{
"name": "limit",
"required": false,
@@ -2035,15 +1890,58 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/PaymentsPaginatedResponse"
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/DtmfTool",
+ "title": "DtmfTool"
+ },
+ {
+ "$ref": "#/components/schemas/EndCallTool",
+ "title": "EndCallTool"
+ },
+ {
+ "$ref": "#/components/schemas/FunctionTool",
+ "title": "FunctionTool"
+ },
+ {
+ "$ref": "#/components/schemas/GhlTool",
+ "title": "GhlTool"
+ },
+ {
+ "$ref": "#/components/schemas/MakeTool",
+ "title": "MakeTool"
+ },
+ {
+ "$ref": "#/components/schemas/TransferCallTool",
+ "title": "TransferCallTool"
+ },
+ {
+ "$ref": "#/components/schemas/OutputTool",
+ "title": "OutputTool"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "type",
+ "mapping": {
+ "dtmf": "#/components/schemas/DtmfTool",
+ "endCall": "#/components/schemas/EndCallTool",
+ "function": "#/components/schemas/FunctionTool",
+ "ghl": "#/components/schemas/GhlTool",
+ "make": "#/components/schemas/MakeTool",
+ "transferCall": "#/components/schemas/TransferCallTool",
+ "output": "#/components/schemas/OutputTool"
+ }
+ }
+ }
}
}
}
}
},
"tags": [
- "Subscriptions",
- "extended"
+ "Tools"
],
"security": [
{
@@ -2052,10 +1950,10 @@
]
}
},
- "/subscription/{id}/monthly-charge": {
+ "/tool/{id}": {
"get": {
- "operationId": "SubscriptionPaymentController_monthlyChargeGet",
- "summary": "Get monthly charge",
+ "operationId": "ToolController_findOne",
+ "summary": "Get Tool",
"parameters": [
{
"name": "id",
@@ -2072,27 +1970,65 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/SubscriptionMonthlyCharge"
- }
- }
- }
- }
- },
- "tags": [
- "Subscriptions",
- "extended"
- ],
- "security": [
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/DtmfTool",
+ "title": "DtmfTool"
+ },
+ {
+ "$ref": "#/components/schemas/EndCallTool",
+ "title": "EndCallTool"
+ },
+ {
+ "$ref": "#/components/schemas/FunctionTool",
+ "title": "FunctionTool"
+ },
+ {
+ "$ref": "#/components/schemas/GhlTool",
+ "title": "GhlTool"
+ },
+ {
+ "$ref": "#/components/schemas/MakeTool",
+ "title": "MakeTool"
+ },
+ {
+ "$ref": "#/components/schemas/TransferCallTool",
+ "title": "TransferCallTool"
+ },
+ {
+ "$ref": "#/components/schemas/OutputTool",
+ "title": "OutputTool"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "type",
+ "mapping": {
+ "dtmf": "#/components/schemas/DtmfTool",
+ "endCall": "#/components/schemas/EndCallTool",
+ "function": "#/components/schemas/FunctionTool",
+ "ghl": "#/components/schemas/GhlTool",
+ "make": "#/components/schemas/MakeTool",
+ "transferCall": "#/components/schemas/TransferCallTool",
+ "output": "#/components/schemas/OutputTool"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "Tools"
+ ],
+ "security": [
{
"bearer": []
}
]
- }
- },
- "/subscription/{id}/credit": {
- "post": {
- "operationId": "SubscriptionPaymentController_charge",
- "summary": "Update subscription credits",
+ },
+ "patch": {
+ "operationId": "ToolController_update",
+ "summary": "Update Tool",
"parameters": [
{
"name": "id",
@@ -2108,7 +2044,7 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/ChargeDTO"
+ "$ref": "#/components/schemas/UpdateToolDTO"
}
}
}
@@ -2119,37 +2055,65 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/Subscription"
- }
- }
- }
- },
- "201": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Subscription"
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/DtmfTool",
+ "title": "DtmfTool"
+ },
+ {
+ "$ref": "#/components/schemas/EndCallTool",
+ "title": "EndCallTool"
+ },
+ {
+ "$ref": "#/components/schemas/FunctionTool",
+ "title": "FunctionTool"
+ },
+ {
+ "$ref": "#/components/schemas/GhlTool",
+ "title": "GhlTool"
+ },
+ {
+ "$ref": "#/components/schemas/MakeTool",
+ "title": "MakeTool"
+ },
+ {
+ "$ref": "#/components/schemas/TransferCallTool",
+ "title": "TransferCallTool"
+ },
+ {
+ "$ref": "#/components/schemas/OutputTool",
+ "title": "OutputTool"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "type",
+ "mapping": {
+ "dtmf": "#/components/schemas/DtmfTool",
+ "endCall": "#/components/schemas/EndCallTool",
+ "function": "#/components/schemas/FunctionTool",
+ "ghl": "#/components/schemas/GhlTool",
+ "make": "#/components/schemas/MakeTool",
+ "transferCall": "#/components/schemas/TransferCallTool",
+ "output": "#/components/schemas/OutputTool"
+ }
+ }
}
}
}
}
},
"tags": [
- "Subscriptions",
- "extended"
+ "Tools"
],
"security": [
{
"bearer": []
}
]
- }
- },
- "/subscription/{id}/auto-reload-plan": {
- "put": {
- "operationId": "SubscriptionPaymentController_updateAutoReloadPlan",
- "summary": "Update auto-reload plan",
+ },
+ "delete": {
+ "operationId": "ToolController_remove",
+ "summary": "Delete Tool",
"parameters": [
{
"name": "id",
@@ -2160,31 +2124,61 @@
}
}
],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/AutoReloadPlanDTO"
- }
- }
- }
- },
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/Subscription"
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/DtmfTool",
+ "title": "DtmfTool"
+ },
+ {
+ "$ref": "#/components/schemas/EndCallTool",
+ "title": "EndCallTool"
+ },
+ {
+ "$ref": "#/components/schemas/FunctionTool",
+ "title": "FunctionTool"
+ },
+ {
+ "$ref": "#/components/schemas/GhlTool",
+ "title": "GhlTool"
+ },
+ {
+ "$ref": "#/components/schemas/MakeTool",
+ "title": "MakeTool"
+ },
+ {
+ "$ref": "#/components/schemas/TransferCallTool",
+ "title": "TransferCallTool"
+ },
+ {
+ "$ref": "#/components/schemas/OutputTool",
+ "title": "OutputTool"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "type",
+ "mapping": {
+ "dtmf": "#/components/schemas/DtmfTool",
+ "endCall": "#/components/schemas/EndCallTool",
+ "function": "#/components/schemas/FunctionTool",
+ "ghl": "#/components/schemas/GhlTool",
+ "make": "#/components/schemas/MakeTool",
+ "transferCall": "#/components/schemas/TransferCallTool",
+ "output": "#/components/schemas/OutputTool"
+ }
+ }
}
}
}
}
},
"tags": [
- "Subscriptions",
- "extended"
+ "Tools"
],
"security": [
{
@@ -2193,55 +2187,66 @@
]
}
},
- "/subscription/{id}/payment/retry": {
+ "/file": {
"post": {
- "operationId": "SubscriptionPaymentController_pastDuePaymentRetry",
- "summary": "Retry past due payment",
- "parameters": [
- {
- "name": "id",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
- }
- }
- ],
+ "operationId": "FileController_create",
+ "summary": "Upload File",
+ "parameters": [],
"requestBody": {
"required": true,
"content": {
- "application/json": {
+ "multipart/form-data": {
"schema": {
- "$ref": "#/components/schemas/PaymentRetryDTO"
+ "$ref": "#/components/schemas/CreateFileDTO"
}
}
}
},
"responses": {
- "200": {
- "description": "",
+ "201": {
+ "description": "File uploaded successfully",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/Payment"
+ "$ref": "#/components/schemas/File"
}
}
}
},
- "201": {
+ "400": {
+ "description": "Invalid file"
+ }
+ },
+ "tags": [
+ "Files"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "get": {
+ "operationId": "FileController_findAll",
+ "summary": "List Files",
+ "parameters": [],
+ "responses": {
+ "200": {
"description": "",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/Payment"
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/File"
+ }
}
}
}
}
},
"tags": [
- "Subscriptions",
- "extended"
+ "Files"
],
"security": [
{
@@ -2250,10 +2255,10 @@
]
}
},
- "/subscription/{id}/concurrency": {
- "post": {
- "operationId": "SubscriptionPaymentController_concurrencyLineBuy",
- "summary": "Buy extra concurrency",
+ "/file/{id}": {
+ "get": {
+ "operationId": "FileController_findOne",
+ "summary": "Get File",
"parameters": [
{
"name": "id",
@@ -2264,41 +2269,20 @@
}
}
],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/SubscriptionConcurrencyLineBuyDTO"
- }
- }
- }
- },
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/Subscription"
- }
- }
- }
- },
- "201": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Subscription"
+ "$ref": "#/components/schemas/File"
}
}
}
}
},
"tags": [
- "Subscriptions",
- "extended"
+ "Files"
],
"security": [
{
@@ -2306,9 +2290,9 @@
}
]
},
- "delete": {
- "operationId": "SubscriptionPaymentController_concurrencyLineRemove",
- "summary": "Remove extra concurrency",
+ "patch": {
+ "operationId": "FileController_update",
+ "summary": "Update File",
"parameters": [
{
"name": "id",
@@ -2324,7 +2308,7 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/SubscriptionConcurrencyLineRemoveDTO"
+ "$ref": "#/components/schemas/UpdateFileDTO"
}
}
}
@@ -2335,164 +2319,24 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/Subscription"
+ "$ref": "#/components/schemas/File"
}
}
}
}
},
"tags": [
- "Subscriptions",
- "extended"
+ "Files"
],
"security": [
{
"bearer": []
}
]
- }
- },
- "/subscription/{id}/hipaa": {
- "post": {
- "operationId": "SubscriptionPaymentController_hipaaEnable",
- "summary": "Purchase HIPAA add-on",
- "parameters": [
- {
- "name": "id",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/HipaaBuyDTO"
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Subscription"
- }
- }
- }
- },
- "201": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Subscription"
- }
- }
- }
- }
- },
- "tags": [
- "Subscriptions",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- },
- "delete": {
- "operationId": "SubscriptionPaymentController_hipaaRemove",
- "summary": "Remove HIPAA add-on",
- "parameters": [
- {
- "name": "id",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Subscription"
- }
- }
- }
- }
- },
- "tags": [
- "Subscriptions",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/subscription/{id}/slack-support": {
- "post": {
- "operationId": "SubscriptionPaymentController_slackSupportBuy",
- "summary": "Purchase Slack Support add-on",
- "parameters": [
- {
- "name": "id",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Subscription"
- }
- }
- }
- },
- "201": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "type": "object"
- }
- }
- }
- }
- },
- "tags": [
- "Subscriptions",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- },
- "delete": {
- "operationId": "SubscriptionPaymentController_slackSupportRemove",
- "summary": "Remove Slack Support add-on",
+ },
+ "delete": {
+ "operationId": "FileController_remove",
+ "summary": "Delete File",
"parameters": [
{
"name": "id",
@@ -2509,15 +2353,14 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/Subscription"
+ "$ref": "#/components/schemas/File"
}
}
}
}
},
"tags": [
- "Subscriptions",
- "extended"
+ "Files"
],
"security": [
{
@@ -2526,26 +2369,17 @@
]
}
},
- "/subscription/{id}/coupon": {
+ "/analytics": {
"post": {
- "operationId": "SubscriptionPaymentController_couponAdd",
- "summary": "Attach coupon to subscription",
- "parameters": [
- {
- "name": "id",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
- }
- }
- ],
+ "operationId": "AnalyticsController_query",
+ "summary": "Create Analytics Queries",
+ "parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/SubscriptionCouponAddDTO"
+ "$ref": "#/components/schemas/AnalyticsQueryDTO"
}
}
}
@@ -2556,25 +2390,20 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/Subscription"
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/AnalyticsQueryResult"
+ }
}
}
}
},
"201": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Subscription"
- }
- }
- }
+ "description": ""
}
},
"tags": [
- "Subscriptions",
- "extended"
+ "Analytics"
],
"security": [
{
@@ -2583,3982 +2412,112 @@
]
}
},
- "/squad": {
- "post": {
- "operationId": "SquadController_create",
- "summary": "Create Squad",
- "parameters": [],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/CreateSquadDTO"
- }
- }
- }
- },
- "responses": {
- "201": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Squad"
- }
- }
- }
- }
- },
- "tags": [
- "Squads"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- },
+ "/logs": {
"get": {
- "operationId": "SquadController_findAll",
- "summary": "List Squads",
+ "operationId": "LoggingController_queryLogs",
+ "summary": "List logs",
"parameters": [
{
- "name": "limit",
+ "name": "orgId",
"required": false,
"in": "query",
- "description": "This is the maximum number of items to return. Defaults to 100.",
+ "description": "This is the unique identifier for the org that this log belongs to.",
"schema": {
- "minimum": 0,
- "maximum": 1000,
- "type": "number"
+ "type": "string"
}
},
{
- "name": "createdAtGt",
+ "name": "type",
"required": false,
"in": "query",
- "description": "This will return items where the createdAt is greater than the specified value.",
+ "description": "This is the type of the log.",
"schema": {
- "format": "date-time",
+ "enum": [
+ "API",
+ "Webhook",
+ "Call",
+ "Provider"
+ ],
"type": "string"
}
},
{
- "name": "createdAtLt",
+ "name": "webhookType",
"required": false,
"in": "query",
- "description": "This will return items where the createdAt is less than the specified value.",
+ "description": "This is the type of the webhook, given the log is from a webhook.",
"schema": {
- "format": "date-time",
"type": "string"
}
},
{
- "name": "createdAtGe",
+ "name": "assistantId",
"required": false,
"in": "query",
- "description": "This will return items where the createdAt is greater than or equal to the specified value.",
+ "description": "This is the ID of the assistant.",
"schema": {
- "format": "date-time",
"type": "string"
}
},
{
- "name": "createdAtLe",
+ "name": "phoneNumberId",
"required": false,
"in": "query",
- "description": "This will return items where the createdAt is less than or equal to the specified value.",
+ "description": "This is the ID of the phone number.",
"schema": {
- "format": "date-time",
"type": "string"
}
},
{
- "name": "updatedAtGt",
+ "name": "customerId",
"required": false,
"in": "query",
- "description": "This will return items where the updatedAt is greater than the specified value.",
+ "description": "This is the ID of the customer.",
"schema": {
- "format": "date-time",
"type": "string"
}
},
{
- "name": "updatedAtLt",
+ "name": "squadId",
"required": false,
"in": "query",
- "description": "This will return items where the updatedAt is less than the specified value.",
+ "description": "This is the ID of the squad.",
"schema": {
- "format": "date-time",
"type": "string"
}
},
{
- "name": "updatedAtGe",
+ "name": "callId",
"required": false,
"in": "query",
- "description": "This will return items where the updatedAt is greater than or equal to the specified value.",
+ "description": "This is the ID of the call.",
"schema": {
- "format": "date-time",
"type": "string"
}
},
{
- "name": "updatedAtLe",
+ "name": "page",
"required": false,
"in": "query",
- "description": "This will return items where the updatedAt is less than or equal to the specified value.",
+ "description": "This is the page number to return. Defaults to 1.",
"schema": {
- "format": "date-time",
+ "minimum": 1,
+ "type": "number"
+ }
+ },
+ {
+ "name": "sortOrder",
+ "required": false,
+ "in": "query",
+ "description": "This is the sort order for pagination. Defaults to 'ASC'.",
+ "schema": {
+ "enum": [
+ "ASC",
+ "DESC"
+ ],
"type": "string"
}
- }
- ],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/Squad"
- }
- }
- }
- }
- }
- },
- "tags": [
- "Squads"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/squad/{id}": {
- "get": {
- "operationId": "SquadController_findOne",
- "summary": "Get Squad",
- "parameters": [
- {
- "name": "id",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Squad"
- }
- }
- }
- }
- },
- "tags": [
- "Squads"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- },
- "patch": {
- "operationId": "SquadController_update",
- "summary": "Update Squad",
- "parameters": [
- {
- "name": "id",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/UpdateSquadDTO"
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Squad"
- }
- }
- }
- }
- },
- "tags": [
- "Squads"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- },
- "delete": {
- "operationId": "SquadController_remove",
- "summary": "Delete Squad",
- "parameters": [
- {
- "name": "id",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Squad"
- }
- }
- }
- }
- },
- "tags": [
- "Squads"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/block": {
- "post": {
- "operationId": "BlockController_create",
- "summary": "Create Block",
- "parameters": [],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "oneOf": [
- {
- "$ref": "#/components/schemas/CreateConversationBlockDTO",
- "title": "ConversationBlock"
- },
- {
- "$ref": "#/components/schemas/CreateToolCallBlockDTO",
- "title": "ToolCallBlock"
- },
- {
- "$ref": "#/components/schemas/CreateWorkflowBlockDTO",
- "title": "WorkflowBlock"
- }
- ],
- "discriminator": {
- "propertyName": "type",
- "mapping": {
- "conversation": "#/components/schemas/CreateConversationBlockDTO",
- "tool-call": "#/components/schemas/CreateToolCallBlockDTO",
- "workflow": "#/components/schemas/CreateWorkflowBlockDTO"
- }
- }
- }
- }
- }
- },
- "responses": {
- "201": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "oneOf": [
- {
- "$ref": "#/components/schemas/ConversationBlock",
- "title": "ConversationBlock"
- },
- {
- "$ref": "#/components/schemas/ToolCallBlock",
- "title": "ToolCallBlock"
- },
- {
- "$ref": "#/components/schemas/WorkflowBlock",
- "title": "WorkflowBlock"
- }
- ],
- "discriminator": {
- "propertyName": "type",
- "mapping": {
- "conversation": "#/components/schemas/ConversationBlock",
- "tool-call": "#/components/schemas/ToolCallBlock",
- "workflow": "#/components/schemas/WorkflowBlock"
- }
- }
- }
- }
- }
- }
- },
- "tags": [
- "Blocks"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- },
- "get": {
- "operationId": "BlockController_findAll",
- "summary": "List Blocks",
- "parameters": [
- {
- "name": "limit",
- "required": false,
- "in": "query",
- "description": "This is the maximum number of items to return. Defaults to 100.",
- "schema": {
- "minimum": 0,
- "maximum": 1000,
- "type": "number"
- }
- },
- {
- "name": "createdAtGt",
- "required": false,
- "in": "query",
- "description": "This will return items where the createdAt is greater than the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "createdAtLt",
- "required": false,
- "in": "query",
- "description": "This will return items where the createdAt is less than the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "createdAtGe",
- "required": false,
- "in": "query",
- "description": "This will return items where the createdAt is greater than or equal to the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "createdAtLe",
- "required": false,
- "in": "query",
- "description": "This will return items where the createdAt is less than or equal to the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "updatedAtGt",
- "required": false,
- "in": "query",
- "description": "This will return items where the updatedAt is greater than the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "updatedAtLt",
- "required": false,
- "in": "query",
- "description": "This will return items where the updatedAt is less than the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "updatedAtGe",
- "required": false,
- "in": "query",
- "description": "This will return items where the updatedAt is greater than or equal to the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "updatedAtLe",
- "required": false,
- "in": "query",
- "description": "This will return items where the updatedAt is less than or equal to the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "oneOf": [
- {
- "$ref": "#/components/schemas/ConversationBlock",
- "title": "ConversationBlock"
- },
- {
- "$ref": "#/components/schemas/ToolCallBlock",
- "title": "ToolCallBlock"
- },
- {
- "$ref": "#/components/schemas/WorkflowBlock",
- "title": "WorkflowBlock"
- }
- ],
- "discriminator": {
- "propertyName": "type",
- "mapping": {
- "conversation": "#/components/schemas/ConversationBlock",
- "tool-call": "#/components/schemas/ToolCallBlock",
- "workflow": "#/components/schemas/WorkflowBlock"
- }
- }
- }
- }
- }
- }
- }
- },
- "tags": [
- "Blocks"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/block/{id}": {
- "get": {
- "operationId": "BlockController_findOne",
- "summary": "Get Block",
- "parameters": [
- {
- "name": "id",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "oneOf": [
- {
- "$ref": "#/components/schemas/ConversationBlock",
- "title": "ConversationBlock"
- },
- {
- "$ref": "#/components/schemas/ToolCallBlock",
- "title": "ToolCallBlock"
- },
- {
- "$ref": "#/components/schemas/WorkflowBlock",
- "title": "WorkflowBlock"
- }
- ],
- "discriminator": {
- "propertyName": "type",
- "mapping": {
- "conversation": "#/components/schemas/ConversationBlock",
- "tool-call": "#/components/schemas/ToolCallBlock",
- "workflow": "#/components/schemas/WorkflowBlock"
- }
- }
- }
- }
- }
- }
- },
- "tags": [
- "Blocks"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- },
- "patch": {
- "operationId": "BlockController_update",
- "summary": "Update Block",
- "parameters": [
- {
- "name": "id",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/UpdateBlockDTO"
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "oneOf": [
- {
- "$ref": "#/components/schemas/ConversationBlock",
- "title": "ConversationBlock"
- },
- {
- "$ref": "#/components/schemas/ToolCallBlock",
- "title": "ToolCallBlock"
- },
- {
- "$ref": "#/components/schemas/WorkflowBlock",
- "title": "WorkflowBlock"
- }
- ],
- "discriminator": {
- "propertyName": "type",
- "mapping": {
- "conversation": "#/components/schemas/ConversationBlock",
- "tool-call": "#/components/schemas/ToolCallBlock",
- "workflow": "#/components/schemas/WorkflowBlock"
- }
- }
- }
- }
- }
- }
- },
- "tags": [
- "Blocks"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- },
- "delete": {
- "operationId": "BlockController_remove",
- "summary": "Delete Block",
- "parameters": [
- {
- "name": "id",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "oneOf": [
- {
- "$ref": "#/components/schemas/ConversationBlock",
- "title": "ConversationBlock"
- },
- {
- "$ref": "#/components/schemas/ToolCallBlock",
- "title": "ToolCallBlock"
- },
- {
- "$ref": "#/components/schemas/WorkflowBlock",
- "title": "WorkflowBlock"
- }
- ],
- "discriminator": {
- "propertyName": "type",
- "mapping": {
- "conversation": "#/components/schemas/ConversationBlock",
- "tool-call": "#/components/schemas/ToolCallBlock",
- "workflow": "#/components/schemas/WorkflowBlock"
- }
- }
- }
- }
- }
- }
- },
- "tags": [
- "Blocks"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/tool": {
- "post": {
- "operationId": "ToolController_create",
- "summary": "Create Tool",
- "parameters": [],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "oneOf": [
- {
- "$ref": "#/components/schemas/CreateDtmfToolDTO",
- "title": "DtmfTool"
- },
- {
- "$ref": "#/components/schemas/CreateEndCallToolDTO",
- "title": "EndCallTool"
- },
- {
- "$ref": "#/components/schemas/CreateFunctionToolDTO",
- "title": "FunctionTool"
- },
- {
- "$ref": "#/components/schemas/CreateGhlToolDTO",
- "title": "GhlTool"
- },
- {
- "$ref": "#/components/schemas/CreateMakeToolDTO",
- "title": "MakeTool"
- },
- {
- "$ref": "#/components/schemas/CreateTransferCallToolDTO",
- "title": "TransferCallTool"
- },
- {
- "$ref": "#/components/schemas/CreateOutputToolDTO",
- "title": "OutputTool"
- }
- ],
- "discriminator": {
- "propertyName": "type",
- "mapping": {
- "dtmf": "#/components/schemas/CreateDtmfToolDTO",
- "endCall": "#/components/schemas/CreateEndCallToolDTO",
- "function": "#/components/schemas/CreateFunctionToolDTO",
- "ghl": "#/components/schemas/CreateGhlToolDTO",
- "make": "#/components/schemas/CreateMakeToolDTO",
- "transferCall": "#/components/schemas/CreateTransferCallToolDTO",
- "output": "#/components/schemas/CreateOutputToolDTO"
- }
- }
- }
- }
- }
- },
- "responses": {
- "201": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "oneOf": [
- {
- "$ref": "#/components/schemas/DtmfTool",
- "title": "DtmfTool"
- },
- {
- "$ref": "#/components/schemas/EndCallTool",
- "title": "EndCallTool"
- },
- {
- "$ref": "#/components/schemas/FunctionTool",
- "title": "FunctionTool"
- },
- {
- "$ref": "#/components/schemas/GhlTool",
- "title": "GhlTool"
- },
- {
- "$ref": "#/components/schemas/MakeTool",
- "title": "MakeTool"
- },
- {
- "$ref": "#/components/schemas/TransferCallTool",
- "title": "TransferCallTool"
- },
- {
- "$ref": "#/components/schemas/OutputTool",
- "title": "OutputTool"
- }
- ],
- "discriminator": {
- "propertyName": "type",
- "mapping": {
- "dtmf": "#/components/schemas/DtmfTool",
- "endCall": "#/components/schemas/EndCallTool",
- "function": "#/components/schemas/FunctionTool",
- "ghl": "#/components/schemas/GhlTool",
- "make": "#/components/schemas/MakeTool",
- "transferCall": "#/components/schemas/TransferCallTool",
- "output": "#/components/schemas/OutputTool"
- }
- }
- }
- }
- }
- }
- },
- "tags": [
- "Tools"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- },
- "get": {
- "operationId": "ToolController_findAll",
- "summary": "List Tools",
- "parameters": [
- {
- "name": "limit",
- "required": false,
- "in": "query",
- "description": "This is the maximum number of items to return. Defaults to 100.",
- "schema": {
- "minimum": 0,
- "maximum": 1000,
- "type": "number"
- }
- },
- {
- "name": "createdAtGt",
- "required": false,
- "in": "query",
- "description": "This will return items where the createdAt is greater than the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "createdAtLt",
- "required": false,
- "in": "query",
- "description": "This will return items where the createdAt is less than the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "createdAtGe",
- "required": false,
- "in": "query",
- "description": "This will return items where the createdAt is greater than or equal to the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "createdAtLe",
- "required": false,
- "in": "query",
- "description": "This will return items where the createdAt is less than or equal to the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "updatedAtGt",
- "required": false,
- "in": "query",
- "description": "This will return items where the updatedAt is greater than the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "updatedAtLt",
- "required": false,
- "in": "query",
- "description": "This will return items where the updatedAt is less than the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "updatedAtGe",
- "required": false,
- "in": "query",
- "description": "This will return items where the updatedAt is greater than or equal to the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "updatedAtLe",
- "required": false,
- "in": "query",
- "description": "This will return items where the updatedAt is less than or equal to the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "oneOf": [
- {
- "$ref": "#/components/schemas/DtmfTool",
- "title": "DtmfTool"
- },
- {
- "$ref": "#/components/schemas/EndCallTool",
- "title": "EndCallTool"
- },
- {
- "$ref": "#/components/schemas/FunctionTool",
- "title": "FunctionTool"
- },
- {
- "$ref": "#/components/schemas/GhlTool",
- "title": "GhlTool"
- },
- {
- "$ref": "#/components/schemas/MakeTool",
- "title": "MakeTool"
- },
- {
- "$ref": "#/components/schemas/TransferCallTool",
- "title": "TransferCallTool"
- },
- {
- "$ref": "#/components/schemas/OutputTool",
- "title": "OutputTool"
- }
- ],
- "discriminator": {
- "propertyName": "type",
- "mapping": {
- "dtmf": "#/components/schemas/DtmfTool",
- "endCall": "#/components/schemas/EndCallTool",
- "function": "#/components/schemas/FunctionTool",
- "ghl": "#/components/schemas/GhlTool",
- "make": "#/components/schemas/MakeTool",
- "transferCall": "#/components/schemas/TransferCallTool",
- "output": "#/components/schemas/OutputTool"
- }
- }
- }
- }
- }
- }
- }
- },
- "tags": [
- "Tools"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/tool/{id}": {
- "get": {
- "operationId": "ToolController_findOne",
- "summary": "Get Tool",
- "parameters": [
- {
- "name": "id",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "oneOf": [
- {
- "$ref": "#/components/schemas/DtmfTool",
- "title": "DtmfTool"
- },
- {
- "$ref": "#/components/schemas/EndCallTool",
- "title": "EndCallTool"
- },
- {
- "$ref": "#/components/schemas/FunctionTool",
- "title": "FunctionTool"
- },
- {
- "$ref": "#/components/schemas/GhlTool",
- "title": "GhlTool"
- },
- {
- "$ref": "#/components/schemas/MakeTool",
- "title": "MakeTool"
- },
- {
- "$ref": "#/components/schemas/TransferCallTool",
- "title": "TransferCallTool"
- },
- {
- "$ref": "#/components/schemas/OutputTool",
- "title": "OutputTool"
- }
- ],
- "discriminator": {
- "propertyName": "type",
- "mapping": {
- "dtmf": "#/components/schemas/DtmfTool",
- "endCall": "#/components/schemas/EndCallTool",
- "function": "#/components/schemas/FunctionTool",
- "ghl": "#/components/schemas/GhlTool",
- "make": "#/components/schemas/MakeTool",
- "transferCall": "#/components/schemas/TransferCallTool",
- "output": "#/components/schemas/OutputTool"
- }
- }
- }
- }
- }
- }
- },
- "tags": [
- "Tools"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- },
- "patch": {
- "operationId": "ToolController_update",
- "summary": "Update Tool",
- "parameters": [
- {
- "name": "id",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/UpdateToolDTO"
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "oneOf": [
- {
- "$ref": "#/components/schemas/DtmfTool",
- "title": "DtmfTool"
- },
- {
- "$ref": "#/components/schemas/EndCallTool",
- "title": "EndCallTool"
- },
- {
- "$ref": "#/components/schemas/FunctionTool",
- "title": "FunctionTool"
- },
- {
- "$ref": "#/components/schemas/GhlTool",
- "title": "GhlTool"
- },
- {
- "$ref": "#/components/schemas/MakeTool",
- "title": "MakeTool"
- },
- {
- "$ref": "#/components/schemas/TransferCallTool",
- "title": "TransferCallTool"
- },
- {
- "$ref": "#/components/schemas/OutputTool",
- "title": "OutputTool"
- }
- ],
- "discriminator": {
- "propertyName": "type",
- "mapping": {
- "dtmf": "#/components/schemas/DtmfTool",
- "endCall": "#/components/schemas/EndCallTool",
- "function": "#/components/schemas/FunctionTool",
- "ghl": "#/components/schemas/GhlTool",
- "make": "#/components/schemas/MakeTool",
- "transferCall": "#/components/schemas/TransferCallTool",
- "output": "#/components/schemas/OutputTool"
- }
- }
- }
- }
- }
- }
- },
- "tags": [
- "Tools"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- },
- "delete": {
- "operationId": "ToolController_remove",
- "summary": "Delete Tool",
- "parameters": [
- {
- "name": "id",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "oneOf": [
- {
- "$ref": "#/components/schemas/DtmfTool",
- "title": "DtmfTool"
- },
- {
- "$ref": "#/components/schemas/EndCallTool",
- "title": "EndCallTool"
- },
- {
- "$ref": "#/components/schemas/FunctionTool",
- "title": "FunctionTool"
- },
- {
- "$ref": "#/components/schemas/GhlTool",
- "title": "GhlTool"
- },
- {
- "$ref": "#/components/schemas/MakeTool",
- "title": "MakeTool"
- },
- {
- "$ref": "#/components/schemas/TransferCallTool",
- "title": "TransferCallTool"
- },
- {
- "$ref": "#/components/schemas/OutputTool",
- "title": "OutputTool"
- }
- ],
- "discriminator": {
- "propertyName": "type",
- "mapping": {
- "dtmf": "#/components/schemas/DtmfTool",
- "endCall": "#/components/schemas/EndCallTool",
- "function": "#/components/schemas/FunctionTool",
- "ghl": "#/components/schemas/GhlTool",
- "make": "#/components/schemas/MakeTool",
- "transferCall": "#/components/schemas/TransferCallTool",
- "output": "#/components/schemas/OutputTool"
- }
- }
- }
- }
- }
- }
- },
- "tags": [
- "Tools"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/file/upload": {
- "post": {
- "operationId": "FileController_createDeprecated",
- "summary": "Upload File",
- "deprecated": true,
- "description": "Use POST /file instead.",
- "parameters": [],
- "requestBody": {
- "required": true,
- "content": {
- "multipart/form-data": {
- "schema": {
- "$ref": "#/components/schemas/CreateFileDTO"
- }
- }
- }
- },
- "responses": {
- "201": {
- "description": "File uploaded successfully",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/File"
- }
- }
- }
- },
- "400": {
- "description": "Invalid file"
- }
- },
- "tags": [
- "Files",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/file": {
- "post": {
- "operationId": "FileController_create",
- "summary": "Upload File",
- "parameters": [],
- "requestBody": {
- "required": true,
- "content": {
- "multipart/form-data": {
- "schema": {
- "$ref": "#/components/schemas/CreateFileDTO"
- }
- }
- }
- },
- "responses": {
- "201": {
- "description": "File uploaded successfully",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/File"
- }
- }
- }
- },
- "400": {
- "description": "Invalid file"
- }
- },
- "tags": [
- "Files"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- },
- "get": {
- "operationId": "FileController_findAll",
- "summary": "List Files",
- "parameters": [],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/File"
- }
- }
- }
- }
- }
- },
- "tags": [
- "Files"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/file/{id}": {
- "get": {
- "operationId": "FileController_findOne",
- "summary": "Get File",
- "parameters": [
- {
- "name": "id",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/File"
- }
- }
- }
- }
- },
- "tags": [
- "Files"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- },
- "patch": {
- "operationId": "FileController_update",
- "summary": "Update File",
- "parameters": [
- {
- "name": "id",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/UpdateFileDTO"
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/File"
- }
- }
- }
- }
- },
- "tags": [
- "Files"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- },
- "delete": {
- "operationId": "FileController_remove",
- "summary": "Delete File",
- "parameters": [
- {
- "name": "id",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/File"
- }
- }
- }
- }
- },
- "tags": [
- "Files"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/metrics": {
- "get": {
- "operationId": "AnalyticsController_findAllDeprecated",
- "summary": "List Billing Metrics",
- "deprecated": true,
- "description": "Use GET /metric instead",
- "parameters": [
- {
- "name": "timezone",
- "required": false,
- "in": "query",
- "example": "PST",
- "description": "Convert date & and time to provided timezone. https://popsql.com/learn-sql/postgresql/how-to-convert-utc-to-local-time-zone-in-postgresql",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "rangeStart",
- "required": false,
- "in": "query",
- "description": "This will include calls with a createdAt timestamp greater than or equal to the specified value.\n\nIf not provided, defaults to the org's current period start.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "rangeEnd",
- "required": false,
- "in": "query",
- "description": "This will include calls with a createdAt timestamp less than the specified value.\n\nIf not provided, the default value will be the current timestamp.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/Metrics"
- }
- }
- }
- }
- }
- },
- "tags": [
- "Analytics",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/analytics": {
- "post": {
- "operationId": "AnalyticsController_query",
- "summary": "Create Analytics Queries",
- "parameters": [],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/AnalyticsQueryDTO"
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/AnalyticsQueryResult"
- }
- }
- }
- }
- },
- "201": {
- "description": ""
- }
- },
- "tags": [
- "Analytics"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/log": {
- "get": {
- "operationId": "LoggingController_getCallLogs",
- "parameters": [
- {
- "name": "callId",
- "required": true,
- "in": "query",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "page",
- "required": false,
- "in": "query",
- "description": "This is the page number to return. Defaults to 1.",
- "schema": {
- "minimum": 1,
- "type": "number"
- }
- },
- {
- "name": "sortOrder",
- "required": false,
- "in": "query",
- "description": "This is the sort order for pagination. Defaults to 'ASC'.",
- "schema": {
- "enum": [
- "ASC",
- "DESC"
- ],
- "type": "string"
- }
- },
- {
- "name": "limit",
- "required": false,
- "in": "query",
- "description": "This is the maximum number of items to return. Defaults to 100.",
- "schema": {
- "minimum": 0,
- "maximum": 1000,
- "type": "number"
- }
- },
- {
- "name": "createdAtGt",
- "required": false,
- "in": "query",
- "description": "This will return items where the createdAt is greater than the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "createdAtLt",
- "required": false,
- "in": "query",
- "description": "This will return items where the createdAt is less than the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "createdAtGe",
- "required": false,
- "in": "query",
- "description": "This will return items where the createdAt is greater than or equal to the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "createdAtLe",
- "required": false,
- "in": "query",
- "description": "This will return items where the createdAt is less than or equal to the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "updatedAtGt",
- "required": false,
- "in": "query",
- "description": "This will return items where the updatedAt is greater than the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "updatedAtLt",
- "required": false,
- "in": "query",
- "description": "This will return items where the updatedAt is less than the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "updatedAtGe",
- "required": false,
- "in": "query",
- "description": "This will return items where the updatedAt is greater than or equal to the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "updatedAtLe",
- "required": false,
- "in": "query",
- "description": "This will return items where the updatedAt is less than or equal to the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/CallLogsPaginatedResponse"
- }
- }
- }
- }
- },
- "tags": [
- "Logs",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/logs": {
- "get": {
- "operationId": "LoggingController_queryLogs",
- "summary": "List logs",
- "parameters": [
- {
- "name": "orgId",
- "required": false,
- "in": "query",
- "description": "This is the unique identifier for the org that this log belongs to.",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "type",
- "required": false,
- "in": "query",
- "description": "This is the type of the log.",
- "schema": {
- "enum": [
- "API",
- "Webhook",
- "Call",
- "Provider"
- ],
- "type": "string"
- }
- },
- {
- "name": "webhookType",
- "required": false,
- "in": "query",
- "description": "This is the type of the webhook, given the log is from a webhook.",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "assistantId",
- "required": false,
- "in": "query",
- "description": "This is the ID of the assistant.",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "phoneNumberId",
- "required": false,
- "in": "query",
- "description": "This is the ID of the phone number.",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "customerId",
- "required": false,
- "in": "query",
- "description": "This is the ID of the customer.",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "squadId",
- "required": false,
- "in": "query",
- "description": "This is the ID of the squad.",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "callId",
- "required": false,
- "in": "query",
- "description": "This is the ID of the call.",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "page",
- "required": false,
- "in": "query",
- "description": "This is the page number to return. Defaults to 1.",
- "schema": {
- "minimum": 1,
- "type": "number"
- }
- },
- {
- "name": "sortOrder",
- "required": false,
- "in": "query",
- "description": "This is the sort order for pagination. Defaults to 'ASC'.",
- "schema": {
- "enum": [
- "ASC",
- "DESC"
- ],
- "type": "string"
- }
- },
- {
- "name": "limit",
- "required": false,
- "in": "query",
- "description": "This is the maximum number of items to return. Defaults to 100.",
- "schema": {
- "minimum": 0,
- "maximum": 1000,
- "type": "number"
- }
- },
- {
- "name": "createdAtGt",
- "required": false,
- "in": "query",
- "description": "This will return items where the createdAt is greater than the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "createdAtLt",
- "required": false,
- "in": "query",
- "description": "This will return items where the createdAt is less than the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "createdAtGe",
- "required": false,
- "in": "query",
- "description": "This will return items where the createdAt is greater than or equal to the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "createdAtLe",
- "required": false,
- "in": "query",
- "description": "This will return items where the createdAt is less than or equal to the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "updatedAtGt",
- "required": false,
- "in": "query",
- "description": "This will return items where the updatedAt is greater than the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "updatedAtLt",
- "required": false,
- "in": "query",
- "description": "This will return items where the updatedAt is less than the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "updatedAtGe",
- "required": false,
- "in": "query",
- "description": "This will return items where the updatedAt is greater than or equal to the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "updatedAtLe",
- "required": false,
- "in": "query",
- "description": "This will return items where the updatedAt is less than or equal to the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/LogsPaginatedResponse"
- }
- }
- }
- }
- },
- "tags": [
- "Logs"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/credential": {
- "post": {
- "operationId": "CredentialController_create",
- "summary": "Create Credential",
- "parameters": [],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "oneOf": [
- {
- "$ref": "#/components/schemas/CreateAnthropicCredentialDTO",
- "title": "AnthropicCredential"
- },
- {
- "$ref": "#/components/schemas/CreateAnyscaleCredentialDTO",
- "title": "AnyscaleCredential"
- },
- {
- "$ref": "#/components/schemas/CreateAzureOpenAICredentialDTO",
- "title": "AzureOpenAICredential"
- },
- {
- "$ref": "#/components/schemas/CreateByoSipTrunkCredentialDTO",
- "title": "ByoSipTrunkCredential"
- },
- {
- "$ref": "#/components/schemas/CreateCartesiaCredentialDTO",
- "title": "CartesiaCredential"
- },
- {
- "$ref": "#/components/schemas/CreateCustomLLMCredentialDTO",
- "title": "CustomLLMCredential"
- },
- {
- "$ref": "#/components/schemas/CreateDeepgramCredentialDTO",
- "title": "DeepgramCredential"
- },
- {
- "$ref": "#/components/schemas/CreateGcpCredentialDTO",
- "title": "GcpCredential"
- },
- {
- "$ref": "#/components/schemas/CreateGladiaCredentialDTO",
- "title": "GladiaCredential"
- },
- {
- "$ref": "#/components/schemas/CreateDeepInfraCredentialDTO",
- "title": "DeepInfraCredential"
- },
- {
- "$ref": "#/components/schemas/CreateElevenLabsCredentialDTO",
- "title": "ElevenLabsCredential"
- },
- {
- "$ref": "#/components/schemas/CreateGoHighLevelCredentialDTO",
- "title": "GhlCredential"
- },
- {
- "$ref": "#/components/schemas/CreateGroqCredentialDTO",
- "title": "GroqCredential"
- },
- {
- "$ref": "#/components/schemas/CreateLmntCredentialDTO",
- "title": "LmntCredential"
- },
- {
- "$ref": "#/components/schemas/CreateMakeCredentialDTO",
- "title": "MakeCredential"
- },
- {
- "$ref": "#/components/schemas/CreateOpenAICredentialDTO",
- "title": "OpenAICredential"
- },
- {
- "$ref": "#/components/schemas/CreateOpenRouterCredentialDTO",
- "title": "OpenRouterCredential"
- },
- {
- "$ref": "#/components/schemas/CreatePerplexityAICredentialDTO",
- "title": "PerplexityAICredential"
- },
- {
- "$ref": "#/components/schemas/CreatePlayHTCredentialDTO",
- "title": "PlayHTCredential"
- },
- {
- "$ref": "#/components/schemas/CreateRimeAICredentialDTO",
- "title": "RimeAICredential"
- },
- {
- "$ref": "#/components/schemas/CreateRunpodCredentialDTO",
- "title": "RunpodCredential"
- },
- {
- "$ref": "#/components/schemas/CreateS3CredentialDTO",
- "title": "S3Credential"
- },
- {
- "$ref": "#/components/schemas/CreateTavusCredentialDTO",
- "title": "TavusCredential"
- },
- {
- "$ref": "#/components/schemas/CreateTogetherAICredentialDTO",
- "title": "TogetherAICredential"
- },
- {
- "$ref": "#/components/schemas/CreateTwilioCredentialDTO",
- "title": "TwilioCredential"
- },
- {
- "$ref": "#/components/schemas/CreateVonageCredentialDTO",
- "title": "VonageCredential"
- }
- ],
- "discriminator": {
- "propertyName": "provider",
- "mapping": {
- "11labs": "#/components/schemas/CreateElevenLabsCredentialDTO",
- "anthropic": "#/components/schemas/CreateAnthropicCredentialDTO",
- "anyscale": "#/components/schemas/CreateAnyscaleCredentialDTO",
- "azure-openai": "#/components/schemas/CreateAzureOpenAICredentialDTO",
- "byo-sip-trunk": "#/components/schemas/CreateByoSipTrunkCredentialDTO",
- "cartesia": "#/components/schemas/CreateCartesiaCredentialDTO",
- "custom-llm": "#/components/schemas/CreateCustomLLMCredentialDTO",
- "deepgram": "#/components/schemas/CreateDeepgramCredentialDTO",
- "gcp": "#/components/schemas/CreateGcpCredentialDTO",
- "gladia": "#/components/schemas/CreateGladiaCredentialDTO",
- "deepinfra": "#/components/schemas/CreateDeepInfraCredentialDTO",
- "gohighlevel": "#/components/schemas/CreateGoHighLevelCredentialDTO",
- "groq": "#/components/schemas/CreateGroqCredentialDTO",
- "lmnt": "#/components/schemas/CreateLmntCredentialDTO",
- "make": "#/components/schemas/CreateMakeCredentialDTO",
- "openai": "#/components/schemas/CreateOpenAICredentialDTO",
- "openrouter": "#/components/schemas/CreateOpenRouterCredentialDTO",
- "perplexity-ai": "#/components/schemas/CreatePerplexityAICredentialDTO",
- "playht": "#/components/schemas/CreatePlayHTCredentialDTO",
- "rime-ai": "#/components/schemas/CreateRimeAICredentialDTO",
- "runpod": "#/components/schemas/CreateRunpodCredentialDTO",
- "s3": "#/components/schemas/CreateS3CredentialDTO",
- "tavus": "#/components/schemas/CreateTavusCredentialDTO",
- "together-ai": "#/components/schemas/CreateTogetherAICredentialDTO",
- "twilio": "#/components/schemas/CreateTwilioCredentialDTO",
- "google": "#/components/schemas/CreateGoogleCredentialDTO",
- "xai": "#/components/schemas/CreateXAiCredentialDTO",
- "vonage": "#/components/schemas/CreateVonageCredentialDTO"
- }
- }
- }
- }
- }
- },
- "responses": {
- "201": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "oneOf": [
- {
- "$ref": "#/components/schemas/AnyscaleCredential",
- "title": "AnyscaleCredential"
- },
- {
- "$ref": "#/components/schemas/AzureOpenAICredential",
- "title": "AzureOpenAICredential"
- },
- {
- "$ref": "#/components/schemas/ByoSipTrunkCredential",
- "title": "ByoSipTrunkCredential"
- },
- {
- "$ref": "#/components/schemas/CartesiaCredential",
- "title": "CartesiaCredential"
- },
- {
- "$ref": "#/components/schemas/CustomLLMCredential",
- "title": "CustomLLMCredential"
- },
- {
- "$ref": "#/components/schemas/DeepgramCredential",
- "title": "DeepgramCredential"
- },
- {
- "$ref": "#/components/schemas/GcpCredential",
- "title": "GcpCredential"
- },
- {
- "$ref": "#/components/schemas/GladiaCredential",
- "title": "GladiaCredential"
- },
- {
- "$ref": "#/components/schemas/DeepInfraCredential",
- "title": "DeepInfraCredential"
- },
- {
- "$ref": "#/components/schemas/ElevenLabsCredential",
- "title": "ElevenLabsCredential"
- },
- {
- "$ref": "#/components/schemas/GoHighLevelCredential",
- "title": "GhlCredential"
- },
- {
- "$ref": "#/components/schemas/GroqCredential",
- "title": "GroqCredential"
- },
- {
- "$ref": "#/components/schemas/LmntCredential",
- "title": "LmntCredential"
- },
- {
- "$ref": "#/components/schemas/MakeCredential",
- "title": "MakeCredential"
- },
- {
- "$ref": "#/components/schemas/OpenAICredential",
- "title": "OpenAICredential"
- },
- {
- "$ref": "#/components/schemas/OpenRouterCredential",
- "title": "OpenRouterCredential"
- },
- {
- "$ref": "#/components/schemas/PerplexityAICredential",
- "title": "PerplexityAICredential"
- },
- {
- "$ref": "#/components/schemas/PlayHTCredential",
- "title": "PlayHTCredential"
- },
- {
- "$ref": "#/components/schemas/RimeAICredential",
- "title": "RimeAICredential"
- },
- {
- "$ref": "#/components/schemas/AnthropicCredential",
- "title": "AnthropicCredential"
- },
- {
- "$ref": "#/components/schemas/RunpodCredential",
- "title": "RunpodCredential"
- },
- {
- "$ref": "#/components/schemas/S3Credential",
- "title": "S3Credential"
- },
- {
- "$ref": "#/components/schemas/TavusCredential",
- "title": "TavusCredential"
- },
- {
- "$ref": "#/components/schemas/TogetherAICredential",
- "title": "TogetherAICredential"
- },
- {
- "$ref": "#/components/schemas/TwilioCredential",
- "title": "TwilioCredential"
- },
- {
- "$ref": "#/components/schemas/GoogleCredential",
- "title": "GoogleCredential"
- },
- {
- "$ref": "#/components/schemas/XAiCredential",
- "title": "XAiCredential"
- },
- {
- "$ref": "#/components/schemas/VonageCredential",
- "title": "VonageCredential"
- }
- ],
- "discriminator": {
- "propertyName": "provider",
- "mapping": {
- "11labs": "#/components/schemas/ElevenLabsCredential",
- "anthropic": "#/components/schemas/AnthropicCredential",
- "anyscale": "#/components/schemas/AnyscaleCredential",
- "azure-openai": "#/components/schemas/AzureOpenAICredential",
- "byo-sip-trunk": "#/components/schemas/ByoSipTrunkCredential",
- "cartesia": "#/components/schemas/CartesiaCredential",
- "custom-llm": "#/components/schemas/CustomLLMCredential",
- "deepgram": "#/components/schemas/DeepgramCredential",
- "gcp": "#/components/schemas/GcpCredential",
- "gladia": "#/components/schemas/GladiaCredential",
- "deepinfra": "#/components/schemas/DeepInfraCredential",
- "gohighlevel": "#/components/schemas/GoHighLevelCredential",
- "groq": "#/components/schemas/GroqCredential",
- "lmnt": "#/components/schemas/LmntCredential",
- "make": "#/components/schemas/MakeCredential",
- "openai": "#/components/schemas/OpenAICredential",
- "openrouter": "#/components/schemas/OpenRouterCredential",
- "perplexity-ai": "#/components/schemas/PerplexityAICredential",
- "playht": "#/components/schemas/PlayHTCredential",
- "rime-ai": "#/components/schemas/RimeAICredential",
- "runpod": "#/components/schemas/RunpodCredential",
- "s3": "#/components/schemas/S3Credential",
- "tavus": "#/components/schemas/TavusCredential",
- "together-ai": "#/components/schemas/TogetherAICredential",
- "twilio": "#/components/schemas/TwilioCredential",
- "google": "#/components/schemas/GoogleCredential",
- "xai": "#/components/schemas/XAiCredential",
- "vonage": "#/components/schemas/VonageCredential"
- }
- }
- }
- }
- }
- }
- },
- "tags": [
- "Credentials",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- },
- "get": {
- "operationId": "CredentialController_findAll",
- "summary": "List Credentials",
- "parameters": [
- {
- "name": "limit",
- "required": false,
- "in": "query",
- "description": "This is the maximum number of items to return. Defaults to 100.",
- "schema": {
- "minimum": 0,
- "maximum": 1000,
- "type": "number"
- }
- },
- {
- "name": "createdAtGt",
- "required": false,
- "in": "query",
- "description": "This will return items where the createdAt is greater than the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "createdAtLt",
- "required": false,
- "in": "query",
- "description": "This will return items where the createdAt is less than the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "createdAtGe",
- "required": false,
- "in": "query",
- "description": "This will return items where the createdAt is greater than or equal to the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "createdAtLe",
- "required": false,
- "in": "query",
- "description": "This will return items where the createdAt is less than or equal to the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "updatedAtGt",
- "required": false,
- "in": "query",
- "description": "This will return items where the updatedAt is greater than the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "updatedAtLt",
- "required": false,
- "in": "query",
- "description": "This will return items where the updatedAt is less than the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "updatedAtGe",
- "required": false,
- "in": "query",
- "description": "This will return items where the updatedAt is greater than or equal to the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "updatedAtLe",
- "required": false,
- "in": "query",
- "description": "This will return items where the updatedAt is less than or equal to the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "oneOf": [
- {
- "$ref": "#/components/schemas/AnyscaleCredential",
- "title": "AnyscaleCredential"
- },
- {
- "$ref": "#/components/schemas/AzureOpenAICredential",
- "title": "AzureOpenAICredential"
- },
- {
- "$ref": "#/components/schemas/ByoSipTrunkCredential",
- "title": "ByoSipTrunkCredential"
- },
- {
- "$ref": "#/components/schemas/CartesiaCredential",
- "title": "CartesiaCredential"
- },
- {
- "$ref": "#/components/schemas/CustomLLMCredential",
- "title": "CustomLLMCredential"
- },
- {
- "$ref": "#/components/schemas/DeepgramCredential",
- "title": "DeepgramCredential"
- },
- {
- "$ref": "#/components/schemas/GcpCredential",
- "title": "GcpCredential"
- },
- {
- "$ref": "#/components/schemas/GladiaCredential",
- "title": "GladiaCredential"
- },
- {
- "$ref": "#/components/schemas/DeepInfraCredential",
- "title": "DeepInfraCredential"
- },
- {
- "$ref": "#/components/schemas/ElevenLabsCredential",
- "title": "ElevenLabsCredential"
- },
- {
- "$ref": "#/components/schemas/GoHighLevelCredential",
- "title": "GhlCredential"
- },
- {
- "$ref": "#/components/schemas/GroqCredential",
- "title": "GroqCredential"
- },
- {
- "$ref": "#/components/schemas/LmntCredential",
- "title": "LmntCredential"
- },
- {
- "$ref": "#/components/schemas/MakeCredential",
- "title": "MakeCredential"
- },
- {
- "$ref": "#/components/schemas/OpenAICredential",
- "title": "OpenAICredential"
- },
- {
- "$ref": "#/components/schemas/OpenRouterCredential",
- "title": "OpenRouterCredential"
- },
- {
- "$ref": "#/components/schemas/PerplexityAICredential",
- "title": "PerplexityAICredential"
- },
- {
- "$ref": "#/components/schemas/PlayHTCredential",
- "title": "PlayHTCredential"
- },
- {
- "$ref": "#/components/schemas/RimeAICredential",
- "title": "RimeAICredential"
- },
- {
- "$ref": "#/components/schemas/AnthropicCredential",
- "title": "AnthropicCredential"
- },
- {
- "$ref": "#/components/schemas/RunpodCredential",
- "title": "RunpodCredential"
- },
- {
- "$ref": "#/components/schemas/S3Credential",
- "title": "S3Credential"
- },
- {
- "$ref": "#/components/schemas/TavusCredential",
- "title": "TavusCredential"
- },
- {
- "$ref": "#/components/schemas/TogetherAICredential",
- "title": "TogetherAICredential"
- },
- {
- "$ref": "#/components/schemas/TwilioCredential",
- "title": "TwilioCredential"
- },
- {
- "$ref": "#/components/schemas/GoogleCredential",
- "title": "GoogleCredential"
- },
- {
- "$ref": "#/components/schemas/XAiCredential",
- "title": "XAiCredential"
- },
- {
- "$ref": "#/components/schemas/VonageCredential",
- "title": "VonageCredential"
- }
- ],
- "discriminator": {
- "propertyName": "provider",
- "mapping": {
- "11labs": "#/components/schemas/ElevenLabsCredential",
- "anthropic": "#/components/schemas/AnthropicCredential",
- "anyscale": "#/components/schemas/AnyscaleCredential",
- "azure-openai": "#/components/schemas/AzureOpenAICredential",
- "byo-sip-trunk": "#/components/schemas/ByoSipTrunkCredential",
- "cartesia": "#/components/schemas/CartesiaCredential",
- "custom-llm": "#/components/schemas/CustomLLMCredential",
- "deepgram": "#/components/schemas/DeepgramCredential",
- "gcp": "#/components/schemas/GcpCredential",
- "gladia": "#/components/schemas/GladiaCredential",
- "deepinfra": "#/components/schemas/DeepInfraCredential",
- "gohighlevel": "#/components/schemas/GoHighLevelCredential",
- "groq": "#/components/schemas/GroqCredential",
- "lmnt": "#/components/schemas/LmntCredential",
- "make": "#/components/schemas/MakeCredential",
- "openai": "#/components/schemas/OpenAICredential",
- "openrouter": "#/components/schemas/OpenRouterCredential",
- "perplexity-ai": "#/components/schemas/PerplexityAICredential",
- "playht": "#/components/schemas/PlayHTCredential",
- "rime-ai": "#/components/schemas/RimeAICredential",
- "runpod": "#/components/schemas/RunpodCredential",
- "s3": "#/components/schemas/S3Credential",
- "tavus": "#/components/schemas/TavusCredential",
- "together-ai": "#/components/schemas/TogetherAICredential",
- "twilio": "#/components/schemas/TwilioCredential",
- "google": "#/components/schemas/GoogleCredential",
- "xai": "#/components/schemas/XAiCredential",
- "vonage": "#/components/schemas/VonageCredential"
- }
- }
- }
- }
- }
- }
- }
- },
- "tags": [
- "Credentials",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/credential/{id}": {
- "get": {
- "operationId": "CredentialController_findOne",
- "summary": "Get Credential",
- "parameters": [
- {
- "name": "id",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "oneOf": [
- {
- "$ref": "#/components/schemas/AnyscaleCredential",
- "title": "AnyscaleCredential"
- },
- {
- "$ref": "#/components/schemas/AzureOpenAICredential",
- "title": "AzureOpenAICredential"
- },
- {
- "$ref": "#/components/schemas/ByoSipTrunkCredential",
- "title": "ByoSipTrunkCredential"
- },
- {
- "$ref": "#/components/schemas/CartesiaCredential",
- "title": "CartesiaCredential"
- },
- {
- "$ref": "#/components/schemas/CustomLLMCredential",
- "title": "CustomLLMCredential"
- },
- {
- "$ref": "#/components/schemas/DeepgramCredential",
- "title": "DeepgramCredential"
- },
- {
- "$ref": "#/components/schemas/GcpCredential",
- "title": "GcpCredential"
- },
- {
- "$ref": "#/components/schemas/GladiaCredential",
- "title": "GladiaCredential"
- },
- {
- "$ref": "#/components/schemas/DeepInfraCredential",
- "title": "DeepInfraCredential"
- },
- {
- "$ref": "#/components/schemas/ElevenLabsCredential",
- "title": "ElevenLabsCredential"
- },
- {
- "$ref": "#/components/schemas/GoHighLevelCredential",
- "title": "GhlCredential"
- },
- {
- "$ref": "#/components/schemas/GroqCredential",
- "title": "GroqCredential"
- },
- {
- "$ref": "#/components/schemas/LmntCredential",
- "title": "LmntCredential"
- },
- {
- "$ref": "#/components/schemas/MakeCredential",
- "title": "MakeCredential"
- },
- {
- "$ref": "#/components/schemas/OpenAICredential",
- "title": "OpenAICredential"
- },
- {
- "$ref": "#/components/schemas/OpenRouterCredential",
- "title": "OpenRouterCredential"
- },
- {
- "$ref": "#/components/schemas/PerplexityAICredential",
- "title": "PerplexityAICredential"
- },
- {
- "$ref": "#/components/schemas/PlayHTCredential",
- "title": "PlayHTCredential"
- },
- {
- "$ref": "#/components/schemas/RimeAICredential",
- "title": "RimeAICredential"
- },
- {
- "$ref": "#/components/schemas/AnthropicCredential",
- "title": "AnthropicCredential"
- },
- {
- "$ref": "#/components/schemas/RunpodCredential",
- "title": "RunpodCredential"
- },
- {
- "$ref": "#/components/schemas/S3Credential",
- "title": "S3Credential"
- },
- {
- "$ref": "#/components/schemas/TavusCredential",
- "title": "TavusCredential"
- },
- {
- "$ref": "#/components/schemas/TogetherAICredential",
- "title": "TogetherAICredential"
- },
- {
- "$ref": "#/components/schemas/TwilioCredential",
- "title": "TwilioCredential"
- },
- {
- "$ref": "#/components/schemas/GoogleCredential",
- "title": "GoogleCredential"
- },
- {
- "$ref": "#/components/schemas/XAiCredential",
- "title": "XAiCredential"
- },
- {
- "$ref": "#/components/schemas/VonageCredential",
- "title": "VonageCredential"
- }
- ],
- "discriminator": {
- "propertyName": "provider",
- "mapping": {
- "11labs": "#/components/schemas/ElevenLabsCredential",
- "anthropic": "#/components/schemas/AnthropicCredential",
- "anyscale": "#/components/schemas/AnyscaleCredential",
- "azure-openai": "#/components/schemas/AzureOpenAICredential",
- "byo-sip-trunk": "#/components/schemas/ByoSipTrunkCredential",
- "cartesia": "#/components/schemas/CartesiaCredential",
- "custom-llm": "#/components/schemas/CustomLLMCredential",
- "deepgram": "#/components/schemas/DeepgramCredential",
- "gcp": "#/components/schemas/GcpCredential",
- "gladia": "#/components/schemas/GladiaCredential",
- "deepinfra": "#/components/schemas/DeepInfraCredential",
- "gohighlevel": "#/components/schemas/GoHighLevelCredential",
- "groq": "#/components/schemas/GroqCredential",
- "lmnt": "#/components/schemas/LmntCredential",
- "make": "#/components/schemas/MakeCredential",
- "openai": "#/components/schemas/OpenAICredential",
- "openrouter": "#/components/schemas/OpenRouterCredential",
- "perplexity-ai": "#/components/schemas/PerplexityAICredential",
- "playht": "#/components/schemas/PlayHTCredential",
- "rime-ai": "#/components/schemas/RimeAICredential",
- "runpod": "#/components/schemas/RunpodCredential",
- "s3": "#/components/schemas/S3Credential",
- "tavus": "#/components/schemas/TavusCredential",
- "together-ai": "#/components/schemas/TogetherAICredential",
- "twilio": "#/components/schemas/TwilioCredential",
- "google": "#/components/schemas/GoogleCredential",
- "xai": "#/components/schemas/XAiCredential",
- "vonage": "#/components/schemas/VonageCredential"
- }
- }
- }
- }
- }
- }
- },
- "tags": [
- "Credentials",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- },
- "delete": {
- "operationId": "CredentialController_remove",
- "summary": "Delete Credential",
- "parameters": [
- {
- "name": "id",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "oneOf": [
- {
- "$ref": "#/components/schemas/AnyscaleCredential",
- "title": "AnyscaleCredential"
- },
- {
- "$ref": "#/components/schemas/AzureOpenAICredential",
- "title": "AzureOpenAICredential"
- },
- {
- "$ref": "#/components/schemas/ByoSipTrunkCredential",
- "title": "ByoSipTrunkCredential"
- },
- {
- "$ref": "#/components/schemas/CartesiaCredential",
- "title": "CartesiaCredential"
- },
- {
- "$ref": "#/components/schemas/CustomLLMCredential",
- "title": "CustomLLMCredential"
- },
- {
- "$ref": "#/components/schemas/DeepgramCredential",
- "title": "DeepgramCredential"
- },
- {
- "$ref": "#/components/schemas/GcpCredential",
- "title": "GcpCredential"
- },
- {
- "$ref": "#/components/schemas/GladiaCredential",
- "title": "GladiaCredential"
- },
- {
- "$ref": "#/components/schemas/DeepInfraCredential",
- "title": "DeepInfraCredential"
- },
- {
- "$ref": "#/components/schemas/ElevenLabsCredential",
- "title": "ElevenLabsCredential"
- },
- {
- "$ref": "#/components/schemas/GoHighLevelCredential",
- "title": "GhlCredential"
- },
- {
- "$ref": "#/components/schemas/GroqCredential",
- "title": "GroqCredential"
- },
- {
- "$ref": "#/components/schemas/LmntCredential",
- "title": "LmntCredential"
- },
- {
- "$ref": "#/components/schemas/MakeCredential",
- "title": "MakeCredential"
- },
- {
- "$ref": "#/components/schemas/OpenAICredential",
- "title": "OpenAICredential"
- },
- {
- "$ref": "#/components/schemas/OpenRouterCredential",
- "title": "OpenRouterCredential"
- },
- {
- "$ref": "#/components/schemas/PerplexityAICredential",
- "title": "PerplexityAICredential"
- },
- {
- "$ref": "#/components/schemas/PlayHTCredential",
- "title": "PlayHTCredential"
- },
- {
- "$ref": "#/components/schemas/RimeAICredential",
- "title": "RimeAICredential"
- },
- {
- "$ref": "#/components/schemas/AnthropicCredential",
- "title": "AnthropicCredential"
- },
- {
- "$ref": "#/components/schemas/RunpodCredential",
- "title": "RunpodCredential"
- },
- {
- "$ref": "#/components/schemas/S3Credential",
- "title": "S3Credential"
- },
- {
- "$ref": "#/components/schemas/TavusCredential",
- "title": "TavusCredential"
- },
- {
- "$ref": "#/components/schemas/TogetherAICredential",
- "title": "TogetherAICredential"
- },
- {
- "$ref": "#/components/schemas/TwilioCredential",
- "title": "TwilioCredential"
- },
- {
- "$ref": "#/components/schemas/GoogleCredential",
- "title": "GoogleCredential"
- },
- {
- "$ref": "#/components/schemas/XAiCredential",
- "title": "XAiCredential"
- },
- {
- "$ref": "#/components/schemas/VonageCredential",
- "title": "VonageCredential"
- }
- ],
- "discriminator": {
- "propertyName": "provider",
- "mapping": {
- "11labs": "#/components/schemas/ElevenLabsCredential",
- "anthropic": "#/components/schemas/AnthropicCredential",
- "anyscale": "#/components/schemas/AnyscaleCredential",
- "azure-openai": "#/components/schemas/AzureOpenAICredential",
- "byo-sip-trunk": "#/components/schemas/ByoSipTrunkCredential",
- "cartesia": "#/components/schemas/CartesiaCredential",
- "custom-llm": "#/components/schemas/CustomLLMCredential",
- "deepgram": "#/components/schemas/DeepgramCredential",
- "gcp": "#/components/schemas/GcpCredential",
- "gladia": "#/components/schemas/GladiaCredential",
- "deepinfra": "#/components/schemas/DeepInfraCredential",
- "gohighlevel": "#/components/schemas/GoHighLevelCredential",
- "groq": "#/components/schemas/GroqCredential",
- "lmnt": "#/components/schemas/LmntCredential",
- "make": "#/components/schemas/MakeCredential",
- "openai": "#/components/schemas/OpenAICredential",
- "openrouter": "#/components/schemas/OpenRouterCredential",
- "perplexity-ai": "#/components/schemas/PerplexityAICredential",
- "playht": "#/components/schemas/PlayHTCredential",
- "rime-ai": "#/components/schemas/RimeAICredential",
- "runpod": "#/components/schemas/RunpodCredential",
- "s3": "#/components/schemas/S3Credential",
- "tavus": "#/components/schemas/TavusCredential",
- "together-ai": "#/components/schemas/TogetherAICredential",
- "twilio": "#/components/schemas/TwilioCredential",
- "google": "#/components/schemas/GoogleCredential",
- "xai": "#/components/schemas/XAiCredential",
- "vonage": "#/components/schemas/VonageCredential"
- }
- }
- }
- }
- }
- }
- },
- "tags": [
- "Credentials",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/org": {
- "post": {
- "operationId": "OrgController_create",
- "summary": "Create Org",
- "parameters": [],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/CreateOrgDTO"
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Org"
- }
- }
- }
- },
- "201": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Org"
- }
- }
- }
- }
- },
- "tags": [
- "Orgs",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- },
- "get": {
- "operationId": "OrgController_findAll",
- "summary": "List Orgs",
- "parameters": [],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/Org"
- }
- }
- }
- }
- }
- },
- "tags": [
- "Orgs",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/org/{id}": {
- "get": {
- "operationId": "OrgController_findOne",
- "summary": "Get Org",
- "parameters": [
- {
- "name": "id",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Org"
- }
- }
- }
- }
- },
- "tags": [
- "Orgs",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- },
- "patch": {
- "operationId": "OrgController_update",
- "summary": "Update Org",
- "parameters": [
- {
- "name": "id",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/UpdateOrgDTO"
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Org"
- }
- }
- }
- }
- },
- "tags": [
- "Orgs",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- },
- "delete": {
- "operationId": "OrgController_deleteOrg",
- "summary": "Delete Org",
- "parameters": [
- {
- "name": "id",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": ""
- }
- },
- "tags": [
- "Orgs",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/org/{id}/user": {
- "get": {
- "operationId": "OrgController_findAllUsers",
- "summary": "List Users",
- "parameters": [
- {
- "name": "id",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/User"
- }
- }
- }
- }
- }
- },
- "tags": [
- "Orgs",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/org/{id}/leave": {
- "delete": {
- "operationId": "OrgController_orgLeave",
- "summary": "Leave Org",
- "parameters": [
- {
- "name": "id",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": ""
- }
- },
- "tags": [
- "Orgs",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/org/{id}/member/{memberId}/leave": {
- "delete": {
- "operationId": "OrgController_orgRemoveUser",
- "summary": "Leave Org",
- "parameters": [
- {
- "name": "id",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "memberId",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": ""
- }
- },
- "tags": [
- "Orgs",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/org/{id}/invite": {
- "post": {
- "operationId": "OrgController_usersInvite",
- "summary": "Invite User",
- "parameters": [
- {
- "name": "id",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/InviteUserDTO"
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": ""
- },
- "201": {
- "description": ""
- }
- },
- "tags": [
- "Orgs",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/org/{id}/subscription-migrate": {
- "post": {
- "operationId": "OrgController_subscriptionMigrate",
- "summary": "Migrates to subscription based billing",
- "parameters": [
- {
- "name": "id",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": ""
- },
- "201": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/OrgWithOrgUser"
- }
- }
- }
- }
- },
- "tags": [
- "Orgs",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/org/{id}/role": {
- "patch": {
- "operationId": "OrgController_userUpdate",
- "summary": "Update User Role",
- "parameters": [
- {
- "name": "id",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/UpdateUserRoleDTO"
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": ""
- }
- },
- "tags": [
- "Orgs",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/{provider}/workflows": {
- "get": {
- "operationId": "ProviderController_getWorkflows",
- "parameters": [
- {
- "name": "provider",
- "required": true,
- "in": "path",
- "schema": {
- "enum": [
- "make",
- "ghl"
- ],
- "type": "string"
- }
- },
- {
- "name": "locationId",
- "required": false,
- "in": "query",
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "type": "object"
- }
- }
- }
- }
- },
- "tags": [
- "Providers",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/{provider}/workflows/{workflowId}/hooks": {
- "get": {
- "operationId": "ProviderController_getWorkflowTriggerHook",
- "parameters": [
- {
- "name": "provider",
- "required": true,
- "in": "path",
- "schema": {
- "enum": [
- "make",
- "ghl"
- ],
- "type": "string"
- }
- },
- {
- "name": "workflowId",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "type": "object"
- }
- }
- }
- }
- },
- "tags": [
- "Providers",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/{provider}/locations": {
- "get": {
- "operationId": "ProviderController_getLocations",
- "parameters": [
- {
- "name": "provider",
- "required": true,
- "in": "path",
- "schema": {
- "enum": [
- "make",
- "ghl"
- ],
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "type": "object"
- }
- }
- }
- }
- },
- "tags": [
- "Providers",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/{provider}/voices/search": {
- "get": {
- "operationId": "VoiceProviderController_searchVoices",
- "summary": "Search Voice from Provider Voice Library.",
- "deprecated": true,
- "parameters": [
- {
- "name": "name",
- "required": true,
- "in": "query",
- "description": "The name of the voice from the provider you want to search.",
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/VoiceLibraryVoiceResponse"
- }
- }
- }
- }
- }
- },
- "tags": [
- "Providers",
- "extended",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/{provider}/voice/search": {
- "get": {
- "operationId": "VoiceProviderController_searchVoice",
- "summary": "Search Voice from Provider Voice Library.",
- "parameters": [
- {
- "name": "name",
- "required": true,
- "in": "query",
- "description": "The name of the voice from the provider you want to search.",
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/VoiceLibraryVoiceResponse"
- }
- }
- }
- }
- }
- },
- "tags": [
- "Providers",
- "extended",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/{provider}/voices/add": {
- "post": {
- "operationId": "VoiceProviderController_addVoices",
- "summary": "Add Shared Voice to your Provider Account.",
- "deprecated": true,
- "parameters": [],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/AddVoiceToProviderDTO"
- }
- }
- }
- },
- "responses": {
- "201": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/VoiceLibrary"
- }
- }
- }
- }
- },
- "tags": [
- "Providers",
- "extended",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/{provider}/voice/add": {
- "post": {
- "operationId": "VoiceProviderController_addVoice",
- "summary": "Add Shared Voice to your Provider Account.",
- "parameters": [],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/AddVoiceToProviderDTO"
- }
- }
- }
- },
- "responses": {
- "201": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/VoiceLibrary"
- }
- }
- }
- }
- },
- "tags": [
- "Providers",
- "extended",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/11labs/voice/clone": {
- "post": {
- "operationId": "VoiceProviderController_cloneVoices",
- "summary": "Clone a voice to the provider account and add to Vapi Voice Library.",
- "parameters": [],
- "requestBody": {
- "required": true,
- "content": {
- "multipart/form-data": {
- "schema": {
- "$ref": "#/components/schemas/CloneVoiceDTO"
- }
- }
- }
- },
- "responses": {
- "201": {
- "description": ""
- },
- "400": {
- "description": "Voice Clone Error."
- }
- },
- "tags": [
- "Providers",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/template": {
- "post": {
- "operationId": "TemplateController_create",
- "summary": "Create Template",
- "parameters": [],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/CreateToolTemplateDTO"
- }
- }
- }
- }
- },
- "responses": {
- "201": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Template"
- }
- }
- }
- }
- },
- "tags": [
- "Templates",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- },
- "get": {
- "operationId": "TemplateController_findAll",
- "summary": "List Templates",
- "parameters": [
- {
- "name": "collectionId",
- "required": false,
- "in": "query",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "visibility",
- "required": false,
- "in": "query",
- "schema": {
- "enum": [
- "public",
- "private"
- ],
- "type": "string"
- }
- },
- {
- "name": "provider",
- "required": false,
- "in": "query",
- "schema": {
- "enum": [
- "make",
- "gohighlevel",
- "function"
- ],
- "type": "string"
- }
- },
- {
- "name": "limit",
- "required": false,
- "in": "query",
- "description": "This is the maximum number of items to return. Defaults to 100.",
- "schema": {
- "minimum": 0,
- "maximum": 1000,
- "type": "number"
- }
- },
- {
- "name": "createdAtGt",
- "required": false,
- "in": "query",
- "description": "This will return items where the createdAt is greater than the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "createdAtLt",
- "required": false,
- "in": "query",
- "description": "This will return items where the createdAt is less than the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "createdAtGe",
- "required": false,
- "in": "query",
- "description": "This will return items where the createdAt is greater than or equal to the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "createdAtLe",
- "required": false,
- "in": "query",
- "description": "This will return items where the createdAt is less than or equal to the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "updatedAtGt",
- "required": false,
- "in": "query",
- "description": "This will return items where the updatedAt is greater than the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "updatedAtLt",
- "required": false,
- "in": "query",
- "description": "This will return items where the updatedAt is less than the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "updatedAtGe",
- "required": false,
- "in": "query",
- "description": "This will return items where the updatedAt is greater than or equal to the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- },
- {
- "name": "updatedAtLe",
- "required": false,
- "in": "query",
- "description": "This will return items where the updatedAt is less than or equal to the specified value.",
- "schema": {
- "format": "date-time",
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/Template"
- }
- }
- }
- }
- }
- },
- "tags": [
- "Templates",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/template/pinned": {
- "get": {
- "operationId": "TemplateController_findAllPinned",
- "summary": "List Templates",
- "parameters": [],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/Template"
- }
- }
- }
- }
- }
- },
- "tags": [
- "Templates",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/template/{id}": {
- "get": {
- "operationId": "TemplateController_findOne",
- "summary": "Get Template",
- "parameters": [
- {
- "name": "id",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Template"
- }
- }
- }
- }
- },
- "tags": [
- "Templates",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- },
- "patch": {
- "operationId": "TemplateController_update",
- "summary": "Update Template",
- "parameters": [
- {
- "name": "id",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/UpdateToolTemplateDTO"
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Template"
- }
- }
- }
- }
- },
- "tags": [
- "Templates",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- },
- "delete": {
- "operationId": "TemplateController_remove",
- "summary": "Delete Template",
- "parameters": [
- {
- "name": "id",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Template"
- }
- }
- }
- }
- },
- "tags": [
- "Templates",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/token": {
- "post": {
- "operationId": "TokenController_create",
- "summary": "Create Token",
- "parameters": [],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/CreateTokenDTO"
- }
- }
- }
- },
- "responses": {
- "201": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Token"
- }
- }
- }
- }
- },
- "tags": [
- "Tokens",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- },
- "get": {
- "operationId": "TokenController_findAll",
- "summary": "List Tokens",
- "parameters": [
+ },
{
"name": "limit",
"required": false,
@@ -6657,306 +2616,14 @@
"content": {
"application/json": {
"schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/Token"
- }
- }
- }
- }
- }
- },
- "tags": [
- "Tokens",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/token/{id}": {
- "get": {
- "operationId": "TokenController_findOne",
- "summary": "Get Token",
- "parameters": [
- {
- "name": "id",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Token"
- }
- }
- }
- }
- },
- "tags": [
- "Tokens",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- },
- "patch": {
- "operationId": "TokenController_update",
- "summary": "Update Token",
- "parameters": [
- {
- "name": "id",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/CreateTokenDTO"
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Token"
- }
- }
- }
- }
- },
- "tags": [
- "Tokens",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- },
- "delete": {
- "operationId": "TokenController_remove",
- "summary": "Delete Token",
- "parameters": [
- {
- "name": "id",
- "required": true,
- "in": "path",
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Token"
- }
- }
- }
- }
- },
- "tags": [
- "Tokens",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/voice-library/{provider}": {
- "get": {
- "operationId": "VoiceLibraryController_voiceGetByProvider",
- "summary": "Get voices in Voice Library by Provider",
- "parameters": [
- {
- "name": "provider",
- "required": true,
- "in": "path",
- "schema": {
- "enum": [
- "11labs",
- "azure",
- "cartesia",
- "custom-voice",
- "deepgram",
- "lmnt",
- "neets",
- "openai",
- "playht",
- "rime-ai",
- "tavus"
- ],
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/VoiceLibrary"
- }
- }
- }
- }
- }
- },
- "tags": [
- "Voice Library",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/voice-library/sync/{provider}": {
- "post": {
- "operationId": "VoiceLibraryController_voiceLibrarySyncByProvider",
- "summary": "Sync Private voices in Voice Library by Provider",
- "parameters": [
- {
- "name": "provider",
- "required": true,
- "in": "path",
- "schema": {
- "enum": [
- "11labs",
- "azure",
- "cartesia",
- "custom-voice",
- "deepgram",
- "lmnt",
- "neets",
- "openai",
- "playht",
- "rime-ai",
- "tavus"
- ],
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/VoiceLibrary"
- }
- }
- }
- }
- },
- "201": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "type": "object"
- }
- }
- }
- }
- },
- "tags": [
- "Voice Library",
- "extended"
- ],
- "security": [
- {
- "bearer": []
- }
- ]
- }
- },
- "/voice-library/sync": {
- "post": {
- "operationId": "VoiceLibraryController_voiceLibrarySyncDefaultVoices",
- "summary": "Sync Default voices in Voice Library by Providers",
- "parameters": [],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/SyncVoiceLibraryDTO"
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/VoiceLibrary"
- }
- }
- }
- }
- },
- "201": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/VoiceLibrary"
- }
+ "$ref": "#/components/schemas/LogsPaginatedResponse"
}
}
}
}
},
"tags": [
- "Voice Library",
- "extended",
- "extended"
+ "Logs"
],
"security": [
{