From 6042f7d6799e700b185d24a197900ec2128dbc02 Mon Sep 17 00:00:00 2001 From: github-actions Date: Tue, 8 Jul 2025 22:58:25 +0000 Subject: [PATCH] Update API specifications with fern api update --- fern/apis/api/openapi.json | 2738 +++++++++++++++++++----------------- 1 file changed, 1486 insertions(+), 1252 deletions(-) diff --git a/fern/apis/api/openapi.json b/fern/apis/api/openapi.json index a75a8e696..b462fde1b 100644 --- a/fern/apis/api/openapi.json +++ b/fern/apis/api/openapi.json @@ -2082,22 +2082,10 @@ "$ref": "#/components/schemas/CreateFunctionToolDTO", "title": "FunctionTool" }, - { - "$ref": "#/components/schemas/CreateGhlToolDTO", - "title": "GhlTool" - }, - { - "$ref": "#/components/schemas/CreateMakeToolDTO", - "title": "MakeTool" - }, { "$ref": "#/components/schemas/CreateTransferCallToolDTO", "title": "TransferCallTool" }, - { - "$ref": "#/components/schemas/CreateOutputToolDTO", - "title": "OutputTool" - }, { "$ref": "#/components/schemas/CreateBashToolDTO", "title": "BashTool" @@ -2162,10 +2150,7 @@ "dtmf": "#/components/schemas/CreateDtmfToolDTO", "endCall": "#/components/schemas/CreateEndCallToolDTO", "function": "#/components/schemas/CreateFunctionToolDTO", - "ghl": "#/components/schemas/CreateGhlToolDTO", - "make": "#/components/schemas/CreateMakeToolDTO", "transferCall": "#/components/schemas/CreateTransferCallToolDTO", - "output": "#/components/schemas/CreateOutputToolDTO", "bash": "#/components/schemas/CreateBashToolDTO", "computer": "#/components/schemas/CreateComputerToolDTO", "textEditor": "#/components/schemas/CreateTextEditorToolDTO", @@ -2213,18 +2198,10 @@ "$ref": "#/components/schemas/GhlTool", "title": "GhlTool" }, - { - "$ref": "#/components/schemas/MakeTool", - "title": "MakeTool" - }, { "$ref": "#/components/schemas/TransferCallTool", "title": "TransferCallTool" }, - { - "$ref": "#/components/schemas/OutputTool", - "title": "OutputTool" - }, { "$ref": "#/components/schemas/BashTool", "title": "BashTool" @@ -2289,10 +2266,7 @@ "dtmf": "#/components/schemas/DtmfTool", "endCall": "#/components/schemas/EndCallTool", "function": "#/components/schemas/FunctionTool", - "ghl": "#/components/schemas/GhlTool", - "make": "#/components/schemas/MakeTool", "transferCall": "#/components/schemas/TransferCallTool", - "output": "#/components/schemas/OutputTool", "bash": "#/components/schemas/BashTool", "computer": "#/components/schemas/ComputerTool", "textEditor": "#/components/schemas/TextEditorTool", @@ -2448,18 +2422,10 @@ "$ref": "#/components/schemas/GhlTool", "title": "GhlTool" }, - { - "$ref": "#/components/schemas/MakeTool", - "title": "MakeTool" - }, { "$ref": "#/components/schemas/TransferCallTool", "title": "TransferCallTool" }, - { - "$ref": "#/components/schemas/OutputTool", - "title": "OutputTool" - }, { "$ref": "#/components/schemas/BashTool", "title": "BashTool" @@ -2524,10 +2490,7 @@ "dtmf": "#/components/schemas/DtmfTool", "endCall": "#/components/schemas/EndCallTool", "function": "#/components/schemas/FunctionTool", - "ghl": "#/components/schemas/GhlTool", - "make": "#/components/schemas/MakeTool", "transferCall": "#/components/schemas/TransferCallTool", - "output": "#/components/schemas/OutputTool", "bash": "#/components/schemas/BashTool", "computer": "#/components/schemas/ComputerTool", "textEditor": "#/components/schemas/TextEditorTool", @@ -2601,17 +2564,259 @@ "$ref": "#/components/schemas/GhlTool", "title": "GhlTool" }, - { - "$ref": "#/components/schemas/MakeTool", - "title": "MakeTool" - }, { "$ref": "#/components/schemas/TransferCallTool", "title": "TransferCallTool" }, { - "$ref": "#/components/schemas/OutputTool", - "title": "OutputTool" + "$ref": "#/components/schemas/BashTool", + "title": "BashTool" + }, + { + "$ref": "#/components/schemas/ComputerTool", + "title": "ComputerTool" + }, + { + "$ref": "#/components/schemas/TextEditorTool", + "title": "TextEditorTool" + }, + { + "$ref": "#/components/schemas/QueryTool", + "title": "QueryTool" + }, + { + "$ref": "#/components/schemas/GoogleCalendarCreateEventTool", + "title": "GoogleCalendarCreateEventTool" + }, + { + "$ref": "#/components/schemas/GoogleSheetsRowAppendTool", + "title": "GoogleSheetsRowAppendTool" + }, + { + "$ref": "#/components/schemas/GoogleCalendarCheckAvailabilityTool", + "title": "GoogleCalendarCheckAvailabilityTool" + }, + { + "$ref": "#/components/schemas/SlackSendMessageTool", + "title": "SlackSendMessageTool" + }, + { + "$ref": "#/components/schemas/SmsTool", + "title": "SmsSendTool" + }, + { + "$ref": "#/components/schemas/McpTool", + "title": "McpTool" + }, + { + "$ref": "#/components/schemas/GoHighLevelCalendarAvailabilityTool", + "title": "GoHighLevelCalendarAvailabilityTool" + }, + { + "$ref": "#/components/schemas/GoHighLevelCalendarEventCreateTool", + "title": "GoHighLevelCalendarEventCreateTool" + }, + { + "$ref": "#/components/schemas/GoHighLevelContactCreateTool", + "title": "GoHighLevelContactCreateTool" + }, + { + "$ref": "#/components/schemas/GoHighLevelContactGetTool", + "title": "GoHighLevelContactGetTool" + } + ], + "discriminator": { + "propertyName": "type", + "mapping": { + "apiRequest": "#/components/schemas/ApiRequestTool", + "dtmf": "#/components/schemas/DtmfTool", + "endCall": "#/components/schemas/EndCallTool", + "function": "#/components/schemas/FunctionTool", + "transferCall": "#/components/schemas/TransferCallTool", + "bash": "#/components/schemas/BashTool", + "computer": "#/components/schemas/ComputerTool", + "textEditor": "#/components/schemas/TextEditorTool", + "query": "#/components/schemas/QueryTool", + "google.calendar.event.create": "#/components/schemas/GoogleCalendarCreateEventTool", + "google.sheets.row.append": "#/components/schemas/GoogleSheetsRowAppendTool", + "google.calendar.availability.check": "#/components/schemas/GoogleCalendarCheckAvailabilityTool", + "slack.message.send": "#/components/schemas/SlackSendMessageTool", + "sms": "#/components/schemas/SmsTool", + "mcp": "#/components/schemas/McpTool", + "gohighlevel.calendar.availability.check": "#/components/schemas/GoHighLevelCalendarAvailabilityTool", + "gohighlevel.calendar.event.create": "#/components/schemas/GoHighLevelCalendarEventCreateTool", + "gohighlevel.contact.create": "#/components/schemas/GoHighLevelContactCreateTool", + "gohighlevel.contact.get": "#/components/schemas/GoHighLevelContactGetTool" + } + } + } + } + } + } + }, + "tags": [ + "Tools" + ], + "security": [ + { + "bearer": [] + } + ] + }, + "patch": { + "operationId": "ToolController_update", + "summary": "Update Tool", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpdateApiRequestToolDTO", + "title": "ApiRequestTool" + }, + { + "$ref": "#/components/schemas/UpdateDtmfToolDTO", + "title": "DtmfTool" + }, + { + "$ref": "#/components/schemas/UpdateEndCallToolDTO", + "title": "EndCallTool" + }, + { + "$ref": "#/components/schemas/UpdateFunctionToolDTO", + "title": "FunctionTool" + }, + { + "$ref": "#/components/schemas/UpdateTransferCallToolDTO", + "title": "TransferCallTool" + }, + { + "$ref": "#/components/schemas/UpdateBashToolDTO", + "title": "BashTool" + }, + { + "$ref": "#/components/schemas/UpdateComputerToolDTO", + "title": "ComputerTool" + }, + { + "$ref": "#/components/schemas/UpdateTextEditorToolDTO", + "title": "TextEditorTool" + }, + { + "$ref": "#/components/schemas/UpdateQueryToolDTO", + "title": "QueryTool" + }, + { + "$ref": "#/components/schemas/UpdateGoogleCalendarCreateEventToolDTO", + "title": "GoogleCalendarCreateEventTool" + }, + { + "$ref": "#/components/schemas/UpdateGoogleSheetsRowAppendToolDTO", + "title": "GoogleSheetsRowAppendTool" + }, + { + "$ref": "#/components/schemas/UpdateGoogleCalendarCheckAvailabilityToolDTO", + "title": "GoogleCalendarCheckAvailabilityTool" + }, + { + "$ref": "#/components/schemas/UpdateSlackSendMessageToolDTO", + "title": "SlackSendMessageTool" + }, + { + "$ref": "#/components/schemas/UpdateSmsToolDTO", + "title": "SmsSendTool" + }, + { + "$ref": "#/components/schemas/UpdateMcpToolDTO", + "title": "McpTool" + }, + { + "$ref": "#/components/schemas/UpdateGoHighLevelCalendarAvailabilityToolDTO", + "title": "GoHighLevelCalendarAvailabilityTool" + }, + { + "$ref": "#/components/schemas/UpdateGoHighLevelCalendarEventCreateToolDTO", + "title": "GoHighLevelCalendarEventCreateTool" + }, + { + "$ref": "#/components/schemas/UpdateGoHighLevelContactCreateToolDTO", + "title": "GoHighLevelContactCreateTool" + }, + { + "$ref": "#/components/schemas/UpdateGoHighLevelContactGetToolDTO", + "title": "GoHighLevelContactGetTool" + } + ], + "discriminator": { + "propertyName": "type", + "mapping": { + "apiRequest": "#/components/schemas/UpdateApiRequestToolDTO", + "dtmf": "#/components/schemas/UpdateDtmfToolDTO", + "endCall": "#/components/schemas/UpdateEndCallToolDTO", + "function": "#/components/schemas/UpdateFunctionToolDTO", + "transferCall": "#/components/schemas/UpdateTransferCallToolDTO", + "bash": "#/components/schemas/UpdateBashToolDTO", + "computer": "#/components/schemas/UpdateComputerToolDTO", + "textEditor": "#/components/schemas/UpdateTextEditorToolDTO", + "query": "#/components/schemas/UpdateQueryToolDTO", + "google.calendar.event.create": "#/components/schemas/UpdateGoogleCalendarCreateEventToolDTO", + "google.sheets.row.append": "#/components/schemas/UpdateGoogleSheetsRowAppendToolDTO", + "google.calendar.availability.check": "#/components/schemas/UpdateGoogleCalendarCheckAvailabilityToolDTO", + "slack.message.send": "#/components/schemas/UpdateSlackSendMessageToolDTO", + "sms": "#/components/schemas/UpdateSmsToolDTO", + "mcp": "#/components/schemas/UpdateMcpToolDTO", + "gohighlevel.calendar.availability.check": "#/components/schemas/UpdateGoHighLevelCalendarAvailabilityToolDTO", + "gohighlevel.calendar.event.create": "#/components/schemas/UpdateGoHighLevelCalendarEventCreateToolDTO", + "gohighlevel.contact.create": "#/components/schemas/UpdateGoHighLevelContactCreateToolDTO", + "gohighlevel.contact.get": "#/components/schemas/UpdateGoHighLevelContactGetToolDTO" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/ApiRequestTool", + "title": "ApiRequestTool" + }, + { + "$ref": "#/components/schemas/DtmfTool", + "title": "DtmfTool" + }, + { + "$ref": "#/components/schemas/EndCallTool", + "title": "EndCallTool" + }, + { + "$ref": "#/components/schemas/FunctionTool", + "title": "FunctionTool" + }, + { + "$ref": "#/components/schemas/GhlTool", + "title": "GhlTool" + }, + { + "$ref": "#/components/schemas/TransferCallTool", + "title": "TransferCallTool" }, { "$ref": "#/components/schemas/BashTool", @@ -2677,286 +2882,7 @@ "dtmf": "#/components/schemas/DtmfTool", "endCall": "#/components/schemas/EndCallTool", "function": "#/components/schemas/FunctionTool", - "ghl": "#/components/schemas/GhlTool", - "make": "#/components/schemas/MakeTool", "transferCall": "#/components/schemas/TransferCallTool", - "output": "#/components/schemas/OutputTool", - "bash": "#/components/schemas/BashTool", - "computer": "#/components/schemas/ComputerTool", - "textEditor": "#/components/schemas/TextEditorTool", - "query": "#/components/schemas/QueryTool", - "google.calendar.event.create": "#/components/schemas/GoogleCalendarCreateEventTool", - "google.sheets.row.append": "#/components/schemas/GoogleSheetsRowAppendTool", - "google.calendar.availability.check": "#/components/schemas/GoogleCalendarCheckAvailabilityTool", - "slack.message.send": "#/components/schemas/SlackSendMessageTool", - "sms": "#/components/schemas/SmsTool", - "mcp": "#/components/schemas/McpTool", - "gohighlevel.calendar.availability.check": "#/components/schemas/GoHighLevelCalendarAvailabilityTool", - "gohighlevel.calendar.event.create": "#/components/schemas/GoHighLevelCalendarEventCreateTool", - "gohighlevel.contact.create": "#/components/schemas/GoHighLevelContactCreateTool", - "gohighlevel.contact.get": "#/components/schemas/GoHighLevelContactGetTool" - } - } - } - } - } - } - }, - "tags": [ - "Tools" - ], - "security": [ - { - "bearer": [] - } - ] - }, - "patch": { - "operationId": "ToolController_update", - "summary": "Update Tool", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/UpdateApiRequestToolDTO", - "title": "ApiRequestTool" - }, - { - "$ref": "#/components/schemas/UpdateDtmfToolDTO", - "title": "DtmfTool" - }, - { - "$ref": "#/components/schemas/UpdateEndCallToolDTO", - "title": "EndCallTool" - }, - { - "$ref": "#/components/schemas/UpdateFunctionToolDTO", - "title": "FunctionTool" - }, - { - "$ref": "#/components/schemas/UpdateGhlToolDTO", - "title": "GhlTool" - }, - { - "$ref": "#/components/schemas/UpdateMakeToolDTO", - "title": "MakeTool" - }, - { - "$ref": "#/components/schemas/UpdateTransferCallToolDTO", - "title": "TransferCallTool" - }, - { - "$ref": "#/components/schemas/UpdateOutputToolDTO", - "title": "OutputTool" - }, - { - "$ref": "#/components/schemas/UpdateBashToolDTO", - "title": "BashTool" - }, - { - "$ref": "#/components/schemas/UpdateComputerToolDTO", - "title": "ComputerTool" - }, - { - "$ref": "#/components/schemas/UpdateTextEditorToolDTO", - "title": "TextEditorTool" - }, - { - "$ref": "#/components/schemas/UpdateQueryToolDTO", - "title": "QueryTool" - }, - { - "$ref": "#/components/schemas/UpdateGoogleCalendarCreateEventToolDTO", - "title": "GoogleCalendarCreateEventTool" - }, - { - "$ref": "#/components/schemas/UpdateGoogleSheetsRowAppendToolDTO", - "title": "GoogleSheetsRowAppendTool" - }, - { - "$ref": "#/components/schemas/UpdateGoogleCalendarCheckAvailabilityToolDTO", - "title": "GoogleCalendarCheckAvailabilityTool" - }, - { - "$ref": "#/components/schemas/UpdateSlackSendMessageToolDTO", - "title": "SlackSendMessageTool" - }, - { - "$ref": "#/components/schemas/UpdateSmsToolDTO", - "title": "SmsSendTool" - }, - { - "$ref": "#/components/schemas/UpdateMcpToolDTO", - "title": "McpTool" - }, - { - "$ref": "#/components/schemas/UpdateGoHighLevelCalendarAvailabilityToolDTO", - "title": "GoHighLevelCalendarAvailabilityTool" - }, - { - "$ref": "#/components/schemas/UpdateGoHighLevelCalendarEventCreateToolDTO", - "title": "GoHighLevelCalendarEventCreateTool" - }, - { - "$ref": "#/components/schemas/UpdateGoHighLevelContactCreateToolDTO", - "title": "GoHighLevelContactCreateTool" - }, - { - "$ref": "#/components/schemas/UpdateGoHighLevelContactGetToolDTO", - "title": "GoHighLevelContactGetTool" - } - ], - "discriminator": { - "propertyName": "type", - "mapping": { - "apiRequest": "#/components/schemas/UpdateApiRequestToolDTO", - "dtmf": "#/components/schemas/UpdateDtmfToolDTO", - "endCall": "#/components/schemas/UpdateEndCallToolDTO", - "function": "#/components/schemas/UpdateFunctionToolDTO", - "ghl": "#/components/schemas/UpdateGhlToolDTO", - "make": "#/components/schemas/UpdateMakeToolDTO", - "transferCall": "#/components/schemas/UpdateTransferCallToolDTO", - "output": "#/components/schemas/UpdateOutputToolDTO", - "bash": "#/components/schemas/UpdateBashToolDTO", - "computer": "#/components/schemas/UpdateComputerToolDTO", - "textEditor": "#/components/schemas/UpdateTextEditorToolDTO", - "query": "#/components/schemas/UpdateQueryToolDTO", - "google.calendar.event.create": "#/components/schemas/UpdateGoogleCalendarCreateEventToolDTO", - "google.sheets.row.append": "#/components/schemas/UpdateGoogleSheetsRowAppendToolDTO", - "google.calendar.availability.check": "#/components/schemas/UpdateGoogleCalendarCheckAvailabilityToolDTO", - "slack.message.send": "#/components/schemas/UpdateSlackSendMessageToolDTO", - "sms": "#/components/schemas/UpdateSmsToolDTO", - "mcp": "#/components/schemas/UpdateMcpToolDTO", - "gohighlevel.calendar.availability.check": "#/components/schemas/UpdateGoHighLevelCalendarAvailabilityToolDTO", - "gohighlevel.calendar.event.create": "#/components/schemas/UpdateGoHighLevelCalendarEventCreateToolDTO", - "gohighlevel.contact.create": "#/components/schemas/UpdateGoHighLevelContactCreateToolDTO", - "gohighlevel.contact.get": "#/components/schemas/UpdateGoHighLevelContactGetToolDTO" - } - } - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/ApiRequestTool", - "title": "ApiRequestTool" - }, - { - "$ref": "#/components/schemas/DtmfTool", - "title": "DtmfTool" - }, - { - "$ref": "#/components/schemas/EndCallTool", - "title": "EndCallTool" - }, - { - "$ref": "#/components/schemas/FunctionTool", - "title": "FunctionTool" - }, - { - "$ref": "#/components/schemas/GhlTool", - "title": "GhlTool" - }, - { - "$ref": "#/components/schemas/MakeTool", - "title": "MakeTool" - }, - { - "$ref": "#/components/schemas/TransferCallTool", - "title": "TransferCallTool" - }, - { - "$ref": "#/components/schemas/OutputTool", - "title": "OutputTool" - }, - { - "$ref": "#/components/schemas/BashTool", - "title": "BashTool" - }, - { - "$ref": "#/components/schemas/ComputerTool", - "title": "ComputerTool" - }, - { - "$ref": "#/components/schemas/TextEditorTool", - "title": "TextEditorTool" - }, - { - "$ref": "#/components/schemas/QueryTool", - "title": "QueryTool" - }, - { - "$ref": "#/components/schemas/GoogleCalendarCreateEventTool", - "title": "GoogleCalendarCreateEventTool" - }, - { - "$ref": "#/components/schemas/GoogleSheetsRowAppendTool", - "title": "GoogleSheetsRowAppendTool" - }, - { - "$ref": "#/components/schemas/GoogleCalendarCheckAvailabilityTool", - "title": "GoogleCalendarCheckAvailabilityTool" - }, - { - "$ref": "#/components/schemas/SlackSendMessageTool", - "title": "SlackSendMessageTool" - }, - { - "$ref": "#/components/schemas/SmsTool", - "title": "SmsSendTool" - }, - { - "$ref": "#/components/schemas/McpTool", - "title": "McpTool" - }, - { - "$ref": "#/components/schemas/GoHighLevelCalendarAvailabilityTool", - "title": "GoHighLevelCalendarAvailabilityTool" - }, - { - "$ref": "#/components/schemas/GoHighLevelCalendarEventCreateTool", - "title": "GoHighLevelCalendarEventCreateTool" - }, - { - "$ref": "#/components/schemas/GoHighLevelContactCreateTool", - "title": "GoHighLevelContactCreateTool" - }, - { - "$ref": "#/components/schemas/GoHighLevelContactGetTool", - "title": "GoHighLevelContactGetTool" - } - ], - "discriminator": { - "propertyName": "type", - "mapping": { - "apiRequest": "#/components/schemas/ApiRequestTool", - "dtmf": "#/components/schemas/DtmfTool", - "endCall": "#/components/schemas/EndCallTool", - "function": "#/components/schemas/FunctionTool", - "ghl": "#/components/schemas/GhlTool", - "make": "#/components/schemas/MakeTool", - "transferCall": "#/components/schemas/TransferCallTool", - "output": "#/components/schemas/OutputTool", "bash": "#/components/schemas/BashTool", "computer": "#/components/schemas/ComputerTool", "textEditor": "#/components/schemas/TextEditorTool", @@ -3027,18 +2953,10 @@ "$ref": "#/components/schemas/GhlTool", "title": "GhlTool" }, - { - "$ref": "#/components/schemas/MakeTool", - "title": "MakeTool" - }, { "$ref": "#/components/schemas/TransferCallTool", "title": "TransferCallTool" }, - { - "$ref": "#/components/schemas/OutputTool", - "title": "OutputTool" - }, { "$ref": "#/components/schemas/BashTool", "title": "BashTool" @@ -3103,10 +3021,7 @@ "dtmf": "#/components/schemas/DtmfTool", "endCall": "#/components/schemas/EndCallTool", "function": "#/components/schemas/FunctionTool", - "ghl": "#/components/schemas/GhlTool", - "make": "#/components/schemas/MakeTool", "transferCall": "#/components/schemas/TransferCallTool", - "output": "#/components/schemas/OutputTool", "bash": "#/components/schemas/BashTool", "computer": "#/components/schemas/ComputerTool", "textEditor": "#/components/schemas/TextEditorTool", @@ -5537,6 +5452,434 @@ } ] } + }, + "/provider/{provider}/{resourceName}": { + "post": { + "operationId": "ProviderResourceController_createProviderResource", + "summary": "Create provider resource", + "parameters": [ + { + "name": "content-type", + "required": true, + "in": "header", + "schema": { + "type": "string" + } + }, + { + "name": "provider", + "required": true, + "in": "path", + "description": "The provider (e.g., 11labs)", + "schema": { + "enum": [ + "11labs" + ], + "type": "string" + } + }, + { + "name": "resourceName", + "required": true, + "in": "path", + "description": "The resource name (e.g., pronunciation-dictionary)", + "schema": { + "enum": [ + "pronunciation-dictionary" + ], + "type": "string" + } + } + ], + "responses": { + "201": { + "description": "Successfully created provider resource", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProviderResource" + } + } + } + } + }, + "tags": [ + "provider" + ], + "security": [ + { + "bearer": [] + } + ] + }, + "get": { + "operationId": "ProviderResourceController_getProviderResourcesPaginated", + "summary": "Get paginated list of provider resources", + "parameters": [ + { + "name": "provider", + "required": true, + "in": "path", + "description": "The provider (e.g., 11labs)", + "schema": { + "enum": [ + "11labs" + ], + "type": "string" + } + }, + { + "name": "resourceName", + "required": true, + "in": "path", + "description": "The resource name (e.g., pronunciation-dictionary)", + "schema": { + "enum": [ + "pronunciation-dictionary" + ], + "type": "string" + } + }, + { + "name": "id", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "resourceId", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "page", + "required": false, + "in": "query", + "description": "This is the page number to return. Defaults to 1.", + "schema": { + "minimum": 1, + "type": "number" + } + }, + { + "name": "sortOrder", + "required": false, + "in": "query", + "description": "This is the sort order for pagination. Defaults to 'DESC'.", + "schema": { + "enum": [ + "ASC", + "DESC" + ], + "type": "string" + } + }, + { + "name": "limit", + "required": false, + "in": "query", + "description": "This is the maximum number of items to return. Defaults to 100.", + "schema": { + "minimum": 0, + "maximum": 1000, + "type": "number" + } + }, + { + "name": "createdAtGt", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is greater than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "createdAtLt", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is less than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "createdAtGe", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is greater than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "createdAtLe", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is less than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtGt", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is greater than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtLt", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is less than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtGe", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is greater than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtLe", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is less than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "List of provider resources", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProviderResourcePaginatedResponse" + } + } + } + } + }, + "tags": [ + "provider" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/provider/{provider}/{resourceName}/{id}": { + "get": { + "operationId": "ProviderResourceController_getProviderResource", + "summary": "Get provider resource by ID", + "parameters": [ + { + "name": "provider", + "required": true, + "in": "path", + "description": "The provider (e.g., 11labs)", + "schema": { + "enum": [ + "11labs" + ], + "type": "string" + } + }, + { + "name": "resourceName", + "required": true, + "in": "path", + "description": "The resource name (e.g., pronunciation-dictionary)", + "schema": { + "enum": [ + "pronunciation-dictionary" + ], + "type": "string" + } + }, + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successfully retrieved provider resource", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProviderResource" + } + } + } + }, + "404": { + "description": "Provider resource not found" + } + }, + "tags": [ + "provider" + ], + "security": [ + { + "bearer": [] + } + ] + }, + "delete": { + "operationId": "ProviderResourceController_deleteProviderResource", + "summary": "Delete provider resource by ID", + "parameters": [ + { + "name": "provider", + "required": true, + "in": "path", + "description": "The provider (e.g., 11labs)", + "schema": { + "enum": [ + "11labs" + ], + "type": "string" + } + }, + { + "name": "resourceName", + "required": true, + "in": "path", + "description": "The resource name (e.g., pronunciation-dictionary)", + "schema": { + "enum": [ + "pronunciation-dictionary" + ], + "type": "string" + } + }, + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProviderResource" + } + } + } + }, + "404": { + "description": "Provider resource not found" + } + }, + "tags": [ + "provider" + ], + "security": [ + { + "bearer": [] + } + ] + }, + "patch": { + "operationId": "ProviderResourceController_updateProviderResource", + "summary": "Update provider resource by ID", + "parameters": [ + { + "name": "provider", + "required": true, + "in": "path", + "description": "The provider (e.g., 11labs)", + "schema": { + "enum": [ + "11labs" + ], + "type": "string" + } + }, + { + "name": "resourceName", + "required": true, + "in": "path", + "description": "The resource name (e.g., pronunciation-dictionary)", + "schema": { + "enum": [ + "pronunciation-dictionary" + ], + "type": "string" + } + }, + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProviderResource" + } + } + } + }, + "404": { + "description": "Provider resource not found" + } + }, + "tags": [ + "provider" + ], + "security": [ + { + "bearer": [] + } + ] + } } }, "info": { @@ -6259,6 +6602,27 @@ "zu-ZA" ] }, + "segmentationStrategy": { + "type": "string", + "description": "Controls how phrase boundaries are detected, enabling either simple time/silence heuristics or more advanced semantic segmentation.", + "enum": [ + "Default", + "Time", + "Semantic" + ] + }, + "segmentationSilenceTimeoutMs": { + "type": "number", + "description": "Duration of detected silence after which the service finalizes a phrase. Configure to adjust sensitivity to pauses in speech.", + "minimum": 100, + "maximum": 5000 + }, + "segmentationMaxTimeMs": { + "type": "number", + "description": "Maximum duration a segment can reach before being cut off when using time-based segmentation.", + "minimum": 20000, + "maximum": 70000 + }, "fallbackPlan": { "description": "This is the plan for voice provider fallbacks in the event that the primary voice provider fails.", "allOf": [ @@ -7936,6 +8300,27 @@ "zh-TW", "zu-ZA" ] + }, + "segmentationStrategy": { + "type": "string", + "description": "Controls how phrase boundaries are detected, enabling either simple time/silence heuristics or more advanced semantic segmentation.", + "enum": [ + "Default", + "Time", + "Semantic" + ] + }, + "segmentationSilenceTimeoutMs": { + "type": "number", + "description": "Duration of detected silence after which the service finalizes a phrase. Configure to adjust sensitivity to pauses in speech.", + "minimum": 100, + "maximum": 5000 + }, + "segmentationMaxTimeMs": { + "type": "number", + "description": "Maximum duration a segment can reach before being cut off when using time-based segmentation.", + "minimum": 20000, + "maximum": 70000 } }, "required": [ @@ -9685,137 +10070,6 @@ "type" ] }, - "JsonSchema": { - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "This is the type of output you'd like.\n\n`string`, `number`, `integer`, `boolean` are the primitive types and should be obvious.\n\n`array` and `object` are more interesting and quite powerful. They allow you to define nested structures.\n\nFor `array`, you can define the schema of the items in the array using the `items` property.\n\nFor `object`, you can define the properties of the object using the `properties` property.", - "enum": [ - "string", - "number", - "integer", - "boolean", - "array", - "object" - ] - }, - "items": { - "type": "object", - "description": "This is required if the type is \"array\". This is the schema of the items in the array.\n\nThis is of type JsonSchema. However, Swagger doesn't support circular references." - }, - "properties": { - "type": "object", - "description": "This is required if the type is \"object\". This specifies the properties of the object.\n\nThis is a map of string to JsonSchema. However, Swagger doesn't support circular references." - }, - "description": { - "type": "string", - "description": "This is the description to help the model understand what it needs to output." - }, - "pattern": { - "type": "string", - "description": "This is the pattern of the string. This is a regex that will be used to validate the data in question. To use a common format, use the `format` property instead.\n\nOpenAI documentation: https://platform.openai.com/docs/guides/structured-outputs#supported-properties" - }, - "format": { - "type": "string", - "description": "This is the format of the string. To pass a regex, use the `pattern` property instead.\n\nOpenAI documentation: https://platform.openai.com/docs/guides/structured-outputs?api-mode=chat&type-restrictions=string-restrictions", - "enum": [ - "date-time", - "time", - "date", - "duration", - "email", - "hostname", - "ipv4", - "ipv6", - "uuid" - ] - }, - "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" - } - }, - "enum": { - "description": "This array specifies the allowed values that can be used to restrict the output of the model.", - "type": "array", - "items": { - "type": "string" - } - }, - "title": { - "type": "string", - "description": "This is the title of the schema." - } - }, - "required": [ - "type" - ] - }, - "OpenAIFunctionParameters": { - "type": "object", - "properties": { - "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" - ] - }, - "properties": { - "type": "object", - "description": "This provides a description of the properties required by the function.\nJSON Schema can be used to specify expectations for each property.\nRefer to [this doc](https://ajv.js.org/json-schema.html#json-data-type) for a comprehensive guide on JSON Schema.", - "additionalProperties": { - "$ref": "#/components/schemas/JsonSchema" - } - }, - "required": { - "description": "This specifies the properties that are required by the function.", - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "type", - "properties" - ] - }, - "OpenAIFunction": { - "type": "object", - "properties": { - "strict": { - "type": "boolean", - "description": "This is a boolean that controls whether to enable strict schema adherence when generating the function call. If set to true, the model will follow the exact schema defined in the parameters field. Only a subset of JSON Schema is supported when strict is true. Learn more about Structured Outputs in the [OpenAI guide](https://openai.com/index/introducing-structured-outputs-in-the-api/).\n\n@default false", - "default": false - }, - "name": { - "type": "string", - "description": "This is the the name of the function to be called.\n\nMust be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64.", - "maxLength": 64, - "pattern": "/^[a-zA-Z0-9_-]{1,64}$/" - }, - "description": { - "type": "string", - "description": "This is the description of what the function does, used by the AI to choose when and how to call the function.", - "maxLength": 1000 - }, - "parameters": { - "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" - } - ] - } - }, - "required": [ - "name" - ] - }, "CreateDtmfToolDTO": { "type": "object", "properties": { @@ -9849,14 +10103,6 @@ "dtmf" ], "description": "The type of tool. \"dtmf\" for DTMF tool." - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] } }, "required": [ @@ -9896,14 +10142,6 @@ "endCall" ], "description": "The type of tool. \"endCall\" for End Call tool." - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] } }, "required": [ @@ -9943,155 +10181,145 @@ "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 `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" - } - ] + "description": "The type of tool. \"voicemail\" for Voicemail tool." } }, "required": [ "type" ] }, - "CreateFunctionToolDTO": { + "JsonSchema": { "type": "object", "properties": { - "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", + "description": "This is the type of output you'd like.\n\n`string`, `number`, `integer`, `boolean` are the primitive types and should be obvious.\n\n`array` and `object` are more interesting and quite powerful. They allow you to define nested structures.\n\nFor `array`, you can define the schema of the items in the array using the `items` property.\n\nFor `object`, you can define the properties of the object using the `properties` property.", "enum": [ - "function" - ], - "description": "The type of tool. \"function\" for Function tool." + "string", + "number", + "integer", + "boolean", + "array", + "object" + ] }, - "async": { - "type": "boolean", - "example": false, - "description": "This determines if the tool is async.\n\n If 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\n If 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\n Defaults to synchronous (`false`)." + "items": { + "type": "object", + "description": "This is required if the type is \"array\". This is the schema of the items in the array.\n\nThis is of type JsonSchema. However, Swagger doesn't support circular references." }, - "server": { - "description": "\n This is the server where a `tool-calls` webhook will be sent.\n\n Notes:\n - Webhook is sent to this server when a tool call is made.\n - Webhook contains the call, assistant, and phone number objects.\n - Webhook contains the variables set on the assistant.\n - Webhook is sent to the first available URL in this order: {{tool.server.url}}, {{assistant.server.url}}, {{phoneNumber.server.url}}, {{org.server.url}}.\n - Webhook expects a response with tool call result.", - "allOf": [ - { - "$ref": "#/components/schemas/Server" - } - ] + "properties": { + "type": "object", + "description": "This is required if the type is \"object\". This specifies the properties of the object.\n\nThis is a map of string to JsonSchema. However, Swagger doesn't support circular references." }, - "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" - } + "description": { + "type": "string", + "description": "This is the description to help the model understand what it needs to output." + }, + "pattern": { + "type": "string", + "description": "This is the pattern of the string. This is a regex that will be used to validate the data in question. To use a common format, use the `format` property instead.\n\nOpenAI documentation: https://platform.openai.com/docs/guides/structured-outputs#supported-properties" + }, + "format": { + "type": "string", + "description": "This is the format of the string. To pass a regex, use the `pattern` property instead.\n\nOpenAI documentation: https://platform.openai.com/docs/guides/structured-outputs?api-mode=chat&type-restrictions=string-restrictions", + "enum": [ + "date-time", + "time", + "date", + "duration", + "email", + "hostname", + "ipv4", + "ipv6", + "uuid" ] + }, + "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" + } + }, + "enum": { + "description": "This array specifies the allowed values that can be used to restrict the output of the model.", + "type": "array", + "items": { + "type": "string" + } + }, + "title": { + "type": "string", + "description": "This is the title of the schema." } }, "required": [ "type" ] }, - "GhlToolMetadata": { + "OpenAIFunctionParameters": { "type": "object", "properties": { - "workflowId": { - "type": "string" + "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" + ] }, - "locationId": { - "type": "string" + "properties": { + "type": "object", + "description": "This provides a description of the properties required by the function.\nJSON Schema can be used to specify expectations for each property.\nRefer to [this doc](https://ajv.js.org/json-schema.html#json-data-type) for a comprehensive guide on JSON Schema.", + "additionalProperties": { + "$ref": "#/components/schemas/JsonSchema" + } + }, + "required": { + "description": "This specifies the properties that are required by the function.", + "type": "array", + "items": { + "type": "string" + } } - } + }, + "required": [ + "type", + "properties" + ] }, - "CreateGhlToolDTO": { + "OpenAIFunction": { "type": "object", "properties": { - "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" - } - ] - } + "strict": { + "type": "boolean", + "description": "This is a boolean that controls whether to enable strict schema adherence when generating the function call. If set to true, the model will follow the exact schema defined in the parameters field. Only a subset of JSON Schema is supported when strict is true. Learn more about Structured Outputs in the [OpenAI guide](https://openai.com/index/introducing-structured-outputs-in-the-api/).\n\n@default false", + "default": false }, - "type": { + "name": { "type": "string", - "enum": [ - "ghl" - ], - "description": "The type of tool. \"ghl\" for GHL tool." + "description": "This is the the name of the function to be called.\n\nMust be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64.", + "maxLength": 64, + "pattern": "/^[a-zA-Z0-9_-]{1,64}$/" }, - "metadata": { - "$ref": "#/components/schemas/GhlToolMetadata" + "description": { + "type": "string", + "description": "This is the description of what the function does, used by the AI to choose when and how to call the function.", + "maxLength": 1000 }, - "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.", + "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/OpenAIFunction" + "$ref": "#/components/schemas/OpenAIFunctionParameters" } ] } }, "required": [ - "type", - "metadata" + "name" ] }, - "MakeToolMetadata": { - "type": "object", - "properties": { - "scenarioId": { - "type": "number" - }, - "triggerHookId": { - "type": "number" - } - } - }, - "CreateMakeToolDTO": { + "CreateFunctionToolDTO": { "type": "object", "properties": { "messages": { @@ -10121,15 +10349,25 @@ "type": { "type": "string", "enum": [ - "make" + "function" ], - "description": "The type of tool. \"make\" for Make tool." + "description": "The type of tool. \"function\" for Function tool." }, - "metadata": { - "$ref": "#/components/schemas/MakeToolMetadata" + "async": { + "type": "boolean", + "example": false, + "description": "This determines if the tool is async.\n\n If 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\n If 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\n Defaults to synchronous (`false`)." + }, + "server": { + "description": "\n This is the server where a `tool-calls` webhook will be sent.\n\n Notes:\n - Webhook is sent to this server when a tool call is made.\n - Webhook contains the call, assistant, and phone number objects.\n - Webhook contains the variables set on the assistant.\n - Webhook is sent to the first available URL in this order: {{tool.server.url}}, {{assistant.server.url}}, {{phoneNumber.server.url}}, {{org.server.url}}.\n - Webhook expects a response with tool call result.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] }, "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.", + "description": "This is the function definition of the tool.", "allOf": [ { "$ref": "#/components/schemas/OpenAIFunction" @@ -10137,6 +10375,113 @@ ] } }, + "required": [ + "type" + ] + }, + "GhlToolMetadata": { + "type": "object", + "properties": { + "workflowId": { + "type": "string" + }, + "locationId": { + "type": "string" + } + } + }, + "CreateGhlToolDTO": { + "type": "object", + "properties": { + "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." + }, + "metadata": { + "$ref": "#/components/schemas/GhlToolMetadata" + } + }, + "required": [ + "type", + "metadata" + ] + }, + "MakeToolMetadata": { + "type": "object", + "properties": { + "scenarioId": { + "type": "number" + }, + "triggerHookId": { + "type": "number" + } + } + }, + "CreateMakeToolDTO": { + "type": "object", + "properties": { + "messages": { + "type": "array", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ToolMessageStart", + "title": "ToolMessageStart" + }, + { + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" + }, + { + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" + }, + { + "$ref": "#/components/schemas/ToolMessageDelayed", + "title": "ToolMessageDelayed" + } + ] + } + }, + "type": { + "type": "string", + "enum": [ + "make" + ], + "description": "The type of tool. \"make\" for Make tool." + }, + "metadata": { + "$ref": "#/components/schemas/MakeToolMetadata" + } + }, "required": [ "type", "metadata" @@ -10246,7 +10591,7 @@ "type": "object", "properties": { "messages": { - "description": "These are the messages used to generate the summary.\n\n@default: ```\n[\n {\n \"role\": \"system\",\n \"content\": \"You are an expert note-taker. You will be given a transcript of a call. Summarize the call in 2-3 sentences. DO NOT return anything except the summary.\"\n },\n {\n \"role\": \"user\",\n \"content\": \"Here is the transcript:\\n\\n{{transcript}}\\n\\n. Here is the ended reason of the call:\\n\\n{{endedReason}}\\n\\n\"\n }\n]```\n\nYou can customize by providing any messages you want.\n\nHere are the template variables available:\n- {{transcript}}: The transcript of the call from `call.artifact.transcript` \n- {{systemPrompt}}: The system prompt of the call from `assistant.model.messages[type=system].content` \n- {{endedReason}}: The ended reason of the call from `call.endedReason`", + "description": "These are the messages used to generate the summary.\n\n@default: ```\n[\n {\n \"role\": \"system\",\n \"content\": \"You are an expert note-taker. You will be given a transcript of a call. Summarize the call in 2-3 sentences. DO NOT return anything except the summary.\"\n },\n {\n \"role\": \"user\",\n \"content\": \"Here is the transcript:\\n\\n{{transcript}}\\n\\n. Here is the ended reason of the call:\\n\\n{{endedReason}}\\n\\n\"\n }\n]```\n\nYou can customize by providing any messages you want.\n\nHere are the template variables available:\n- {{transcript}}: The transcript of the call from `call.artifact.transcript` \n- {{systemPrompt}}: The system prompt of the call from `assistant.model.messages[type=system].content` \n- {{messages}}: The messages of the call from `assistant.model.messages` \n- {{endedReason}}: The ended reason of the call from `call.endedReason`", "type": "array", "items": { "type": "object" @@ -10505,14 +10850,6 @@ } ] } - }, - "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" - } - ] } }, "required": [ @@ -10642,14 +10979,6 @@ "items": { "$ref": "#/components/schemas/KnowledgeBase" } - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] } }, "required": [ @@ -10688,15 +11017,7 @@ "enum": [ "google.calendar.event.create" ], - "description": "The type of tool. \"google.calendar.event.create\" for Google Calendar tool." - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] + "description": "The type of tool. \"google.calendar.event.create\" for Google Calendar Create Event tool." } }, "required": [ @@ -10735,15 +11056,7 @@ "enum": [ "google.sheets.row.append" ], - "description": "The type of tool. \"google.sheets.row.append\" for Google Sheets tool." - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] + "description": "The type of tool. \"google.sheets.row.append\" for Google Sheets Row Append tool." } }, "required": [ @@ -10782,15 +11095,7 @@ "enum": [ "google.calendar.availability.check" ], - "description": "The type of tool. \"google.calendar.availability.check\" for Google Calendar availability check tool." - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] + "description": "The type of tool. \"google.calendar.availability.check\" for Google Calendar Check Availability tool." } }, "required": [ @@ -10829,15 +11134,7 @@ "enum": [ "slack.message.send" ], - "description": "The type of tool. \"slack.message.send\" for Slack send message tool." - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] + "description": "The type of tool. \"slack.message.send\" for Slack Send Message tool." } }, "required": [ @@ -10901,14 +11198,6 @@ }, "metadata": { "$ref": "#/components/schemas/McpToolMetadata" - }, - "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" - } - ] } }, "required": [ @@ -10947,15 +11236,7 @@ "enum": [ "gohighlevel.calendar.availability.check" ], - "description": "The type of tool. \"gohighlevel.calendar.availability.check\" for GoHighLevel Calendar availability check tool." - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] + "description": "The type of tool. \"gohighlevel.calendar.availability.check\" for GoHighLevel Calendar Availability Check tool." } }, "required": [ @@ -10994,15 +11275,7 @@ "enum": [ "gohighlevel.calendar.event.create" ], - "description": "The type of tool. \"gohighlevel.calendar.event.create\" for GoHighLevel Calendar event create tool." - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] + "description": "The type of tool. \"gohighlevel.calendar.event.create\" for GoHighLevel Calendar Event Create tool." } }, "required": [ @@ -11041,15 +11314,7 @@ "enum": [ "gohighlevel.contact.create" ], - "description": "The type of tool. \"gohighlevel.contact.create\" for GoHighLevel contact create tool." - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] + "description": "The type of tool. \"gohighlevel.contact.create\" for GoHighLevel Contact Create tool." } }, "required": [ @@ -11088,15 +11353,7 @@ "enum": [ "gohighlevel.contact.get" ], - "description": "The type of tool. \"gohighlevel.contact.get\" for GoHighLevel contact get tool." - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] + "description": "The type of tool. \"gohighlevel.contact.get\" for GoHighLevel Contact Get tool." } }, "required": [ @@ -11738,8 +11995,8 @@ "timeoutSeconds": { "type": "number", "description": "This sets the timeout for the connection to the custom provider without needing to stream any tokens back. Default is 20 seconds.", - "minimum": 20, - "maximum": 600 + "minimum": 0, + "maximum": 300 }, "model": { "type": "string", @@ -13926,7 +14183,7 @@ ] }, "aliases": { - "description": "These are additional variables to create.\n\nThese will be accessible during the call as `{{key}}` and stored in `call.artifact.variableValues` after the call.\n\nExample:\n```json\n{\n \"aliases\": [\n {\n \"key\": \"customerName\",\n \"value\": \"{{name}}\"\n },\n {\n \"key\": \"fullName\",\n \"value\": \"{{firstName}} {{lastName}}\"\n },\n {\n \"key\": \"greeting\",\n \"value\": \"Hello {{name}}, welcome to {{company}}!\"\n },\n {\n \"key\": \"customerEmail\",\n \"value\": \"{{addresses[0].city}}\"\n },\n {\n \"key\": \"something\",\n \"value\": \"{{any liquid}}\"\n }\n ]\n}\n```\n\nThis will create variables `customerName`, `fullName`, `customerEmail`, `greeting`, and `something`. To access these variables, you can reference them as `{{customerName}}`, `{{fullName}}`, `{{customerEmail}}`, `{{greeting}}`, and `{{something}}`.", + "description": "These are additional variables to create.\n\nThese will be accessible during the call as `{{key}}` and stored in `call.artifact.variableValues` after the call.\n\nExample:\n```json\n{\n \"aliases\": [\n {\n \"key\": \"customerName\",\n \"value\": \"{{name}}\"\n },\n {\n \"key\": \"fullName\",\n \"value\": \"{{firstName}} {{lastName}}\"\n },\n {\n \"key\": \"greeting\",\n \"value\": \"Hello {{name}}, welcome to {{company}}!\"\n },\n {\n \"key\": \"customerCity\",\n \"value\": \"{{addresses[0].city}}\"\n },\n {\n \"key\": \"something\",\n \"value\": \"{{any liquid}}\"\n }\n ]\n}\n```\n\nThis will create variables `customerName`, `fullName`, `greeting`, `customerCity`, and `something`. To access these variables, you can reference them as `{{customerName}}`, `{{fullName}}`, `{{greeting}}`, `{{customerCity}}`, and `{{something}}`.", "type": "array", "items": { "$ref": "#/components/schemas/VariableExtractionAlias" @@ -14306,7 +14563,7 @@ "type": "object", "properties": { "messages": { - "description": "These are the messages used to generate the structured data.\n\n@default: ```\n[\n {\n \"role\": \"system\",\n \"content\": \"You are an expert data extractor. You will be given a transcript of a call. Extract structured data per the JSON Schema. DO NOT return anything except the structured data.\\n\\nJson Schema:\\\\n{{schema}}\\n\\nOnly respond with the JSON.\"\n },\n {\n \"role\": \"user\",\n \"content\": \"Here is the transcript:\\n\\n{{transcript}}\\n\\n. Here is the ended reason of the call:\\n\\n{{endedReason}}\\n\\n\"\n }\n]```\n\nYou can customize by providing any messages you want.\n\nHere are the template variables available:\n- {{transcript}}: the transcript of the call from `call.artifact.transcript`- {{systemPrompt}}: the system prompt of the call from `assistant.model.messages[type=system].content`- {{schema}}: the schema of the structured data from `structuredDataPlan.schema`- {{endedReason}}: the ended reason of the call from `call.endedReason`", + "description": "These are the messages used to generate the structured data.\n\n@default: ```\n[\n {\n \"role\": \"system\",\n \"content\": \"You are an expert data extractor. You will be given a transcript of a call. Extract structured data per the JSON Schema. DO NOT return anything except the structured data.\\n\\nJson Schema:\\\\n{{schema}}\\n\\nOnly respond with the JSON.\"\n },\n {\n \"role\": \"user\",\n \"content\": \"Here is the transcript:\\n\\n{{transcript}}\\n\\n. Here is the ended reason of the call:\\n\\n{{endedReason}}\\n\\n\"\n }\n]```\n\nYou can customize by providing any messages you want.\n\nHere are the template variables available:\n- {{transcript}}: the transcript of the call from `call.artifact.transcript`- {{systemPrompt}}: the system prompt of the call from `assistant.model.messages[type=system].content`- {{messages}}: the messages of the call from `assistant.model.messages`- {{schema}}: the schema of the structured data from `structuredDataPlan.schema`- {{endedReason}}: the ended reason of the call from `call.endedReason`", "type": "array", "items": { "type": "object" @@ -14371,7 +14628,7 @@ "description": "This enforces the rubric of the evaluation. The output is stored in `call.analysis.successEvaluation`.\n\nOptions include:\n- 'NumericScale': A scale of 1 to 10.\n- 'DescriptiveScale': A scale of Excellent, Good, Fair, Poor.\n- 'Checklist': A checklist of criteria and their status.\n- 'Matrix': A grid that evaluates multiple criteria across different performance levels.\n- 'PercentageScale': A scale of 0% to 100%.\n- 'LikertScale': A scale of Strongly Agree, Agree, Neutral, Disagree, Strongly Disagree.\n- 'AutomaticRubric': Automatically break down evaluation into several criteria, each with its own score.\n- 'PassFail': A simple 'true' if call passed, 'false' if not.\n\nDefault is 'PassFail'." }, "messages": { - "description": "These are the messages used to generate the success evaluation.\n\n@default: ```\n[\n {\n \"role\": \"system\",\n \"content\": \"You are an expert call evaluator. You will be given a transcript of a call and the system prompt of the AI participant. Determine if the call was successful based on the objectives inferred from the system prompt. DO NOT return anything except the result.\\n\\nRubric:\\\\n{{rubric}}\\n\\nOnly respond with the result.\"\n },\n {\n \"role\": \"user\",\n \"content\": \"Here is the transcript:\\n\\n{{transcript}}\\n\\n\"\n },\n {\n \"role\": \"user\",\n \"content\": \"Here was the system prompt of the call:\\n\\n{{systemPrompt}}\\n\\n. Here is the ended reason of the call:\\n\\n{{endedReason}}\\n\\n\"\n }\n]```\n\nYou can customize by providing any messages you want.\n\nHere are the template variables available:\n- {{transcript}}: the transcript of the call from `call.artifact.transcript`- {{systemPrompt}}: the system prompt of the call from `assistant.model.messages[type=system].content`- {{rubric}}: the rubric of the success evaluation from `successEvaluationPlan.rubric`- {{endedReason}}: the ended reason of the call from `call.endedReason`", + "description": "These are the messages used to generate the success evaluation.\n\n@default: ```\n[\n {\n \"role\": \"system\",\n \"content\": \"You are an expert call evaluator. You will be given a transcript of a call and the system prompt of the AI participant. Determine if the call was successful based on the objectives inferred from the system prompt. DO NOT return anything except the result.\\n\\nRubric:\\\\n{{rubric}}\\n\\nOnly respond with the result.\"\n },\n {\n \"role\": \"user\",\n \"content\": \"Here is the transcript:\\n\\n{{transcript}}\\n\\n\"\n },\n {\n \"role\": \"user\",\n \"content\": \"Here was the system prompt of the call:\\n\\n{{systemPrompt}}\\n\\n. Here is the ended reason of the call:\\n\\n{{endedReason}}\\n\\n\"\n }\n]```\n\nYou can customize by providing any messages you want.\n\nHere are the template variables available:\n- {{transcript}}: the transcript of the call from `call.artifact.transcript`- {{systemPrompt}}: the system prompt of the call from `assistant.model.messages[type=system].content`- {{messages}}: the messages of the call from `assistant.model.messages`- {{rubric}}: the rubric of the success evaluation from `successEvaluationPlan.rubric`- {{endedReason}}: the ended reason of the call from `call.endedReason`", "type": "array", "items": { "type": "object" @@ -16471,6 +16728,25 @@ "voiceId" ] }, + "ElevenLabsPronunciationDictionaryLocator": { + "type": "object", + "properties": { + "pronunciationDictionaryId": { + "type": "string", + "description": "This is the ID of the pronunciation dictionary to use.", + "title": "This is the ElevenLabs Pronunciation Dictionary ID" + }, + "versionId": { + "type": "string", + "description": "This is the version ID of the pronunciation dictionary to use.", + "title": "This is the ElevenLabs Pronunciation Dictionary Version ID" + } + }, + "required": [ + "pronunciationDictionaryId", + "versionId" + ] + }, "ElevenLabsVoice": { "type": "object", "properties": { @@ -16580,6 +16856,10 @@ ], "example": "eleven_turbo_v2_5" }, + "language": { + "type": "string", + "description": "This is the language (ISO 639-1) that is enforced for the model. Currently only Turbo v2.5 supports language enforcement. For other models, an error will be returned if language code is provided." + }, "chunkPlan": { "description": "This is the plan for chunking the model output before it is sent to the voice provider.", "allOf": [ @@ -16588,9 +16868,12 @@ } ] }, - "language": { - "type": "string", - "description": "This is the language (ISO 639-1) that is enforced for the model. Currently only Turbo v2.5 supports language enforcement. For other models, an error will be returned if language code is provided." + "pronunciationDictionaryLocators": { + "description": "This is the pronunciation dictionary locators to use.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ElevenLabsPronunciationDictionaryLocator" + } }, "fallbackPlan": { "description": "This is the plan for voice provider fallbacks in the event that the primary voice provider fails.", @@ -17607,13 +17890,13 @@ }, "model": { "type": "string", - "description": "This is the model that will be used. Defaults to 'mistv2' when not specified.", + "description": "This is the model that will be used. Defaults to 'arcana' when not specified.", "enum": [ - "mist", + "arcana", "mistv2", - "arcana" + "mist" ], - "example": "mistv2" + "example": "arcana" }, "speed": { "type": "number", @@ -18502,6 +18785,13 @@ "type": "string", "description": "This is the language (ISO 639-1) that is enforced for the model. Currently only Turbo v2.5 supports language enforcement. For other models, an error will be returned if language code is provided." }, + "pronunciationDictionaryLocators": { + "description": "This is the pronunciation dictionary locators to use.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ElevenLabsPronunciationDictionaryLocator" + } + }, "chunkPlan": { "description": "This is the plan for chunking the model output before it is sent to the voice provider.", "allOf": [ @@ -19477,13 +19767,13 @@ }, "model": { "type": "string", - "description": "This is the model that will be used. Defaults to 'mistv2' when not specified.", + "description": "This is the model that will be used. Defaults to 'arcana' when not specified.", "enum": [ - "mist", + "arcana", "mistv2", - "arcana" + "mist" ], - "example": "mistv2" + "example": "arcana" }, "speed": { "type": "number", @@ -21579,7 +21869,7 @@ ] }, "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.", + "description": "This is the function definition of the tool.", "allOf": [ { "$ref": "#/components/schemas/OpenAIFunction" @@ -21601,14 +21891,59 @@ "say" ] }, + "prompt": { + "description": "This is the prompt for the assistant to generate a response based on existing conversation.\nCan be a string or an array of chat messages.", + "oneOf": [ + { + "type": "string", + "title": "String" + }, + { + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/SystemMessage", + "title": "SystemMessage" + }, + { + "$ref": "#/components/schemas/UserMessage", + "title": "UserMessage" + }, + { + "$ref": "#/components/schemas/AssistantMessage", + "title": "AssistantMessage" + }, + { + "$ref": "#/components/schemas/ToolMessage", + "title": "ToolMessage" + }, + { + "$ref": "#/components/schemas/DeveloperMessage", + "title": "DeveloperMessage" + } + ] + }, + "title": "MessageArray" + } + ], + "examples": [ + "Ask the user if they're still in the call", + [ + { + "role": "system", + "content": "You are a helpful assistant, and would like to know if the user is still in the call based on the conversation history in {{transcript}}" + } + ] + ] + }, "exact": { "type": "object", "description": "This is the message to say" } }, "required": [ - "type", - "exact" + "type" ] }, "AssistantHookFilter": { @@ -21659,12 +21994,8 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/TransferAssistantHookAction", - "title": "TransferAssistantHookAction" - }, - { - "$ref": "#/components/schemas/FunctionCallAssistantHookAction", - "title": "FunctionCallAssistantHookAction" + "$ref": "#/components/schemas/ToolCallAssistantHookAction", + "title": "ToolCallAssistantHookAction" } ] } @@ -21698,17 +22029,13 @@ "description": "This is the set of actions to perform when the hook triggers", "items": { "oneOf": [ - { - "$ref": "#/components/schemas/TransferAssistantHookAction", - "title": "TransferAssistantHookAction" - }, - { - "$ref": "#/components/schemas/FunctionCallAssistantHookAction", - "title": "FunctionCallAssistantHookAction" - }, { "$ref": "#/components/schemas/SayAssistantHookAction", "title": "SayAssistantHookAction" + }, + { + "$ref": "#/components/schemas/ToolCallAssistantHookAction", + "title": "ToolCallAssistantHookAction" } ] } @@ -21736,19 +22063,182 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/TransferAssistantHookAction", - "title": "TransferAssistantHookAction" + "$ref": "#/components/schemas/SayAssistantHookAction", + "title": "SayAssistantHookAction" }, { - "$ref": "#/components/schemas/FunctionCallAssistantHookAction", - "title": "FunctionCallAssistantHookAction" - }, + "$ref": "#/components/schemas/ToolCallAssistantHookAction", + "title": "ToolCallAssistantHookAction" + } + ] + } + } + }, + "required": [ + "on", + "do" + ] + }, + "ToolCallAssistantHookAction": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "This is the type of action - must be \"tool\"", + "enum": [ + "tool" + ] + }, + "tool": { + "description": "This is the tool to call. To use an existing tool, send `toolId` instead.", + "oneOf": [ + { + "$ref": "#/components/schemas/CreateApiRequestToolDTO", + "title": "ApiRequestTool" + }, + { + "$ref": "#/components/schemas/CreateBashToolDTO", + "title": "BashTool" + }, + { + "$ref": "#/components/schemas/CreateComputerToolDTO", + "title": "ComputerTool" + }, + { + "$ref": "#/components/schemas/CreateDtmfToolDTO", + "title": "DtmfTool" + }, + { + "$ref": "#/components/schemas/CreateEndCallToolDTO", + "title": "EndCallTool" + }, + { + "$ref": "#/components/schemas/CreateFunctionToolDTO", + "title": "FunctionTool" + }, + { + "$ref": "#/components/schemas/CreateGoHighLevelCalendarAvailabilityToolDTO", + "title": "GoHighLevelCalendarAvailabilityTool" + }, + { + "$ref": "#/components/schemas/CreateGoHighLevelCalendarEventCreateToolDTO", + "title": "GoHighLevelCalendarEventCreateTool" + }, + { + "$ref": "#/components/schemas/CreateGoHighLevelContactCreateToolDTO", + "title": "GoHighLevelContactCreateTool" + }, + { + "$ref": "#/components/schemas/CreateGoHighLevelContactGetToolDTO", + "title": "GoHighLevelContactGetTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", + "title": "GoogleCalendarCheckAvailabilityTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCreateEventToolDTO", + "title": "GoogleCalendarCreateEventTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleSheetsRowAppendToolDTO", + "title": "GoogleSheetsRowAppendTool" + }, + { + "$ref": "#/components/schemas/CreateMcpToolDTO", + "title": "McpTool" + }, + { + "$ref": "#/components/schemas/CreateQueryToolDTO", + "title": "QueryTool" + }, + { + "$ref": "#/components/schemas/CreateSlackSendMessageToolDTO", + "title": "SlackSendMessageTool" + }, + { + "$ref": "#/components/schemas/CreateSmsToolDTO", + "title": "SmsTool" + }, + { + "$ref": "#/components/schemas/CreateTextEditorToolDTO", + "title": "TextEditorTool" + }, + { + "$ref": "#/components/schemas/CreateTransferCallToolDTO", + "title": "TransferCallTool" + } + ] + }, + "toolId": { + "type": "string", + "description": "This is the tool to call. To use a transient tool, send `tool` instead." + } + }, + "required": [ + "type" + ] + }, + "CustomerSpeechTimeoutOptions": { + "type": "object", + "properties": { + "timeoutSeconds": { + "type": "number", + "description": "This is the timeout in seconds before action is triggered.\nThe clock starts when the assistant finishes speaking and remains active until the user speaks.\n\n@default 7.5", + "minimum": 1, + "maximum": 1000 + }, + "triggerMaxCount": { + "type": "number", + "description": "This is the maximum number of times the hook will trigger in a call.\n\n@default 3", + "minimum": 1, + "maximum": 10 + }, + "triggerResetMode": { + "type": "object", + "description": "This is whether the counter for hook trigger resets the user speaks.\n\n@default never" + } + }, + "required": [ + "timeoutSeconds" + ] + }, + "AssistantHookCustomerSpeechTimeout": { + "type": "object", + "properties": { + "on": { + "type": "string", + "description": "Must be either \"customer.speech.timeout\" or match the pattern \"customer.speech.timeout[property=value]\"", + "maxLength": 1000 + }, + "do": { + "type": "array", + "description": "This is the set of actions to perform when the hook triggers", + "items": { + "oneOf": [ { "$ref": "#/components/schemas/SayAssistantHookAction", "title": "SayAssistantHookAction" + }, + { + "$ref": "#/components/schemas/ToolCallAssistantHookAction", + "title": "ToolCallAssistantHookAction" } ] } + }, + "options": { + "description": "This is the set of filters that must match for the hook to trigger", + "allOf": [ + { + "$ref": "#/components/schemas/CustomerSpeechTimeoutOptions" + } + ] + }, + "name": { + "type": "string", + "description": "This is the name of the hook, it can be set by the user to identify the hook.\nIf no name is provided, the hook will be auto generated as UUID.\n\n@default UUID", + "maxLength": 1000 } }, "required": [ @@ -22337,13 +22827,6 @@ ] } }, - "silenceTimeoutSeconds": { - "type": "number", - "description": "How many seconds of silence to wait before ending the call. Defaults to 30.\n\n@default 30", - "minimum": 10, - "maximum": 3600, - "example": 30 - }, "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.\n\n@default 600 (10 minutes)", @@ -22680,6 +23163,10 @@ { "$ref": "#/components/schemas/AssistantHookCustomerSpeechInterrupted", "title": "AssistantHookCustomerSpeechInterrupted" + }, + { + "$ref": "#/components/schemas/AssistantHookCustomerSpeechTimeout", + "title": "AssistantHookCustomerSpeechTimeout" } ] } @@ -22740,7 +23227,8 @@ ] }, "messagePlan": { - "description": "This is the plan for static predefined 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.", + "description": "This is the plan for static predefined messages that can be spoken by the assistant during the call, like `idleMessages`.", + "deprecated": true, "allOf": [ { "$ref": "#/components/schemas/MessagePlan" @@ -23128,13 +23616,6 @@ ] } }, - "silenceTimeoutSeconds": { - "type": "number", - "description": "How many seconds of silence to wait before ending the call. Defaults to 30.\n\n@default 30", - "minimum": 10, - "maximum": 3600, - "example": 30 - }, "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.\n\n@default 600 (10 minutes)", @@ -23471,6 +23952,10 @@ { "$ref": "#/components/schemas/AssistantHookCustomerSpeechInterrupted", "title": "AssistantHookCustomerSpeechInterrupted" + }, + { + "$ref": "#/components/schemas/AssistantHookCustomerSpeechTimeout", + "title": "AssistantHookCustomerSpeechTimeout" } ] } @@ -23535,7 +24020,8 @@ ] }, "messagePlan": { - "description": "This is the plan for static predefined 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.", + "description": "This is the plan for static predefined messages that can be spoken by the assistant during the call, like `idleMessages`.", + "deprecated": true, "allOf": [ { "$ref": "#/components/schemas/MessagePlan" @@ -27725,13 +28211,6 @@ ] } }, - "silenceTimeoutSeconds": { - "type": "number", - "description": "How many seconds of silence to wait before ending the call. Defaults to 30.\n\n@default 30", - "minimum": 10, - "maximum": 3600, - "example": 30 - }, "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.\n\n@default 600 (10 minutes)", @@ -28068,6 +28547,10 @@ { "$ref": "#/components/schemas/AssistantHookCustomerSpeechInterrupted", "title": "AssistantHookCustomerSpeechInterrupted" + }, + { + "$ref": "#/components/schemas/AssistantHookCustomerSpeechTimeout", + "title": "AssistantHookCustomerSpeechTimeout" } ] } @@ -28128,7 +28611,8 @@ ] }, "messagePlan": { - "description": "This is the plan for static predefined 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.", + "description": "This is the plan for static predefined messages that can be spoken by the assistant during the call, like `idleMessages`.", + "deprecated": true, "allOf": [ { "$ref": "#/components/schemas/MessagePlan" @@ -28576,13 +29060,6 @@ ] } }, - "silenceTimeoutSeconds": { - "type": "number", - "description": "How many seconds of silence to wait before ending the call. Defaults to 30.\n\n@default 30", - "minimum": 10, - "maximum": 3600, - "example": 30 - }, "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.\n\n@default 600 (10 minutes)", @@ -28919,6 +29396,10 @@ { "$ref": "#/components/schemas/AssistantHookCustomerSpeechInterrupted", "title": "AssistantHookCustomerSpeechInterrupted" + }, + { + "$ref": "#/components/schemas/AssistantHookCustomerSpeechTimeout", + "title": "AssistantHookCustomerSpeechTimeout" } ] } @@ -28979,7 +29460,8 @@ ] }, "messagePlan": { - "description": "This is the plan for static predefined 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.", + "description": "This is the plan for static predefined messages that can be spoken by the assistant during the call, like `idleMessages`.", + "deprecated": true, "allOf": [ { "$ref": "#/components/schemas/MessagePlan" @@ -30543,14 +31025,6 @@ "type": "string", "description": "This is the ISO 8601 date-time string of when the tool was last updated." }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] - }, "name": { "type": "string", "description": "This is the name of the tool. This will be passed to the model.\n\nMust be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 40.", @@ -30591,7 +31065,7 @@ ] }, "variableExtractionPlan": { - "description": "This is the plan to extract variables from the tool's response. These will be accessible during the call and stored in `call.artifact.variableValues` after the call.\n\nUsage:\n1. Use `aliases` to extract variables from the tool's response body. (Most common case)\n\n```json\n{\n \"aliases\": [\n {\n \"key\": \"customerName\",\n \"value\": \"{{customer.name}}\"\n },\n {\n \"key\": \"customerAge\",\n \"value\": \"{{customer.age}}\"\n }\n ]\n}\n```\n\nThe tool response body is made available to the liquid template.\n\n2. Use `aliases` to extract variables from the tool's response body if the response is an array.\n\n```json\n{\n \"aliases\": [\n {\n \"key\": \"customerName\",\n \"value\": \"{{$[0].name}}\"\n },\n {\n \"key\": \"customerAge\",\n \"value\": \"{{$[0].age}}\"\n }\n ]\n}\n```\n\n$ is a shorthand for the tool's response body. `$[0]` is the first item in the array. `$[n]` is the nth item in the array. Note, $ is available regardless of the response body type (both object and array).\n\n3. Use `aliases` to extract variables from the tool's response headers.\n\n```json\n{\n \"aliases\": [\n {\n \"key\": \"customerName\",\n \"value\": \"{{tool.response.headers.customer-name}}\"\n },\n {\n \"key\": \"customerAge\",\n \"value\": \"{{tool.response.headers.customer-age}}\"\n }\n ]\n}\n```\n\n`tool.response` is made available to the liquid template. Particularly, both `tool.response.headers` and `tool.response.body` are available. Note, `tool.response` is available regardless of the response body type (both object and array).\n\n4. Use `schema` to extract a large portion of the tool's response body.\n\n4.1. If you hit example.com and it returns `{\"name\": \"John\", \"age\": 30}`, then you can specify the schema as:\n\n```json\n{\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"age\": {\n \"type\": \"number\"\n }\n }\n }\n}\n```\n\n4.2. If you hit example.com and it returns `{\"name\": {\"first\": \"John\", \"last\": \"Doe\"}}`, then you can specify the schema as:\n\n```json\n{\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"object\",\n \"properties\": {\n \"first\": {\n \"type\": \"string\"\n },\n \"last\": {\n \"type\": \"string\"\n }\n }\n }\n }\n }\n}\n```\n\nThese will be extracted as `{{ name }}` and `{{ age }}` respectively. To emphasize, object properties are extracted as direct global variables.\n\n4.3. If you hit example.com and it returns `{\"name\": {\"first\": \"John\", \"last\": \"Doe\"}}`, then you can specify the schema as:\n\n```json\n{\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"object\",\n \"properties\": {\n \"first\": {\n \"type\": \"string\"\n },\n \"last\": {\n \"type\": \"string\"\n }\n }\n }\n }\n }\n}\n```\n\nThese will be extracted as `{{ name }}`. And, `{{ name.first }}` and `{{ name.last }}` will be accessible.\n\n4.4. If you hit example.com and it returns `[\"94123\", \"94124\"]`, then you can specify the schema as:\n\n```json\n{\n \"schema\": {\n \"type\": \"array\",\n \"title\": \"zipCodes\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n}\n```\n\nThis will be extracted as `{{ zipCodes }}`. To access the array items, you can use `{{ zipCodes[0] }}` and `{{ zipCodes[1] }}`.\n\n4.5. If you hit example.com and it returns `[{\"name\": \"John\", \"age\": 30, \"zipCodes\": [\"94123\", \"94124\"]}, {\"name\": \"Jane\", \"age\": 25, \"zipCodes\": [\"94125\", \"94126\"]}]`, then you can specify the schema as:\n\n```json\n{\n \"schema\": {\n \"type\": \"array\",\n \"title\": \"people\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"age\": {\n \"type\": \"number\"\n },\n \"zipCodes\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n }\n }\n }\n}\n```\n\nThis will be extracted as `{{ people }}`. To access the array items, you can use `{{ people[n].name }}`, `{{ people[n].age }}`, `{{ people[n].zipCodes }}`, `{{ people[n].zipCodes[0] }}` and `{{ people[n].zipCodes[1] }}`.\n\nNote: Both `aliases` and `schema` can be used together.", + "description": "This is the plan to extract variables from the tool's response. These will be accessible during the call and stored in `call.artifact.variableValues` after the call.\n\nUsage:\n1. Use `aliases` to extract variables from the tool's response body. (Most common case)\n\n```json\n{\n \"aliases\": [\n {\n \"key\": \"customerName\",\n \"value\": \"{{customer.name}}\"\n },\n {\n \"key\": \"customerAge\",\n \"value\": \"{{customer.age}}\"\n }\n ]\n}\n```\n\nThe tool response body is made available to the liquid template.\n\n2. Use `aliases` to extract variables from the tool's response body if the response is an array.\n\n```json\n{\n \"aliases\": [\n {\n \"key\": \"customerName\",\n \"value\": \"{{$[0].name}}\"\n },\n {\n \"key\": \"customerAge\",\n \"value\": \"{{$[0].age}}\"\n }\n ]\n}\n```\n\n$ is a shorthand for the tool's response body. `$[0]` is the first item in the array. `$[n]` is the nth item in the array. Note, $ is available regardless of the response body type (both object and array).\n\n3. Use `aliases` to extract variables from the tool's response headers.\n\n```json\n{\n \"aliases\": [\n {\n \"key\": \"customerName\",\n \"value\": \"{{tool.response.headers.customer-name}}\"\n },\n {\n \"key\": \"customerAge\",\n \"value\": \"{{tool.response.headers.customer-age}}\"\n }\n ]\n}\n```\n\n`tool.response` is made available to the liquid template. Particularly, both `tool.response.headers` and `tool.response.body` are available. Note, `tool.response` is available regardless of the response body type (both object and array).\n\n4. Use `schema` to extract a large portion of the tool's response body.\n\n4.1. If you hit example.com and it returns `{\"name\": \"John\", \"age\": 30}`, then you can specify the schema as:\n\n```json\n{\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"age\": {\n \"type\": \"number\"\n }\n }\n }\n}\n```\nThese will be extracted as `{{ name }}` and `{{ age }}` respectively. To emphasize, object properties are extracted as direct global variables.\n\n4.2. If you hit example.com and it returns `{\"name\": {\"first\": \"John\", \"last\": \"Doe\"}}`, then you can specify the schema as:\n\n```json\n{\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"object\",\n \"properties\": {\n \"first\": {\n \"type\": \"string\"\n },\n \"last\": {\n \"type\": \"string\"\n }\n }\n }\n }\n }\n}\n```\n\nThese will be extracted as `{{ name }}`. And, `{{ name.first }}` and `{{ name.last }}` will be accessible.\n\n4.3. If you hit example.com and it returns `[\"94123\", \"94124\"]`, then you can specify the schema as:\n\n```json\n{\n \"schema\": {\n \"type\": \"array\",\n \"title\": \"zipCodes\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n}\n```\n\nThis will be extracted as `{{ zipCodes }}`. To access the array items, you can use `{{ zipCodes[0] }}` and `{{ zipCodes[1] }}`.\n\n4.4. If you hit example.com and it returns `[{\"name\": \"John\", \"age\": 30, \"zipCodes\": [\"94123\", \"94124\"]}, {\"name\": \"Jane\", \"age\": 25, \"zipCodes\": [\"94125\", \"94126\"]}]`, then you can specify the schema as:\n\n```json\n{\n \"schema\": {\n \"type\": \"array\",\n \"title\": \"people\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"age\": {\n \"type\": \"number\"\n },\n \"zipCodes\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n }\n }\n }\n}\n```\n\nThis will be extracted as `{{ people }}`. To access the array items, you can use `{{ people[n].name }}`, `{{ people[n].age }}`, `{{ people[n].zipCodes }}`, `{{ people[n].zipCodes[0] }}` and `{{ people[n].zipCodes[1] }}`.\n\nNote: Both `aliases` and `schema` can be used together.", "allOf": [ { "$ref": "#/components/schemas/VariableExtractionPlan" @@ -30660,14 +31134,6 @@ "format": "date-time", "type": "string", "description": "This is the ISO 8601 date-time string of when the tool was last updated." - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] } }, "required": [ @@ -30729,14 +31195,6 @@ "format": "date-time", "type": "string", "description": "This is the ISO 8601 date-time string of when the tool was last updated." - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] } }, "required": [ @@ -30813,7 +31271,7 @@ "description": "This is the ISO 8601 date-time string of when the tool was last updated." }, "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "description": "This is the function definition of the tool.", "allOf": [ { "$ref": "#/components/schemas/OpenAIFunction" @@ -30881,14 +31339,6 @@ "type": "string", "description": "This is the ISO 8601 date-time string of when the tool was last updated." }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] - }, "metadata": { "$ref": "#/components/schemas/GhlToolMetadata" } @@ -30954,14 +31404,6 @@ "type": "string", "description": "This is the ISO 8601 date-time string of when the tool was last updated." }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] - }, "metadata": { "$ref": "#/components/schemas/MakeToolMetadata" } @@ -31045,14 +31487,6 @@ "format": "date-time", "type": "string", "description": "This is the ISO 8601 date-time string of when the tool was last updated." - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] } }, "required": [ @@ -31114,14 +31548,6 @@ "format": "date-time", "type": "string", "description": "This is the ISO 8601 date-time string of when the tool was last updated." - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] } }, "required": [ @@ -31199,14 +31625,6 @@ "type": "string", "description": "This is the ISO 8601 date-time string of when the tool was last updated." }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] - }, "name": { "type": "string", "description": "The name of the tool, fixed to 'bash'", @@ -31293,14 +31711,6 @@ "type": "string", "description": "This is the ISO 8601 date-time string of when the tool was last updated." }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] - }, "name": { "type": "string", "description": "The name of the tool, fixed to 'computer'", @@ -31401,14 +31811,6 @@ "type": "string", "description": "This is the ISO 8601 date-time string of when the tool was last updated." }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] - }, "name": { "type": "string", "description": "The name of the tool, fixed to 'str_replace_editor'", @@ -31486,14 +31888,6 @@ "format": "date-time", "type": "string", "description": "This is the ISO 8601 date-time string of when the tool was last updated." - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] } }, "required": [ @@ -31536,7 +31930,7 @@ "enum": [ "google.calendar.event.create" ], - "description": "The type of tool. \"google.calendar.event.create\" for Google Calendar tool." + "description": "The type of tool. \"google.calendar.event.create\" for Google Calendar Create Event tool." }, "id": { "type": "string", @@ -31555,14 +31949,6 @@ "format": "date-time", "type": "string", "description": "This is the ISO 8601 date-time string of when the tool was last updated." - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] } }, "required": [ @@ -31605,7 +31991,7 @@ "enum": [ "google.sheets.row.append" ], - "description": "The type of tool. \"google.sheets.row.append\" for Google Sheets tool." + "description": "The type of tool. \"google.sheets.row.append\" for Google Sheets Row Append tool." }, "id": { "type": "string", @@ -31624,14 +32010,6 @@ "format": "date-time", "type": "string", "description": "This is the ISO 8601 date-time string of when the tool was last updated." - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] } }, "required": [ @@ -31674,7 +32052,7 @@ "enum": [ "google.calendar.availability.check" ], - "description": "The type of tool. \"google.calendar.availability.check\" for Google Calendar availability check tool." + "description": "The type of tool. \"google.calendar.availability.check\" for Google Calendar Check Availability tool." }, "id": { "type": "string", @@ -31693,14 +32071,6 @@ "format": "date-time", "type": "string", "description": "This is the ISO 8601 date-time string of when the tool was last updated." - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] } }, "required": [ @@ -31743,7 +32113,7 @@ "enum": [ "slack.message.send" ], - "description": "The type of tool. \"slack.message.send\" for Slack send message tool." + "description": "The type of tool. \"slack.message.send\" for Slack Send Message tool." }, "id": { "type": "string", @@ -31762,14 +32132,6 @@ "format": "date-time", "type": "string", "description": "This is the ISO 8601 date-time string of when the tool was last updated." - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] } }, "required": [ @@ -31831,14 +32193,6 @@ "format": "date-time", "type": "string", "description": "This is the ISO 8601 date-time string of when the tool was last updated." - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] } }, "required": [ @@ -31909,14 +32263,6 @@ "type": "string", "description": "This is the ISO 8601 date-time string of when the tool was last updated." }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] - }, "metadata": { "$ref": "#/components/schemas/McpToolMetadata" } @@ -31961,7 +32307,7 @@ "enum": [ "gohighlevel.calendar.availability.check" ], - "description": "The type of tool. \"gohighlevel.calendar.availability.check\" for GoHighLevel Calendar availability check tool." + "description": "The type of tool. \"gohighlevel.calendar.availability.check\" for GoHighLevel Calendar Availability Check tool." }, "id": { "type": "string", @@ -31980,14 +32326,6 @@ "format": "date-time", "type": "string", "description": "This is the ISO 8601 date-time string of when the tool was last updated." - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] } }, "required": [ @@ -32030,7 +32368,7 @@ "enum": [ "gohighlevel.calendar.event.create" ], - "description": "The type of tool. \"gohighlevel.calendar.event.create\" for GoHighLevel Calendar event create tool." + "description": "The type of tool. \"gohighlevel.calendar.event.create\" for GoHighLevel Calendar Event Create tool." }, "id": { "type": "string", @@ -32049,14 +32387,6 @@ "format": "date-time", "type": "string", "description": "This is the ISO 8601 date-time string of when the tool was last updated." - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] } }, "required": [ @@ -32099,7 +32429,7 @@ "enum": [ "gohighlevel.contact.create" ], - "description": "The type of tool. \"gohighlevel.contact.create\" for GoHighLevel contact create tool." + "description": "The type of tool. \"gohighlevel.contact.create\" for GoHighLevel Contact Create tool." }, "id": { "type": "string", @@ -32118,14 +32448,6 @@ "format": "date-time", "type": "string", "description": "This is the ISO 8601 date-time string of when the tool was last updated." - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] } }, "required": [ @@ -32168,7 +32490,7 @@ "enum": [ "gohighlevel.contact.get" ], - "description": "The type of tool. \"gohighlevel.contact.get\" for GoHighLevel contact get tool." + "description": "The type of tool. \"gohighlevel.contact.get\" for GoHighLevel Contact Get tool." }, "id": { "type": "string", @@ -32187,14 +32509,6 @@ "format": "date-time", "type": "string", "description": "This is the ISO 8601 date-time string of when the tool was last updated." - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] } }, "required": [ @@ -32293,20 +32607,12 @@ ] }, "variableExtractionPlan": { - "description": "This is the plan to extract variables from the tool's response. These will be accessible during the call and stored in `call.artifact.variableValues` after the call.\n\nUsage:\n1. Use `aliases` to extract variables from the tool's response body. (Most common case)\n\n```json\n{\n \"aliases\": [\n {\n \"key\": \"customerName\",\n \"value\": \"{{customer.name}}\"\n },\n {\n \"key\": \"customerAge\",\n \"value\": \"{{customer.age}}\"\n }\n ]\n}\n```\n\nThe tool response body is made available to the liquid template.\n\n2. Use `aliases` to extract variables from the tool's response body if the response is an array.\n\n```json\n{\n \"aliases\": [\n {\n \"key\": \"customerName\",\n \"value\": \"{{$[0].name}}\"\n },\n {\n \"key\": \"customerAge\",\n \"value\": \"{{$[0].age}}\"\n }\n ]\n}\n```\n\n$ is a shorthand for the tool's response body. `$[0]` is the first item in the array. `$[n]` is the nth item in the array. Note, $ is available regardless of the response body type (both object and array).\n\n3. Use `aliases` to extract variables from the tool's response headers.\n\n```json\n{\n \"aliases\": [\n {\n \"key\": \"customerName\",\n \"value\": \"{{tool.response.headers.customer-name}}\"\n },\n {\n \"key\": \"customerAge\",\n \"value\": \"{{tool.response.headers.customer-age}}\"\n }\n ]\n}\n```\n\n`tool.response` is made available to the liquid template. Particularly, both `tool.response.headers` and `tool.response.body` are available. Note, `tool.response` is available regardless of the response body type (both object and array).\n\n4. Use `schema` to extract a large portion of the tool's response body.\n\n4.1. If you hit example.com and it returns `{\"name\": \"John\", \"age\": 30}`, then you can specify the schema as:\n\n```json\n{\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"age\": {\n \"type\": \"number\"\n }\n }\n }\n}\n```\n\n4.2. If you hit example.com and it returns `{\"name\": {\"first\": \"John\", \"last\": \"Doe\"}}`, then you can specify the schema as:\n\n```json\n{\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"object\",\n \"properties\": {\n \"first\": {\n \"type\": \"string\"\n },\n \"last\": {\n \"type\": \"string\"\n }\n }\n }\n }\n }\n}\n```\n\nThese will be extracted as `{{ name }}` and `{{ age }}` respectively. To emphasize, object properties are extracted as direct global variables.\n\n4.3. If you hit example.com and it returns `{\"name\": {\"first\": \"John\", \"last\": \"Doe\"}}`, then you can specify the schema as:\n\n```json\n{\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"object\",\n \"properties\": {\n \"first\": {\n \"type\": \"string\"\n },\n \"last\": {\n \"type\": \"string\"\n }\n }\n }\n }\n }\n}\n```\n\nThese will be extracted as `{{ name }}`. And, `{{ name.first }}` and `{{ name.last }}` will be accessible.\n\n4.4. If you hit example.com and it returns `[\"94123\", \"94124\"]`, then you can specify the schema as:\n\n```json\n{\n \"schema\": {\n \"type\": \"array\",\n \"title\": \"zipCodes\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n}\n```\n\nThis will be extracted as `{{ zipCodes }}`. To access the array items, you can use `{{ zipCodes[0] }}` and `{{ zipCodes[1] }}`.\n\n4.5. If you hit example.com and it returns `[{\"name\": \"John\", \"age\": 30, \"zipCodes\": [\"94123\", \"94124\"]}, {\"name\": \"Jane\", \"age\": 25, \"zipCodes\": [\"94125\", \"94126\"]}]`, then you can specify the schema as:\n\n```json\n{\n \"schema\": {\n \"type\": \"array\",\n \"title\": \"people\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"age\": {\n \"type\": \"number\"\n },\n \"zipCodes\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n }\n }\n }\n}\n```\n\nThis will be extracted as `{{ people }}`. To access the array items, you can use `{{ people[n].name }}`, `{{ people[n].age }}`, `{{ people[n].zipCodes }}`, `{{ people[n].zipCodes[0] }}` and `{{ people[n].zipCodes[1] }}`.\n\nNote: Both `aliases` and `schema` can be used together.", + "description": "This is the plan to extract variables from the tool's response. These will be accessible during the call and stored in `call.artifact.variableValues` after the call.\n\nUsage:\n1. Use `aliases` to extract variables from the tool's response body. (Most common case)\n\n```json\n{\n \"aliases\": [\n {\n \"key\": \"customerName\",\n \"value\": \"{{customer.name}}\"\n },\n {\n \"key\": \"customerAge\",\n \"value\": \"{{customer.age}}\"\n }\n ]\n}\n```\n\nThe tool response body is made available to the liquid template.\n\n2. Use `aliases` to extract variables from the tool's response body if the response is an array.\n\n```json\n{\n \"aliases\": [\n {\n \"key\": \"customerName\",\n \"value\": \"{{$[0].name}}\"\n },\n {\n \"key\": \"customerAge\",\n \"value\": \"{{$[0].age}}\"\n }\n ]\n}\n```\n\n$ is a shorthand for the tool's response body. `$[0]` is the first item in the array. `$[n]` is the nth item in the array. Note, $ is available regardless of the response body type (both object and array).\n\n3. Use `aliases` to extract variables from the tool's response headers.\n\n```json\n{\n \"aliases\": [\n {\n \"key\": \"customerName\",\n \"value\": \"{{tool.response.headers.customer-name}}\"\n },\n {\n \"key\": \"customerAge\",\n \"value\": \"{{tool.response.headers.customer-age}}\"\n }\n ]\n}\n```\n\n`tool.response` is made available to the liquid template. Particularly, both `tool.response.headers` and `tool.response.body` are available. Note, `tool.response` is available regardless of the response body type (both object and array).\n\n4. Use `schema` to extract a large portion of the tool's response body.\n\n4.1. If you hit example.com and it returns `{\"name\": \"John\", \"age\": 30}`, then you can specify the schema as:\n\n```json\n{\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"age\": {\n \"type\": \"number\"\n }\n }\n }\n}\n```\nThese will be extracted as `{{ name }}` and `{{ age }}` respectively. To emphasize, object properties are extracted as direct global variables.\n\n4.2. If you hit example.com and it returns `{\"name\": {\"first\": \"John\", \"last\": \"Doe\"}}`, then you can specify the schema as:\n\n```json\n{\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"object\",\n \"properties\": {\n \"first\": {\n \"type\": \"string\"\n },\n \"last\": {\n \"type\": \"string\"\n }\n }\n }\n }\n }\n}\n```\n\nThese will be extracted as `{{ name }}`. And, `{{ name.first }}` and `{{ name.last }}` will be accessible.\n\n4.3. If you hit example.com and it returns `[\"94123\", \"94124\"]`, then you can specify the schema as:\n\n```json\n{\n \"schema\": {\n \"type\": \"array\",\n \"title\": \"zipCodes\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n}\n```\n\nThis will be extracted as `{{ zipCodes }}`. To access the array items, you can use `{{ zipCodes[0] }}` and `{{ zipCodes[1] }}`.\n\n4.4. If you hit example.com and it returns `[{\"name\": \"John\", \"age\": 30, \"zipCodes\": [\"94123\", \"94124\"]}, {\"name\": \"Jane\", \"age\": 25, \"zipCodes\": [\"94125\", \"94126\"]}]`, then you can specify the schema as:\n\n```json\n{\n \"schema\": {\n \"type\": \"array\",\n \"title\": \"people\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"age\": {\n \"type\": \"number\"\n },\n \"zipCodes\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n }\n }\n }\n}\n```\n\nThis will be extracted as `{{ people }}`. To access the array items, you can use `{{ people[n].name }}`, `{{ people[n].age }}`, `{{ people[n].zipCodes }}`, `{{ people[n].zipCodes[0] }}` and `{{ people[n].zipCodes[1] }}`.\n\nNote: Both `aliases` and `schema` can be used together.", "allOf": [ { "$ref": "#/components/schemas/VariableExtractionPlan" } ] - }, - "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" - } - ] } }, "required": [ @@ -32348,14 +32654,6 @@ "output" ], "description": "The type of tool. \"output\" for Output tool." - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] } }, "required": [ @@ -32418,14 +32716,6 @@ "enum": [ "bash" ] - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] } }, "required": [ @@ -32502,14 +32792,6 @@ "displayNumber": { "type": "number", "description": "Optional display number" - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] } }, "required": [ @@ -32576,14 +32858,6 @@ "enum": [ "str_replace_editor" ] - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] } }, "required": [ @@ -32625,14 +32899,6 @@ "sms" ], "description": "The type of tool. \"sms\" for Twilio SMS sending tool." - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] } }, "required": [ @@ -32680,14 +32946,6 @@ "maximum": 300, "example": 20 }, - "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" - } - ] - }, "name": { "type": "string", "description": "This is the name of the tool. This will be passed to the model.\n\nMust be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 40.", @@ -32728,7 +32986,7 @@ ] }, "variableExtractionPlan": { - "description": "This is the plan to extract variables from the tool's response. These will be accessible during the call and stored in `call.artifact.variableValues` after the call.\n\nUsage:\n1. Use `aliases` to extract variables from the tool's response body. (Most common case)\n\n```json\n{\n \"aliases\": [\n {\n \"key\": \"customerName\",\n \"value\": \"{{customer.name}}\"\n },\n {\n \"key\": \"customerAge\",\n \"value\": \"{{customer.age}}\"\n }\n ]\n}\n```\n\nThe tool response body is made available to the liquid template.\n\n2. Use `aliases` to extract variables from the tool's response body if the response is an array.\n\n```json\n{\n \"aliases\": [\n {\n \"key\": \"customerName\",\n \"value\": \"{{$[0].name}}\"\n },\n {\n \"key\": \"customerAge\",\n \"value\": \"{{$[0].age}}\"\n }\n ]\n}\n```\n\n$ is a shorthand for the tool's response body. `$[0]` is the first item in the array. `$[n]` is the nth item in the array. Note, $ is available regardless of the response body type (both object and array).\n\n3. Use `aliases` to extract variables from the tool's response headers.\n\n```json\n{\n \"aliases\": [\n {\n \"key\": \"customerName\",\n \"value\": \"{{tool.response.headers.customer-name}}\"\n },\n {\n \"key\": \"customerAge\",\n \"value\": \"{{tool.response.headers.customer-age}}\"\n }\n ]\n}\n```\n\n`tool.response` is made available to the liquid template. Particularly, both `tool.response.headers` and `tool.response.body` are available. Note, `tool.response` is available regardless of the response body type (both object and array).\n\n4. Use `schema` to extract a large portion of the tool's response body.\n\n4.1. If you hit example.com and it returns `{\"name\": \"John\", \"age\": 30}`, then you can specify the schema as:\n\n```json\n{\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"age\": {\n \"type\": \"number\"\n }\n }\n }\n}\n```\n\n4.2. If you hit example.com and it returns `{\"name\": {\"first\": \"John\", \"last\": \"Doe\"}}`, then you can specify the schema as:\n\n```json\n{\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"object\",\n \"properties\": {\n \"first\": {\n \"type\": \"string\"\n },\n \"last\": {\n \"type\": \"string\"\n }\n }\n }\n }\n }\n}\n```\n\nThese will be extracted as `{{ name }}` and `{{ age }}` respectively. To emphasize, object properties are extracted as direct global variables.\n\n4.3. If you hit example.com and it returns `{\"name\": {\"first\": \"John\", \"last\": \"Doe\"}}`, then you can specify the schema as:\n\n```json\n{\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"object\",\n \"properties\": {\n \"first\": {\n \"type\": \"string\"\n },\n \"last\": {\n \"type\": \"string\"\n }\n }\n }\n }\n }\n}\n```\n\nThese will be extracted as `{{ name }}`. And, `{{ name.first }}` and `{{ name.last }}` will be accessible.\n\n4.4. If you hit example.com and it returns `[\"94123\", \"94124\"]`, then you can specify the schema as:\n\n```json\n{\n \"schema\": {\n \"type\": \"array\",\n \"title\": \"zipCodes\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n}\n```\n\nThis will be extracted as `{{ zipCodes }}`. To access the array items, you can use `{{ zipCodes[0] }}` and `{{ zipCodes[1] }}`.\n\n4.5. If you hit example.com and it returns `[{\"name\": \"John\", \"age\": 30, \"zipCodes\": [\"94123\", \"94124\"]}, {\"name\": \"Jane\", \"age\": 25, \"zipCodes\": [\"94125\", \"94126\"]}]`, then you can specify the schema as:\n\n```json\n{\n \"schema\": {\n \"type\": \"array\",\n \"title\": \"people\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"age\": {\n \"type\": \"number\"\n },\n \"zipCodes\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n }\n }\n }\n}\n```\n\nThis will be extracted as `{{ people }}`. To access the array items, you can use `{{ people[n].name }}`, `{{ people[n].age }}`, `{{ people[n].zipCodes }}`, `{{ people[n].zipCodes[0] }}` and `{{ people[n].zipCodes[1] }}`.\n\nNote: Both `aliases` and `schema` can be used together.", + "description": "This is the plan to extract variables from the tool's response. These will be accessible during the call and stored in `call.artifact.variableValues` after the call.\n\nUsage:\n1. Use `aliases` to extract variables from the tool's response body. (Most common case)\n\n```json\n{\n \"aliases\": [\n {\n \"key\": \"customerName\",\n \"value\": \"{{customer.name}}\"\n },\n {\n \"key\": \"customerAge\",\n \"value\": \"{{customer.age}}\"\n }\n ]\n}\n```\n\nThe tool response body is made available to the liquid template.\n\n2. Use `aliases` to extract variables from the tool's response body if the response is an array.\n\n```json\n{\n \"aliases\": [\n {\n \"key\": \"customerName\",\n \"value\": \"{{$[0].name}}\"\n },\n {\n \"key\": \"customerAge\",\n \"value\": \"{{$[0].age}}\"\n }\n ]\n}\n```\n\n$ is a shorthand for the tool's response body. `$[0]` is the first item in the array. `$[n]` is the nth item in the array. Note, $ is available regardless of the response body type (both object and array).\n\n3. Use `aliases` to extract variables from the tool's response headers.\n\n```json\n{\n \"aliases\": [\n {\n \"key\": \"customerName\",\n \"value\": \"{{tool.response.headers.customer-name}}\"\n },\n {\n \"key\": \"customerAge\",\n \"value\": \"{{tool.response.headers.customer-age}}\"\n }\n ]\n}\n```\n\n`tool.response` is made available to the liquid template. Particularly, both `tool.response.headers` and `tool.response.body` are available. Note, `tool.response` is available regardless of the response body type (both object and array).\n\n4. Use `schema` to extract a large portion of the tool's response body.\n\n4.1. If you hit example.com and it returns `{\"name\": \"John\", \"age\": 30}`, then you can specify the schema as:\n\n```json\n{\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"age\": {\n \"type\": \"number\"\n }\n }\n }\n}\n```\nThese will be extracted as `{{ name }}` and `{{ age }}` respectively. To emphasize, object properties are extracted as direct global variables.\n\n4.2. If you hit example.com and it returns `{\"name\": {\"first\": \"John\", \"last\": \"Doe\"}}`, then you can specify the schema as:\n\n```json\n{\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"object\",\n \"properties\": {\n \"first\": {\n \"type\": \"string\"\n },\n \"last\": {\n \"type\": \"string\"\n }\n }\n }\n }\n }\n}\n```\n\nThese will be extracted as `{{ name }}`. And, `{{ name.first }}` and `{{ name.last }}` will be accessible.\n\n4.3. If you hit example.com and it returns `[\"94123\", \"94124\"]`, then you can specify the schema as:\n\n```json\n{\n \"schema\": {\n \"type\": \"array\",\n \"title\": \"zipCodes\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n}\n```\n\nThis will be extracted as `{{ zipCodes }}`. To access the array items, you can use `{{ zipCodes[0] }}` and `{{ zipCodes[1] }}`.\n\n4.4. If you hit example.com and it returns `[{\"name\": \"John\", \"age\": 30, \"zipCodes\": [\"94123\", \"94124\"]}, {\"name\": \"Jane\", \"age\": 25, \"zipCodes\": [\"94125\", \"94126\"]}]`, then you can specify the schema as:\n\n```json\n{\n \"schema\": {\n \"type\": \"array\",\n \"title\": \"people\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"age\": {\n \"type\": \"number\"\n },\n \"zipCodes\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n }\n }\n }\n}\n```\n\nThis will be extracted as `{{ people }}`. To access the array items, you can use `{{ people[n].name }}`, `{{ people[n].age }}`, `{{ people[n].zipCodes }}`, `{{ people[n].zipCodes[0] }}` and `{{ people[n].zipCodes[1] }}`.\n\nNote: Both `aliases` and `schema` can be used together.", "allOf": [ { "$ref": "#/components/schemas/VariableExtractionPlan" @@ -32763,14 +33021,6 @@ } ] } - }, - "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" - } - ] } } }, @@ -32800,14 +33050,6 @@ } ] } - }, - "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" - } - ] } } }, @@ -32852,7 +33094,7 @@ ] }, "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.", + "description": "This is the function definition of the tool.", "allOf": [ { "$ref": "#/components/schemas/OpenAIFunction" @@ -32888,14 +33130,6 @@ ] } }, - "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" - } - ] - }, "metadata": { "$ref": "#/components/schemas/GhlToolMetadata" } @@ -32928,14 +33162,6 @@ ] } }, - "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" - } - ] - }, "metadata": { "$ref": "#/components/schemas/MakeToolMetadata" } @@ -32987,14 +33213,6 @@ } ] } - }, - "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" - } - ] } } }, @@ -33024,14 +33242,6 @@ } ] } - }, - "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" - } - ] } } }, @@ -33077,14 +33287,6 @@ } ] }, - "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" - } - ] - }, "name": { "type": "string", "description": "The name of the tool, fixed to 'bash'", @@ -33137,14 +33339,6 @@ } ] }, - "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" - } - ] - }, "name": { "type": "string", "description": "The name of the tool, fixed to 'computer'", @@ -33209,14 +33403,6 @@ } ] }, - "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" - } - ] - }, "name": { "type": "string", "description": "The name of the tool, fixed to 'str_replace_editor'", @@ -33260,14 +33446,6 @@ "items": { "$ref": "#/components/schemas/KnowledgeBase" } - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] } } }, @@ -33297,14 +33475,6 @@ } ] } - }, - "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" - } - ] } } }, @@ -33334,14 +33504,6 @@ } ] } - }, - "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" - } - ] } } }, @@ -33371,14 +33533,6 @@ } ] } - }, - "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" - } - ] } } }, @@ -33408,14 +33562,6 @@ } ] } - }, - "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" - } - ] } } }, @@ -33445,14 +33591,6 @@ } ] } - }, - "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" - } - ] } } }, @@ -33491,14 +33629,6 @@ } ] }, - "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" - } - ] - }, "metadata": { "$ref": "#/components/schemas/McpToolMetadata" } @@ -33530,14 +33660,6 @@ } ] } - }, - "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" - } - ] } } }, @@ -33567,14 +33689,6 @@ } ] } - }, - "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" - } - ] } } }, @@ -33604,14 +33718,6 @@ } ] } - }, - "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" - } - ] } } }, @@ -33641,14 +33747,6 @@ } ] } - }, - "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" - } - ] } } }, @@ -39680,6 +39778,54 @@ "updatedAt" ] }, + "InworldCredential": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "inworld" + ] + }, + "apiKey": { + "type": "string", + "description": "This is the Inworld Basic (Base64) authentication token. This is not returned in the API.", + "example": "your-base64-token-here" + }, + "id": { + "type": "string", + "description": "This is the unique identifier for the credential." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the org that this credential belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the credential was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the assistant was last updated." + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "apiKey", + "id", + "orgId", + "createdAt", + "updatedAt" + ] + }, "CreateCerebrasCredentialDTO": { "type": "object", "properties": { @@ -39916,6 +40062,32 @@ "authenticationSession" ] }, + "CreateInworldCredentialDTO": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "inworld" + ] + }, + "apiKey": { + "type": "string", + "description": "This is the Inworld Basic (Base64) authentication token. This is not returned in the API.", + "example": "your-base64-token-here" + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "apiKey" + ] + }, "UpdateAnthropicCredentialDTO": { "type": "object", "properties": { @@ -40920,6 +41092,22 @@ } } }, + "UpdateInworldCredentialDTO": { + "type": "object", + "properties": { + "apiKey": { + "type": "string", + "description": "This is the Inworld Basic (Base64) authentication token. This is not returned in the API.", + "example": "your-base64-token-here" + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + } + }, "CredentialSessionResponse": { "type": "object", "properties": { @@ -42083,6 +42271,140 @@ } } }, + "ElevenLabsPronunciationDictionary": { + "type": "object", + "properties": { + "pronunciationDictionaryId": { + "type": "string", + "description": "The ID of the pronunciation dictionary", + "example": "5xM3yVvZQKV0EfqQpLrJ" + }, + "dictionaryName": { + "type": "string", + "description": "The name of the pronunciation dictionary", + "example": "My Dictionary" + }, + "createdBy": { + "type": "string", + "description": "The user ID of the creator", + "example": "ar6633Es2kUjFXBdR1iVc9ztsXl1" + }, + "creationTimeUnix": { + "type": "number", + "description": "The creation time in Unix timestamp", + "example": 1714156800 + }, + "versionId": { + "type": "string", + "description": "The version ID of the pronunciation dictionary", + "example": "5xM3yVvZQKV0EfqQpLrJ" + }, + "versionRulesNum": { + "type": "number", + "description": "The number of rules in this version", + "example": 5 + }, + "permissionOnResource": { + "type": "string", + "description": "The permission level on this resource", + "enum": [ + "admin", + "editor", + "viewer" + ] + }, + "description": { + "type": "string", + "description": "The description of the pronunciation dictionary", + "example": "This is a test dictionary" + } + }, + "required": [ + "pronunciationDictionaryId", + "dictionaryName", + "createdBy", + "creationTimeUnix", + "versionId", + "versionRulesNum" + ] + }, + "ProviderResource": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "This is the unique identifier for the provider resource." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the org that this provider resource belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the provider resource was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the provider resource was last updated." + }, + "provider": { + "type": "string", + "description": "This is the provider that manages this resource.", + "enum": [ + "11labs" + ] + }, + "resourceName": { + "type": "string", + "description": "This is the name/type of the resource.", + "enum": [ + "pronunciation-dictionary" + ] + }, + "resourceId": { + "type": "string", + "description": "This is the provider-specific identifier for the resource." + }, + "resource": { + "description": "This is the full resource data from the provider's API.", + "allOf": [ + { + "$ref": "#/components/schemas/ElevenLabsPronunciationDictionary" + } + ] + } + }, + "required": [ + "id", + "orgId", + "createdAt", + "updatedAt", + "provider", + "resourceName", + "resourceId", + "resource" + ] + }, + "ProviderResourcePaginatedResponse": { + "type": "object", + "properties": { + "results": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProviderResource" + } + }, + "metadata": { + "$ref": "#/components/schemas/PaginationMeta" + } + }, + "required": [ + "results", + "metadata" + ] + }, "VoiceLibraryVoiceResponse": { "type": "object", "properties": { @@ -47296,7 +47618,7 @@ "$ref": "#/components/schemas/ToolCall" }, "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "description": "This is the function definition of the tool.", "allOf": [ { "$ref": "#/components/schemas/OpenAIFunction" @@ -47348,14 +47670,6 @@ }, "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" - } - ] } }, "required": [ @@ -47403,14 +47717,6 @@ }, "metadata": { "$ref": "#/components/schemas/MakeToolMetadata" - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] } }, "required": [ @@ -47478,14 +47784,6 @@ "enum": [ "bash" ] - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] } }, "required": [ @@ -47566,14 +47864,6 @@ "displayNumber": { "type": "number", "description": "Optional display number" - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] } }, "required": [ @@ -47644,14 +47934,6 @@ "enum": [ "str_replace_editor" ] - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] } }, "required": [ @@ -47693,18 +47975,10 @@ "enum": [ "google.calendar.event.create" ], - "description": "The type of tool. \"google.calendar.event.create\" for Google Calendar tool." + "description": "The type of tool. \"google.calendar.event.create\" for Google Calendar Create Event tool." }, "toolCall": { "$ref": "#/components/schemas/ToolCall" - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] } }, "required": [ @@ -47744,18 +48018,10 @@ "enum": [ "google.sheets.row.append" ], - "description": "The type of tool. \"google.sheets.row.append\" for Google Sheets tool." + "description": "The type of tool. \"google.sheets.row.append\" for Google Sheets Row Append tool." }, "toolCall": { "$ref": "#/components/schemas/ToolCall" - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] } }, "required": [ @@ -47795,18 +48061,10 @@ "enum": [ "gohighlevel.calendar.availability.check" ], - "description": "The type of tool. \"gohighlevel.calendar.availability.check\" for GoHighLevel Calendar availability check tool." + "description": "The type of tool. \"gohighlevel.calendar.availability.check\" for GoHighLevel Calendar Availability Check tool." }, "toolCall": { "$ref": "#/components/schemas/ToolCall" - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] } }, "required": [ @@ -47846,18 +48104,10 @@ "enum": [ "gohighlevel.calendar.event.create" ], - "description": "The type of tool. \"gohighlevel.calendar.event.create\" for GoHighLevel Calendar event create tool." + "description": "The type of tool. \"gohighlevel.calendar.event.create\" for GoHighLevel Calendar Event Create tool." }, "toolCall": { "$ref": "#/components/schemas/ToolCall" - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] } }, "required": [ @@ -47897,18 +48147,10 @@ "enum": [ "gohighlevel.contact.create" ], - "description": "The type of tool. \"gohighlevel.contact.create\" for GoHighLevel contact create tool." + "description": "The type of tool. \"gohighlevel.contact.create\" for GoHighLevel Contact Create tool." }, "toolCall": { "$ref": "#/components/schemas/ToolCall" - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] } }, "required": [ @@ -47948,18 +48190,10 @@ "enum": [ "gohighlevel.contact.get" ], - "description": "The type of tool. \"gohighlevel.contact.get\" for GoHighLevel contact get tool." + "description": "The type of tool. \"gohighlevel.contact.get\" for GoHighLevel Contact Get tool." }, "toolCall": { "$ref": "#/components/schemas/ToolCall" - }, - "function": { - "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAIFunction" - } - ] } }, "required": [