diff --git a/api-reference/analytics/create-analytics-queries.mdx b/api-reference/analytics/create-analytics-queries.mdx new file mode 100644 index 0000000..9949713 --- /dev/null +++ b/api-reference/analytics/create-analytics-queries.mdx @@ -0,0 +1,3 @@ +--- +openapi: post /analytics +--- \ No newline at end of file diff --git a/api-reference/billing-metrics/list-billing-metrics.mdx b/api-reference/billing-metrics/list-billing-metrics.mdx deleted file mode 100644 index 4bbb01c..0000000 --- a/api-reference/billing-metrics/list-billing-metrics.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /metrics ---- \ No newline at end of file diff --git a/api.json b/api.json index ff36ab1..ae198a3 100644 --- a/api.json +++ b/api.json @@ -10,9 +10,7 @@ "required": true, "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateAssistantDTO" - } + "schema": { "$ref": "#/components/schemas/CreateAssistantDTO" } } } }, @@ -21,21 +19,13 @@ "description": "", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Assistant" - } + "schema": { "$ref": "#/components/schemas/Assistant" } } } } }, - "tags": [ - "Assistants" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Assistants"], + "security": [{ "bearer": [] }] }, "get": { "operationId": "AssistantController_findAll", @@ -46,91 +36,63 @@ "required": false, "in": "query", "description": "This is the maximum number of items to return. Defaults to 100.", - "schema": { - "minimum": 0, - "maximum": 1000, - "type": "number" - } + "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" - } + "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" - } + "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" - } + "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" - } + "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" - } + "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" - } + "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" - } + "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" - } + "schema": { "format": "date-time", "type": "string" } } ], "responses": { @@ -140,22 +102,14 @@ "application/json": { "schema": { "type": "array", - "items": { - "$ref": "#/components/schemas/Assistant" - } + "items": { "$ref": "#/components/schemas/Assistant" } } } } } }, - "tags": [ - "Assistants" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Assistants"], + "security": [{ "bearer": [] }] } }, "/assistant/{id}": { @@ -167,9 +121,7 @@ "name": "id", "required": true, "in": "path", - "schema": { - "type": "string" - } + "schema": { "type": "string" } } ], "responses": { @@ -177,21 +129,13 @@ "description": "", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Assistant" - } + "schema": { "$ref": "#/components/schemas/Assistant" } } } } }, - "tags": [ - "Assistants" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Assistants"], + "security": [{ "bearer": [] }] }, "patch": { "operationId": "AssistantController_update", @@ -201,18 +145,14 @@ "name": "id", "required": true, "in": "path", - "schema": { - "type": "string" - } + "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateAssistantDTO" - } + "schema": { "$ref": "#/components/schemas/UpdateAssistantDTO" } } } }, @@ -221,21 +161,13 @@ "description": "", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Assistant" - } + "schema": { "$ref": "#/components/schemas/Assistant" } } } } }, - "tags": [ - "Assistants" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Assistants"], + "security": [{ "bearer": [] }] }, "delete": { "operationId": "AssistantController_remove", @@ -245,9 +177,7 @@ "name": "id", "required": true, "in": "path", - "schema": { - "type": "string" - } + "schema": { "type": "string" } } ], "responses": { @@ -255,21 +185,13 @@ "description": "", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Assistant" - } + "schema": { "$ref": "#/components/schemas/Assistant" } } } } }, - "tags": [ - "Assistants" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Assistants"], + "security": [{ "bearer": [] }] } }, "/call": { @@ -281,9 +203,7 @@ "required": true, "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateCallDTO" - } + "schema": { "$ref": "#/components/schemas/CreateCallDTO" } } } }, @@ -292,21 +212,13 @@ "description": "", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Call" - } + "schema": { "$ref": "#/components/schemas/Call" } } } } }, - "tags": [ - "Calls" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Calls"], + "security": [{ "bearer": [] }] }, "get": { "operationId": "CallController_findAll", @@ -317,100 +229,70 @@ "required": false, "in": "query", "description": "This will return calls with the specified assistantId.", - "schema": { - "type": "string" - } + "schema": { "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" - } + "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" - } + "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" - } + "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" - } + "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" - } + "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" - } + "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" - } + "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" - } + "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" - } + "schema": { "format": "date-time", "type": "string" } } ], "responses": { @@ -420,22 +302,14 @@ "application/json": { "schema": { "type": "array", - "items": { - "$ref": "#/components/schemas/Call" - } + "items": { "$ref": "#/components/schemas/Call" } } } } } }, - "tags": [ - "Calls" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Calls"], + "security": [{ "bearer": [] }] } }, "/call/{id}": { @@ -447,9 +321,7 @@ "name": "id", "required": true, "in": "path", - "schema": { - "type": "string" - } + "schema": { "type": "string" } } ], "responses": { @@ -457,21 +329,13 @@ "description": "", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Call" - } + "schema": { "$ref": "#/components/schemas/Call" } } } } }, - "tags": [ - "Calls" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Calls"], + "security": [{ "bearer": [] }] }, "patch": { "operationId": "CallController_update", @@ -481,18 +345,14 @@ "name": "id", "required": true, "in": "path", - "schema": { - "type": "string" - } + "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateCallDTO" - } + "schema": { "$ref": "#/components/schemas/UpdateCallDTO" } } } }, @@ -501,21 +361,13 @@ "description": "", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Call" - } + "schema": { "$ref": "#/components/schemas/Call" } } } } }, - "tags": [ - "Calls" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Calls"], + "security": [{ "bearer": [] }] }, "delete": { "operationId": "CallController_deleteCallData", @@ -525,9 +377,7 @@ "name": "id", "required": true, "in": "path", - "schema": { - "type": "string" - } + "schema": { "type": "string" } } ], "responses": { @@ -535,21 +385,13 @@ "description": "", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Call" - } + "schema": { "$ref": "#/components/schemas/Call" } } } } }, - "tags": [ - "Calls" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Calls"], + "security": [{ "bearer": [] }] } }, "/squad": { @@ -561,9 +403,7 @@ "required": true, "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateSquadDTO" - } + "schema": { "$ref": "#/components/schemas/CreateSquadDTO" } } } }, @@ -572,21 +412,13 @@ "description": "", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Squad" - } + "schema": { "$ref": "#/components/schemas/Squad" } } } } }, - "tags": [ - "Squads" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Squads"], + "security": [{ "bearer": [] }] }, "get": { "operationId": "SquadController_findAll", @@ -597,91 +429,63 @@ "required": false, "in": "query", "description": "This is the maximum number of items to return. Defaults to 100.", - "schema": { - "minimum": 0, - "maximum": 1000, - "type": "number" - } + "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" - } + "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" - } + "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" - } + "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" - } + "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" - } + "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" - } + "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" - } + "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" - } + "schema": { "format": "date-time", "type": "string" } } ], "responses": { @@ -691,22 +495,14 @@ "application/json": { "schema": { "type": "array", - "items": { - "$ref": "#/components/schemas/Squad" - } + "items": { "$ref": "#/components/schemas/Squad" } } } } } }, - "tags": [ - "Squads" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Squads"], + "security": [{ "bearer": [] }] } }, "/squad/{id}": { @@ -718,9 +514,7 @@ "name": "id", "required": true, "in": "path", - "schema": { - "type": "string" - } + "schema": { "type": "string" } } ], "responses": { @@ -728,21 +522,13 @@ "description": "", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Squad" - } + "schema": { "$ref": "#/components/schemas/Squad" } } } } }, - "tags": [ - "Squads" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Squads"], + "security": [{ "bearer": [] }] }, "patch": { "operationId": "SquadController_update", @@ -752,18 +538,14 @@ "name": "id", "required": true, "in": "path", - "schema": { - "type": "string" - } + "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateSquadDTO" - } + "schema": { "$ref": "#/components/schemas/UpdateSquadDTO" } } } }, @@ -772,21 +554,13 @@ "description": "", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Squad" - } + "schema": { "$ref": "#/components/schemas/Squad" } } } } }, - "tags": [ - "Squads" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Squads"], + "security": [{ "bearer": [] }] }, "delete": { "operationId": "SquadController_remove", @@ -796,9 +570,7 @@ "name": "id", "required": true, "in": "path", - "schema": { - "type": "string" - } + "schema": { "type": "string" } } ], "responses": { @@ -806,21 +578,13 @@ "description": "", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Squad" - } + "schema": { "$ref": "#/components/schemas/Squad" } } } } }, - "tags": [ - "Squads" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Squads"], + "security": [{ "bearer": [] }] } }, "/phone-number": { @@ -892,14 +656,8 @@ } } }, - "tags": [ - "Phone Numbers" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Phone Numbers"], + "security": [{ "bearer": [] }] }, "get": { "operationId": "PhoneNumberController_findAll", @@ -910,91 +668,63 @@ "required": false, "in": "query", "description": "This is the maximum number of items to return. Defaults to 100.", - "schema": { - "minimum": 0, - "maximum": 1000, - "type": "number" - } + "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" - } + "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" - } + "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" - } + "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" - } + "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" - } + "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" - } + "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" - } + "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" - } + "schema": { "format": "date-time", "type": "string" } } ], "responses": { @@ -1033,14 +763,8 @@ } } }, - "tags": [ - "Phone Numbers" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Phone Numbers"], + "security": [{ "bearer": [] }] } }, "/phone-number/{id}": { @@ -1052,9 +776,7 @@ "name": "id", "required": true, "in": "path", - "schema": { - "type": "string" - } + "schema": { "type": "string" } } ], "responses": { @@ -1090,14 +812,8 @@ } } }, - "tags": [ - "Phone Numbers" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Phone Numbers"], + "security": [{ "bearer": [] }] }, "patch": { "operationId": "PhoneNumberController_update", @@ -1107,18 +823,14 @@ "name": "id", "required": true, "in": "path", - "schema": { - "type": "string" - } + "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdatePhoneNumberDTO" - } + "schema": { "$ref": "#/components/schemas/UpdatePhoneNumberDTO" } } } }, @@ -1155,14 +867,8 @@ } } }, - "tags": [ - "Phone Numbers" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Phone Numbers"], + "security": [{ "bearer": [] }] }, "delete": { "operationId": "PhoneNumberController_remove", @@ -1172,9 +878,7 @@ "name": "id", "required": true, "in": "path", - "schema": { - "type": "string" - } + "schema": { "type": "string" } } ], "responses": { @@ -1210,14 +914,8 @@ } } }, - "tags": [ - "Phone Numbers" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Phone Numbers"], + "security": [{ "bearer": [] }] } }, "/tool": { @@ -1232,24 +930,39 @@ "schema": { "oneOf": [ { - "$ref": "#/components/schemas/CreateMakeToolDTO", - "title": "MakeTool" + "$ref": "#/components/schemas/CreateDtmfToolDTO", + "title": "DtmfTool" }, { - "$ref": "#/components/schemas/CreateGhlToolDTO", - "title": "GhlTool" + "$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" } ], "discriminator": { "propertyName": "type", "mapping": { - "make": "#/components/schemas/CreateMakeToolDTO", + "dtmf": "#/components/schemas/CreateDtmfToolDTO", + "endCall": "#/components/schemas/CreateEndCallToolDTO", + "function": "#/components/schemas/CreateFunctionToolDTO", "ghl": "#/components/schemas/CreateGhlToolDTO", - "function": "#/components/schemas/CreateFunctionToolDTO" + "make": "#/components/schemas/CreateMakeToolDTO", + "transferCall": "#/components/schemas/CreateTransferCallToolDTO" } } } @@ -1264,24 +977,39 @@ "schema": { "oneOf": [ { - "$ref": "#/components/schemas/MakeTool", - "title": "MakeTool" + "$ref": "#/components/schemas/DtmfTool", + "title": "DtmfTool" }, { - "$ref": "#/components/schemas/GhlTool", - "title": "GhlTool" + "$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" } ], "discriminator": { "propertyName": "type", "mapping": { - "make": "#/components/schemas/MakeTool", + "dtmf": "#/components/schemas/DtmfTool", + "endCall": "#/components/schemas/EndCallTool", + "function": "#/components/schemas/FunctionTool", "ghl": "#/components/schemas/GhlTool", - "function": "#/components/schemas/FunctionTool" + "make": "#/components/schemas/MakeTool", + "transferCall": "#/components/schemas/TransferCallTool" } } } @@ -1289,14 +1017,8 @@ } } }, - "tags": [ - "Tools" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Tools"], + "security": [{ "bearer": [] }] }, "get": { "operationId": "ToolController_findAll", @@ -1307,91 +1029,63 @@ "required": false, "in": "query", "description": "This is the maximum number of items to return. Defaults to 100.", - "schema": { - "minimum": 0, - "maximum": 1000, - "type": "number" - } + "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" - } + "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" - } + "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" - } + "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" - } + "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" - } + "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" - } + "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" - } + "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" - } + "schema": { "format": "date-time", "type": "string" } } ], "responses": { @@ -1404,24 +1098,39 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/MakeTool", - "title": "MakeTool" + "$ref": "#/components/schemas/DtmfTool", + "title": "DtmfTool" }, { - "$ref": "#/components/schemas/GhlTool", - "title": "GhlTool" + "$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" } ], "discriminator": { "propertyName": "type", "mapping": { - "make": "#/components/schemas/MakeTool", + "dtmf": "#/components/schemas/DtmfTool", + "endCall": "#/components/schemas/EndCallTool", + "function": "#/components/schemas/FunctionTool", "ghl": "#/components/schemas/GhlTool", - "function": "#/components/schemas/FunctionTool" + "make": "#/components/schemas/MakeTool", + "transferCall": "#/components/schemas/TransferCallTool" } } } @@ -1430,14 +1139,8 @@ } } }, - "tags": [ - "Tools" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Tools"], + "security": [{ "bearer": [] }] } }, "/tool/{id}": { @@ -1449,9 +1152,7 @@ "name": "id", "required": true, "in": "path", - "schema": { - "type": "string" - } + "schema": { "type": "string" } } ], "responses": { @@ -1462,24 +1163,39 @@ "schema": { "oneOf": [ { - "$ref": "#/components/schemas/MakeTool", - "title": "MakeTool" + "$ref": "#/components/schemas/DtmfTool", + "title": "DtmfTool" }, { - "$ref": "#/components/schemas/GhlTool", - "title": "GhlTool" + "$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" } ], "discriminator": { "propertyName": "type", "mapping": { - "make": "#/components/schemas/MakeTool", + "dtmf": "#/components/schemas/DtmfTool", + "endCall": "#/components/schemas/EndCallTool", + "function": "#/components/schemas/FunctionTool", "ghl": "#/components/schemas/GhlTool", - "function": "#/components/schemas/FunctionTool" + "make": "#/components/schemas/MakeTool", + "transferCall": "#/components/schemas/TransferCallTool" } } } @@ -1487,14 +1203,8 @@ } } }, - "tags": [ - "Tools" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Tools"], + "security": [{ "bearer": [] }] }, "patch": { "operationId": "ToolController_update", @@ -1504,18 +1214,14 @@ "name": "id", "required": true, "in": "path", - "schema": { - "type": "string" - } + "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateToolDTO" - } + "schema": { "$ref": "#/components/schemas/UpdateToolDTO" } } } }, @@ -1527,24 +1233,39 @@ "schema": { "oneOf": [ { - "$ref": "#/components/schemas/MakeTool", - "title": "MakeTool" + "$ref": "#/components/schemas/DtmfTool", + "title": "DtmfTool" }, { - "$ref": "#/components/schemas/GhlTool", - "title": "GhlTool" + "$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" } ], "discriminator": { "propertyName": "type", "mapping": { - "make": "#/components/schemas/MakeTool", + "dtmf": "#/components/schemas/DtmfTool", + "endCall": "#/components/schemas/EndCallTool", + "function": "#/components/schemas/FunctionTool", "ghl": "#/components/schemas/GhlTool", - "function": "#/components/schemas/FunctionTool" + "make": "#/components/schemas/MakeTool", + "transferCall": "#/components/schemas/TransferCallTool" } } } @@ -1552,14 +1273,8 @@ } } }, - "tags": [ - "Tools" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Tools"], + "security": [{ "bearer": [] }] }, "delete": { "operationId": "ToolController_remove", @@ -1569,9 +1284,7 @@ "name": "id", "required": true, "in": "path", - "schema": { - "type": "string" - } + "schema": { "type": "string" } } ], "responses": { @@ -1582,24 +1295,39 @@ "schema": { "oneOf": [ { - "$ref": "#/components/schemas/MakeTool", - "title": "MakeTool" + "$ref": "#/components/schemas/DtmfTool", + "title": "DtmfTool" }, { - "$ref": "#/components/schemas/GhlTool", - "title": "GhlTool" + "$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" } ], "discriminator": { "propertyName": "type", "mapping": { - "make": "#/components/schemas/MakeTool", + "dtmf": "#/components/schemas/DtmfTool", + "endCall": "#/components/schemas/EndCallTool", + "function": "#/components/schemas/FunctionTool", "ghl": "#/components/schemas/GhlTool", - "function": "#/components/schemas/FunctionTool" + "make": "#/components/schemas/MakeTool", + "transferCall": "#/components/schemas/TransferCallTool" } } } @@ -1607,14 +1335,8 @@ } } }, - "tags": [ - "Tools" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Tools"], + "security": [{ "bearer": [] }] } }, "/file": { @@ -1626,9 +1348,7 @@ "required": true, "content": { "multipart/form-data": { - "schema": { - "$ref": "#/components/schemas/CreateFileDTO" - } + "schema": { "$ref": "#/components/schemas/CreateFileDTO" } } } }, @@ -1637,24 +1357,14 @@ "description": "File uploaded successfully", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/File" - } + "schema": { "$ref": "#/components/schemas/File" } } } }, - "400": { - "description": "Invalid file" - } + "400": { "description": "Invalid file" } }, - "tags": [ - "Files" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Files"], + "security": [{ "bearer": [] }] }, "get": { "operationId": "FileController_findAll", @@ -1667,22 +1377,14 @@ "application/json": { "schema": { "type": "array", - "items": { - "$ref": "#/components/schemas/File" - } + "items": { "$ref": "#/components/schemas/File" } } } } } }, - "tags": [ - "Files" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Files"], + "security": [{ "bearer": [] }] } }, "/file/{id}": { @@ -1694,9 +1396,7 @@ "name": "id", "required": true, "in": "path", - "schema": { - "type": "string" - } + "schema": { "type": "string" } } ], "responses": { @@ -1704,21 +1404,13 @@ "description": "", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/File" - } + "schema": { "$ref": "#/components/schemas/File" } } } } }, - "tags": [ - "Files" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Files"], + "security": [{ "bearer": [] }] }, "patch": { "operationId": "FileController_update", @@ -1728,18 +1420,14 @@ "name": "id", "required": true, "in": "path", - "schema": { - "type": "string" - } + "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateFileDTO" - } + "schema": { "$ref": "#/components/schemas/UpdateFileDTO" } } } }, @@ -1748,21 +1436,13 @@ "description": "", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/File" - } + "schema": { "$ref": "#/components/schemas/File" } } } } }, - "tags": [ - "Files" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Files"], + "security": [{ "bearer": [] }] }, "delete": { "operationId": "FileController_remove", @@ -1772,9 +1452,7 @@ "name": "id", "required": true, "in": "path", - "schema": { - "type": "string" - } + "schema": { "type": "string" } } ], "responses": { @@ -1782,21 +1460,13 @@ "description": "", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/File" - } + "schema": { "$ref": "#/components/schemas/File" } } } } }, - "tags": [ - "Files" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Files"], + "security": [{ "bearer": [] }] } }, "/log": { @@ -1808,123 +1478,84 @@ "name": "callId", "required": true, "in": "query", - "schema": { - "type": "string" - } + "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" - } + "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" - } + "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" - } + "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" - } + "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" - } + "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" - } + "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" - } + "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" - } + "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" - } + "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" - } + "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" - } + "schema": { "format": "date-time", "type": "string" } } ], "responses": { @@ -1939,52 +1570,23 @@ } } }, - "tags": [ - "Call Logs" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Call Logs"], + "security": [{ "bearer": [] }] } }, - "/metrics": { - "get": { - "operationId": "MetricsController_findAll", - "summary": "List Billing Metrics", - "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" + "/analytics": { + "post": { + "operationId": "MetricsController_query", + "summary": "Create Analytics Queries", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/AnalyticsQueryDTO" } } } - ], + }, "responses": { "200": { "description": "", @@ -1993,21 +1595,16 @@ "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/Metrics" + "$ref": "#/components/schemas/AnalyticsQueryResult" } } } } - } + }, + "201": { "description": "" } }, - "tags": [ - "Billing Metrics" - ], - "security": [ - { - "bearer": [] - } - ] + "tags": ["Analytics"], + "security": [{ "bearer": [] }] } } }, @@ -2015,16 +1612,10 @@ "title": "Vapi API", "description": "API for building voice assistants", "version": "1.0", - "contact": { - - } + "contact": {} }, "tags": [], - "servers": [ - { - "url": "https://api.vapi.ai" - } - ], + "servers": [{ "url": "https://api.vapi.ai" }], "components": { "securitySchemes": { "bearer": { @@ -2041,9 +1632,7 @@ "provider": { "type": "string", "description": "This is the transcription provider that will be used.", - "enum": [ - "deepgram" - ] + "enum": ["deepgram"] }, "model": { "description": "This is the Deepgram model that will be used. A list of models can be found here: https://developers.deepgram.com/docs/models-languages-overview", @@ -2081,9 +1670,7 @@ "base-video" ] }, - { - "type": "string" - } + { "type": "string" } ] }, "language": { @@ -2161,9 +1748,7 @@ } } }, - "required": [ - "provider" - ] + "required": ["provider"] }, "TalkscriberTranscriber": { "type": "object", @@ -2171,16 +1756,12 @@ "provider": { "type": "string", "description": "This is the transcription provider that will be used.", - "enum": [ - "talkscriber" - ] + "enum": ["talkscriber"] }, "model": { "type": "string", "description": "This is the model that will be used for the transcription.", - "enum": [ - "whisper" - ] + "enum": ["whisper"] }, "language": { "type": "string", @@ -2289,9 +1870,7 @@ ] } }, - "required": [ - "provider" - ] + "required": ["provider"] }, "Condition": { "type": "object", @@ -2307,30 +1886,17 @@ "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" - ] + "enum": ["eq", "neq", "gt", "gte", "lt", "lte"] } }, - "required": [ - "param", - "value", - "operator" - ] + "required": ["param", "value", "operator"] }, "ToolMessageStart": { "type": "object", "properties": { "type": { "type": "string", - "enum": [ - "request-start" - ], + "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": { @@ -2340,15 +1906,10 @@ "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" - } + "items": { "$ref": "#/components/schemas/Condition" } } }, - "required": [ - "type", - "content" - ] + "required": ["type", "content"] }, "ToolMessageComplete": { "type": "object", @@ -2356,17 +1917,12 @@ "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" - ] + "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" - ] + "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"] }, "content": { "type": "string", @@ -2375,15 +1931,10 @@ "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" - } + "items": { "$ref": "#/components/schemas/Condition" } } }, - "required": [ - "type", - "content" - ] + "required": ["type", "content"] }, "ToolMessageFailed": { "type": "object", @@ -2391,9 +1942,7 @@ "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" - ] + "enum": ["request-failed"] }, "content": { "type": "string", @@ -2402,15 +1951,10 @@ "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" - } + "items": { "$ref": "#/components/schemas/Condition" } } }, - "required": [ - "type", - "content" - ] + "required": ["type", "content"] }, "ToolMessageDelayed": { "type": "object", @@ -2418,9 +1962,7 @@ "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.", - "enum": [ - "request-response-delayed" - ] + "enum": ["request-response-delayed"] }, "timingMilliseconds": { "type": "number", @@ -2436,15 +1978,10 @@ "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" - } + "items": { "$ref": "#/components/schemas/Condition" } } }, - "required": [ - "type", - "content" - ] + "required": ["type", "content"] }, "JsonSchema": { "type": "object", @@ -2476,14 +2013,10 @@ "required": { "description": "This is a list of properties that are required.\n\nThis only makes sense if the type is \"object\".", "type": "array", - "items": { - "type": "string" - } + "items": { "type": "string" } } }, - "required": [ - "type" - ] + "required": ["type"] }, "OpenAIFunctionParameters": { "type": "object", @@ -2491,9 +2024,7 @@ "type": { "type": "string", "description": "This must be set to 'object'. It instructs the model to return a JSON object containing the function call properties.", - "enum": [ - "object" - ] + "enum": ["object"] }, "properties": { "type": "object", @@ -2505,15 +2036,10 @@ "required": { "description": "This specifies the properties that are required by the function.", "type": "array", - "items": { - "type": "string" - } + "items": { "type": "string" } } }, - "required": [ - "type", - "properties" - ] + "required": ["type", "properties"] }, "OpenAIFunction": { "type": "object", @@ -2532,25 +2058,21 @@ "parameters": { "description": "These are the parameters the functions accepts, described as a JSON Schema object.\n\nSee the [OpenAI guide](https://platform.openai.com/docs/guides/function-calling) for examples, and the [JSON Schema reference](https://json-schema.org/understanding-json-schema) for documentation about the format.\n\nOmitting parameters defines a function with an empty parameter list.", "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunctionParameters" - } + { "$ref": "#/components/schemas/OpenAIFunctionParameters" } ] } }, - "required": [ - "name" - ] + "required": ["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": 20, - "example": 10, - "description": "This is the timeout in seconds for the request to your server. Defaults to 10 seconds." + "example": 20 }, "url": { "type": "string", @@ -2561,9 +2083,7 @@ "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" - ] + "required": ["url"] }, "CreateDtmfToolDTO": { "type": "object", @@ -2599,31 +2119,19 @@ }, "type": { "type": "string", - "enum": [ - "dtmf" - ], + "enum": ["dtmf"], "description": "The type of tool. \"dtmf\" for DTMF tool." }, "function": { - "description": "This is the function definition of the tool.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, this is a custom function definition.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [{ "$ref": "#/components/schemas/OpenAIFunction" }] }, "server": { "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", - "allOf": [ - { - "$ref": "#/components/schemas/Server" - } - ] + "allOf": [{ "$ref": "#/components/schemas/Server" }] } }, - "required": [ - "type" - ] + "required": ["type"] }, "CreateEndCallToolDTO": { "type": "object", @@ -2659,33 +2167,21 @@ }, "type": { "type": "string", - "enum": [ - "endCall" - ], + "enum": ["endCall"], "description": "The type of tool. \"endCall\" for End Call tool." }, "function": { - "description": "This is the function definition of the tool.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, this is a custom function definition.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [{ "$ref": "#/components/schemas/OpenAIFunction" }] }, "server": { "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", - "allOf": [ - { - "$ref": "#/components/schemas/Server" - } - ] + "allOf": [{ "$ref": "#/components/schemas/Server" }] } }, - "required": [ - "type" - ] + "required": ["type"] }, - "CreateFunctionToolDTO": { + "CreateVoicemailToolDTO": { "type": "object", "properties": { "async": { @@ -2719,44 +2215,21 @@ }, "type": { "type": "string", - "enum": [ - "function" - ], - "description": "The type of tool. \"function\" for Function tool." + "enum": ["voicemail"], + "description": "The type of tool. \"voicemail\". This uses the model itself to determine if a voicemil was reached. Can be used alternatively/alongside with TwilioVoicemailDetection" }, "function": { - "description": "This is the function definition of the tool.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, this is a custom function definition.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [{ "$ref": "#/components/schemas/OpenAIFunction" }] }, "server": { "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", - "allOf": [ - { - "$ref": "#/components/schemas/Server" - } - ] + "allOf": [{ "$ref": "#/components/schemas/Server" }] } }, - "required": [ - "type" - ] - }, - "GhlToolMetadata": { - "type": "object", - "properties": { - "workflowId": { - "type": "string" - }, - "locationId": { - "type": "string" - } - } + "required": ["type"] }, - "CreateGhlToolDTO": { + "CreateFunctionToolDTO": { "type": "object", "properties": { "async": { @@ -2790,45 +2263,81 @@ }, "type": { "type": "string", - "enum": [ - "ghl" - ], - "description": "The type of tool. \"ghl\" for GHL tool." - }, - "metadata": { - "$ref": "#/components/schemas/GhlToolMetadata" + "enum": ["function"], + "description": "The type of tool. \"function\" for Function tool." }, "function": { - "description": "This is the function definition of the tool.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, this is a custom function definition.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [{ "$ref": "#/components/schemas/OpenAIFunction" }] }, "server": { "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", - "allOf": [ - { - "$ref": "#/components/schemas/Server" - } - ] + "allOf": [{ "$ref": "#/components/schemas/Server" }] } }, - "required": [ - "type", - "metadata" - ] + "required": ["type"] }, - "MakeToolMetadata": { + "GhlToolMetadata": { + "type": "object", + "properties": { + "workflowId": { "type": "string" }, + "locationId": { "type": "string" } + } + }, + "CreateGhlToolDTO": { "type": "object", "properties": { - "scenarioId": { - "type": "number" + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false + }, + "messages": { + "type": "array", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ToolMessageStart", + "title": "ToolMessageStart" + }, + { + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" + }, + { + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" + }, + { + "$ref": "#/components/schemas/ToolMessageDelayed", + "title": "ToolMessageDelayed" + } + ] + } + }, + "type": { + "type": "string", + "enum": ["ghl"], + "description": "The type of tool. \"ghl\" for GHL tool." }, - "triggerHookId": { - "type": "number" + "metadata": { "$ref": "#/components/schemas/GhlToolMetadata" }, + "function": { + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [{ "$ref": "#/components/schemas/OpenAIFunction" }] + }, + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [{ "$ref": "#/components/schemas/Server" }] } + }, + "required": ["type", "metadata"] + }, + "MakeToolMetadata": { + "type": "object", + "properties": { + "scenarioId": { "type": "number" }, + "triggerHookId": { "type": "number" } } }, "CreateMakeToolDTO": { @@ -2865,45 +2374,25 @@ }, "type": { "type": "string", - "enum": [ - "make" - ], + "enum": ["make"], "description": "The type of tool. \"make\" for Make tool." }, - "metadata": { - "$ref": "#/components/schemas/MakeToolMetadata" - }, + "metadata": { "$ref": "#/components/schemas/MakeToolMetadata" }, "function": { - "description": "This is the function definition of the tool.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, this is a custom function definition.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [{ "$ref": "#/components/schemas/OpenAIFunction" }] }, "server": { "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", - "allOf": [ - { - "$ref": "#/components/schemas/Server" - } - ] + "allOf": [{ "$ref": "#/components/schemas/Server" }] } }, - "required": [ - "type", - "metadata" - ] + "required": ["type", "metadata"] }, "AssistantTransferDestination": { "type": "object", "properties": { - "type": { - "type": "string", - "enum": [ - "assistant" - ] - }, + "type": { "type": "string", "enum": ["assistant"] }, "assistantName": { "type": "string", "description": "This is the assistant to transfer the call to." @@ -2917,20 +2406,12 @@ "description": "This is the description of the destination, used by the AI to choose when and how to transfer the call." } }, - "required": [ - "type", - "assistantName" - ] + "required": ["type", "assistantName"] }, "NumberTransferDestination": { "type": "object", "properties": { - "type": { - "type": "string", - "enum": [ - "number" - ] - }, + "type": { "type": "string", "enum": ["number"] }, "number": { "type": "string", "description": "This is the phone number to transfer the call to." @@ -2944,20 +2425,12 @@ "description": "This is the description of the destination, used by the AI to choose when and how to transfer the call." } }, - "required": [ - "type", - "number" - ] + "required": ["type", "number"] }, "SipTransferDestination": { "type": "object", "properties": { - "type": { - "type": "string", - "enum": [ - "sip" - ] - }, + "type": { "type": "string", "enum": ["sip"] }, "sipUri": { "type": "string", "description": "This is the SIP URI to transfer the call to." @@ -2971,10 +2444,7 @@ "description": "This is the description of the destination. This is used by the model to decide when to transfer the call to this destination." } }, - "required": [ - "type", - "sipUri" - ] + "required": ["type", "sipUri"] }, "CreateTransferCallToolDTO": { "type": "object", @@ -3008,12 +2478,7 @@ ] } }, - "type": { - "type": "string", - "enum": [ - "transferCall" - ] - }, + "type": { "type": "string", "enum": ["transferCall"] }, "destinations": { "type": "array", "description": "These are the destinations that the call can be transferred to. If no destinations are provided, server.url will be used to get the transfer destination once the tool is called.", @@ -3035,74 +2500,35 @@ } }, "function": { - "description": "This is the function definition of the tool.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, this is a custom function definition.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [{ "$ref": "#/components/schemas/OpenAIFunction" }] }, "server": { "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", - "allOf": [ - { - "$ref": "#/components/schemas/Server" - } - ] + "allOf": [{ "$ref": "#/components/schemas/Server" }] } }, - "required": [ - "type" - ] + "required": ["type"] }, "OpenAIMessage": { "type": "object", "properties": { - "content": { - "type": "string", - "nullable": true - }, + "content": { "type": "string", "nullable": true }, "role": { "type": "string", - "enum": [ - "assistant", - "function", - "user", - "system", - "tool" - ] + "enum": ["assistant", "function", "user", "system", "tool"] } }, - "required": [ - "content", - "role" - ] + "required": ["content", "role"] }, "KnowledgeBase": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "canonical" - ] - }, - "topK": { - "type": "number", - "minimum": 1, - "maximum": 10 - }, - "fileIds": { - "type": "array", - "items": { - "type": "string" - } - } + "provider": { "type": "string", "enum": ["canonical"] }, + "topK": { "type": "number", "minimum": 1, "maximum": 10 }, + "fileIds": { "type": "array", "items": { "type": "string" } } }, - "required": [ - "provider", - "fileIds" - ] + "required": ["provider", "fileIds"] }, "AnyscaleModel": { "type": "object", @@ -3110,9 +2536,7 @@ "messages": { "description": "This is the starting state for the conversation.", "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAIMessage" - } + "items": { "$ref": "#/components/schemas/OpenAIMessage" } }, "tools": { "type": "array", @@ -3120,28 +2544,32 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/CreateTransferCallToolDTO", - "title": "TransferTool" - }, - { - "$ref": "#/components/schemas/CreateFunctionToolDTO", - "title": "FunctionTool" + "$ref": "#/components/schemas/CreateDtmfToolDTO", + "title": "DtmfTool" }, { "$ref": "#/components/schemas/CreateEndCallToolDTO", "title": "EndCallTool" }, { - "$ref": "#/components/schemas/CreateDtmfToolDTO", - "title": "DtmfTool" + "$ref": "#/components/schemas/CreateVoicemailToolDTO", + "title": "voicemail" }, { - "$ref": "#/components/schemas/CreateMakeToolDTO", - "title": "MakeTool" + "$ref": "#/components/schemas/CreateFunctionToolDTO", + "title": "FunctionTool" }, { "$ref": "#/components/schemas/CreateGhlToolDTO", "title": "GhlTool" + }, + { + "$ref": "#/components/schemas/CreateMakeToolDTO", + "title": "MakeTool" + }, + { + "$ref": "#/components/schemas/CreateTransferCallToolDTO", + "title": "TransferTool" } ] } @@ -3149,16 +2577,9 @@ "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" - } - }, - "provider": { - "type": "string", - "enum": [ - "anyscale" - ] + "items": { "type": "string" } }, + "provider": { "type": "string", "enum": ["anyscale"] }, "model": { "type": "string", "description": "This is the name of the model. Ex. cognitivecomputations/dolphin-mixtral-8x7b" @@ -3171,11 +2592,7 @@ }, "knowledgeBase": { "description": "These are the options for the knowledge base.", - "allOf": [ - { - "$ref": "#/components/schemas/KnowledgeBase" - } - ] + "allOf": [{ "$ref": "#/components/schemas/KnowledgeBase" }] }, "maxTokens": { "type": "number", @@ -3188,10 +2605,7 @@ "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." } }, - "required": [ - "provider", - "model" - ] + "required": ["provider", "model"] }, "AnthropicModel": { "type": "object", @@ -3199,9 +2613,7 @@ "messages": { "description": "This is the starting state for the conversation.", "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAIMessage" - } + "items": { "$ref": "#/components/schemas/OpenAIMessage" } }, "tools": { "type": "array", @@ -3209,28 +2621,32 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/CreateTransferCallToolDTO", - "title": "TransferTool" - }, - { - "$ref": "#/components/schemas/CreateFunctionToolDTO", - "title": "FunctionTool" + "$ref": "#/components/schemas/CreateDtmfToolDTO", + "title": "DtmfTool" }, { "$ref": "#/components/schemas/CreateEndCallToolDTO", "title": "EndCallTool" }, { - "$ref": "#/components/schemas/CreateDtmfToolDTO", - "title": "DtmfTool" + "$ref": "#/components/schemas/CreateVoicemailToolDTO", + "title": "voicemail" }, { - "$ref": "#/components/schemas/CreateMakeToolDTO", - "title": "MakeTool" + "$ref": "#/components/schemas/CreateFunctionToolDTO", + "title": "FunctionTool" }, { "$ref": "#/components/schemas/CreateGhlToolDTO", "title": "GhlTool" + }, + { + "$ref": "#/components/schemas/CreateMakeToolDTO", + "title": "MakeTool" + }, + { + "$ref": "#/components/schemas/CreateTransferCallToolDTO", + "title": "TransferTool" } ] } @@ -3238,9 +2654,7 @@ "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" - } + "items": { "type": "string" } }, "model": { "type": "string", @@ -3248,15 +2662,11 @@ "enum": [ "claude-3-opus-20240229", "claude-3-sonnet-20240229", - "claude-3-haiku-20240307" - ] - }, - "provider": { - "type": "string", - "enum": [ - "anthropic" + "claude-3-haiku-20240307", + "claude-3-5-sonnet-20240620" ] }, + "provider": { "type": "string", "enum": ["anthropic"] }, "temperature": { "type": "number", "description": "This is the temperature that will be used for calls. Default is 0 to leverage caching for lower latency.", @@ -3265,11 +2675,7 @@ }, "knowledgeBase": { "description": "These are the options for the knowledge base.", - "allOf": [ - { - "$ref": "#/components/schemas/KnowledgeBase" - } - ] + "allOf": [{ "$ref": "#/components/schemas/KnowledgeBase" }] }, "maxTokens": { "type": "number", @@ -3282,10 +2688,7 @@ "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." } }, - "required": [ - "model", - "provider" - ] + "required": ["model", "provider"] }, "CustomLLMModel": { "type": "object", @@ -3293,9 +2696,7 @@ "messages": { "description": "This is the starting state for the conversation.", "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAIMessage" - } + "items": { "$ref": "#/components/schemas/OpenAIMessage" } }, "tools": { "type": "array", @@ -3303,28 +2704,32 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/CreateTransferCallToolDTO", - "title": "TransferTool" - }, - { - "$ref": "#/components/schemas/CreateFunctionToolDTO", - "title": "FunctionTool" + "$ref": "#/components/schemas/CreateDtmfToolDTO", + "title": "DtmfTool" }, { "$ref": "#/components/schemas/CreateEndCallToolDTO", "title": "EndCallTool" }, { - "$ref": "#/components/schemas/CreateDtmfToolDTO", - "title": "DtmfTool" + "$ref": "#/components/schemas/CreateVoicemailToolDTO", + "title": "voicemail" }, { - "$ref": "#/components/schemas/CreateMakeToolDTO", - "title": "MakeTool" + "$ref": "#/components/schemas/CreateFunctionToolDTO", + "title": "FunctionTool" }, { "$ref": "#/components/schemas/CreateGhlToolDTO", "title": "GhlTool" + }, + { + "$ref": "#/components/schemas/CreateMakeToolDTO", + "title": "MakeTool" + }, + { + "$ref": "#/components/schemas/CreateTransferCallToolDTO", + "title": "TransferTool" } ] } @@ -3332,25 +2737,17 @@ "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" - } + "items": { "type": "string" } }, "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.", - "enum": [ - "custom-llm" - ] + "enum": ["custom-llm"] }, "metadataSendMode": { "type": "string", "description": "This determines whether metadata is sent in requests to the custom provider.\n\n- `off` will not send any metadata. payload will look like `{ messages }`\n- `variable` will send `assistant.metadata` as a variable on the payload. payload will look like `{ messages, metadata }`\n- `destructured` will send `assistant.metadata` fields directly on the payload. payload will look like `{ messages, ...metadata }`\n\nFurther, `variable` and `destructured` will send `call`, `phoneNumber`, and `customer` objects in the payload.\n\nDefault is `variable`.", - "enum": [ - "off", - "variable", - "destructured" - ] + "enum": ["off", "variable", "destructured"] }, "url": { "type": "string", @@ -3368,11 +2765,7 @@ }, "knowledgeBase": { "description": "These are the options for the knowledge base.", - "allOf": [ - { - "$ref": "#/components/schemas/KnowledgeBase" - } - ] + "allOf": [{ "$ref": "#/components/schemas/KnowledgeBase" }] }, "maxTokens": { "type": "number", @@ -3385,11 +2778,7 @@ "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." } }, - "required": [ - "provider", - "url", - "model" - ] + "required": ["provider", "url", "model"] }, "DeepInfraModel": { "type": "object", @@ -3397,9 +2786,7 @@ "messages": { "description": "This is the starting state for the conversation.", "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAIMessage" - } + "items": { "$ref": "#/components/schemas/OpenAIMessage" } }, "tools": { "type": "array", @@ -3407,28 +2794,32 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/CreateTransferCallToolDTO", - "title": "TransferTool" - }, - { - "$ref": "#/components/schemas/CreateFunctionToolDTO", - "title": "FunctionTool" + "$ref": "#/components/schemas/CreateDtmfToolDTO", + "title": "DtmfTool" }, { "$ref": "#/components/schemas/CreateEndCallToolDTO", "title": "EndCallTool" }, { - "$ref": "#/components/schemas/CreateDtmfToolDTO", - "title": "DtmfTool" + "$ref": "#/components/schemas/CreateVoicemailToolDTO", + "title": "voicemail" }, { - "$ref": "#/components/schemas/CreateMakeToolDTO", - "title": "MakeTool" + "$ref": "#/components/schemas/CreateFunctionToolDTO", + "title": "FunctionTool" }, { "$ref": "#/components/schemas/CreateGhlToolDTO", "title": "GhlTool" + }, + { + "$ref": "#/components/schemas/CreateMakeToolDTO", + "title": "MakeTool" + }, + { + "$ref": "#/components/schemas/CreateTransferCallToolDTO", + "title": "TransferTool" } ] } @@ -3436,16 +2827,9 @@ "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" - } - }, - "provider": { - "type": "string", - "enum": [ - "deepinfra" - ] + "items": { "type": "string" } }, + "provider": { "type": "string", "enum": ["deepinfra"] }, "model": { "type": "string", "description": "This is the name of the model. Ex. cognitivecomputations/dolphin-mixtral-8x7b" @@ -3458,11 +2842,7 @@ }, "knowledgeBase": { "description": "These are the options for the knowledge base.", - "allOf": [ - { - "$ref": "#/components/schemas/KnowledgeBase" - } - ] + "allOf": [{ "$ref": "#/components/schemas/KnowledgeBase" }] }, "maxTokens": { "type": "number", @@ -3475,10 +2855,7 @@ "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." } }, - "required": [ - "provider", - "model" - ] + "required": ["provider", "model"] }, "GroqModel": { "type": "object", @@ -3486,9 +2863,7 @@ "messages": { "description": "This is the starting state for the conversation.", "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAIMessage" - } + "items": { "$ref": "#/components/schemas/OpenAIMessage" } }, "tools": { "type": "array", @@ -3496,28 +2871,32 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/CreateTransferCallToolDTO", - "title": "TransferTool" - }, - { - "$ref": "#/components/schemas/CreateFunctionToolDTO", - "title": "FunctionTool" + "$ref": "#/components/schemas/CreateDtmfToolDTO", + "title": "DtmfTool" }, { "$ref": "#/components/schemas/CreateEndCallToolDTO", "title": "EndCallTool" }, { - "$ref": "#/components/schemas/CreateDtmfToolDTO", - "title": "DtmfTool" + "$ref": "#/components/schemas/CreateVoicemailToolDTO", + "title": "voicemail" }, { - "$ref": "#/components/schemas/CreateMakeToolDTO", - "title": "MakeTool" + "$ref": "#/components/schemas/CreateFunctionToolDTO", + "title": "FunctionTool" }, { "$ref": "#/components/schemas/CreateGhlToolDTO", "title": "GhlTool" + }, + { + "$ref": "#/components/schemas/CreateMakeToolDTO", + "title": "MakeTool" + }, + { + "$ref": "#/components/schemas/CreateTransferCallToolDTO", + "title": "TransferTool" } ] } @@ -3525,25 +2904,14 @@ "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" - } + "items": { "type": "string" } }, "model": { "type": "string", "description": "This is the name of the model. Ex. cognitivecomputations/dolphin-mixtral-8x7b", - "enum": [ - "mixtral-8x7b-32768", - "llama3-8b-8192", - "llama3-70b-8192" - ] - }, - "provider": { - "type": "string", - "enum": [ - "groq" - ] + "enum": ["mixtral-8x7b-32768", "llama3-8b-8192", "llama3-70b-8192"] }, + "provider": { "type": "string", "enum": ["groq"] }, "temperature": { "type": "number", "description": "This is the temperature that will be used for calls. Default is 0 to leverage caching for lower latency.", @@ -3552,11 +2920,7 @@ }, "knowledgeBase": { "description": "These are the options for the knowledge base.", - "allOf": [ - { - "$ref": "#/components/schemas/KnowledgeBase" - } - ] + "allOf": [{ "$ref": "#/components/schemas/KnowledgeBase" }] }, "maxTokens": { "type": "number", @@ -3569,10 +2933,7 @@ "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." } }, - "required": [ - "model", - "provider" - ] + "required": ["model", "provider"] }, "OpenAIModel": { "type": "object", @@ -3580,9 +2941,7 @@ "messages": { "description": "This is the starting state for the conversation.", "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAIMessage" - } + "items": { "$ref": "#/components/schemas/OpenAIMessage" } }, "tools": { "type": "array", @@ -3590,28 +2949,32 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/CreateTransferCallToolDTO", - "title": "TransferTool" - }, - { - "$ref": "#/components/schemas/CreateFunctionToolDTO", - "title": "FunctionTool" + "$ref": "#/components/schemas/CreateDtmfToolDTO", + "title": "DtmfTool" }, { "$ref": "#/components/schemas/CreateEndCallToolDTO", "title": "EndCallTool" }, { - "$ref": "#/components/schemas/CreateDtmfToolDTO", - "title": "DtmfTool" + "$ref": "#/components/schemas/CreateVoicemailToolDTO", + "title": "voicemail" }, { - "$ref": "#/components/schemas/CreateMakeToolDTO", - "title": "MakeTool" + "$ref": "#/components/schemas/CreateFunctionToolDTO", + "title": "FunctionTool" }, { "$ref": "#/components/schemas/CreateGhlToolDTO", "title": "GhlTool" + }, + { + "$ref": "#/components/schemas/CreateMakeToolDTO", + "title": "MakeTool" + }, + { + "$ref": "#/components/schemas/CreateTransferCallToolDTO", + "title": "TransferTool" } ] } @@ -3619,16 +2982,12 @@ "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" - } + "items": { "type": "string" } }, "provider": { "type": "string", "description": "This is the provider that will be used for the model.", - "enum": [ - "openai" - ] + "enum": ["openai"] }, "model": { "type": "string", @@ -3669,10 +3028,7 @@ "gpt-3.5-turbo-16k", "gpt-3.5-turbo-0613" ], - "example": [ - "gpt-4-0125-preview", - "gpt-4-0613" - ], + "example": ["gpt-4-0125-preview", "gpt-4-0613"], "items": { "type": "string", "enum": [ @@ -3693,10 +3049,7 @@ ] } }, - "semanticCachingEnabled": { - "type": "boolean", - "example": true - }, + "semanticCachingEnabled": { "type": "boolean", "example": true }, "numFastTurns": { "type": "number", "description": "This sets how many turns at the start of the conversation to use gpt-3.5-turbo before switching to the primary model. Default is 0.", @@ -3710,11 +3063,7 @@ }, "knowledgeBase": { "description": "These are the options for the knowledge base.", - "allOf": [ - { - "$ref": "#/components/schemas/KnowledgeBase" - } - ] + "allOf": [{ "$ref": "#/components/schemas/KnowledgeBase" }] }, "maxTokens": { "type": "number", @@ -3727,10 +3076,7 @@ "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." } }, - "required": [ - "provider", - "model" - ] + "required": ["provider", "model"] }, "OpenRouterModel": { "type": "object", @@ -3738,9 +3084,7 @@ "messages": { "description": "This is the starting state for the conversation.", "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAIMessage" - } + "items": { "$ref": "#/components/schemas/OpenAIMessage" } }, "tools": { "type": "array", @@ -3748,28 +3092,32 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/CreateTransferCallToolDTO", - "title": "TransferTool" - }, - { - "$ref": "#/components/schemas/CreateFunctionToolDTO", - "title": "FunctionTool" + "$ref": "#/components/schemas/CreateDtmfToolDTO", + "title": "DtmfTool" }, { "$ref": "#/components/schemas/CreateEndCallToolDTO", "title": "EndCallTool" }, { - "$ref": "#/components/schemas/CreateDtmfToolDTO", - "title": "DtmfTool" + "$ref": "#/components/schemas/CreateVoicemailToolDTO", + "title": "voicemail" }, { - "$ref": "#/components/schemas/CreateMakeToolDTO", - "title": "MakeTool" + "$ref": "#/components/schemas/CreateFunctionToolDTO", + "title": "FunctionTool" }, { "$ref": "#/components/schemas/CreateGhlToolDTO", "title": "GhlTool" + }, + { + "$ref": "#/components/schemas/CreateMakeToolDTO", + "title": "MakeTool" + }, + { + "$ref": "#/components/schemas/CreateTransferCallToolDTO", + "title": "TransferTool" } ] } @@ -3777,16 +3125,9 @@ "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" - } - }, - "provider": { - "type": "string", - "enum": [ - "openrouter" - ] + "items": { "type": "string" } }, + "provider": { "type": "string", "enum": ["openrouter"] }, "model": { "type": "string", "description": "This is the name of the model. Ex. cognitivecomputations/dolphin-mixtral-8x7b" @@ -3799,11 +3140,7 @@ }, "knowledgeBase": { "description": "These are the options for the knowledge base.", - "allOf": [ - { - "$ref": "#/components/schemas/KnowledgeBase" - } - ] + "allOf": [{ "$ref": "#/components/schemas/KnowledgeBase" }] }, "maxTokens": { "type": "number", @@ -3816,10 +3153,7 @@ "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." } }, - "required": [ - "provider", - "model" - ] + "required": ["provider", "model"] }, "PerplexityAIModel": { "type": "object", @@ -3827,9 +3161,7 @@ "messages": { "description": "This is the starting state for the conversation.", "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAIMessage" - } + "items": { "$ref": "#/components/schemas/OpenAIMessage" } }, "tools": { "type": "array", @@ -3837,28 +3169,32 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/CreateTransferCallToolDTO", - "title": "TransferTool" - }, - { - "$ref": "#/components/schemas/CreateFunctionToolDTO", - "title": "FunctionTool" + "$ref": "#/components/schemas/CreateDtmfToolDTO", + "title": "DtmfTool" }, { "$ref": "#/components/schemas/CreateEndCallToolDTO", "title": "EndCallTool" }, { - "$ref": "#/components/schemas/CreateDtmfToolDTO", - "title": "DtmfTool" + "$ref": "#/components/schemas/CreateVoicemailToolDTO", + "title": "voicemail" }, { - "$ref": "#/components/schemas/CreateMakeToolDTO", - "title": "MakeTool" + "$ref": "#/components/schemas/CreateFunctionToolDTO", + "title": "FunctionTool" }, { "$ref": "#/components/schemas/CreateGhlToolDTO", "title": "GhlTool" + }, + { + "$ref": "#/components/schemas/CreateMakeToolDTO", + "title": "MakeTool" + }, + { + "$ref": "#/components/schemas/CreateTransferCallToolDTO", + "title": "TransferTool" } ] } @@ -3866,16 +3202,9 @@ "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" - } - }, - "provider": { - "type": "string", - "enum": [ - "perplexity-ai" - ] + "items": { "type": "string" } }, + "provider": { "type": "string", "enum": ["perplexity-ai"] }, "model": { "type": "string", "description": "This is the name of the model. Ex. cognitivecomputations/dolphin-mixtral-8x7b" @@ -3888,11 +3217,7 @@ }, "knowledgeBase": { "description": "These are the options for the knowledge base.", - "allOf": [ - { - "$ref": "#/components/schemas/KnowledgeBase" - } - ] + "allOf": [{ "$ref": "#/components/schemas/KnowledgeBase" }] }, "maxTokens": { "type": "number", @@ -3905,10 +3230,7 @@ "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." } }, - "required": [ - "provider", - "model" - ] + "required": ["provider", "model"] }, "TogetherAIModel": { "type": "object", @@ -3916,9 +3238,7 @@ "messages": { "description": "This is the starting state for the conversation.", "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAIMessage" - } + "items": { "$ref": "#/components/schemas/OpenAIMessage" } }, "tools": { "type": "array", @@ -3926,28 +3246,32 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/CreateTransferCallToolDTO", - "title": "TransferTool" - }, - { - "$ref": "#/components/schemas/CreateFunctionToolDTO", - "title": "FunctionTool" + "$ref": "#/components/schemas/CreateDtmfToolDTO", + "title": "DtmfTool" }, { "$ref": "#/components/schemas/CreateEndCallToolDTO", "title": "EndCallTool" }, { - "$ref": "#/components/schemas/CreateDtmfToolDTO", - "title": "DtmfTool" + "$ref": "#/components/schemas/CreateVoicemailToolDTO", + "title": "voicemail" }, { - "$ref": "#/components/schemas/CreateMakeToolDTO", - "title": "MakeTool" + "$ref": "#/components/schemas/CreateFunctionToolDTO", + "title": "FunctionTool" }, { "$ref": "#/components/schemas/CreateGhlToolDTO", "title": "GhlTool" + }, + { + "$ref": "#/components/schemas/CreateMakeToolDTO", + "title": "MakeTool" + }, + { + "$ref": "#/components/schemas/CreateTransferCallToolDTO", + "title": "TransferTool" } ] } @@ -3955,16 +3279,9 @@ "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" - } - }, - "provider": { - "type": "string", - "enum": [ - "together-ai" - ] + "items": { "type": "string" } }, + "provider": { "type": "string", "enum": ["together-ai"] }, "model": { "type": "string", "description": "This is the name of the model. Ex. cognitivecomputations/dolphin-mixtral-8x7b" @@ -3977,11 +3294,7 @@ }, "knowledgeBase": { "description": "These are the options for the knowledge base.", - "allOf": [ - { - "$ref": "#/components/schemas/KnowledgeBase" - } - ] + "allOf": [{ "$ref": "#/components/schemas/KnowledgeBase" }] }, "maxTokens": { "type": "number", @@ -3994,17 +3307,14 @@ "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." } }, - "required": [ - "provider", - "model" - ] + "required": ["provider", "model"] }, "AzureVoice": { "type": "object", "properties": { "inputPreprocessingEnabled": { "type": "boolean", - "description": "This determines whether the model output is preprocessed into chunks before being sent to the voice provider.\n\nDefault `true` because voice generation sounds better with chunking (and reformatting them).\n\nTo send every token from the model output directly to the voice provider and rely on the voice provider's audio generation logic, set this to `false`.\n\nIf disabled, vapi-provided audio control tokens like \u003Cflush /\u003E will not work.", + "description": "This determines whether the model output is preprocessed into chunks before being sent to the voice provider.\n\nDefault `true` because voice generation sounds better with chunking (and reformatting them).\n\nTo send every token from the model output directly to the voice provider and rely on the voice provider's audio generation logic, set this to `false`.\n\nIf disabled, vapi-provided audio control tokens like will not work.", "example": true }, "inputReformattingEnabled": { @@ -4085,26 +3395,17 @@ "provider": { "type": "string", "description": "This is the voice provider that will be used.", - "enum": [ - "azure" - ] + "enum": ["azure"] }, "voiceId": { "description": "This is the provider-specific ID that will be used.", "oneOf": [ { "type": "string", - "enum": [ - "andrew", - "brian", - "emma" - ], + "enum": ["andrew", "brian", "emma"], "title": "Preset Voice Options" }, - { - "type": "string", - "title": "Azure Voice ID" - } + { "type": "string", "title": "Azure Voice ID" } ] }, "speed": { @@ -4114,17 +3415,14 @@ "maximum": 2 } }, - "required": [ - "provider", - "voiceId" - ] + "required": ["provider", "voiceId"] }, "CartesiaVoice": { "type": "object", "properties": { "inputPreprocessingEnabled": { "type": "boolean", - "description": "This determines whether the model output is preprocessed into chunks before being sent to the voice provider.\n\nDefault `true` because voice generation sounds better with chunking (and reformatting them).\n\nTo send every token from the model output directly to the voice provider and rely on the voice provider's audio generation logic, set this to `false`.\n\nIf disabled, vapi-provided audio control tokens like \u003Cflush /\u003E will not work.", + "description": "This determines whether the model output is preprocessed into chunks before being sent to the voice provider.\n\nDefault `true` because voice generation sounds better with chunking (and reformatting them).\n\nTo send every token from the model output directly to the voice provider and rely on the voice provider's audio generation logic, set this to `false`.\n\nIf disabled, vapi-provided audio control tokens like will not work.", "example": true }, "inputReformattingEnabled": { @@ -4205,26 +3503,33 @@ "provider": { "type": "string", "description": "This is the voice provider that will be used.", - "enum": [ - "cartesia" - ] + "enum": ["cartesia"] + }, + "model": { + "type": "string", + "description": "This is the model that will be used. This is optional and will default to the correct model for the voiceId.", + "enum": ["sonic-english", "sonic-multilingual"], + "example": "sonic-english" + }, + "language": { + "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", "es", "fr", "ja", "pt", "zh"], + "example": "en" }, "voiceId": { "type": "string", "description": "This is the provider-specific ID that will be used." } }, - "required": [ - "provider", - "voiceId" - ] + "required": ["provider", "voiceId"] }, "DeepgramVoice": { "type": "object", "properties": { "inputPreprocessingEnabled": { "type": "boolean", - "description": "This determines whether the model output is preprocessed into chunks before being sent to the voice provider.\n\nDefault `true` because voice generation sounds better with chunking (and reformatting them).\n\nTo send every token from the model output directly to the voice provider and rely on the voice provider's audio generation logic, set this to `false`.\n\nIf disabled, vapi-provided audio control tokens like \u003Cflush /\u003E will not work.", + "description": "This determines whether the model output is preprocessed into chunks before being sent to the voice provider.\n\nDefault `true` because voice generation sounds better with chunking (and reformatting them).\n\nTo send every token from the model output directly to the voice provider and rely on the voice provider's audio generation logic, set this to `false`.\n\nIf disabled, vapi-provided audio control tokens like will not work.", "example": true }, "inputReformattingEnabled": { @@ -4305,9 +3610,7 @@ "provider": { "type": "string", "description": "This is the voice provider that will be used.", - "enum": [ - "deepgram" - ] + "enum": ["deepgram"] }, "voiceId": { "description": "This is the provider-specific ID that will be used.", @@ -4330,24 +3633,18 @@ ], "title": "Preset Voice Options" }, - { - "type": "string", - "title": "Deepgram Voice ID" - } + { "type": "string", "title": "Deepgram Voice ID" } ] } }, - "required": [ - "provider", - "voiceId" - ] + "required": ["provider", "voiceId"] }, "ElevenLabsVoice": { "type": "object", "properties": { "inputPreprocessingEnabled": { "type": "boolean", - "description": "This determines whether the model output is preprocessed into chunks before being sent to the voice provider.\n\nDefault `true` because voice generation sounds better with chunking (and reformatting them).\n\nTo send every token from the model output directly to the voice provider and rely on the voice provider's audio generation logic, set this to `false`.\n\nIf disabled, vapi-provided audio control tokens like \u003Cflush /\u003E will not work.", + "description": "This determines whether the model output is preprocessed into chunks before being sent to the voice provider.\n\nDefault `true` because voice generation sounds better with chunking (and reformatting them).\n\nTo send every token from the model output directly to the voice provider and rely on the voice provider's audio generation logic, set this to `false`.\n\nIf disabled, vapi-provided audio control tokens like will not work.", "example": true }, "inputReformattingEnabled": { @@ -4428,9 +3725,7 @@ "provider": { "type": "string", "description": "This is the voice provider that will be used.", - "enum": [ - "11labs" - ] + "enum": ["11labs"] }, "voiceId": { "description": "This is the provider-specific ID that will be used. Ensure the Voice is present in your 11Labs Voice Library.", @@ -4456,10 +3751,7 @@ ], "title": "Preset Voice Options" }, - { - "type": "string", - "title": "11Labs Voice ID" - } + { "type": "string", "title": "11Labs Voice ID" } ] }, "stability": { @@ -4512,17 +3804,14 @@ "example": "eleven_turbo_v2_5" } }, - "required": [ - "provider", - "voiceId" - ] + "required": ["provider", "voiceId"] }, "LMNTVoice": { "type": "object", "properties": { "inputPreprocessingEnabled": { "type": "boolean", - "description": "This determines whether the model output is preprocessed into chunks before being sent to the voice provider.\n\nDefault `true` because voice generation sounds better with chunking (and reformatting them).\n\nTo send every token from the model output directly to the voice provider and rely on the voice provider's audio generation logic, set this to `false`.\n\nIf disabled, vapi-provided audio control tokens like \u003Cflush /\u003E will not work.", + "description": "This determines whether the model output is preprocessed into chunks before being sent to the voice provider.\n\nDefault `true` because voice generation sounds better with chunking (and reformatting them).\n\nTo send every token from the model output directly to the voice provider and rely on the voice provider's audio generation logic, set this to `false`.\n\nIf disabled, vapi-provided audio control tokens like will not work.", "example": true }, "inputReformattingEnabled": { @@ -4603,25 +3892,17 @@ "provider": { "type": "string", "description": "This is the voice provider that will be used.", - "enum": [ - "lmnt" - ] + "enum": ["lmnt"] }, "voiceId": { "description": "This is the provider-specific ID that will be used.", "oneOf": [ { "type": "string", - "enum": [ - "lily", - "daniel" - ], + "enum": ["lily", "daniel"], "title": "Preset Voice Options" }, - { - "type": "string", - "title": "LMNT Voice ID" - } + { "type": "string", "title": "LMNT Voice ID" } ] }, "speed": { @@ -4632,17 +3913,14 @@ "example": null } }, - "required": [ - "provider", - "voiceId" - ] + "required": ["provider", "voiceId"] }, "NeetsVoice": { "type": "object", "properties": { "inputPreprocessingEnabled": { "type": "boolean", - "description": "This determines whether the model output is preprocessed into chunks before being sent to the voice provider.\n\nDefault `true` because voice generation sounds better with chunking (and reformatting them).\n\nTo send every token from the model output directly to the voice provider and rely on the voice provider's audio generation logic, set this to `false`.\n\nIf disabled, vapi-provided audio control tokens like \u003Cflush /\u003E will not work.", + "description": "This determines whether the model output is preprocessed into chunks before being sent to the voice provider.\n\nDefault `true` because voice generation sounds better with chunking (and reformatting them).\n\nTo send every token from the model output directly to the voice provider and rely on the voice provider's audio generation logic, set this to `false`.\n\nIf disabled, vapi-provided audio control tokens like will not work.", "example": true }, "inputReformattingEnabled": { @@ -4723,39 +4001,28 @@ "provider": { "type": "string", "description": "This is the voice provider that will be used.", - "enum": [ - "neets" - ] + "enum": ["neets"] }, "voiceId": { "description": "This is the provider-specific ID that will be used.", "oneOf": [ { "type": "string", - "enum": [ - "vits", - "vits" - ], + "enum": ["vits", "vits"], "title": "Preset Voice Options" }, - { - "type": "string", - "title": "Neets Voice ID" - } + { "type": "string", "title": "Neets Voice ID" } ] } }, - "required": [ - "provider", - "voiceId" - ] + "required": ["provider", "voiceId"] }, "OpenAIVoice": { "type": "object", "properties": { "inputPreprocessingEnabled": { "type": "boolean", - "description": "This determines whether the model output is preprocessed into chunks before being sent to the voice provider.\n\nDefault `true` because voice generation sounds better with chunking (and reformatting them).\n\nTo send every token from the model output directly to the voice provider and rely on the voice provider's audio generation logic, set this to `false`.\n\nIf disabled, vapi-provided audio control tokens like \u003Cflush /\u003E will not work.", + "description": "This determines whether the model output is preprocessed into chunks before being sent to the voice provider.\n\nDefault `true` because voice generation sounds better with chunking (and reformatting them).\n\nTo send every token from the model output directly to the voice provider and rely on the voice provider's audio generation logic, set this to `false`.\n\nIf disabled, vapi-provided audio control tokens like will not work.", "example": true }, "inputReformattingEnabled": { @@ -4836,37 +4103,18 @@ "provider": { "type": "string", "description": "This is the voice provider that will be used.", - "enum": [ - "openai" - ] + "enum": ["openai"] }, "voiceId": { "description": "This is the provider-specific ID that will be used.", - "enum": [ - "alloy", - "echo", - "fable", - "onyx", - "nova", - "shimmer" - ], + "enum": ["alloy", "echo", "fable", "onyx", "nova", "shimmer"], "oneOf": [ { "type": "string", - "enum": [ - "alloy", - "echo", - "fable", - "onyx", - "nova", - "shimmer" - ], + "enum": ["alloy", "echo", "fable", "onyx", "nova", "shimmer"], "title": "Preset Voice Options" }, - { - "type": "string", - "title": "OpenAI Voice ID" - } + { "type": "string", "title": "OpenAI Voice ID" } ] }, "speed": { @@ -4877,17 +4125,14 @@ "example": null } }, - "required": [ - "provider", - "voiceId" - ] + "required": ["provider", "voiceId"] }, "PlayHTVoice": { "type": "object", "properties": { "inputPreprocessingEnabled": { "type": "boolean", - "description": "This determines whether the model output is preprocessed into chunks before being sent to the voice provider.\n\nDefault `true` because voice generation sounds better with chunking (and reformatting them).\n\nTo send every token from the model output directly to the voice provider and rely on the voice provider's audio generation logic, set this to `false`.\n\nIf disabled, vapi-provided audio control tokens like \u003Cflush /\u003E will not work.", + "description": "This determines whether the model output is preprocessed into chunks before being sent to the voice provider.\n\nDefault `true` because voice generation sounds better with chunking (and reformatting them).\n\nTo send every token from the model output directly to the voice provider and rely on the voice provider's audio generation logic, set this to `false`.\n\nIf disabled, vapi-provided audio control tokens like will not work.", "example": true }, "inputReformattingEnabled": { @@ -4968,9 +4213,7 @@ "provider": { "type": "string", "description": "This is the voice provider that will be used.", - "enum": [ - "playht" - ] + "enum": ["playht"] }, "voiceId": { "description": "This is the provider-specific ID that will be used.", @@ -4991,10 +4234,7 @@ ], "title": "Preset Voice Options" }, - { - "type": "string", - "title": "PlayHT Voice ID" - } + { "type": "string", "title": "PlayHT Voice ID" } ] }, "speed": { @@ -5052,17 +4292,14 @@ "example": null } }, - "required": [ - "provider", - "voiceId" - ] + "required": ["provider", "voiceId"] }, "RimeAIVoice": { "type": "object", "properties": { "inputPreprocessingEnabled": { "type": "boolean", - "description": "This determines whether the model output is preprocessed into chunks before being sent to the voice provider.\n\nDefault `true` because voice generation sounds better with chunking (and reformatting them).\n\nTo send every token from the model output directly to the voice provider and rely on the voice provider's audio generation logic, set this to `false`.\n\nIf disabled, vapi-provided audio control tokens like \u003Cflush /\u003E will not work.", + "description": "This determines whether the model output is preprocessed into chunks before being sent to the voice provider.\n\nDefault `true` because voice generation sounds better with chunking (and reformatting them).\n\nTo send every token from the model output directly to the voice provider and rely on the voice provider's audio generation logic, set this to `false`.\n\nIf disabled, vapi-provided audio control tokens like will not work.", "example": true }, "inputReformattingEnabled": { @@ -5143,9 +4380,7 @@ "provider": { "type": "string", "description": "This is the voice provider that will be used.", - "enum": [ - "rime-ai" - ] + "enum": ["rime-ai"] }, "voiceId": { "description": "This is the provider-specific ID that will be used.", @@ -5237,19 +4472,13 @@ ], "title": "Preset Voice Options" }, - { - "type": "string", - "title": "RimeAI Voice ID" - } + { "type": "string", "title": "RimeAI Voice ID" } ] }, "model": { "type": "string", "description": "This is the model that will be used. Defaults to 'v1' when not specified.", - "enum": [ - "v1", - "mist" - ], + "enum": ["v1", "mist"], "example": "v1" }, "speed": { @@ -5259,23 +4488,19 @@ "example": null } }, - "required": [ - "provider", - "voiceId" - ] + "required": ["provider", "voiceId"] }, "TwilioVoicemailDetection": { "type": "object", "properties": { "provider": { "type": "string", - "enum": [ - "twilio" - ] + "description": "This is the provider to use for voicemail detection.", + "enum": ["twilio"] }, "voicemailDetectionTypes": { "type": "array", - "description": "These are the AMD messages from Twilio that are considered as voicemail. Default is ['machine_end_beep', 'machine_end_silence'].", + "description": "These are the AMD messages from Twilio that are considered as voicemail. Default is ['machine_end_beep', 'machine_end_silence'].\n\n@default {Array} ['machine_end_beep', 'machine_end_silence']", "enum": [ "machine_start", "human", @@ -5285,10 +4510,7 @@ "machine_end_silence", "machine_end_other" ], - "example": [ - "machine_end_beep", - "machine_end_silence" - ], + "example": ["machine_end_beep", "machine_end_silence"], "items": { "type": "string", "enum": [ @@ -5303,32 +4525,35 @@ } }, "enabled": { - "type": "boolean" + "type": "boolean", + "description": "This sets whether the assistant should detect voicemail. Defaults to true.\n\n@default true" }, "machineDetectionTimeout": { "type": "number", + "description": "The number of seconds that Twilio should attempt to perform answering machine detection before timing out and returning AnsweredBy as unknown. Default is 30 seconds.\n\nIncreasing this value will provide the engine more time to make a determination. This can be useful when DetectMessageEnd is provided in the MachineDetection parameter and there is an expectation of long answering machine greetings that can exceed 30 seconds.\n\nDecreasing this value will reduce the amount of time the engine has to make a determination. This can be particularly useful when the Enable option is provided in the MachineDetection parameter and you want to limit the time for initial detection.\n\nCheck the [Twilio docs](https://www.twilio.com/docs/voice/answering-machine-detection#optional-api-tuning-parameters) for more info.\n\n@default 30", "minimum": 3, "maximum": 59 }, "machineDetectionSpeechThreshold": { "type": "number", + "description": "The number of milliseconds that is used as the measuring stick for the length of the speech activity. Durations lower than this value will be interpreted as a human, longer as a machine. Default is 2400 milliseconds.\n\nIncreasing this value will reduce the chance of a False Machine (detected machine, actually human) for a long human greeting (e.g., a business greeting) but increase the time it takes to detect a machine.\n\nDecreasing this value will reduce the chances of a False Human (detected human, actually machine) for short voicemail greetings. The value of this parameter may need to be reduced by more than 1000ms to detect very short voicemail greetings. A reduction of that significance can result in increased False Machine detections. Adjusting the MachineDetectionSpeechEndThreshold is likely the better approach for short voicemails. Decreasing MachineDetectionSpeechThreshold will also reduce the time it takes to detect a machine.\n\nCheck the [Twilio docs](https://www.twilio.com/docs/voice/answering-machine-detection#optional-api-tuning-parameters) for more info.\n\n@default 2400", "minimum": 1000, "maximum": 6000 }, "machineDetectionSpeechEndThreshold": { "type": "number", + "description": "The number of milliseconds of silence after speech activity at which point the speech activity is considered complete. Default is 1200 milliseconds.\n\nIncreasing this value will typically be used to better address the short voicemail greeting scenarios. For short voicemails, there is typically 1000-2000ms of audio followed by 1200-2400ms of silence and then additional audio before the beep. Increasing the MachineDetectionSpeechEndThreshold to ~2500ms will treat the 1200-2400ms of silence as a gap in the greeting but not the end of the greeting and will result in a machine detection. The downsides of such a change include:\n- Increasing the delay for human detection by the amount you increase this parameter, e.g., a change of 1200ms to 2500ms increases human detection delay by 1300ms.\n- Cases where a human has two utterances separated by a period of silence (e.g. a \"Hello\", then 2000ms of silence, and another \"Hello\") may be interpreted as a machine.\n\nDecreasing this value will result in faster human detection. The consequence is that it can lead to increased False Human (detected human, actually machine) detections because a silence gap in a voicemail greeting (not necessarily just in short voicemail scenarios) can be incorrectly interpreted as the end of speech.\n\nCheck the [Twilio docs](https://www.twilio.com/docs/voice/answering-machine-detection#optional-api-tuning-parameters) for more info.\n\n@default 1200", "minimum": 500, "maximum": 5000 }, "machineDetectionSilenceTimeout": { "type": "number", + "description": "The number of milliseconds of initial silence after which an unknown AnsweredBy result will be returned. Default is 5000 milliseconds.\n\nIncreasing this value will result in waiting for a longer period of initial silence before returning an 'unknown' AMD result.\n\nDecreasing this value will result in waiting for a shorter period of initial silence before returning an 'unknown' AMD result.\n\nCheck the [Twilio docs](https://www.twilio.com/docs/voice/answering-machine-detection#optional-api-tuning-parameters) for more info.\n\n@default 5000", "minimum": 2000, "maximum": 10000 } }, - "required": [ - "provider" - ] + "required": ["provider"] }, "AnalysisPlan": { "type": "object", @@ -5382,11 +4607,7 @@ }, "structuredDataSchema": { "description": "This enforces the schema of the structured data. This output is stored in `call.analysis.structuredData`.\n\nComplete guide on JSON Schema can be found [here](https://ajv.js.org/json-schema.html#json-data-type).\n\nDisabled by default.\n\nYou can use this standalone or in combination with `structuredDataPrompt`. If both are provided, they are concatenated into appropriate instructions.", - "allOf": [ - { - "$ref": "#/components/schemas/JsonSchema" - } - ] + "allOf": [{ "$ref": "#/components/schemas/JsonSchema" }] } } }, @@ -5399,6 +4620,28 @@ } } }, + "MessagePlan": { + "type": "object", + "properties": { + "idleMessages": { + "description": "This are the messages that the assistant will speak when the user hasn't responded for `idleTimeoutSeconds`. Each time the timeout is triggered, a random message will be chosen from this array.\n\n@default null (no idle message is spoken)", + "type": "array", + "items": { "type": "string", "maxLength": 1000 } + }, + "idleMessageMaxSpokenCount": { + "type": "number", + "description": "This determines the maximum number of times `idleMessages` can be spoken during the call.\n\n@default 3", + "minimum": 1, + "maximum": 10 + }, + "idleTimeoutSeconds": { + "type": "number", + "description": "This is the timeout in seconds before a message from `idleMessages` is spoken. The clock starts when the assistant finishes speaking and remains active until the user speaks.\n\n@default 7.5", + "minimum": 5, + "maximum": 10 + } + } + }, "CreateAssistantDTO": { "type": "object", "properties": { @@ -5496,16 +4739,14 @@ "title": "RimeAIVoice" } ], - "default": { - "provider": "playht", - "voiceId": "jennifer" - } + "default": { "provider": "playht", "voiceId": "jennifer" } }, "firstMessageMode": { "type": "string", - "description": "This is the mode for the first message. Default is 'assistant-speaks-first'.\n\nSpecify 'assistant-waits-for-user' to have the assistant wait for the user to speak first.", + "description": "This is the mode for the first message. Default is 'assistant-speaks-first'.\n\nUse:\n- 'assistant-speaks-first' to have the assistant speak first.\n- 'assistant-waits-for-user' to have the assistant wait for the user to speak first.\n- 'assistant-speaks-first-with-model-generated-message' to have the assistant speak first with a message generated by the model based on the conversation state. (`assistant.model.messages` at call start, `call.messages` at squad transfer points).\n\n@default 'assistant-speaks-first'", "enum": [ "assistant-speaks-first", + "assistant-speaks-first-with-model-generated-message", "assistant-waits-for-user" ], "example": "assistant-speaks-first" @@ -5619,35 +4860,35 @@ }, "silenceTimeoutSeconds": { "type": "number", - "description": "How many seconds of silence to wait before ending the call. Defaults to 30.", + "description": "How many seconds of silence to wait before ending the call. Defaults to 30.\n\n@default 30", "minimum": 10, "maximum": 600, "example": 30 }, "responseDelaySeconds": { "type": "number", - "description": "The minimum number of seconds after user speech to wait before the assistant starts speaking. Defaults to 0.4.", + "description": "The minimum number of seconds after user speech to wait before the assistant starts speaking. Defaults to 0.4.\n\n@default 0.4", "minimum": 0, "maximum": 5, "example": 0.4 }, "llmRequestDelaySeconds": { "type": "number", - "description": "The minimum number of seconds to wait after punctuation before sending a request to the LLM. Defaults to 0.1.", + "description": "The minimum number of seconds to wait after punctuation before sending a request to the LLM. Defaults to 0.1.\n\n@default 0.1", "minimum": 0, "maximum": 3, "example": 0.1 }, "numWordsToInterruptAssistant": { "type": "number", - "description": "The number of words to wait for before interrupting the assistant. Words like \"stop\", \"actually\", \"no\", etc. will always interrupt immediately regardless of this value. Words like \"okay\", \"yeah\", \"right\" will never interrupt. When set to 0, it will rely solely on the VAD (Voice Activity Detector) and will not wait for any transcription. Defaults to 0.", + "description": "The number of words to wait for before interrupting the assistant.\n\nWords like \"stop\", \"actually\", \"no\", etc. will always interrupt immediately regardless of this value.\n\nWords like \"okay\", \"yeah\", \"right\" will never interrupt.\n\nWhen set to 0, it will rely solely on the VAD (Voice Activity Detector) and will not wait for any transcription. Defaults to this (0).\n\n@default 0", "minimum": 0, "maximum": 10, "example": 0 }, "maxDurationSeconds": { "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.", + "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 1800 (~30 minutes)", "minimum": 10, "maximum": 3600, "example": 1800 @@ -5655,25 +4896,22 @@ "backgroundSound": { "type": "string", "description": "This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'.", - "enum": [ - "off", - "office" - ], + "enum": ["off", "office"], "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.", + "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.", + "description": "This enables filtering of noise and background speech while the user is talking.\n\nDefault `false` while in beta.\n\n@default false", "example": false }, "modelOutputInMessagesEnabled": { "type": "boolean", - "description": "This determines whether the model's output is used for transcription instead of transcribers.", + "description": "This determines whether the model's output is used in conversation history rather than the transcription of assistant's speech.\n\nDefault `false` while in beta.\n\n@default false", "example": false }, "name": { @@ -5687,11 +4925,9 @@ "maxLength": 1000 }, "voicemailDetection": { - "description": "These are the settings to configure or disable voicemail detection.", + "description": "These are the settings to configure or disable voicemail detection. Alternatively, voicemail detection can be configured using the model.tools=[VoicemailTool].\nThis uses Twilio's built-in detection while the VoicemailTool relies on the model to detect if a voicemail was reached.\nYou can use neither of them, one of them, or both of them. By default, Twilio built-in detection is enabled while VoicemailTool is not.", "allOf": [ - { - "$ref": "#/components/schemas/TwilioVoicemailDetection" - } + { "$ref": "#/components/schemas/TwilioVoicemailDetection" } ] }, "voicemailMessage": { @@ -5702,24 +4938,20 @@ "endCallMessage": { "type": "string", "description": "This is the message that the assistant will say if it ends the call.\n\nIf unspecified, it will hang up without saying anything.", - "maxLength": 400 + "maxLength": 1000 }, "endCallPhrases": { "description": "This list contains phrases that, if spoken by the assistant, will trigger the call to be hung up. Case insensitive.", "type": "array", - "items": { - "type": "string", - "maxLength": 35, - "minLength": 2 - } + "items": { "type": "string", "maxLength": 140, "minLength": 2 } }, "metadata": { "type": "object", - "description": "This is the metadata associated with the call." + "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: function.serverUrl \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", @@ -5727,19 +4959,15 @@ }, "analysisPlan": { "description": "This is the plan for analysis of assistant's calls. Stored in `call.analysis`.", - "allOf": [ - { - "$ref": "#/components/schemas/AnalysisPlan" - } - ] + "allOf": [{ "$ref": "#/components/schemas/AnalysisPlan" }] }, "artifactPlan": { "description": "This is the plan for artifacts generated during assistant's calls. Stored in `call.artifact`.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactPlan" - } - ] + "allOf": [{ "$ref": "#/components/schemas/ArtifactPlan" }] + }, + "messagePlan": { + "description": "This is the plan for static messages that can be spoken by the assistant during the call, like `idleMessages`.\n\nNote: `firstMessage`, `voicemailMessage`, and `endCallMessage` are currently at the root level. They will be moved to `messagePlan` in the future, but will remain backwards compatible.", + "allOf": [{ "$ref": "#/components/schemas/MessagePlan" }] } } }, @@ -5840,16 +5068,14 @@ "title": "RimeAIVoice" } ], - "default": { - "provider": "playht", - "voiceId": "jennifer" - } + "default": { "provider": "playht", "voiceId": "jennifer" } }, "firstMessageMode": { "type": "string", - "description": "This is the mode for the first message. Default is 'assistant-speaks-first'.\n\nSpecify 'assistant-waits-for-user' to have the assistant wait for the user to speak first.", + "description": "This is the mode for the first message. Default is 'assistant-speaks-first'.\n\nUse:\n- 'assistant-speaks-first' to have the assistant speak first.\n- 'assistant-waits-for-user' to have the assistant wait for the user to speak first.\n- 'assistant-speaks-first-with-model-generated-message' to have the assistant speak first with a message generated by the model based on the conversation state. (`assistant.model.messages` at call start, `call.messages` at squad transfer points).\n\n@default 'assistant-speaks-first'", "enum": [ "assistant-speaks-first", + "assistant-speaks-first-with-model-generated-message", "assistant-waits-for-user" ], "example": "assistant-speaks-first" @@ -5963,35 +5189,35 @@ }, "silenceTimeoutSeconds": { "type": "number", - "description": "How many seconds of silence to wait before ending the call. Defaults to 30.", + "description": "How many seconds of silence to wait before ending the call. Defaults to 30.\n\n@default 30", "minimum": 10, "maximum": 600, "example": 30 }, "responseDelaySeconds": { "type": "number", - "description": "The minimum number of seconds after user speech to wait before the assistant starts speaking. Defaults to 0.4.", + "description": "The minimum number of seconds after user speech to wait before the assistant starts speaking. Defaults to 0.4.\n\n@default 0.4", "minimum": 0, "maximum": 5, "example": 0.4 }, "llmRequestDelaySeconds": { "type": "number", - "description": "The minimum number of seconds to wait after punctuation before sending a request to the LLM. Defaults to 0.1.", + "description": "The minimum number of seconds to wait after punctuation before sending a request to the LLM. Defaults to 0.1.\n\n@default 0.1", "minimum": 0, "maximum": 3, "example": 0.1 }, "numWordsToInterruptAssistant": { "type": "number", - "description": "The number of words to wait for before interrupting the assistant. Words like \"stop\", \"actually\", \"no\", etc. will always interrupt immediately regardless of this value. Words like \"okay\", \"yeah\", \"right\" will never interrupt. When set to 0, it will rely solely on the VAD (Voice Activity Detector) and will not wait for any transcription. Defaults to 0.", + "description": "The number of words to wait for before interrupting the assistant.\n\nWords like \"stop\", \"actually\", \"no\", etc. will always interrupt immediately regardless of this value.\n\nWords like \"okay\", \"yeah\", \"right\" will never interrupt.\n\nWhen set to 0, it will rely solely on the VAD (Voice Activity Detector) and will not wait for any transcription. Defaults to this (0).\n\n@default 0", "minimum": 0, "maximum": 10, "example": 0 }, "maxDurationSeconds": { "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.", + "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 1800 (~30 minutes)", "minimum": 10, "maximum": 3600, "example": 1800 @@ -5999,30 +5225,25 @@ "backgroundSound": { "type": "string", "description": "This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'.", - "enum": [ - "off", - "office" - ], + "enum": ["off", "office"], "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.", + "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.", + "description": "This enables filtering of noise and background speech while the user is talking.\n\nDefault `false` while in beta.\n\n@default false", "example": false }, "modelOutputInMessagesEnabled": { "type": "boolean", - "description": "This determines whether the model's output is used for transcription instead of transcribers.", + "description": "This determines whether the model's output is used in conversation history rather than the transcription of assistant's speech.\n\nDefault `false` while in beta.\n\n@default false", "example": false }, - "isServerUrlSecretSet": { - "type": "object" - }, + "isServerUrlSecretSet": { "type": "object" }, "name": { "type": "string", "description": "This is the name of the assistant.\n\nThis is required when you want to transfer between assistants in a call.", @@ -6034,11 +5255,9 @@ "maxLength": 1000 }, "voicemailDetection": { - "description": "These are the settings to configure or disable voicemail detection.", + "description": "These are the settings to configure or disable voicemail detection. Alternatively, voicemail detection can be configured using the model.tools=[VoicemailTool].\nThis uses Twilio's built-in detection while the VoicemailTool relies on the model to detect if a voicemail was reached.\nYou can use neither of them, one of them, or both of them. By default, Twilio built-in detection is enabled while VoicemailTool is not.", "allOf": [ - { - "$ref": "#/components/schemas/TwilioVoicemailDetection" - } + { "$ref": "#/components/schemas/TwilioVoicemailDetection" } ] }, "voicemailMessage": { @@ -6049,24 +5268,20 @@ "endCallMessage": { "type": "string", "description": "This is the message that the assistant will say if it ends the call.\n\nIf unspecified, it will hang up without saying anything.", - "maxLength": 400 + "maxLength": 1000 }, "endCallPhrases": { "description": "This list contains phrases that, if spoken by the assistant, will trigger the call to be hung up. Case insensitive.", "type": "array", - "items": { - "type": "string", - "maxLength": 35, - "minLength": 2 - } + "items": { "type": "string", "maxLength": 140, "minLength": 2 } }, "metadata": { "type": "object", - "description": "This is the metadata associated with the call." + "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: function.serverUrl \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", @@ -6074,19 +5289,15 @@ }, "analysisPlan": { "description": "This is the plan for analysis of assistant's calls. Stored in `call.analysis`.", - "allOf": [ - { - "$ref": "#/components/schemas/AnalysisPlan" - } - ] + "allOf": [{ "$ref": "#/components/schemas/AnalysisPlan" }] }, "artifactPlan": { "description": "This is the plan for artifacts generated during assistant's calls. Stored in `call.artifact`.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactPlan" - } - ] + "allOf": [{ "$ref": "#/components/schemas/ArtifactPlan" }] + }, + "messagePlan": { + "description": "This is the plan for static messages that can be spoken by the assistant during the call, like `idleMessages`.\n\nNote: `firstMessage`, `voicemailMessage`, and `endCallMessage` are currently at the root level. They will be moved to `messagePlan` in the future, but will remain backwards compatible.", + "allOf": [{ "$ref": "#/components/schemas/MessagePlan" }] }, "id": { "type": "string", @@ -6212,16 +5423,14 @@ "title": "RimeAIVoice" } ], - "default": { - "provider": "playht", - "voiceId": "jennifer" - } + "default": { "provider": "playht", "voiceId": "jennifer" } }, "firstMessageMode": { "type": "string", - "description": "This is the mode for the first message. Default is 'assistant-speaks-first'.\n\nSpecify 'assistant-waits-for-user' to have the assistant wait for the user to speak first.", + "description": "This is the mode for the first message. Default is 'assistant-speaks-first'.\n\nUse:\n- 'assistant-speaks-first' to have the assistant speak first.\n- 'assistant-waits-for-user' to have the assistant wait for the user to speak first.\n- 'assistant-speaks-first-with-model-generated-message' to have the assistant speak first with a message generated by the model based on the conversation state. (`assistant.model.messages` at call start, `call.messages` at squad transfer points).\n\n@default 'assistant-speaks-first'", "enum": [ "assistant-speaks-first", + "assistant-speaks-first-with-model-generated-message", "assistant-waits-for-user" ], "example": "assistant-speaks-first" @@ -6335,35 +5544,35 @@ }, "silenceTimeoutSeconds": { "type": "number", - "description": "How many seconds of silence to wait before ending the call. Defaults to 30.", + "description": "How many seconds of silence to wait before ending the call. Defaults to 30.\n\n@default 30", "minimum": 10, "maximum": 600, "example": 30 }, "responseDelaySeconds": { "type": "number", - "description": "The minimum number of seconds after user speech to wait before the assistant starts speaking. Defaults to 0.4.", + "description": "The minimum number of seconds after user speech to wait before the assistant starts speaking. Defaults to 0.4.\n\n@default 0.4", "minimum": 0, "maximum": 5, "example": 0.4 }, "llmRequestDelaySeconds": { "type": "number", - "description": "The minimum number of seconds to wait after punctuation before sending a request to the LLM. Defaults to 0.1.", + "description": "The minimum number of seconds to wait after punctuation before sending a request to the LLM. Defaults to 0.1.\n\n@default 0.1", "minimum": 0, "maximum": 3, "example": 0.1 }, "numWordsToInterruptAssistant": { "type": "number", - "description": "The number of words to wait for before interrupting the assistant. Words like \"stop\", \"actually\", \"no\", etc. will always interrupt immediately regardless of this value. Words like \"okay\", \"yeah\", \"right\" will never interrupt. When set to 0, it will rely solely on the VAD (Voice Activity Detector) and will not wait for any transcription. Defaults to 0.", + "description": "The number of words to wait for before interrupting the assistant.\n\nWords like \"stop\", \"actually\", \"no\", etc. will always interrupt immediately regardless of this value.\n\nWords like \"okay\", \"yeah\", \"right\" will never interrupt.\n\nWhen set to 0, it will rely solely on the VAD (Voice Activity Detector) and will not wait for any transcription. Defaults to this (0).\n\n@default 0", "minimum": 0, "maximum": 10, "example": 0 }, "maxDurationSeconds": { "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.", + "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 1800 (~30 minutes)", "minimum": 10, "maximum": 3600, "example": 1800 @@ -6371,25 +5580,22 @@ "backgroundSound": { "type": "string", "description": "This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'.", - "enum": [ - "off", - "office" - ], + "enum": ["off", "office"], "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.", + "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.", + "description": "This enables filtering of noise and background speech while the user is talking.\n\nDefault `false` while in beta.\n\n@default false", "example": false }, "modelOutputInMessagesEnabled": { "type": "boolean", - "description": "This determines whether the model's output is used for transcription instead of transcribers.", + "description": "This determines whether the model's output is used in conversation history rather than the transcription of assistant's speech.\n\nDefault `false` while in beta.\n\n@default false", "example": false }, "name": { @@ -6403,11 +5609,9 @@ "maxLength": 1000 }, "voicemailDetection": { - "description": "These are the settings to configure or disable voicemail detection.", + "description": "These are the settings to configure or disable voicemail detection. Alternatively, voicemail detection can be configured using the model.tools=[VoicemailTool].\nThis uses Twilio's built-in detection while the VoicemailTool relies on the model to detect if a voicemail was reached.\nYou can use neither of them, one of them, or both of them. By default, Twilio built-in detection is enabled while VoicemailTool is not.", "allOf": [ - { - "$ref": "#/components/schemas/TwilioVoicemailDetection" - } + { "$ref": "#/components/schemas/TwilioVoicemailDetection" } ] }, "voicemailMessage": { @@ -6418,24 +5622,20 @@ "endCallMessage": { "type": "string", "description": "This is the message that the assistant will say if it ends the call.\n\nIf unspecified, it will hang up without saying anything.", - "maxLength": 400 + "maxLength": 1000 }, "endCallPhrases": { "description": "This list contains phrases that, if spoken by the assistant, will trigger the call to be hung up. Case insensitive.", "type": "array", - "items": { - "type": "string", - "maxLength": 35, - "minLength": 2 - } + "items": { "type": "string", "maxLength": 140, "minLength": 2 } }, "metadata": { "type": "object", - "description": "This is the metadata associated with the call." + "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: function.serverUrl \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", @@ -6443,19 +5643,15 @@ }, "analysisPlan": { "description": "This is the plan for analysis of assistant's calls. Stored in `call.analysis`.", - "allOf": [ - { - "$ref": "#/components/schemas/AnalysisPlan" - } - ] + "allOf": [{ "$ref": "#/components/schemas/AnalysisPlan" }] }, "artifactPlan": { "description": "This is the plan for artifacts generated during assistant's calls. Stored in `call.artifact`.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactPlan" - } - ] + "allOf": [{ "$ref": "#/components/schemas/ArtifactPlan" }] + }, + "messagePlan": { + "description": "This is the plan for static messages that can be spoken by the assistant during the call, like `idleMessages`.\n\nNote: `firstMessage`, `voicemailMessage`, and `endCallMessage` are currently at the root level. They will be moved to `messagePlan` in the future, but will remain backwards compatible.", + "allOf": [{ "$ref": "#/components/schemas/MessagePlan" }] } } }, @@ -6556,16 +5752,14 @@ "title": "RimeAIVoice" } ], - "default": { - "provider": "playht", - "voiceId": "jennifer" - } + "default": { "provider": "playht", "voiceId": "jennifer" } }, "firstMessageMode": { "type": "string", - "description": "This is the mode for the first message. Default is 'assistant-speaks-first'.\n\nSpecify 'assistant-waits-for-user' to have the assistant wait for the user to speak first.", + "description": "This is the mode for the first message. Default is 'assistant-speaks-first'.\n\nUse:\n- 'assistant-speaks-first' to have the assistant speak first.\n- 'assistant-waits-for-user' to have the assistant wait for the user to speak first.\n- 'assistant-speaks-first-with-model-generated-message' to have the assistant speak first with a message generated by the model based on the conversation state. (`assistant.model.messages` at call start, `call.messages` at squad transfer points).\n\n@default 'assistant-speaks-first'", "enum": [ "assistant-speaks-first", + "assistant-speaks-first-with-model-generated-message", "assistant-waits-for-user" ], "example": "assistant-speaks-first" @@ -6679,35 +5873,35 @@ }, "silenceTimeoutSeconds": { "type": "number", - "description": "How many seconds of silence to wait before ending the call. Defaults to 30.", + "description": "How many seconds of silence to wait before ending the call. Defaults to 30.\n\n@default 30", "minimum": 10, "maximum": 600, "example": 30 }, "responseDelaySeconds": { "type": "number", - "description": "The minimum number of seconds after user speech to wait before the assistant starts speaking. Defaults to 0.4.", + "description": "The minimum number of seconds after user speech to wait before the assistant starts speaking. Defaults to 0.4.\n\n@default 0.4", "minimum": 0, "maximum": 5, "example": 0.4 }, "llmRequestDelaySeconds": { "type": "number", - "description": "The minimum number of seconds to wait after punctuation before sending a request to the LLM. Defaults to 0.1.", + "description": "The minimum number of seconds to wait after punctuation before sending a request to the LLM. Defaults to 0.1.\n\n@default 0.1", "minimum": 0, "maximum": 3, "example": 0.1 }, "numWordsToInterruptAssistant": { "type": "number", - "description": "The number of words to wait for before interrupting the assistant. Words like \"stop\", \"actually\", \"no\", etc. will always interrupt immediately regardless of this value. Words like \"okay\", \"yeah\", \"right\" will never interrupt. When set to 0, it will rely solely on the VAD (Voice Activity Detector) and will not wait for any transcription. Defaults to 0.", + "description": "The number of words to wait for before interrupting the assistant.\n\nWords like \"stop\", \"actually\", \"no\", etc. will always interrupt immediately regardless of this value.\n\nWords like \"okay\", \"yeah\", \"right\" will never interrupt.\n\nWhen set to 0, it will rely solely on the VAD (Voice Activity Detector) and will not wait for any transcription. Defaults to this (0).\n\n@default 0", "minimum": 0, "maximum": 10, "example": 0 }, "maxDurationSeconds": { "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.", + "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 1800 (~30 minutes)", "minimum": 10, "maximum": 3600, "example": 1800 @@ -6715,25 +5909,22 @@ "backgroundSound": { "type": "string", "description": "This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'.", - "enum": [ - "off", - "office" - ], + "enum": ["off", "office"], "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.", + "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.", + "description": "This enables filtering of noise and background speech while the user is talking.\n\nDefault `false` while in beta.\n\n@default false", "example": false }, "modelOutputInMessagesEnabled": { "type": "boolean", - "description": "This determines whether the model's output is used for transcription instead of transcribers.", + "description": "This determines whether the model's output is used in conversation history rather than the transcription of assistant's speech.\n\nDefault `false` while in beta.\n\n@default false", "example": false }, "variableValues": { @@ -6751,11 +5942,9 @@ "maxLength": 1000 }, "voicemailDetection": { - "description": "These are the settings to configure or disable voicemail detection.", + "description": "These are the settings to configure or disable voicemail detection. Alternatively, voicemail detection can be configured using the model.tools=[VoicemailTool].\nThis uses Twilio's built-in detection while the VoicemailTool relies on the model to detect if a voicemail was reached.\nYou can use neither of them, one of them, or both of them. By default, Twilio built-in detection is enabled while VoicemailTool is not.", "allOf": [ - { - "$ref": "#/components/schemas/TwilioVoicemailDetection" - } + { "$ref": "#/components/schemas/TwilioVoicemailDetection" } ] }, "voicemailMessage": { @@ -6766,24 +5955,20 @@ "endCallMessage": { "type": "string", "description": "This is the message that the assistant will say if it ends the call.\n\nIf unspecified, it will hang up without saying anything.", - "maxLength": 400 + "maxLength": 1000 }, "endCallPhrases": { "description": "This list contains phrases that, if spoken by the assistant, will trigger the call to be hung up. Case insensitive.", "type": "array", - "items": { - "type": "string", - "maxLength": 35, - "minLength": 2 - } + "items": { "type": "string", "maxLength": 140, "minLength": 2 } }, "metadata": { "type": "object", - "description": "This is the metadata associated with the call." + "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: function.serverUrl \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", @@ -6791,19 +5976,15 @@ }, "analysisPlan": { "description": "This is the plan for analysis of assistant's calls. Stored in `call.analysis`.", - "allOf": [ - { - "$ref": "#/components/schemas/AnalysisPlan" - } - ] + "allOf": [{ "$ref": "#/components/schemas/AnalysisPlan" }] }, "artifactPlan": { "description": "This is the plan for artifacts generated during assistant's calls. Stored in `call.artifact`.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactPlan" - } - ] + "allOf": [{ "$ref": "#/components/schemas/ArtifactPlan" }] + }, + "messagePlan": { + "description": "This is the plan for static messages that can be spoken by the assistant during the call, like `idleMessages`.\n\nNote: `firstMessage`, `voicemailMessage`, and `endCallMessage` are currently at the root level. They will be moved to `messagePlan` in the future, but will remain backwards compatible.", + "allOf": [{ "$ref": "#/components/schemas/MessagePlan" }] } } }, @@ -6817,19 +5998,11 @@ }, "assistant": { "description": "This is the assistant that will be used for the call. To use an existing assistant, use `assistantId` instead.", - "allOf": [ - { - "$ref": "#/components/schemas/CreateAssistantDTO" - } - ] + "allOf": [{ "$ref": "#/components/schemas/CreateAssistantDTO" }] }, "assistantOverrides": { "description": "Overrides for a single assistant's settings and template variables.", - "allOf": [ - { - "$ref": "#/components/schemas/AssistantOverrides" - } - ] + "allOf": [{ "$ref": "#/components/schemas/AssistantOverrides" }] }, "assistantDestinations": { "description": "These are the others assistants that this assistant can transfer to.\nThese destinations are in addition to destinations that already exist in the assistant's TransferCall tool.", @@ -6843,22 +6016,23 @@ "CreateSquadDTO": { "type": "object", "properties": { + "name": { + "type": "string", + "description": "This is the Name of the squad. This is the name that will be displayed to the user." + }, "members": { "description": "The list of assistant members in the squad. By default, the call will start\nwith the first assistant supplied in the list.", "type": "array", - "items": { - "$ref": "#/components/schemas/SquadMemberDTO" - } + "items": { "$ref": "#/components/schemas/SquadMemberDTO" } } }, - "required": [ - "members" - ] + "required": ["members"] }, "ImportTwilioPhoneNumberDTO": { "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/NumberTransferDestination", @@ -6889,26 +6063,22 @@ }, "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.\n\nIf both `assistantId` and `squadId` are set, `assistantId` takes precedence." + "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.\n\nIf both `assistantId` and `squadId` are set, `assistantId` takes precedence." + "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 \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": [ - "twilioPhoneNumber", - "twilioAccountSid", - "twilioAuthToken" - ] + "required": ["twilioPhoneNumber", "twilioAccountSid", "twilioAuthToken"] }, "CreateCustomerDTO": { "type": "object", @@ -6947,19 +6117,11 @@ }, "assistant": { "description": "This is the assistant that will be used for the call. To use an existing assistant, use `assistantId` instead.", - "allOf": [ - { - "$ref": "#/components/schemas/CreateAssistantDTO" - } - ] + "allOf": [{ "$ref": "#/components/schemas/CreateAssistantDTO" }] }, "assistantOverrides": { "description": "These are the overrides for the `assistant` or `assistantId`'s settings and template variables.", - "allOf": [ - { - "$ref": "#/components/schemas/AssistantOverrides" - } - ] + "allOf": [{ "$ref": "#/components/schemas/AssistantOverrides" }] }, "squadId": { "type": "string", @@ -6967,11 +6129,7 @@ }, "squad": { "description": "This is a squad that will be used for the call. To use an existing squad, use `squadId` instead.", - "allOf": [ - { - "$ref": "#/components/schemas/CreateSquadDTO" - } - ] + "allOf": [{ "$ref": "#/components/schemas/CreateSquadDTO" }] }, "phoneNumberId": { "type": "string", @@ -6980,9 +6138,7 @@ "phoneNumber": { "description": "This is the phone number that will be used for the call. To use an existing number, use `phoneNumberId` instead.\n\nOnly relevant for `outboundPhoneCall` and `inboundPhoneCall` type.", "allOf": [ - { - "$ref": "#/components/schemas/ImportTwilioPhoneNumberDTO" - } + { "$ref": "#/components/schemas/ImportTwilioPhoneNumberDTO" } ] }, "customerId": { @@ -6991,11 +6147,7 @@ }, "customer": { "description": "This is the customer that will be called. To call an existing customer, use `customerId` instead.\n\nOnly relevant for `outboundPhoneCall` and `inboundPhoneCall` type.", - "allOf": [ - { - "$ref": "#/components/schemas/CreateCustomerDTO" - } - ] + "allOf": [{ "$ref": "#/components/schemas/CreateCustomerDTO" }] } } }, @@ -7081,11 +6233,7 @@ }, "analysisCostBreakdown": { "description": "This is the cost of the analysis.", - "allOf": [ - { - "$ref": "#/components/schemas/AnalysisCostBreakdown" - } - ] + "allOf": [{ "$ref": "#/components/schemas/AnalysisCostBreakdown" }] } } }, @@ -7125,11 +6273,7 @@ "type": { "type": "string", "description": "This is the type of call.", - "enum": [ - "inboundPhoneCall", - "outboundPhoneCall", - "webCall" - ] + "enum": ["inboundPhoneCall", "outboundPhoneCall", "webCall"] }, "messages": { "type": "array", @@ -7170,30 +6314,17 @@ "phoneCallProvider": { "type": "string", "description": "This is the provider of the call.\n\nOnly relevant for `outboundPhoneCall` and `inboundPhoneCall` type.", - "enum": [ - "twilio", - "vonage", - "vapi" - ] + "enum": ["twilio", "vonage", "vapi"] }, "phoneCallTransport": { "type": "string", "description": "This is the transport of the phone call.\n\nOnly relevant for `outboundPhoneCall` and `inboundPhoneCall` type.", - "enum": [ - "sip", - "pstn" - ] + "enum": ["sip", "pstn"] }, "status": { "type": "string", "description": "This is the status of the call.", - "enum": [ - "queued", - "ringing", - "in-progress", - "forwarding", - "ended" - ] + "enum": ["queued", "ringing", "in-progress", "forwarding", "ended"] }, "endedReason": { "type": "string", @@ -7315,11 +6446,7 @@ }, "costBreakdown": { "description": "This is the cost of the call in USD.", - "allOf": [ - { - "$ref": "#/components/schemas/CostBreakdown" - } - ] + "allOf": [{ "$ref": "#/components/schemas/CostBreakdown" }] }, "transcript": { "type": "string", @@ -7335,27 +6462,15 @@ }, "artifact": { "description": "This stores artifacts of the call. Customize what artifacts are created by configuring `assistant.artifactPlan`.", - "allOf": [ - { - "$ref": "#/components/schemas/Artifact" - } - ] + "allOf": [{ "$ref": "#/components/schemas/Artifact" }] }, "artifactPlan": { "description": "This is a copy of assistant artifact plan. This isn't actually stored on the call but rather just returned in POST /call/web to enable artifact creation client side.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactPlan" - } - ] + "allOf": [{ "$ref": "#/components/schemas/ArtifactPlan" }] }, "analysis": { "description": "This is the analysis of the call. Customize the analysis by configuring `assistant.analysisPlan`.", - "allOf": [ - { - "$ref": "#/components/schemas/Analysis" - } - ] + "allOf": [{ "$ref": "#/components/schemas/Analysis" }] }, "phoneCallProviderId": { "type": "string", @@ -7371,19 +6486,11 @@ }, "assistant": { "description": "This is the assistant that will be used for the call. To use an existing assistant, use `assistantId` instead.", - "allOf": [ - { - "$ref": "#/components/schemas/CreateAssistantDTO" - } - ] + "allOf": [{ "$ref": "#/components/schemas/CreateAssistantDTO" }] }, "assistantOverrides": { "description": "These are the overrides for the `assistant` or `assistantId`'s settings and template variables.", - "allOf": [ - { - "$ref": "#/components/schemas/AssistantOverrides" - } - ] + "allOf": [{ "$ref": "#/components/schemas/AssistantOverrides" }] }, "squadId": { "type": "string", @@ -7391,11 +6498,7 @@ }, "squad": { "description": "This is a squad that will be used for the call. To use an existing squad, use `squadId` instead.", - "allOf": [ - { - "$ref": "#/components/schemas/CreateSquadDTO" - } - ] + "allOf": [{ "$ref": "#/components/schemas/CreateSquadDTO" }] }, "phoneNumberId": { "type": "string", @@ -7404,9 +6507,7 @@ "phoneNumber": { "description": "This is the phone number that will be used for the call. To use an existing number, use `phoneNumberId` instead.\n\nOnly relevant for `outboundPhoneCall` and `inboundPhoneCall` type.", "allOf": [ - { - "$ref": "#/components/schemas/ImportTwilioPhoneNumberDTO" - } + { "$ref": "#/components/schemas/ImportTwilioPhoneNumberDTO" } ] }, "customerId": { @@ -7415,11 +6516,7 @@ }, "customer": { "description": "This is the customer that will be called. To call an existing customer, use `customerId` instead.\n\nOnly relevant for `outboundPhoneCall` and `inboundPhoneCall` type.", - "allOf": [ - { - "$ref": "#/components/schemas/CreateCustomerDTO" - } - ] + "allOf": [{ "$ref": "#/components/schemas/CreateCustomerDTO" }] }, "name": { "type": "string", @@ -7427,49 +6524,27 @@ "maxLength": 40 } }, - "required": [ - "id", - "orgId", - "createdAt", - "updatedAt" - ] + "required": ["id", "orgId", "createdAt", "updatedAt"] }, "PaginationMeta": { "type": "object", "properties": { - "itemsPerPage": { - "type": "number" - }, - "totalItems": { - "type": "number" - }, - "currentPage": { - "type": "number" - } + "itemsPerPage": { "type": "number" }, + "totalItems": { "type": "number" }, + "currentPage": { "type": "number" } }, - "required": [ - "itemsPerPage", - "totalItems", - "currentPage" - ] + "required": ["itemsPerPage", "totalItems", "currentPage"] }, "CallPaginatedResponse": { "type": "object", "properties": { "results": { "type": "array", - "items": { - "$ref": "#/components/schemas/Call" - } + "items": { "$ref": "#/components/schemas/Call" } }, - "metadata": { - "$ref": "#/components/schemas/PaginationMeta" - } + "metadata": { "$ref": "#/components/schemas/PaginationMeta" } }, - "required": [ - "results", - "metadata" - ] + "required": ["results", "metadata"] }, "CreateOutboundCallDTO": { "type": "object", @@ -7485,19 +6560,11 @@ }, "assistant": { "description": "This is the assistant that will be used for the call. To use an existing assistant, use `assistantId` instead.", - "allOf": [ - { - "$ref": "#/components/schemas/CreateAssistantDTO" - } - ] + "allOf": [{ "$ref": "#/components/schemas/CreateAssistantDTO" }] }, "assistantOverrides": { "description": "These are the overrides for the `assistant` or `assistantId`'s settings and template variables.", - "allOf": [ - { - "$ref": "#/components/schemas/AssistantOverrides" - } - ] + "allOf": [{ "$ref": "#/components/schemas/AssistantOverrides" }] }, "squadId": { "type": "string", @@ -7505,11 +6572,7 @@ }, "squad": { "description": "This is a squad that will be used for the call. To use an existing squad, use `squadId` instead.", - "allOf": [ - { - "$ref": "#/components/schemas/CreateSquadDTO" - } - ] + "allOf": [{ "$ref": "#/components/schemas/CreateSquadDTO" }] }, "phoneNumberId": { "type": "string", @@ -7518,9 +6581,7 @@ "phoneNumber": { "description": "This is the phone number that will be used for the call. To use an existing number, use `phoneNumberId` instead.\n\nOnly relevant for `outboundPhoneCall` and `inboundPhoneCall` type.", "allOf": [ - { - "$ref": "#/components/schemas/ImportTwilioPhoneNumberDTO" - } + { "$ref": "#/components/schemas/ImportTwilioPhoneNumberDTO" } ] }, "customerId": { @@ -7529,11 +6590,7 @@ }, "customer": { "description": "This is the customer that will be called. To call an existing customer, use `customerId` instead.\n\nOnly relevant for `outboundPhoneCall` and `inboundPhoneCall` type.", - "allOf": [ - { - "$ref": "#/components/schemas/CreateCustomerDTO" - } - ] + "allOf": [{ "$ref": "#/components/schemas/CreateCustomerDTO" }] } } }, @@ -7546,19 +6603,11 @@ }, "assistant": { "description": "This is the assistant that will be used for the call. To use an existing assistant, use `assistantId` instead.", - "allOf": [ - { - "$ref": "#/components/schemas/CreateAssistantDTO" - } - ] + "allOf": [{ "$ref": "#/components/schemas/CreateAssistantDTO" }] }, "assistantOverrides": { "description": "These are the overrides for the `assistant` or `assistantId`'s settings and template variables.", - "allOf": [ - { - "$ref": "#/components/schemas/AssistantOverrides" - } - ] + "allOf": [{ "$ref": "#/components/schemas/AssistantOverrides" }] }, "squadId": { "type": "string", @@ -7566,11 +6615,7 @@ }, "squad": { "description": "This is a squad that will be used for the call. To use an existing squad, use `squadId` instead.", - "allOf": [ - { - "$ref": "#/components/schemas/CreateSquadDTO" - } - ] + "allOf": [{ "$ref": "#/components/schemas/CreateSquadDTO" }] } } }, @@ -7587,12 +6632,14 @@ "Squad": { "type": "object", "properties": { + "name": { + "type": "string", + "description": "This is the Name of the squad. This is the name that will be displayed to the user." + }, "members": { "description": "The list of assistant members in the squad. By default, the call will start\nwith the first assistant supplied in the list.", "type": "array", - "items": { - "$ref": "#/components/schemas/SquadMemberDTO" - } + "items": { "$ref": "#/components/schemas/SquadMemberDTO" } }, "id": { "type": "string", @@ -7613,38 +6660,27 @@ "description": "This is the ISO 8601 date-time string of when the squad was last updated." } }, - "required": [ - "members", - "id", - "orgId", - "createdAt", - "updatedAt" - ] + "required": ["members", "id", "orgId", "createdAt", "updatedAt"] }, "UpdateSquadDTO": { "type": "object", "properties": { + "name": { + "type": "string", + "description": "This is the Name of the squad. This is the name that will be displayed to the user." + }, "members": { "description": "The list of assistant members in the squad. By default, the call will start\nwith the first assistant supplied in the list.", "type": "array", - "items": { - "$ref": "#/components/schemas/SquadMemberDTO" - } + "items": { "$ref": "#/components/schemas/SquadMemberDTO" } } }, - "required": [ - "members" - ] + "required": ["members"] }, "AnyscaleCredential": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "anyscale" - ] - }, + "provider": { "type": "string", "enum": ["anyscale"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -7680,12 +6716,7 @@ "AnthropicCredential": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "anthropic" - ] - }, + "provider": { "type": "string", "enum": ["anthropic"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -7721,12 +6752,7 @@ "AzureOpenAICredential": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "azure-openai" - ] - }, + "provider": { "type": "string", "enum": ["azure-openai"] }, "region": { "type": "string", "enum": [ @@ -7758,10 +6784,7 @@ "gpt-35-turbo-0125", "gpt-35-turbo-1106" ], - "example": [ - "gpt-4-0125-preview", - "gpt-4-0613" - ], + "example": ["gpt-4-0125-preview", "gpt-4-0613"], "items": { "type": "string", "enum": [ @@ -7797,9 +6820,7 @@ "type": "string", "description": "This is the ISO 8601 date-time string of when the assistant was last updated." }, - "openAIEndpoint": { - "type": "string" - } + "openAIEndpoint": { "type": "string" } }, "required": [ "provider", @@ -7816,12 +6837,7 @@ "CartesiaCredential": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "cartesia" - ] - }, + "provider": { "type": "string", "enum": ["cartesia"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -7857,12 +6873,7 @@ "CustomLLMCredential": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "custom-llm" - ] - }, + "provider": { "type": "string", "enum": ["custom-llm"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -7898,12 +6909,7 @@ "DeepgramCredential": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "deepgram" - ] - }, + "provider": { "type": "string", "enum": ["deepgram"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -7939,12 +6945,7 @@ "DeepInfraCredential": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "deepinfra" - ] - }, + "provider": { "type": "string", "enum": ["deepinfra"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -7980,12 +6981,7 @@ "ElevenLabsCredential": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "11labs" - ] - }, + "provider": { "type": "string", "enum": ["11labs"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -8021,12 +7017,7 @@ "GoHighLevelCredential": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "gohighlevel" - ] - }, + "provider": { "type": "string", "enum": ["gohighlevel"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -8062,12 +7053,7 @@ "GroqCredential": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "groq" - ] - }, + "provider": { "type": "string", "enum": ["groq"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -8103,12 +7089,7 @@ "LmntCredential": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "lmnt" - ] - }, + "provider": { "type": "string", "enum": ["lmnt"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -8144,16 +7125,8 @@ "MakeCredential": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "make" - ] - }, - "teamId": { - "type": "string", - "description": "Team ID" - }, + "provider": { "type": "string", "enum": ["make"] }, + "teamId": { "type": "string", "description": "Team ID" }, "region": { "type": "string", "description": "Region of your application. For example: eu1, eu2, us1, us2" @@ -8195,12 +7168,7 @@ "OpenAICredential": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "openai" - ] - }, + "provider": { "type": "string", "enum": ["openai"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -8236,12 +7204,7 @@ "OpenRouterCredential": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "openrouter" - ] - }, + "provider": { "type": "string", "enum": ["openrouter"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -8277,12 +7240,7 @@ "PerplexityAICredential": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "perplexity-ai" - ] - }, + "provider": { "type": "string", "enum": ["perplexity-ai"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -8318,12 +7276,7 @@ "PlayHTCredential": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "playht" - ] - }, + "provider": { "type": "string", "enum": ["playht"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -8346,9 +7299,7 @@ "type": "string", "description": "This is the ISO 8601 date-time string of when the assistant was last updated." }, - "userId": { - "type": "string" - } + "userId": { "type": "string" } }, "required": [ "provider", @@ -8363,12 +7314,7 @@ "RimeAICredential": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "rime-ai" - ] - }, + "provider": { "type": "string", "enum": ["rime-ai"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -8404,12 +7350,7 @@ "RunpodCredential": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "runpod" - ] - }, + "provider": { "type": "string", "enum": ["runpod"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -8447,9 +7388,7 @@ "properties": { "provider": { "type": "string", - "enum": [ - "s3" - ], + "enum": ["s3"], "description": "Credential provider. Only allowed value is s3" }, "awsAccessKeyId": { @@ -8502,12 +7441,7 @@ "TogetherAICredential": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "together-ai" - ] - }, + "provider": { "type": "string", "enum": ["together-ai"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -8543,12 +7477,7 @@ "TwilioCredential": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "twilio" - ] - }, + "provider": { "type": "string", "enum": ["twilio"] }, "authToken": { "type": "string", "description": "This is not returned in the API." @@ -8571,9 +7500,7 @@ "type": "string", "description": "This is the ISO 8601 date-time string of when the assistant was last updated." }, - "accountSid": { - "type": "string" - } + "accountSid": { "type": "string" } }, "required": [ "provider", @@ -8592,12 +7519,7 @@ "type": "string", "description": "This is not returned in the API." }, - "provider": { - "type": "string", - "enum": [ - "vonage" - ] - }, + "provider": { "type": "string", "enum": ["vonage"] }, "apiSecret": { "type": "string", "description": "This is not returned in the API." @@ -8624,9 +7546,7 @@ "type": "string", "description": "This is the Vonage Application ID for the credential.\n\nOnly relevant for Vonage credentials." }, - "apiKey": { - "type": "string" - } + "apiKey": { "type": "string" } }, "required": [ "vonageApplicationPrivateKey", @@ -8643,50 +7563,29 @@ "CreateAnyscaleCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "anyscale" - ] - }, + "provider": { "type": "string", "enum": ["anyscale"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["provider", "apiKey"] }, "CreateAnthropicCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "anthropic" - ] - }, + "provider": { "type": "string", "enum": ["anthropic"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["provider", "apiKey"] }, "CreateAzureOpenAICredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "azure-openai" - ] - }, + "provider": { "type": "string", "enum": ["azure-openai"] }, "region": { "type": "string", "enum": [ @@ -8718,10 +7617,7 @@ "gpt-35-turbo-0125", "gpt-35-turbo-1106" ], - "example": [ - "gpt-4-0125-preview", - "gpt-4-0613" - ], + "example": ["gpt-4-0125-preview", "gpt-4-0613"], "items": { "type": "string", "enum": [ @@ -8739,9 +7635,7 @@ "type": "string", "description": "This is not returned in the API." }, - "openAIEndpoint": { - "type": "string" - } + "openAIEndpoint": { "type": "string" } }, "required": [ "provider", @@ -8754,168 +7648,96 @@ "CreateCartesiaCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "cartesia" - ] - }, + "provider": { "type": "string", "enum": ["cartesia"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["provider", "apiKey"] }, "CreateCustomLLMCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "custom-llm" - ] - }, + "provider": { "type": "string", "enum": ["custom-llm"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["provider", "apiKey"] }, "CreateDeepgramCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "deepgram" - ] - }, + "provider": { "type": "string", "enum": ["deepgram"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["provider", "apiKey"] }, "CreateDeepInfraCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "deepinfra" - ] - }, + "provider": { "type": "string", "enum": ["deepinfra"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["provider", "apiKey"] }, "CreateElevenLabsCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "11labs" - ] - }, + "provider": { "type": "string", "enum": ["11labs"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["provider", "apiKey"] }, "CreateGoHighLevelCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "gohighlevel" - ] - }, + "provider": { "type": "string", "enum": ["gohighlevel"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["provider", "apiKey"] }, "CreateGroqCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "groq" - ] - }, + "provider": { "type": "string", "enum": ["groq"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["provider", "apiKey"] }, "CreateLmntCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "lmnt" - ] - }, + "provider": { "type": "string", "enum": ["lmnt"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["provider", "apiKey"] }, "CreateMakeCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "make" - ] - }, - "teamId": { - "type": "string", - "description": "Team ID" - }, + "provider": { "type": "string", "enum": ["make"] }, + "teamId": { "type": "string", "description": "Team ID" }, "region": { "type": "string", "description": "Region of your application. For example: eu1, eu2, us1, us2" @@ -8925,139 +7747,81 @@ "description": "This is not returned in the API." } }, - "required": [ - "provider", - "teamId", - "region", - "apiKey" - ] + "required": ["provider", "teamId", "region", "apiKey"] }, "CreateOpenAICredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "openai" - ] - }, + "provider": { "type": "string", "enum": ["openai"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["provider", "apiKey"] }, "CreateOpenRouterCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "openrouter" - ] - }, + "provider": { "type": "string", "enum": ["openrouter"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["provider", "apiKey"] }, "CreatePerplexityAICredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "perplexity-ai" - ] - }, + "provider": { "type": "string", "enum": ["perplexity-ai"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["provider", "apiKey"] }, "CreatePlayHTCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "playht" - ] - }, + "provider": { "type": "string", "enum": ["playht"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." }, - "userId": { - "type": "string" - } + "userId": { "type": "string" } }, - "required": [ - "provider", - "apiKey", - "userId" - ] + "required": ["provider", "apiKey", "userId"] }, "CreateRimeAICredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "rime-ai" - ] - }, + "provider": { "type": "string", "enum": ["rime-ai"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["provider", "apiKey"] }, "CreateRunpodCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "runpod" - ] - }, + "provider": { "type": "string", "enum": ["runpod"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["provider", "apiKey"] }, "CreateS3CredentialDTO": { "type": "object", "properties": { "provider": { "type": "string", - "enum": [ - "s3" - ], + "enum": ["s3"], "description": "Credential provider. Only allowed value is s3" }, "awsAccessKeyId": { @@ -9088,115 +7852,64 @@ "CreateTogetherAICredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "together-ai" - ] - }, + "provider": { "type": "string", "enum": ["together-ai"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["provider", "apiKey"] }, "CreateTwilioCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "twilio" - ] - }, + "provider": { "type": "string", "enum": ["twilio"] }, "authToken": { "type": "string", "description": "This is not returned in the API." }, - "accountSid": { - "type": "string" - } + "accountSid": { "type": "string" } }, - "required": [ - "provider", - "authToken", - "accountSid" - ] + "required": ["provider", "authToken", "accountSid"] }, "CreateVonageCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "vonage" - ] - }, + "provider": { "type": "string", "enum": ["vonage"] }, "apiSecret": { "type": "string", "description": "This is not returned in the API." }, - "apiKey": { - "type": "string" - } + "apiKey": { "type": "string" } }, - "required": [ - "provider", - "apiSecret", - "apiKey" - ] + "required": ["provider", "apiSecret", "apiKey"] }, "UpdateAnyscaleCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "anyscale" - ] - }, + "provider": { "type": "string", "enum": ["anyscale"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["provider", "apiKey"] }, "UpdateAnthropicCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "anthropic" - ] - }, + "provider": { "type": "string", "enum": ["anthropic"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["provider", "apiKey"] }, "UpdateAzureOpenAICredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "azure-openai" - ] - }, + "provider": { "type": "string", "enum": ["azure-openai"] }, "region": { "type": "string", "enum": [ @@ -9228,10 +7941,7 @@ "gpt-35-turbo-0125", "gpt-35-turbo-1106" ], - "example": [ - "gpt-4-0125-preview", - "gpt-4-0613" - ], + "example": ["gpt-4-0125-preview", "gpt-4-0613"], "items": { "type": "string", "enum": [ @@ -9249,9 +7959,7 @@ "type": "string", "description": "This is not returned in the API." }, - "openAIEndpoint": { - "type": "string" - } + "openAIEndpoint": { "type": "string" } }, "required": [ "provider", @@ -9264,168 +7972,96 @@ "UpdateCartesiaCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "cartesia" - ] - }, + "provider": { "type": "string", "enum": ["cartesia"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["provider", "apiKey"] }, "UpdateCustomLLMCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "custom-llm" - ] - }, + "provider": { "type": "string", "enum": ["custom-llm"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["provider", "apiKey"] }, "UpdateDeepInfraCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "deepinfra" - ] - }, + "provider": { "type": "string", "enum": ["deepinfra"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["provider", "apiKey"] }, "UpdateDeepgramCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "deepgram" - ] - }, + "provider": { "type": "string", "enum": ["deepgram"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["provider", "apiKey"] }, "UpdateElevenLabsCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "11labs" - ] - }, + "provider": { "type": "string", "enum": ["11labs"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["provider", "apiKey"] }, "UpdateGoHighLevelCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "gohighlevel" - ] - }, + "provider": { "type": "string", "enum": ["gohighlevel"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["provider", "apiKey"] }, "UpdateGroqCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "groq" - ] - }, + "provider": { "type": "string", "enum": ["groq"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["provider", "apiKey"] }, "UpdateLmntCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "lmnt" - ] - }, + "provider": { "type": "string", "enum": ["lmnt"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["provider", "apiKey"] }, "UpdateMakeCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "make" - ] - }, - "teamId": { - "type": "string", - "description": "Team ID" - }, + "provider": { "type": "string", "enum": ["make"] }, + "teamId": { "type": "string", "description": "Team ID" }, "region": { "type": "string", "description": "Region of your application. For example: eu1, eu2, us1, us2" @@ -9433,141 +8069,83 @@ "apiKey": { "type": "string", "description": "This is not returned in the API." - } - }, - "required": [ - "provider", - "teamId", - "region", - "apiKey" - ] + } + }, + "required": ["provider", "teamId", "region", "apiKey"] }, "UpdateOpenAICredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "openai" - ] - }, + "provider": { "type": "string", "enum": ["openai"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["provider", "apiKey"] }, "UpdateOpenRouterCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "openrouter" - ] - }, + "provider": { "type": "string", "enum": ["openrouter"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["provider", "apiKey"] }, "UpdatePerplexityAICredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "perplexity-ai" - ] - }, + "provider": { "type": "string", "enum": ["perplexity-ai"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["provider", "apiKey"] }, "UpdatePlayHTCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "playht" - ] - }, + "provider": { "type": "string", "enum": ["playht"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." }, - "userId": { - "type": "string" - } + "userId": { "type": "string" } }, - "required": [ - "provider", - "apiKey", - "userId" - ] + "required": ["provider", "apiKey", "userId"] }, "UpdateRimeAICredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "rime-ai" - ] - }, + "provider": { "type": "string", "enum": ["rime-ai"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["provider", "apiKey"] }, "UpdateRunpodCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "runpod" - ] - }, + "provider": { "type": "string", "enum": ["runpod"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["provider", "apiKey"] }, "UpdateS3CredentialDTO": { "type": "object", "properties": { "provider": { "type": "string", - "enum": [ - "s3" - ], + "enum": ["s3"], "description": "Credential provider. Only allowed value is s3" }, "awsAccessKeyId": { @@ -9598,67 +8176,37 @@ "UpdateTogetherAICredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "together-ai" - ] - }, + "provider": { "type": "string", "enum": ["together-ai"] }, "apiKey": { "type": "string", "description": "This is not returned in the API." } }, - "required": [ - "provider", - "apiKey" - ] + "required": ["provider", "apiKey"] }, "UpdateTwilioCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "twilio" - ] - }, + "provider": { "type": "string", "enum": ["twilio"] }, "authToken": { "type": "string", "description": "This is not returned in the API." }, - "accountSid": { - "type": "string" - } + "accountSid": { "type": "string" } }, - "required": [ - "provider", - "authToken", - "accountSid" - ] + "required": ["provider", "authToken", "accountSid"] }, "UpdateVonageCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "vonage" - ] - }, + "provider": { "type": "string", "enum": ["vonage"] }, "apiSecret": { "type": "string", "description": "This is not returned in the API." }, - "apiKey": { - "type": "string" - } + "apiKey": { "type": "string" } }, - "required": [ - "provider", - "apiSecret", - "apiKey" - ] + "required": ["provider", "apiSecret", "apiKey"] }, "CreateOrgDTO": { "type": "object", @@ -9764,11 +8312,7 @@ "maximum": 10 } }, - "required": [ - "id", - "createdAt", - "updatedAt" - ] + "required": ["id", "createdAt", "updatedAt"] }, "UpdateOrgDTO": { "type": "object", @@ -9831,28 +8375,18 @@ "description": "This is the full name of the user that is associated with the profile." } }, - "required": [ - "id", - "createdAt", - "updatedAt", - "email" - ] + "required": ["id", "createdAt", "updatedAt", "email"] }, "InviteUserDTO": { "type": "object", - "properties": { - "email": { - "type": "string" - } - }, - "required": [ - "email" - ] + "properties": { "email": { "type": "string" } }, + "required": ["email"] }, "TwilioPhoneNumber": { "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/NumberTransferDestination", @@ -9867,9 +8401,7 @@ "provider": { "type": "string", "description": "This is the provider of the phone number. `twilio` here.", - "enum": [ - "twilio" - ] + "enum": ["twilio"] }, "id": { "type": "string", @@ -9896,15 +8428,15 @@ }, "assistantId": { "type": "string", - "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.\n\nIf both `assistantId` and `squadId` are set, `assistantId` takes precedence." + "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.\n\nIf both `assistantId` and `squadId` are set, `assistantId` takes precedence." + "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 \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", @@ -9938,6 +8470,7 @@ "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/NumberTransferDestination", @@ -9952,9 +8485,7 @@ "provider": { "type": "string", "description": "This is the provider of the phone number. `vonage` here.", - "enum": [ - "vonage" - ] + "enum": ["vonage"] }, "id": { "type": "string", @@ -9981,15 +8512,15 @@ }, "assistantId": { "type": "string", - "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.\n\nIf both `assistantId` and `squadId` are set, `assistantId` takes precedence." + "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.\n\nIf both `assistantId` and `squadId` are set, `assistantId` takes precedence." + "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 \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", @@ -10018,6 +8549,7 @@ "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/NumberTransferDestination", @@ -10032,9 +8564,7 @@ "provider": { "type": "string", "description": "This is the provider of the phone number. `vapi` here.", - "enum": [ - "vapi" - ] + "enum": ["vapi"] }, "id": { "type": "string", @@ -10061,15 +8591,15 @@ }, "assistantId": { "type": "string", - "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.\n\nIf both `assistantId` and `squadId` are set, `assistantId` takes precedence." + "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.\n\nIf both `assistantId` and `squadId` are set, `assistantId` takes precedence." + "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 \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", @@ -10093,6 +8623,7 @@ "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/NumberTransferDestination", @@ -10107,9 +8638,7 @@ "provider": { "type": "string", "description": "This is the provider of the phone number. `twilio` here.", - "enum": [ - "twilio" - ] + "enum": ["twilio"] }, "number": { "type": "string", @@ -10130,15 +8659,15 @@ }, "assistantId": { "type": "string", - "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.\n\nIf both `assistantId` and `squadId` are set, `assistantId` takes precedence." + "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.\n\nIf both `assistantId` and `squadId` are set, `assistantId` takes precedence." + "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 \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", @@ -10156,6 +8685,7 @@ "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/NumberTransferDestination", @@ -10170,9 +8700,7 @@ "provider": { "type": "string", "description": "This is the provider of the phone number. `vonage` here.", - "enum": [ - "vonage" - ] + "enum": ["vonage"] }, "number": { "type": "string", @@ -10189,31 +8717,28 @@ }, "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.\n\nIf both `assistantId` and `squadId` are set, `assistantId` takes precedence." + "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.\n\nIf both `assistantId` and `squadId` are set, `assistantId` takes precedence." + "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 \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": [ - "provider", - "number", - "credentialId" - ] + "required": ["provider", "number", "credentialId"] }, "CreateVapiPhoneNumberDTO": { "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/NumberTransferDestination", @@ -10228,9 +8753,7 @@ "provider": { "type": "string", "description": "This is the provider of the phone number. `vapi` here.", - "enum": [ - "vapi" - ] + "enum": ["vapi"] }, "sipUri": { "type": "string", @@ -10243,30 +8766,28 @@ }, "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.\n\nIf both `assistantId` and `squadId` are set, `assistantId` takes precedence." + "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.\n\nIf both `assistantId` and `squadId` are set, `assistantId` takes precedence." + "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 \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": [ - "provider", - "sipUri" - ] + "required": ["provider", "sipUri"] }, "BuyPhoneNumberDTO": { "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/NumberTransferDestination", @@ -10291,29 +8812,28 @@ }, "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.\n\nIf both `assistantId` and `squadId` are set, `assistantId` takes precedence." + "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.\n\nIf both `assistantId` and `squadId` are set, `assistantId` takes precedence." + "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 \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": [ - "areaCode" - ] + "required": ["areaCode"] }, "ImportVonagePhoneNumberDTO": { "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/NumberTransferDestination", @@ -10340,30 +8860,28 @@ }, "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.\n\nIf both `assistantId` and `squadId` are set, `assistantId` takes precedence." + "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.\n\nIf both `assistantId` and `squadId` are set, `assistantId` takes precedence." + "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 \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" - ] + "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/NumberTransferDestination", @@ -10382,15 +8900,15 @@ }, "assistantId": { "type": "string", - "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.\n\nIf both `assistantId` and `squadId` are set, `assistantId` takes precedence." + "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.\n\nIf both `assistantId` and `squadId` are set, `assistantId` takes precedence." + "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 \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", @@ -10398,6 +8916,90 @@ } } }, + "TokenRestrictions": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "This determines whether the token is enabled or disabled. Default is true, it's enabled." + }, + "allowedOrigins": { + "description": "This determines the allowed origins for this token. Validates the `Origin` header. Default is any origin.\n\nOnly relevant for `public` tokens.", + "type": "array", + "items": { "type": "string" } + }, + "allowedAssistantIds": { + "description": "This determines which assistantIds can be used when creating a call. Defauft is any assistantId.\n\nOnly relevant for `public` tokens.", + "type": "array", + "items": { "type": "string" } + }, + "allowTransientAssistant": { + "type": "boolean", + "description": "This determines whether transient assistants can be used when creating a call. Default is true.\n\nIf `allowedAssistantIds` is provided, this is automatically false.\n\nOnly relevant for `public` tokens." + } + } + }, + "CreateTokenDTO": { + "type": "object", + "properties": { + "tag": { + "type": "string", + "description": "This is the tag for the token. It represents its scope.", + "enum": ["private", "public"] + }, + "name": { + "type": "string", + "description": "This is the name of the token. This is just for your own reference.", + "maxLength": 40 + }, + "restrictions": { + "description": "This are the restrictions for the token.", + "allOf": [{ "$ref": "#/components/schemas/TokenRestrictions" }] + } + } + }, + "Token": { + "type": "object", + "properties": { + "tag": { + "type": "string", + "description": "This is the tag for the token. It represents its scope.", + "enum": ["private", "public"] + }, + "id": { + "type": "string", + "description": "This is the unique identifier for the token." + }, + "orgId": { + "type": "string", + "description": "This is unique identifier for the org that this token belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the token was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the token was last updated." + }, + "value": { + "type": "string", + "description": "This is the token key." + }, + "name": { + "type": "string", + "description": "This is the name of the token. This is just for your own reference.", + "maxLength": 40 + }, + "restrictions": { + "description": "This are the restrictions for the token.", + "allOf": [{ "$ref": "#/components/schemas/TokenRestrictions" }] + } + }, + "required": ["id", "orgId", "createdAt", "updatedAt", "value"] + }, "VoiceLibrary": { "type": "object", "properties": { @@ -10424,10 +9026,7 @@ "type": "string", "description": "The unique slug of the voice." }, - "name": { - "type": "string", - "description": "The name of the voice." - }, + "name": { "type": "string", "description": "The name of the voice." }, "language": { "type": "string", "description": "The language of the voice." @@ -10447,10 +9046,7 @@ "gender": { "type": "string", "description": "The gender of the voice.", - "enum": [ - "male", - "female" - ] + "enum": ["male", "female"] }, "accent": { "type": "string", @@ -10541,22 +9137,12 @@ "ToolTemplateSetup": { "type": "object", "properties": { - "title": { - "type": "string" - }, - "description": { - "type": "string" - }, - "videoUrl": { - "type": "string" - }, - "docsUrl": { - "type": "string" - } + "title": { "type": "string" }, + "description": { "type": "string" }, + "videoUrl": { "type": "string" }, + "docsUrl": { "type": "string" } }, - "required": [ - "title" - ] + "required": ["title"] }, "MakeToolProviderDetails": { "type": "object", @@ -10567,33 +9153,19 @@ }, "setupInstructions": { "type": "array", - "items": { - "$ref": "#/components/schemas/ToolTemplateSetup" - } + "items": { "$ref": "#/components/schemas/ToolTemplateSetup" } }, "type": { "type": "string", - "enum": [ - "make" - ], + "enum": ["make"], "description": "The type of tool. \"make\" for Make tool." }, - "scenarioId": { - "type": "number" - }, - "scenarioName": { - "type": "string" - }, - "triggerHookId": { - "type": "number" - }, - "triggerHookName": { - "type": "string" - } + "scenarioId": { "type": "number" }, + "scenarioName": { "type": "string" }, + "triggerHookId": { "type": "number" }, + "triggerHookName": { "type": "string" } }, - "required": [ - "type" - ] + "required": ["type"] }, "GhlToolProviderDetails": { "type": "object", @@ -10604,36 +9176,20 @@ }, "setupInstructions": { "type": "array", - "items": { - "$ref": "#/components/schemas/ToolTemplateSetup" - } + "items": { "$ref": "#/components/schemas/ToolTemplateSetup" } }, "type": { "type": "string", - "enum": [ - "ghl" - ], + "enum": ["ghl"], "description": "The type of tool. \"ghl\" for GHL tool." }, - "workflowId": { - "type": "string" - }, - "workflowName": { - "type": "string" - }, - "webhookHookId": { - "type": "string" - }, - "webhookHookName": { - "type": "string" - }, - "locationId": { - "type": "string" - } + "workflowId": { "type": "string" }, + "workflowName": { "type": "string" }, + "webhookHookId": { "type": "string" }, + "webhookHookName": { "type": "string" }, + "locationId": { "type": "string" } }, - "required": [ - "type" - ] + "required": ["type"] }, "FunctionToolProviderDetails": { "type": "object", @@ -10644,34 +9200,22 @@ }, "setupInstructions": { "type": "array", - "items": { - "$ref": "#/components/schemas/ToolTemplateSetup" - } + "items": { "$ref": "#/components/schemas/ToolTemplateSetup" } }, "type": { "type": "string", - "enum": [ - "function" - ], + "enum": ["function"], "description": "The type of tool. \"function\" for Function tool." } }, - "required": [ - "type" - ] + "required": ["type"] }, "ToolTemplateMetadata": { "type": "object", "properties": { - "collectionType": { - "type": "string" - }, - "collectionId": { - "type": "string" - }, - "collectionName": { - "type": "string" - } + "collectionType": { "type": "string" }, + "collectionId": { "type": "string" }, + "collectionName": { "type": "string" } } }, "CreateToolTemplateDTO": { @@ -10680,16 +9224,32 @@ "details": { "oneOf": [ { - "$ref": "#/components/schemas/CreateMakeToolDTO", - "title": "MakeTool" + "$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/CreateFunctionToolDTO", - "title": "FunctionTool" + "$ref": "#/components/schemas/CreateMakeToolDTO", + "title": "MakeTool" + }, + { + "$ref": "#/components/schemas/CreateTransferCallToolDTO", + "title": "TransferCallTool" } ] }, @@ -10709,24 +9269,13 @@ } ] }, - "metadata": { - "$ref": "#/components/schemas/ToolTemplateMetadata" - }, + "metadata": { "$ref": "#/components/schemas/ToolTemplateMetadata" }, "visibility": { "type": "string", "default": "private", - "enum": [ - "public", - "private" - ] - }, - "type": { - "type": "string", - "default": "tool", - "enum": [ - "tool" - ] + "enum": ["public", "private"] }, + "type": { "type": "string", "default": "tool", "enum": ["tool"] }, "name": { "type": "string", "description": "The name of the template. This is just for your own reference.", @@ -10734,16 +9283,10 @@ }, "provider": { "type": "string", - "enum": [ - "make", - "gohighlevel", - "function" - ] + "enum": ["make", "gohighlevel", "function"] } }, - "required": [ - "type" - ] + "required": ["type"] }, "Template": { "type": "object", @@ -10751,16 +9294,32 @@ "details": { "oneOf": [ { - "$ref": "#/components/schemas/CreateMakeToolDTO", - "title": "MakeTool" + "$ref": "#/components/schemas/CreateDtmfToolDTO", + "title": "DtmfTool" }, { - "$ref": "#/components/schemas/CreateGhlToolDTO", - "title": "GhlTool" + "$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" } ] }, @@ -10780,35 +9339,20 @@ } ] }, - "metadata": { - "$ref": "#/components/schemas/ToolTemplateMetadata" - }, + "metadata": { "$ref": "#/components/schemas/ToolTemplateMetadata" }, "visibility": { "default": "private", - "enum": [ - "public", - "private" - ], + "enum": ["public", "private"], "type": "string" }, - "type": { - "type": "string", - "default": "tool", - "enum": [ - "tool" - ] - }, + "type": { "type": "string", "default": "tool", "enum": ["tool"] }, "name": { "type": "string", "description": "The name of the template. This is just for your own reference.", "maxLength": 40 }, "provider": { - "enum": [ - "make", - "gohighlevel", - "function" - ], + "enum": ["make", "gohighlevel", "function"], "type": "string" }, "id": { @@ -10830,13 +9374,7 @@ "description": "The ISO 8601 date-time string of when the template was last updated." } }, - "required": [ - "type", - "id", - "orgId", - "createdAt", - "updatedAt" - ] + "required": ["type", "id", "orgId", "createdAt", "updatedAt"] }, "UpdateToolTemplateDTO": { "type": "object", @@ -10844,16 +9382,32 @@ "details": { "oneOf": [ { - "$ref": "#/components/schemas/CreateMakeToolDTO", - "title": "MakeTool" + "$ref": "#/components/schemas/CreateDtmfToolDTO", + "title": "DtmfTool" }, { - "$ref": "#/components/schemas/CreateGhlToolDTO", - "title": "GhlTool" + "$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" } ] }, @@ -10873,24 +9427,13 @@ } ] }, - "metadata": { - "$ref": "#/components/schemas/ToolTemplateMetadata" - }, + "metadata": { "$ref": "#/components/schemas/ToolTemplateMetadata" }, "visibility": { "type": "string", "default": "private", - "enum": [ - "public", - "private" - ] - }, - "type": { - "type": "string", - "default": "tool", - "enum": [ - "tool" - ] + "enum": ["public", "private"] }, + "type": { "type": "string", "default": "tool", "enum": ["tool"] }, "name": { "type": "string", "description": "The name of the template. This is just for your own reference.", @@ -10898,18 +9441,12 @@ }, "provider": { "type": "string", - "enum": [ - "make", - "gohighlevel", - "function" - ] + "enum": ["make", "gohighlevel", "function"] } }, - "required": [ - "type" - ] + "required": ["type"] }, - "MakeTool": { + "DtmfTool": { "type": "object", "properties": { "async": { @@ -10943,10 +9480,8 @@ }, "type": { "type": "string", - "enum": [ - "make" - ], - "description": "The type of tool. \"make\" for Make tool." + "enum": ["dtmf"], + "description": "The type of tool. \"dtmf\" for DTMF tool." }, "id": { "type": "string", @@ -10967,35 +9502,17 @@ "description": "The ISO 8601 date-time string of when the tool library was last updated." }, "function": { - "description": "This is the function definition of the tool.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, this is a custom function definition.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [{ "$ref": "#/components/schemas/OpenAIFunction" }] }, "server": { "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", - "allOf": [ - { - "$ref": "#/components/schemas/Server" - } - ] - }, - "metadata": { - "$ref": "#/components/schemas/MakeToolMetadata" + "allOf": [{ "$ref": "#/components/schemas/Server" }] } }, - "required": [ - "type", - "id", - "orgId", - "createdAt", - "updatedAt", - "metadata" - ] + "required": ["type", "id", "orgId", "createdAt", "updatedAt"] }, - "GhlTool": { + "EndCallTool": { "type": "object", "properties": { "async": { @@ -11029,10 +9546,8 @@ }, "type": { "type": "string", - "enum": [ - "ghl" - ], - "description": "The type of tool. \"ghl\" for GHL tool." + "enum": ["endCall"], + "description": "The type of tool. \"endCall\" for End Call tool." }, "id": { "type": "string", @@ -11053,33 +9568,15 @@ "description": "The ISO 8601 date-time string of when the tool library was last updated." }, "function": { - "description": "This is the function definition of the tool.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, this is a custom function definition.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [{ "$ref": "#/components/schemas/OpenAIFunction" }] }, "server": { "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", - "allOf": [ - { - "$ref": "#/components/schemas/Server" - } - ] - }, - "metadata": { - "$ref": "#/components/schemas/GhlToolMetadata" + "allOf": [{ "$ref": "#/components/schemas/Server" }] } }, - "required": [ - "type", - "id", - "orgId", - "createdAt", - "updatedAt", - "metadata" - ] + "required": ["type", "id", "orgId", "createdAt", "updatedAt"] }, "FunctionTool": { "type": "object", @@ -11115,9 +9612,7 @@ }, "type": { "type": "string", - "enum": [ - "function" - ], + "enum": ["function"], "description": "The type of tool. \"function\" for Function tool." }, "id": { @@ -11139,31 +9634,17 @@ "description": "The ISO 8601 date-time string of when the tool library was last updated." }, "function": { - "description": "This is the function definition of the tool.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, this is a custom function definition.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [{ "$ref": "#/components/schemas/OpenAIFunction" }] }, "server": { "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", - "allOf": [ - { - "$ref": "#/components/schemas/Server" - } - ] + "allOf": [{ "$ref": "#/components/schemas/Server" }] } }, - "required": [ - "type", - "id", - "orgId", - "createdAt", - "updatedAt" - ] + "required": ["type", "id", "orgId", "createdAt", "updatedAt"] }, - "UpdateMakeToolDTO": { + "GhlTool": { "type": "object", "properties": { "async": { @@ -11197,37 +9678,47 @@ }, "type": { "type": "string", - "enum": [ - "make" - ], - "description": "The type of tool. \"make\" for Make tool." + "enum": ["ghl"], + "description": "The type of tool. \"ghl\" for GHL tool." }, - "metadata": { - "$ref": "#/components/schemas/MakeToolMetadata" + "id": { + "type": "string", + "description": "The unique identifier for the tool library." + }, + "orgId": { + "type": "string", + "description": "The unique identifier for the organization that this tool library belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "The ISO 8601 date-time string of when the tool library was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "The ISO 8601 date-time string of when the tool library was last updated." }, "function": { - "description": "This is the function definition of the tool.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, this is a custom function definition.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [{ "$ref": "#/components/schemas/OpenAIFunction" }] }, "server": { "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", - "allOf": [ - { - "$ref": "#/components/schemas/Server" - } - ] - } + "allOf": [{ "$ref": "#/components/schemas/Server" }] + }, + "metadata": { "$ref": "#/components/schemas/GhlToolMetadata" } }, "required": [ "type", + "id", + "orgId", + "createdAt", + "updatedAt", "metadata" ] }, - "UpdateGhlToolDTO": { + "MakeTool": { "type": "object", "properties": { "async": { @@ -11261,37 +9752,47 @@ }, "type": { "type": "string", - "enum": [ - "ghl" - ], - "description": "The type of tool. \"ghl\" for GHL tool." + "enum": ["make"], + "description": "The type of tool. \"make\" for Make tool." }, - "metadata": { - "$ref": "#/components/schemas/GhlToolMetadata" + "id": { + "type": "string", + "description": "The unique identifier for the tool library." + }, + "orgId": { + "type": "string", + "description": "The unique identifier for the organization that this tool library belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "The ISO 8601 date-time string of when the tool library was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "The ISO 8601 date-time string of when the tool library was last updated." }, "function": { - "description": "This is the function definition of the tool.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, this is a custom function definition.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [{ "$ref": "#/components/schemas/OpenAIFunction" }] }, "server": { "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", - "allOf": [ - { - "$ref": "#/components/schemas/Server" - } - ] - } + "allOf": [{ "$ref": "#/components/schemas/Server" }] + }, + "metadata": { "$ref": "#/components/schemas/MakeToolMetadata" } }, "required": [ "type", + "id", + "orgId", + "createdAt", + "updatedAt", "metadata" ] }, - "UpdateFunctionToolDTO": { + "TransferCallTool": { "type": "object", "properties": { "async": { @@ -11323,33 +9824,55 @@ ] } }, - "type": { + "type": { "type": "string", "enum": ["transferCall"] }, + "destinations": { + "type": "array", + "description": "These are the destinations that the call can be transferred to. If no destinations are provided, server.url will be used to get the transfer destination once the tool is called.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/AssistantTransferDestination", + "title": "AssistantTransferDestination" + }, + { + "$ref": "#/components/schemas/NumberTransferDestination", + "title": "NumberTransferDestination" + }, + { + "$ref": "#/components/schemas/SipTransferDestination", + "title": "SipTransferDestination" + } + ] + } + }, + "id": { + "type": "string", + "description": "The unique identifier for the tool library." + }, + "orgId": { + "type": "string", + "description": "The unique identifier for the organization that this tool library belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "The ISO 8601 date-time string of when the tool library was created." + }, + "updatedAt": { + "format": "date-time", "type": "string", - "enum": [ - "function" - ], - "description": "The type of tool. \"function\" for Function tool." + "description": "The ISO 8601 date-time string of when the tool library was last updated." }, "function": { - "description": "This is the function definition of the tool.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, this is a custom function definition.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [{ "$ref": "#/components/schemas/OpenAIFunction" }] }, "server": { "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", - "allOf": [ - { - "$ref": "#/components/schemas/Server" - } - ] + "allOf": [{ "$ref": "#/components/schemas/Server" }] } }, - "required": [ - "type" - ] + "required": ["type", "id", "orgId", "createdAt", "updatedAt"] }, "UpdateToolDTO": { "type": "object", @@ -11384,52 +9907,27 @@ } }, "function": { - "description": "This is the function definition of the tool.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, this is a custom function definition.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [{ "$ref": "#/components/schemas/OpenAIFunction" }] }, "server": { "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", - "allOf": [ - { - "$ref": "#/components/schemas/Server" - } - ] + "allOf": [{ "$ref": "#/components/schemas/Server" }] } } }, "VoiceLibraryVoiceResponse": { "type": "object", "properties": { - "voiceId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "publicOwnerId": { - "type": "string" - }, - "description": { - "type": "string" - }, - "gender": { - "type": "string" - }, - "age": { - "type": "object" - }, - "accent": { - "type": "string" - } + "voiceId": { "type": "string" }, + "name": { "type": "string" }, + "publicOwnerId": { "type": "string" }, + "description": { "type": "string" }, + "gender": { "type": "string" }, + "age": { "type": "object" }, + "accent": { "type": "string" } }, - "required": [ - "voiceId", - "name" - ] + "required": ["voiceId", "name"] }, "AddVoiceToProviderDTO": { "type": "object", @@ -11447,72 +9945,32 @@ "description": "This is the new name of the voice which you want to have once you have added voice to your provider Account from Provider Voice Library" } }, - "required": [ - "ownerId", - "voiceId", - "name" - ] + "required": ["ownerId", "voiceId", "name"] }, "CreateFileDTO": { "type": "object", - "properties": { - "file": { - "type": "string", - "format": "binary" - } - }, - "required": [ - "file" - ] + "properties": { "file": { "type": "string", "format": "binary" } }, + "required": ["file"] }, "File": { "type": "object", "properties": { - "object": { - "type": "string", - "enum": [ - "file" - ] - }, - "status": { - "enum": [ - "indexed", - "not_indexed" - ], - "type": "string" - }, + "object": { "type": "string", "enum": ["file"] }, + "status": { "enum": ["indexed", "not_indexed"], "type": "string" }, "name": { "type": "string", "description": "This is the name of the file. This is just for your own reference.", "maxLength": 40 }, - "originalName": { - "type": "string" - }, - "bytes": { - "type": "number" - }, - "purpose": { - "type": "string" - }, - "mimetype": { - "type": "string" - }, - "key": { - "type": "string" - }, - "path": { - "type": "string" - }, - "bucket": { - "type": "string" - }, - "url": { - "type": "string" - }, - "metadata": { - "type": "object" - }, + "originalName": { "type": "string" }, + "bytes": { "type": "number" }, + "purpose": { "type": "string" }, + "mimetype": { "type": "string" }, + "key": { "type": "string" }, + "path": { "type": "string" }, + "bucket": { "type": "string" }, + "url": { "type": "string" }, + "metadata": { "type": "object" }, "id": { "type": "string", "description": "This is the unique identifier for the file." @@ -11532,12 +9990,7 @@ "description": "This is the ISO 8601 date-time string of when the file was last updated." } }, - "required": [ - "id", - "orgId", - "createdAt", - "updatedAt" - ] + "required": ["id", "orgId", "createdAt", "updatedAt"] }, "UpdateFileDTO": { "type": "object", @@ -11567,13 +10020,7 @@ "level": { "type": "string", "description": "This is the level of the log message.", - "enum": [ - "INFO", - "LOG", - "WARN", - "ERROR", - "CHECKPOINT" - ] + "enum": ["INFO", "LOG", "WARN", "ERROR", "CHECKPOINT"] }, "time": { "format": "date-time", @@ -11581,77 +10028,36 @@ "description": "This is the ISO 8601 date-time string of when the log was created." } }, - "required": [ - "callId", - "orgId", - "log", - "level", - "time" - ] + "required": ["callId", "orgId", "log", "level", "time"] }, "CallLogsPaginatedResponse": { "type": "object", "properties": { "results": { "type": "array", - "items": { - "$ref": "#/components/schemas/CallLogPrivileged" - } + "items": { "$ref": "#/components/schemas/CallLogPrivileged" } }, - "metadata": { - "$ref": "#/components/schemas/PaginationMeta" - } + "metadata": { "$ref": "#/components/schemas/PaginationMeta" } }, - "required": [ - "results", - "metadata" - ] + "required": ["results", "metadata"] }, "Metrics": { "type": "object", "properties": { - "orgId": { - "type": "string" - }, - "rangeStart": { - "type": "string" - }, - "rangeEnd": { - "type": "string" - }, - "bill": { - "type": "number" - }, - "billWithinBillingLimit": { - "type": "boolean" - }, - "billDailyBreakdown": { - "type": "object" - }, - "callActive": { - "type": "string" - }, - "callActiveWithinConcurrencyLimit": { - "type": "boolean" - }, - "callMinutes": { - "type": "string" - }, - "callMinutesDailyBreakdown": { - "type": "object" - }, - "callMinutesAverage": { - "type": "string" - }, - "callMinutesAverageDailyBreakdown": { - "type": "object" - }, - "callCount": { - "type": "string" - }, - "callCountDailyBreakdown": { - "type": "object" - } + "orgId": { "type": "string" }, + "rangeStart": { "type": "string" }, + "rangeEnd": { "type": "string" }, + "bill": { "type": "number" }, + "billWithinBillingLimit": { "type": "boolean" }, + "billDailyBreakdown": { "type": "object" }, + "callActive": { "type": "string" }, + "callActiveWithinConcurrencyLimit": { "type": "boolean" }, + "callMinutes": { "type": "string" }, + "callMinutesDailyBreakdown": { "type": "object" }, + "callMinutesAverage": { "type": "string" }, + "callMinutesAverageDailyBreakdown": { "type": "object" }, + "callCount": { "type": "string" }, + "callCountDailyBreakdown": { "type": "object" } }, "required": [ "orgId", @@ -11670,28 +10076,157 @@ "callCountDailyBreakdown" ] }, + "TimeRange": { + "type": "object", + "properties": { + "step": { + "type": "string", + "description": "This is the time step for aggregations.\n\nIf not provided, defaults to returning for the entire time range.", + "enum": [ + "minute", + "hour", + "day", + "week", + "month", + "quarter", + "year", + "decade", + "century", + "millennium" + ] + }, + "start": { + "format": "date-time", + "type": "string", + "description": "This is the start date for the time range.\n\nIf not provided, defaults to the 7 days ago." + }, + "end": { + "format": "date-time", + "type": "string", + "description": "This is the end date for the time range.\n\nIf not provided, defaults to now." + }, + "timezone": { + "type": "string", + "description": "This is the timezone you want to set for the query.\n\nIf not provided, defaults to UTC." + } + } + }, + "AnalyticsOperation": { + "type": "object", + "properties": { + "operation": { + "type": "string", + "description": "This is the aggregation operation you want to perform.", + "enum": ["sum", "avg", "count", "min", "max"] + }, + "column": { + "type": "string", + "description": "This is the columns you want to perform the aggregation operation on.", + "enum": [ + "id", + "cost", + "costBreakdown.llm", + "costBreakdown.stt", + "costBreakdown.tts", + "costBreakdown.vapi", + "duration" + ] + }, + "alias": { + "type": "string", + "description": "This is the alias for column name returned. Defaults to `${operation}${column}`." + } + }, + "required": ["operation", "column"] + }, + "AnalyticsQuery": { + "type": "object", + "properties": { + "table": { + "type": "string", + "description": "This is the table you want to query.", + "enum": ["call"] + }, + "groupBy": { + "type": "array", + "description": "This is the list of columns you want to group by.", + "enum": [ + "type", + "assistantId", + "endedReason", + "analysis.successEvaluation" + ], + "items": { + "type": "string", + "enum": [ + "type", + "assistantId", + "endedReason", + "analysis.successEvaluation" + ] + } + }, + "name": { + "type": "string", + "description": "This is the name of the query. This will be used to identify the query in the response." + }, + "timeRange": { + "description": "This is the time range for the query.", + "allOf": [{ "$ref": "#/components/schemas/TimeRange" }] + }, + "operations": { + "description": "This is the list of operations you want to perform.", + "type": "array", + "items": { "$ref": "#/components/schemas/AnalyticsOperation" } + } + }, + "required": ["table", "name", "operations"] + }, + "AnalyticsQueryDTO": { + "type": "object", + "properties": { + "queries": { + "description": "This is the list of metric queries you want to perform.", + "type": "array", + "items": { "$ref": "#/components/schemas/AnalyticsQuery" } + } + }, + "required": ["queries"] + }, + "AnalyticsQueryResult": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "This is the unique key for the query." + }, + "timeRange": { + "description": "This is the time range for the query.", + "allOf": [{ "$ref": "#/components/schemas/TimeRange" }] + }, + "result": { + "description": "This is the result of the query, a list of unique groups with result of their aggregations.\n\nExample:\n\"result\": [\n { \"date\": \"2023-01-01\", \"assistantId\": \"123\", \"endedReason\": \"customer-ended-call\", \"sumDuration\": 120, \"avgCost\": 10.5 },\n { \"date\": \"2023-01-02\", \"assistantId\": \"123\", \"endedReason\": \"customer-did-not-give-microphone-permission\", \"sumDuration\": 0, \"avgCost\": 0 },\n // Additional results\n]", + "type": "array", + "items": { "type": "object" } + } + }, + "required": ["name", "timeRange", "result"] + }, "ConversationUpdateMessage": { "type": "object", "properties": { "type": { "type": "string", "description": "This is the type of the message. \"conversation-update\" is sent when an update is committed to the conversation history.", - "enum": [ - "conversation-update" - ] + "enum": ["conversation-update"] }, "messagesOpenAIFormatted": { "description": "This is the most up-to-date conversation history at the time the message is sent.", "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAIMessage" - } + "items": { "$ref": "#/components/schemas/OpenAIMessage" } } }, - "required": [ - "type", - "messagesOpenAIFormatted" - ] + "required": ["type", "messagesOpenAIFormatted"] }, "FunctionCallMessage": { "type": "object", @@ -11737,19 +10272,14 @@ "type": "string", "description": "This is the type of the message. \"function-call-result\" is sent to forward the result of a function call to the client.", "deprecated": true, - "enum": [ - "function-call-result" - ] + "enum": ["function-call-result"] }, "functionCallResult": { "type": "object", "description": "This is the result of the function call." } }, - "required": [ - "type", - "functionCallResult" - ] + "required": ["type", "functionCallResult"] }, "HangMessage": { "type": "object", @@ -11757,14 +10287,10 @@ "type": { "type": "string", "description": "This is the type of the message. \"hang\" is sent when the assistant is hanging due to a delay. The delay can be caused by many factors, such as:\n- the model is too slow to respond\n- the voice is too slow to respond\n- the tool call is still waiting for a response from your server\n- etc.", - "enum": [ - "hang" - ] + "enum": ["hang"] } }, - "required": [ - "type" - ] + "required": ["type"] }, "MetadataMessage": { "type": "object", @@ -11772,19 +10298,14 @@ "type": { "type": "string", "description": "This is the type of the message. \"metadata\" is sent to forward metadata to the client.", - "enum": [ - "metadata" - ] + "enum": ["metadata"] }, "metadata": { "type": "string", "description": "This is the metadata content" } }, - "required": [ - "type", - "metadata" - ] + "required": ["type", "metadata"] }, "ModelOutputMessage": { "type": "object", @@ -11792,19 +10313,14 @@ "type": { "type": "string", "description": "This is the type of the message. \"model-output\" is sent as the model outputs tokens.", - "enum": [ - "model-output" - ] + "enum": ["model-output"] }, "output": { - "type": "string", - "description": "This is the output of the model." + "type": "object", + "description": "This is the output of the model. It can be a token or tool call." } }, - "required": [ - "type", - "output" - ] + "required": ["type", "output"] }, "SpeechUpdateMessage": { "type": "object", @@ -11812,32 +10328,20 @@ "type": { "type": "string", "description": "This is the type of the message. \"speech-update\" is sent whenever assistant or user start or stop speaking.", - "enum": [ - "speech-update" - ] + "enum": ["speech-update"] }, "status": { "type": "string", "description": "This is the status of the speech update.", - "enum": [ - "started", - "stopped" - ] + "enum": ["started", "stopped"] }, "role": { "type": "string", "description": "This is the role which the speech update is for.", - "enum": [ - "assistant", - "user" - ] + "enum": ["assistant", "user"] } }, - "required": [ - "type", - "status", - "role" - ] + "required": ["type", "status", "role"] }, "UserMessage": { "type": "object", @@ -11867,13 +10371,7 @@ "description": "The duration of the message in seconds." } }, - "required": [ - "role", - "message", - "time", - "endTime", - "secondsFromStart" - ] + "required": ["role", "message", "time", "endTime", "secondsFromStart"] }, "SystemMessage": { "type": "object", @@ -11895,12 +10393,7 @@ "description": "The number of seconds from the start of the conversation." } }, - "required": [ - "role", - "message", - "time", - "secondsFromStart" - ] + "required": ["role", "message", "time", "secondsFromStart"] }, "BotMessage": { "type": "object", @@ -11930,13 +10423,7 @@ "description": "The source of the message." } }, - "required": [ - "role", - "message", - "time", - "endTime", - "secondsFromStart" - ] + "required": ["role", "message", "time", "endTime", "secondsFromStart"] }, "ToolCallMessage": { "type": "object", @@ -11948,9 +10435,7 @@ "toolCalls": { "description": "The list of tool calls made during the conversation.", "type": "array", - "items": { - "type": "object" - } + "items": { "type": "object" } }, "message": { "type": "string", @@ -11965,13 +10450,7 @@ "description": "The number of seconds from the start of the conversation." } }, - "required": [ - "role", - "toolCalls", - "message", - "time", - "secondsFromStart" - ] + "required": ["role", "toolCalls", "message", "time", "secondsFromStart"] }, "ToolCallResultMessage": { "type": "object", @@ -12033,14 +10512,8 @@ "type": "number", "description": "The number of seconds from the start of the conversation." } - }, - "required": [ - "role", - "name", - "result", - "time", - "secondsFromStart" - ] + }, + "required": ["role", "name", "result", "time", "secondsFromStart"] }, "StatusUpdateMessage": { "type": "object", @@ -12048,20 +10521,12 @@ "type": { "type": "string", "description": "This is the type of the message. \"status-update\" is sent whenever the `call.status` changes.", - "enum": [ - "status-update" - ] + "enum": ["status-update"] }, "status": { "type": "string", "description": "This is the status of the call.", - "enum": [ - "queued", - "ringing", - "in-progress", - "forwarding", - "ended" - ] + "enum": ["queued", "ringing", "in-progress", "forwarding", "ended"] }, "endedReason": { "type": "string", @@ -12188,9 +10653,7 @@ "messagesOpenAIFormatted": { "description": "These are the conversation messages of the call. This is only sent if the status is \"forwarding\".", "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAIMessage" - } + "items": { "$ref": "#/components/schemas/OpenAIMessage" } }, "destination": { "description": "This is the destination the call is being transferred to. This is only sent if the status is \"forwarding\".", @@ -12214,10 +10677,7 @@ "description": "This is the inbound phone call debugging artifacts. This is only sent if the status is \"ended\" and there was an error accepting the inbound phone call.\n\nThis will include any errors related to the \"assistant-request\" if one was made." } }, - "required": [ - "type", - "status" - ] + "required": ["type", "status"] }, "TranscriptMessage": { "type": "object", @@ -12225,37 +10685,24 @@ "type": { "type": "string", "description": "This is the type of the message. \"transcript\" is sent as transcriber outputs partial or final transcript.", - "enum": [ - "transcript" - ] + "enum": ["transcript"] }, "role": { "type": "string", "description": "This is the role for which the transcript is for.", - "enum": [ - "assistant", - "user" - ] + "enum": ["assistant", "user"] }, "transcriptType": { "type": "string", "description": "This is the type of the transcript.", - "enum": [ - "partial", - "final" - ] + "enum": ["partial", "final"] }, "transcript": { "type": "string", "description": "This is the transcript content." } }, - "required": [ - "type", - "role", - "transcriptType", - "transcript" - ] + "required": ["type", "role", "transcriptType", "transcript"] }, "ToolCallFunction": { "type": "object", @@ -12269,10 +10716,7 @@ "description": "These are the arguments that the function was called with." } }, - "required": [ - "name", - "arguments" - ] + "required": ["name", "arguments"] }, "ToolCall": { "type": "object", @@ -12280,28 +10724,18 @@ "type": { "type": "string", "description": "This is the type of tool the model called.", - "enum": [ - "function" - ] + "enum": ["function"] }, "function": { "description": "This is the function the model called.", - "allOf": [ - { - "$ref": "#/components/schemas/ToolCallFunction" - } - ] + "allOf": [{ "$ref": "#/components/schemas/ToolCallFunction" }] }, "id": { "type": "string", "description": "This is the unique identifier for the tool call." } }, - "required": [ - "type", - "function", - "id" - ] + "required": ["type", "function", "id"] }, "FunctionToolWithToolCall": { "type": "object", @@ -12337,35 +10771,20 @@ }, "type": { "type": "string", - "enum": [ - "function" - ], + "enum": ["function"], "description": "The type of tool. \"function\" for Function tool." }, - "toolCall": { - "$ref": "#/components/schemas/ToolCall" - }, + "toolCall": { "$ref": "#/components/schemas/ToolCall" }, "function": { - "description": "This is the function definition of the tool.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, this is a custom function definition.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [{ "$ref": "#/components/schemas/OpenAIFunction" }] }, "server": { "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", - "allOf": [ - { - "$ref": "#/components/schemas/Server" - } - ] + "allOf": [{ "$ref": "#/components/schemas/Server" }] } }, - "required": [ - "type", - "toolCall" - ] + "required": ["type", "toolCall"] }, "GhlToolWithToolCall": { "type": "object", @@ -12401,39 +10820,21 @@ }, "type": { "type": "string", - "enum": [ - "ghl" - ], + "enum": ["ghl"], "description": "The type of tool. \"ghl\" for GHL tool." }, - "toolCall": { - "$ref": "#/components/schemas/ToolCall" - }, - "metadata": { - "$ref": "#/components/schemas/GhlToolMetadata" - }, + "toolCall": { "$ref": "#/components/schemas/ToolCall" }, + "metadata": { "$ref": "#/components/schemas/GhlToolMetadata" }, "function": { - "description": "This is the function definition of the tool.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, this is a custom function definition.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [{ "$ref": "#/components/schemas/OpenAIFunction" }] }, "server": { "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", - "allOf": [ - { - "$ref": "#/components/schemas/Server" - } - ] + "allOf": [{ "$ref": "#/components/schemas/Server" }] } }, - "required": [ - "type", - "toolCall", - "metadata" - ] + "required": ["type", "toolCall", "metadata"] }, "MakeToolWithToolCall": { "type": "object", @@ -12469,39 +10870,21 @@ }, "type": { "type": "string", - "enum": [ - "make" - ], + "enum": ["make"], "description": "The type of tool. \"make\" for Make tool." }, - "toolCall": { - "$ref": "#/components/schemas/ToolCall" - }, - "metadata": { - "$ref": "#/components/schemas/MakeToolMetadata" - }, + "toolCall": { "$ref": "#/components/schemas/ToolCall" }, + "metadata": { "$ref": "#/components/schemas/MakeToolMetadata" }, "function": { - "description": "This is the function definition of the tool.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, this is a custom function definition.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [{ "$ref": "#/components/schemas/OpenAIFunction" }] }, "server": { "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", - "allOf": [ - { - "$ref": "#/components/schemas/Server" - } - ] + "allOf": [{ "$ref": "#/components/schemas/Server" }] } }, - "required": [ - "type", - "toolCall", - "metadata" - ] + "required": ["type", "toolCall", "metadata"] }, "ToolCallsMessage": { "type": "object", @@ -12509,9 +10892,7 @@ "type": { "type": "string", "description": "This is the type of the message. \"tool-calls\" is sent to call a tool.", - "enum": [ - "tool-calls" - ] + "enum": ["tool-calls"] }, "toolWithToolCallList": { "type": "array", @@ -12536,15 +10917,10 @@ "toolCallList": { "description": "This is the list of tool calls that the model is requesting.", "type": "array", - "items": { - "$ref": "#/components/schemas/ToolCall" - } + "items": { "$ref": "#/components/schemas/ToolCall" } } }, - "required": [ - "toolWithToolCallList", - "toolCallList" - ] + "required": ["toolWithToolCallList", "toolCallList"] }, "ToolCallsResultMessage": { "type": "object", @@ -12552,19 +10928,14 @@ "type": { "type": "string", "description": "This is the type of the message. \"tool-calls-result\" is sent to forward the result of a tool call to the client.", - "enum": [ - "tool-calls-result" - ] + "enum": ["tool-calls-result"] }, "toolCallResult": { "type": "object", "description": "This is the result of the tool call." } }, - "required": [ - "type", - "toolCallResult" - ] + "required": ["type", "toolCallResult"] }, "UserInterruptedMessage": { "type": "object", @@ -12572,14 +10943,10 @@ "type": { "type": "string", "description": "This is the type of the message. \"user-interrupted\" is sent when the user interrupts the assistant.", - "enum": [ - "user-interrupted" - ] + "enum": ["user-interrupted"] } }, - "required": [ - "type" - ] + "required": ["type"] }, "VoiceInputMessage": { "type": "object", @@ -12587,19 +10954,14 @@ "type": { "type": "string", "description": "This is the type of the message. \"voice-input\" is sent when a generation is requested from voice provider.", - "enum": [ - "voice-input" - ] + "enum": ["voice-input"] }, "input": { "type": "string", "description": "This is the voice input content" } }, - "required": [ - "type", - "input" - ] + "required": ["type", "input"] }, "ClientMessage": { "type": "object", @@ -12662,9 +11024,7 @@ ] } }, - "required": [ - "message" - ] + "required": ["message"] }, "AssistantRequestServerMessage": { "type": "object", @@ -12672,9 +11032,7 @@ "type": { "type": "string", "description": "This is the type of the message. \"assistant-request\" is sent to fetch assistant configuration for an incoming call.", - "enum": [ - "assistant-request" - ] + "enum": ["assistant-request"] }, "phoneNumber": { "type": "object", @@ -12697,11 +11055,7 @@ "description": "This is the timestamp of the message." } }, - "required": [ - "type", - "customer", - "call" - ] + "required": ["type", "customer", "call"] }, "ConversationUpdateServerMessage": { "type": "object", @@ -12709,16 +11063,12 @@ "type": { "type": "string", "description": "This is the type of the message. \"conversation-update\" is sent when an update is committed to the conversation history.", - "enum": [ - "conversation-update" - ] + "enum": ["conversation-update"] }, "messagesOpenAIFormatted": { "description": "This is the most up-to-date conversation history at the time the message is sent.", "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAIMessage" - } + "items": { "$ref": "#/components/schemas/OpenAIMessage" } }, "phoneNumber": { "type": "object", @@ -12741,12 +11091,7 @@ "description": "This is the timestamp of the message." } }, - "required": [ - "type", - "messagesOpenAIFormatted", - "customer", - "call" - ] + "required": ["type", "messagesOpenAIFormatted", "customer", "call"] }, "EndOfCallReportServerMessage": { "type": "object", @@ -12754,9 +11099,7 @@ "type": { "type": "string", "description": "This is the type of the message. \"end-of-call-report\" is sent when the call ends and post-processing is complete.", - "enum": [ - "end-of-call-report" - ] + "enum": ["end-of-call-report"] }, "endedReason": { "type": "string", @@ -12902,11 +11245,7 @@ }, "artifact": { "description": "These are the artifacts from the call.", - "allOf": [ - { - "$ref": "#/components/schemas/Artifact" - } - ] + "allOf": [{ "$ref": "#/components/schemas/Artifact" }] }, "timestamp": { "type": "string", @@ -12922,11 +11261,7 @@ }, "analysis": { "description": "This is the analysis of the call.", - "allOf": [ - { - "$ref": "#/components/schemas/Analysis" - } - ] + "allOf": [{ "$ref": "#/components/schemas/Analysis" }] } }, "required": [ @@ -12946,9 +11281,7 @@ "type": "string", "description": "This is the type of the message. \"function-call\" is sent to call a function.", "deprecated": true, - "enum": [ - "function-call" - ] + "enum": ["function-call"] }, "phoneNumber": { "type": "object", @@ -12976,12 +11309,7 @@ "deprecated": true } }, - "required": [ - "type", - "customer", - "call", - "functionCall" - ] + "required": ["type", "customer", "call", "functionCall"] }, "HangServerMessage": { "type": "object", @@ -12989,9 +11317,7 @@ "type": { "type": "string", "description": "This is the type of the message. \"hang\" is sent when the assistant is hanging due to a delay. The delay can be caused by many factors, such as:\n- the model is too slow to respond\n- the voice is too slow to respond\n- the tool call is still waiting for a response from your server\n- etc.", - "enum": [ - "hang" - ] + "enum": ["hang"] }, "phoneNumber": { "type": "object", @@ -13014,11 +11340,7 @@ "description": "This is the timestamp of the message." } }, - "required": [ - "type", - "customer", - "call" - ] + "required": ["type", "customer", "call"] }, "ModelOutputServerMessage": { "type": "object", @@ -13026,9 +11348,7 @@ "type": { "type": "string", "description": "This is the type of the message. \"model-output\" is sent as the model outputs tokens.", - "enum": [ - "model-output" - ] + "enum": ["model-output"] }, "phoneNumber": { "type": "object", @@ -13051,16 +11371,11 @@ "description": "This is the timestamp of the message." }, "output": { - "type": "string", - "description": "This is the output of the model." + "type": "object", + "description": "This is the output of the model. It can be a token or tool call." } }, - "required": [ - "type", - "customer", - "call", - "output" - ] + "required": ["type", "customer", "call", "output"] }, "PhoneCallControlServerMessage": { "type": "object", @@ -13068,17 +11383,12 @@ "type": { "type": "string", "description": "This is the type of the message. \"phone-call-control\" is an advanced type of message.\n\nWhen it is requested in `assistant.serverMessages`, the hangup and forwarding responsibilities are delegated to your server. Vapi will no longer do the actual transfer and hangup.", - "enum": [ - "phone-call-control" - ] + "enum": ["phone-call-control"] }, "request": { "type": "string", "description": "This is the request to control the phone call.", - "enum": [ - "forward", - "hang-up" - ] + "enum": ["forward", "hang-up"] }, "phoneNumber": { "type": "object", @@ -13105,12 +11415,7 @@ "description": "This is the phone number to forward to if the request is \"forward\"." } }, - "required": [ - "type", - "request", - "customer", - "call" - ] + "required": ["type", "request", "customer", "call"] }, "SpeechUpdateServerMessage": { "type": "object", @@ -13118,25 +11423,17 @@ "type": { "type": "string", "description": "This is the type of the message. \"speech-update\" is sent whenever assistant or user start or stop speaking.", - "enum": [ - "speech-update" - ] + "enum": ["speech-update"] }, "status": { "type": "string", "description": "This is the status of the speech update.", - "enum": [ - "started", - "stopped" - ] + "enum": ["started", "stopped"] }, "role": { "type": "string", "description": "This is the role which the speech update is for.", - "enum": [ - "assistant", - "user" - ] + "enum": ["assistant", "user"] }, "phoneNumber": { "type": "object", @@ -13159,13 +11456,7 @@ "description": "This is the timestamp of the message." } }, - "required": [ - "type", - "status", - "role", - "customer", - "call" - ] + "required": ["type", "status", "role", "customer", "call"] }, "StatusUpdateServerMessage": { "type": "object", @@ -13173,20 +11464,12 @@ "type": { "type": "string", "description": "This is the type of the message. \"status-update\" is sent whenever the `call.status` changes.", - "enum": [ - "status-update" - ] + "enum": ["status-update"] }, "status": { "type": "string", "description": "This is the status of the call.", - "enum": [ - "queued", - "ringing", - "in-progress", - "forwarding", - "ended" - ] + "enum": ["queued", "ringing", "in-progress", "forwarding", "ended"] }, "endedReason": { "type": "string", @@ -13313,9 +11596,7 @@ "messagesOpenAIFormatted": { "description": "These are the conversation messages of the call. This is only sent if the status is \"forwarding\".", "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAIMessage" - } + "items": { "$ref": "#/components/schemas/OpenAIMessage" } }, "destination": { "description": "This is the destination the call is being transferred to. This is only sent if the status is \"forwarding\".", @@ -13359,12 +11640,7 @@ "description": "This is the inbound phone call debugging artifacts. This is only sent if the status is \"ended\" and there was an error accepting the inbound phone call.\n\nThis will include any errors related to the \"assistant-request\" if one was made." } }, - "required": [ - "type", - "status", - "customer", - "call" - ] + "required": ["type", "status", "customer", "call"] }, "ToolCallsServerMessage": { "type": "object", @@ -13372,9 +11648,7 @@ "type": { "type": "string", "description": "This is the type of the message. \"tool-calls\" is sent to call a tool.", - "enum": [ - "tool-calls" - ] + "enum": ["tool-calls"] }, "toolWithToolCallList": { "type": "array", @@ -13419,17 +11693,10 @@ "toolCallList": { "description": "This is the list of tool calls that the model is requesting.", "type": "array", - "items": { - "$ref": "#/components/schemas/ToolCall" - } + "items": { "$ref": "#/components/schemas/ToolCall" } } }, - "required": [ - "toolWithToolCallList", - "customer", - "call", - "toolCallList" - ] + "required": ["toolWithToolCallList", "customer", "call", "toolCallList"] }, "TransferDestinationRequestServerMessage": { "type": "object", @@ -13437,9 +11704,7 @@ "type": { "type": "string", "description": "This is the type of the message. \"transfer-destination-request\" is sent when the model is requesting transfer but destination is unknown.", - "enum": [ - "transfer-destination-request" - ] + "enum": ["transfer-destination-request"] }, "phoneNumber": { "type": "object", @@ -13462,11 +11727,7 @@ "description": "This is the timestamp of the message." } }, - "required": [ - "type", - "customer", - "call" - ] + "required": ["type", "customer", "call"] }, "TranscriptServerMessage": { "type": "object", @@ -13474,9 +11735,7 @@ "type": { "type": "string", "description": "This is the type of the message. \"transcript\" is sent as transcriber outputs partial or final transcript.", - "enum": [ - "transcript" - ] + "enum": ["transcript"] }, "phoneNumber": { "type": "object", @@ -13501,18 +11760,12 @@ "role": { "type": "string", "description": "This is the role for which the transcript is for.", - "enum": [ - "assistant", - "user" - ] + "enum": ["assistant", "user"] }, "transcriptType": { "type": "string", "description": "This is the type of the transcript.", - "enum": [ - "partial", - "final" - ] + "enum": ["partial", "final"] }, "transcript": { "type": "string", @@ -13534,9 +11787,7 @@ "type": { "type": "string", "description": "This is the type of the message. \"user-interrupted\" is sent when the user interrupts the assistant.", - "enum": [ - "user-interrupted" - ] + "enum": ["user-interrupted"] }, "phoneNumber": { "type": "object", @@ -13559,11 +11810,7 @@ "description": "This is the timestamp of the message." } }, - "required": [ - "type", - "customer", - "call" - ] + "required": ["type", "customer", "call"] }, "VoiceInputServerMessage": { "type": "object", @@ -13571,9 +11818,7 @@ "type": { "type": "string", "description": "This is the type of the message. \"voice-input\" is sent when a generation is requested from voice provider.", - "enum": [ - "voice-input" - ] + "enum": ["voice-input"] }, "phoneNumber": { "type": "object", @@ -13600,12 +11845,7 @@ "description": "This is the voice input content" } }, - "required": [ - "type", - "customer", - "call", - "input" - ] + "required": ["type", "customer", "call", "input"] }, "ServerMessage": { "type": "object", @@ -13672,15 +11912,13 @@ ] } }, - "required": [ - "message" - ] + "required": ["message"] }, "AssistantRequestMessageResponse": { "type": "object", "properties": { "destination": { - "description": "This is the destination to transfer to if the call should be transferred.\n\nIf this is sent, `assistantId`, `assistant`, `squadId`, and `squad` are ignored.", + "description": "This is the destination to transfer the inbound call to. This will immediately transfer without using any assistants.\n\nIf this is sent, `assistantId`, `assistant`, `squadId`, and `squad` are ignored.", "oneOf": [ { "$ref": "#/components/schemas/NumberTransferDestination", @@ -13699,19 +11937,11 @@ }, "assistant": { "description": "This is the assistant that will be used for the call. To use an existing assistant, use `assistantId` instead.\n\nIf you're unsure why you're getting an invalid assistant, try logging your response and send the JSON blob to POST /assistant which will return the validation errors.", - "allOf": [ - { - "$ref": "#/components/schemas/CreateAssistantDTO" - } - ] + "allOf": [{ "$ref": "#/components/schemas/CreateAssistantDTO" }] }, "assistantOverrides": { "description": "These are the overrides for the `assistant` or `assistantId`'s settings and template variables.", - "allOf": [ - { - "$ref": "#/components/schemas/AssistantOverrides" - } - ] + "allOf": [{ "$ref": "#/components/schemas/AssistantOverrides" }] }, "squadId": { "type": "string", @@ -13719,11 +11949,7 @@ }, "squad": { "description": "This is a squad that will be used for the call. To use an existing squad, use `squadId` instead.", - "allOf": [ - { - "$ref": "#/components/schemas/CreateSquadDTO" - } - ] + "allOf": [{ "$ref": "#/components/schemas/CreateSquadDTO" }] }, "error": { "type": "string", @@ -13749,6 +11975,22 @@ "ToolCallResult": { "type": "object", "properties": { + "message": { + "type": "array", + "description": "This is the message that will be spoken to the user.\n\nIf this is not returned, assistant will speak:\n1. a `request-complete` or `request-failed` message from `tool.messages`, if it exists\n2. a response generated by the model, if not", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" + }, + { + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" + } + ] + } + }, "name": { "type": "string", "description": "This is the name of the function the model called." @@ -13759,17 +12001,14 @@ }, "result": { "type": "string", - "description": "This is the result of the tool call." + "description": "This is the result if the tool call was successful. This is added to the conversation history.\n\nFurther, if this is returned, assistant will speak:\n1. the `message`, if it exists and is of type `request-complete`\n2. a `request-complete` message from `tool.messages`, if it exists\n3. a response generated by the model, if neither exist" }, "error": { "type": "string", - "description": "This is the error message if the tool call was not successful." + "description": "This is the error if the tool call was not successful. This is added to the conversation history.\n\nFurther, if this is returned, assistant will speak:\n1. the `message`, if it exists and is of type `request-failed`\n2. a `request-failed` message from `tool.messages`, if it exists\n3. a response generated by the model, if neither exist" } }, - "required": [ - "name", - "toolCallId" - ] + "required": ["name", "toolCallId"] }, "ToolCallsMessageResponse": { "type": "object", @@ -13777,9 +12016,7 @@ "results": { "description": "These are the results of the \"tool-calls\" message.", "type": "array", - "items": { - "$ref": "#/components/schemas/ToolCallResult" - } + "items": { "$ref": "#/components/schemas/ToolCallResult" } }, "error": { "type": "string", @@ -13817,16 +12054,12 @@ "type": "object", "properties": { "messageResponse": { - "description": "This is the response that is expected from the server to the message.\n\nFYI, most messages don't expect a response. Only \"assistant-request\", \"tool-calls\" and \"transfer-destination-request\" do.", + "description": "This is the response that is expected from the server to the message.\n\nNote: Most messages don't expect a response. Only \"assistant-request\", \"tool-calls\" and \"transfer-destination-request\" do.", "oneOf": [ { "$ref": "#/components/schemas/AssistantRequestMessageResponse", "title": "AssistantRequestMessageResponse" }, - { - "$ref": "#/components/schemas/FunctionCallMessageResponse", - "title": "FunctionCallMessageResponse" - }, { "$ref": "#/components/schemas/ToolCallsMessageResponse", "title": "ToolCallsMessageResponse" @@ -13838,10 +12071,8 @@ ] } }, - "required": [ - "messageResponse" - ] + "required": ["messageResponse"] } } } -} \ No newline at end of file +} diff --git a/mint.json b/mint.json index 7fc8efa..1bc6953 100644 --- a/mint.json +++ b/mint.json @@ -310,8 +310,8 @@ ] }, { - "group": "Billing Metrics", - "pages": ["api-reference/billing-metrics/list-billing-metrics"] + "group": "Analytics", + "pages": ["api-reference/analytics/create-analytics-queries"] }, { "group": "Call Logs",