From dded13be8a2c9ebdeaa12b73698936a379fe0153 Mon Sep 17 00:00:00 2001 From: "fern-api[bot]" <115122769+fern-api[bot]@users.noreply.github.com> Date: Wed, 8 Jan 2025 00:02:18 +0000 Subject: [PATCH 1/8] feat(api): add Gemini Flash 2.0 Multimodal Live API support --- fern/apis/api/openapi.json | 79 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/fern/apis/api/openapi.json b/fern/apis/api/openapi.json index 68d8edd30..c5d3e08c5 100644 --- a/fern/apis/api/openapi.json +++ b/fern/apis/api/openapi.json @@ -5543,6 +5543,75 @@ "model" ] }, + "GeminiMultimodalLivePrebuiltVoiceConfig": { + "type": "object", + "properties": { + "voiceName": { + "type": "string", + "enum": [ + "Puck", + "Charon", + "Kore", + "Fenrir", + "Aoede" + ] + } + }, + "required": [ + "voiceName" + ] + }, + "GeminiMultimodalLiveVoiceConfig": { + "type": "object", + "properties": { + "prebuiltVoiceConfig": { + "$ref": "#/components/schemas/GeminiMultimodalLivePrebuiltVoiceConfig" + } + }, + "required": [ + "prebuiltVoiceConfig" + ] + }, + "GeminiMultimodalLiveSpeechConfig": { + "type": "object", + "properties": { + "voiceConfig": { + "$ref": "#/components/schemas/GeminiMultimodalLiveVoiceConfig" + } + }, + "required": [ + "voiceConfig" + ] + }, + "GoogleRealtimeConfig": { + "type": "object", + "properties": { + "topP": { + "type": "number", + "description": "This is the nucleus sampling parameter that controls the cumulative probability of tokens considered during text generation.\nOnly applicable with the Gemini Flash 2.0 Multimodal Live API." + }, + "topK": { + "type": "number", + "description": "This is the top-k sampling parameter that limits the number of highest probability tokens considered during text generation.\nOnly applicable with the Gemini Flash 2.0 Multimodal Live API." + }, + "presencePenalty": { + "type": "number", + "description": "This is the presence penalty parameter that influences the model's likelihood to repeat information by penalizing tokens based on their presence in the text.\nOnly applicable with the Gemini Flash 2.0 Multimodal Live API." + }, + "frequencyPenalty": { + "type": "number", + "description": "This is the frequency penalty parameter that influences the model's likelihood to repeat tokens by penalizing them based on their frequency in the text.\nOnly applicable with the Gemini Flash 2.0 Multimodal Live API." + }, + "speechConfig": { + "description": "This is the speech configuration object that defines the voice settings to be used for the model's speech output.\nOnly applicable with the Gemini Flash 2.0 Multimodal Live API.", + "allOf": [ + { + "$ref": "#/components/schemas/GeminiMultimodalLiveSpeechConfig" + } + ] + } + } + }, "GoogleModel": { "type": "object", "properties": { @@ -5613,6 +5682,8 @@ "type": "string", "description": "This is the Google model that will be used.", "enum": [ + "gemini-2.0-flash-exp", + "gemini-2.0-flash-realtime-exp", "gemini-1.5-flash", "gemini-1.5-flash-002", "gemini-1.5-pro", @@ -5626,6 +5697,14 @@ "google" ] }, + "realtimeConfig": { + "description": "This is the session configuration for the Gemini Flash 2.0 Multimodal Live API.\nOnly applicable if the model `gemini-2.0-flash-realtime-exp` is selected.", + "allOf": [ + { + "$ref": "#/components/schemas/GoogleRealtimeConfig" + } + ] + }, "temperature": { "type": "number", "description": "This is the temperature that will be used for calls. Default is 0 to leverage caching for lower latency.", From acaa203cb301fa6f4905d53c5209ba0a01537503 Mon Sep 17 00:00:00 2001 From: "fern-api[bot]" <115122769+fern-api[bot]@users.noreply.github.com> Date: Thu, 9 Jan 2025 00:02:22 +0000 Subject: [PATCH 2/8] feat(openapi): Add new credential types and Azure blob storage --- fern/apis/api/openapi.json | 2210 ++++++++++++++++++++++++++++++++---- 1 file changed, 2002 insertions(+), 208 deletions(-) diff --git a/fern/apis/api/openapi.json b/fern/apis/api/openapi.json index c5d3e08c5..3df6af217 100644 --- a/fern/apis/api/openapi.json +++ b/fern/apis/api/openapi.json @@ -8733,6 +8733,1372 @@ "provider" ] }, + "AnthropicCredentialUserEditable": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "anthropic" + ] + }, + "apiKey": { + "type": "string", + "maxLength": 10000, + "description": "This is not returned in the API." + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "apiKey" + ] + }, + "AnyscaleCredentialUserEditable": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "anyscale" + ] + }, + "apiKey": { + "type": "string", + "maxLength": 10000, + "description": "This is not returned in the API." + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "apiKey" + ] + }, + "AssemblyAICredentialUserEditable": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "assembly-ai" + ] + }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "apiKey" + ] + }, + "AzureBlobStorageBucketPlan": { + "type": "object", + "properties": { + "connectionString": { + "type": "string", + "description": "This is the blob storage connection string for the Azure resource." + }, + "containerName": { + "type": "string", + "description": "This is the container name for the Azure blob storage." + }, + "path": { + "type": "string", + "description": "This is the path where call artifacts will be stored.\n\nUsage:\n- To store call artifacts in a specific folder, set this to the full path. Eg. \"/folder-name1/folder-name2\".\n- To store call artifacts in the root of the bucket, leave this blank.\n\n@default \"/\"" + } + }, + "required": [ + "connectionString", + "containerName" + ] + }, + "AzureCredentialUserEditable": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "azure" + ] + }, + "service": { + "type": "string", + "description": "This is the service being used in Azure.", + "enum": [ + "speech", + "blob_storage" + ], + "default": "speech" + }, + "region": { + "type": "string", + "description": "This is the region of the Azure resource.", + "enum": [ + "australia", + "canada", + "eastus2", + "eastus", + "france", + "india", + "japan", + "uaenorth", + "northcentralus", + "norway", + "southcentralus", + "swedencentral", + "switzerland", + "uk", + "westus", + "westus3" + ] + }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API.", + "maxLength": 10000 + }, + "bucketPlan": { + "description": "This is the bucket plan that can be provided to store call artifacts in Azure Blob Storage.", + "allOf": [ + { + "$ref": "#/components/schemas/AzureBlobStorageBucketPlan" + } + ] + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "service" + ] + }, + "AzureOpenAICredentialUserEditable": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "azure-openai" + ] + }, + "region": { + "type": "string", + "enum": [ + "australia", + "canada", + "eastus2", + "eastus", + "france", + "india", + "japan", + "uaenorth", + "northcentralus", + "norway", + "southcentralus", + "swedencentral", + "switzerland", + "uk", + "westus", + "westus3" + ] + }, + "models": { + "type": "array", + "enum": [ + "gpt-4o-2024-08-06", + "gpt-4o-mini-2024-07-18", + "gpt-4o-2024-05-13", + "gpt-4-turbo-2024-04-09", + "gpt-4-0125-preview", + "gpt-4-1106-preview", + "gpt-4-0613", + "gpt-35-turbo-0125", + "gpt-35-turbo-1106" + ], + "example": [ + "gpt-4-0125-preview", + "gpt-4-0613" + ], + "items": { + "type": "string", + "enum": [ + "gpt-4o-2024-08-06", + "gpt-4o-mini-2024-07-18", + "gpt-4o-2024-05-13", + "gpt-4-turbo-2024-04-09", + "gpt-4-0125-preview", + "gpt-4-1106-preview", + "gpt-4-0613", + "gpt-35-turbo-0125", + "gpt-35-turbo-1106" + ] + } + }, + "openAIKey": { + "type": "string", + "maxLength": 10000, + "description": "This is not returned in the API." + }, + "ocpApimSubscriptionKey": { + "type": "string", + "description": "This is not returned in the API." + }, + "openAIEndpoint": { + "type": "string", + "maxLength": 10000 + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "region", + "models", + "openAIKey", + "openAIEndpoint" + ] + }, + "SipTrunkGateway": { + "type": "object", + "properties": { + "ip": { + "type": "string", + "description": "This is the address of the gateway. It can be an IPv4 address like 1.1.1.1 or a fully qualified domain name like my-sip-trunk.pstn.twilio.com." + }, + "port": { + "type": "number", + "description": "This is the port number of the gateway. Default is 5060.\n\n@default 5060", + "minimum": 1, + "maximum": 65535 + }, + "netmask": { + "type": "number", + "description": "This is the netmask of the gateway. Defaults to 32.\n\n@default 32", + "minimum": 24, + "maximum": 32 + }, + "inboundEnabled": { + "type": "boolean", + "description": "This is whether inbound calls are allowed from this gateway. Default is true.\n\n@default true" + }, + "outboundEnabled": { + "type": "boolean", + "description": "This is whether outbound calls should be sent to this gateway. Default is true.\n\nNote, if netmask is less than 32, it doesn't affect the outbound IPs that are tried. 1 attempt is made to `ip:port`.\n\n@default true" + }, + "outboundProtocol": { + "type": "string", + "description": "This is the protocol to use for SIP signaling outbound calls. Default is udp.\n\n@default udp", + "enum": [ + "tls/srtp", + "tcp", + "tls", + "udp" + ] + }, + "optionsPingEnabled": { + "type": "boolean", + "description": "This is whether to send options ping to the gateway. This can be used to check if the gateway is reachable. Default is false.\n\nThis is useful for high availability setups where you want to check if the gateway is reachable before routing calls to it. Note, if no gateway for a trunk is reachable, outbound calls will be rejected.\n\n@default false" + } + }, + "required": [ + "ip" + ] + }, + "SipTrunkOutboundSipRegisterPlan": { + "type": "object", + "properties": { + "domain": { + "type": "string" + }, + "username": { + "type": "string" + }, + "realm": { + "type": "string" + } + } + }, + "SipTrunkOutboundAuthenticationPlan": { + "type": "object", + "properties": { + "authPassword": { + "type": "string", + "description": "This is not returned in the API." + }, + "authUsername": { + "type": "string" + }, + "sipRegisterPlan": { + "description": "This can be used to configure if SIP register is required by the SIP trunk. If not provided, no SIP registration will be attempted.", + "allOf": [ + { + "$ref": "#/components/schemas/SipTrunkOutboundSipRegisterPlan" + } + ] + } + } + }, + "SbcConfiguration": { + "type": "object", + "properties": {} + }, + "ByoSipTrunkCredentialUserEditable": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "description": "This can be used to bring your own SIP trunks or to connect to a Carrier.", + "enum": [ + "byo-sip-trunk" + ] + }, + "gateways": { + "description": "This is the list of SIP trunk's gateways.", + "type": "array", + "items": { + "$ref": "#/components/schemas/SipTrunkGateway" + } + }, + "outboundAuthenticationPlan": { + "description": "This can be used to configure the outbound authentication if required by the SIP trunk.", + "allOf": [ + { + "$ref": "#/components/schemas/SipTrunkOutboundAuthenticationPlan" + } + ] + }, + "outboundLeadingPlusEnabled": { + "type": "boolean", + "description": "This ensures the outbound origination attempts have a leading plus. Defaults to false to match conventional telecom behavior.\n\nUsage:\n- Vonage/Twilio requires leading plus for all outbound calls. Set this to true.\n\n@default false" + }, + "techPrefix": { + "type": "string", + "description": "This can be used to configure the tech prefix on outbound calls. This is an advanced property.", + "maxLength": 10000 + }, + "sipDiversionHeader": { + "type": "string", + "description": "This can be used to enable the SIP diversion header for authenticating the calling number if the SIP trunk supports it. This is an advanced property.", + "maxLength": 10000 + }, + "sbcConfiguration": { + "description": "This is an advanced configuration for enterprise deployments. This uses the onprem SBC to trunk into the SIP trunk's `gateways`, rather than the managed SBC provided by Vapi.", + "allOf": [ + { + "$ref": "#/components/schemas/SbcConfiguration" + } + ] + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "gateways" + ] + }, + "CartesiaCredentialUserEditable": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "cartesia" + ] + }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "apiKey" + ] + }, + "CloudflareR2BucketPlan": { + "type": "object", + "properties": { + "accessKeyId": { + "type": "string", + "description": "Cloudflare R2 Access key ID." + }, + "secretAccessKey": { + "type": "string", + "description": "Cloudflare R2 access key secret. This is not returned in the API." + }, + "url": { + "type": "string", + "description": "Cloudflare R2 base url." + }, + "name": { + "type": "string", + "description": "This is the name of the bucket." + }, + "path": { + "type": "string", + "description": "This is the path where call artifacts will be stored.\n\nUsage:\n- To store call artifacts in a specific folder, set this to the full path. Eg. \"/folder-name1/folder-name2\".\n- To store call artifacts in the root of the bucket, leave this blank.\n\n@default \"/\"" + } + }, + "required": [ + "name" + ] + }, + "CloudflareCredentialUserEditable": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "cloudflare" + ], + "description": "Credential provider. Only allowed value is cloudflare" + }, + "accountId": { + "type": "string", + "description": "Cloudflare Account Id." + }, + "apiKey": { + "type": "string", + "description": "Cloudflare API Key / Token." + }, + "accountEmail": { + "type": "string", + "description": "Cloudflare Account Email." + }, + "bucketPlan": { + "description": "This is the bucket plan that can be provided to store call artifacts in R2", + "allOf": [ + { + "$ref": "#/components/schemas/CloudflareR2BucketPlan" + } + ] + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider" + ] + }, + "OAuth2AuthenticationPlan": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "oauth2" + ] + }, + "url": { + "type": "string", + "description": "This is the OAuth2 URL." + }, + "clientId": { + "type": "string", + "description": "This is the OAuth2 client ID." + }, + "clientSecret": { + "type": "string", + "description": "This is the OAuth2 client secret." + } + }, + "required": [ + "type", + "url", + "clientId", + "clientSecret" + ] + }, + "CustomLLMCredentialUserEditable": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "custom-llm" + ] + }, + "apiKey": { + "type": "string", + "maxLength": 10000, + "description": "This is not returned in the API." + }, + "authenticationPlan": { + "description": "This is the authentication plan. Currently supports OAuth2 RFC 6749. To use Bearer authentication, use apiKey", + "allOf": [ + { + "$ref": "#/components/schemas/OAuth2AuthenticationPlan" + } + ] + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "apiKey" + ] + }, + "DeepgramCredentialUserEditable": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "deepgram" + ] + }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + }, + "apiUrl": { + "type": "string", + "description": "This can be used to point to an onprem Deepgram instance. Defaults to api.deepgram.com." + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "apiKey" + ] + }, + "DeepInfraCredentialUserEditable": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "deepinfra" + ] + }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "apiKey" + ] + }, + "ElevenLabsCredentialUserEditable": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "11labs" + ] + }, + "apiKey": { + "type": "string", + "maxLength": 10000, + "description": "This is not returned in the API." + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "apiKey" + ] + }, + "GcpKey": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "This is the type of the key. Most likely, this is \"service_account\"." + }, + "projectId": { + "type": "string", + "description": "This is the ID of the Google Cloud project associated with this key." + }, + "privateKeyId": { + "type": "string", + "description": "This is the unique identifier for the private key." + }, + "privateKey": { + "type": "string", + "description": "This is the private key in PEM format.\n\nNote: This is not returned in the API." + }, + "clientEmail": { + "type": "string", + "description": "This is the email address associated with the service account." + }, + "clientId": { + "type": "string", + "description": "This is the unique identifier for the client." + }, + "authUri": { + "type": "string", + "description": "This is the URI for the auth provider's authorization endpoint." + }, + "tokenUri": { + "type": "string", + "description": "This is the URI for the auth provider's token endpoint." + }, + "authProviderX509CertUrl": { + "type": "string", + "description": "This is the URL of the public x509 certificate for the auth provider." + }, + "clientX509CertUrl": { + "type": "string", + "description": "This is the URL of the public x509 certificate for the client." + }, + "universeDomain": { + "type": "string", + "description": "This is the domain associated with the universe this service account belongs to." + } + }, + "required": [ + "type", + "projectId", + "privateKeyId", + "privateKey", + "clientEmail", + "clientId", + "authUri", + "tokenUri", + "authProviderX509CertUrl", + "clientX509CertUrl", + "universeDomain" + ] + }, + "BucketPlan": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "This is the name of the bucket." + }, + "region": { + "type": "string", + "description": "This is the region of the bucket.\n\nUsage:\n- If `credential.type` is `aws`, then this is required.\n- If `credential.type` is `gcp`, then this is optional since GCP allows buckets to be accessed without a region but region is required for data residency requirements. Read here: https://cloud.google.com/storage/docs/request-endpoints" + }, + "path": { + "type": "string", + "description": "This is the path where call artifacts will be stored.\n\nUsage:\n- To store call artifacts in a specific folder, set this to the full path. Eg. \"/folder-name1/folder-name2\".\n- To store call artifacts in the root of the bucket, leave this blank.\n\n@default \"/\"" + }, + "hmacAccessKey": { + "type": "string", + "description": "This is the HMAC access key offered by GCP for interoperability with S3 clients. Here is the guide on how to create: https://cloud.google.com/storage/docs/authentication/managing-hmackeys#console\n\nUsage:\n- If `credential.type` is `gcp`, then this is required.\n- If `credential.type` is `aws`, then this is not required since credential.awsAccessKeyId is used instead." + }, + "hmacSecret": { + "type": "string", + "description": "This is the secret for the HMAC access key. Here is the guide on how to create: https://cloud.google.com/storage/docs/authentication/managing-hmackeys#console\n\nUsage:\n- If `credential.type` is `gcp`, then this is required.\n- If `credential.type` is `aws`, then this is not required since credential.awsSecretAccessKey is used instead.\n\nNote: This is not returned in the API." + } + }, + "required": [ + "name" + ] + }, + "GcpCredentialUserEditable": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "gcp" + ] + }, + "gcpKey": { + "description": "This is the GCP key. This is the JSON that can be generated in the Google Cloud Console at https://console.cloud.google.com/iam-admin/serviceaccounts/details//keys.\n\nThe schema is identical to the JSON that GCP outputs.", + "allOf": [ + { + "$ref": "#/components/schemas/GcpKey" + } + ] + }, + "bucketPlan": { + "description": "This is the bucket plan that can be provided to store call artifacts in GCP.", + "allOf": [ + { + "$ref": "#/components/schemas/BucketPlan" + } + ] + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "gcpKey" + ] + }, + "GladiaCredentialUserEditable": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "gladia" + ] + }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "apiKey" + ] + }, + "GoHighLevelCredentialUserEditable": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "gohighlevel" + ] + }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "apiKey" + ] + }, + "GoogleCredentialUserEditable": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "description": "This is the key for Gemini in Google AI Studio. Get it from here: https://aistudio.google.com/app/apikey", + "enum": [ + "google" + ] + }, + "apiKey": { + "type": "string", + "maxLength": 10000, + "description": "This is not returned in the API." + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "apiKey" + ] + }, + "GroqCredentialUserEditable": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "groq" + ] + }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "apiKey" + ] + }, + "InflectionAICredentialUserEditable": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "description": "This is the api key for Pi in InflectionAI's console. Get it from here: https://developers.inflection.ai/keys, billing will need to be setup", + "enum": [ + "inflection-ai" + ] + }, + "apiKey": { + "type": "string", + "maxLength": 10000, + "description": "This is not returned in the API." + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "apiKey" + ] + }, + "LangfuseCredentialUserEditable": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "langfuse" + ] + }, + "publicKey": { + "type": "string", + "description": "The public key for Langfuse project. Eg: pk-lf-..." + }, + "apiKey": { + "type": "string", + "description": "The secret key for Langfuse project. Eg: sk-lf-... .This is not returned in the API." + }, + "apiUrl": { + "type": "string", + "description": "The host URL for Langfuse project. Eg: https://cloud.langfuse.com" + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "publicKey", + "apiKey", + "apiUrl" + ] + }, + "LmntCredentialUserEditable": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "lmnt" + ] + }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "apiKey" + ] + }, + "MakeCredentialUserEditable": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "make" + ] + }, + "teamId": { + "type": "string", + "description": "Team ID" + }, + "region": { + "type": "string", + "description": "Region of your application. For example: eu1, eu2, us1, us2" + }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "teamId", + "region", + "apiKey" + ] + }, + "OpenAICredentialUserEditable": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "openai" + ] + }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "apiKey" + ] + }, + "OpenRouterCredentialUserEditable": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "openrouter" + ] + }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "apiKey" + ] + }, + "PerplexityAICredentialUserEditable": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "perplexity-ai" + ] + }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "apiKey" + ] + }, + "PlayHTCredentialUserEditable": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "playht" + ] + }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + }, + "userId": { + "type": "string" + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "apiKey", + "userId" + ] + }, + "RimeAICredentialUserEditable": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "rime-ai" + ] + }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "apiKey" + ] + }, + "RunpodCredentialUserEditable": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "runpod" + ] + }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "apiKey" + ] + }, + "S3CredentialUserEditable": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "s3" + ], + "description": "Credential provider. Only allowed value is s3" + }, + "awsAccessKeyId": { + "type": "string", + "description": "AWS access key ID." + }, + "awsSecretAccessKey": { + "type": "string", + "description": "AWS access key secret. This is not returned in the API." + }, + "region": { + "type": "string", + "description": "AWS region in which the S3 bucket is located." + }, + "s3BucketName": { + "type": "string", + "description": "AWS S3 bucket name." + }, + "s3PathPrefix": { + "type": "string", + "description": "The path prefix for the uploaded recording. Ex. \"recordings/\"" + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "awsAccessKeyId", + "awsSecretAccessKey", + "region", + "s3BucketName", + "s3PathPrefix" + ] + }, + "TavusCredentialUserEditable": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "tavus" + ] + }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "apiKey" + ] + }, + "TogetherAICredentialUserEditable": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "together-ai" + ] + }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "apiKey" + ] + }, + "TrieveCredentialUserEditable": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "trieve" + ] + }, + "apiKey": { + "type": "string", + "description": "Trieve API Key." + } + }, + "required": [ + "provider", + "apiKey" + ] + }, + "TwilioCredentialUserEditable": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "twilio" + ] + }, + "authToken": { + "type": "string", + "description": "This is not returned in the API." + }, + "accountSid": { + "type": "string" + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "authToken", + "accountSid" + ] + }, + "VonageCredentialUserEditable": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "vonage" + ] + }, + "apiSecret": { + "type": "string", + "description": "This is not returned in the API." + }, + "apiKey": { + "type": "string" + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "apiSecret", + "apiKey" + ] + }, + "WebhookCredentialUserEditable": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "webhook" + ] + }, + "authenticationPlan": { + "description": "This is the authentication plan. Currently supports OAuth2 RFC 6749.", + "allOf": [ + { + "$ref": "#/components/schemas/OAuth2AuthenticationPlan" + } + ] + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "authenticationPlan" + ] + }, + "XAiCredentialUserEditable": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "description": "This is the api key for Grok in XAi's console. Get it from here: https://console.x.ai", + "enum": [ + "xai" + ] + }, + "apiKey": { + "type": "string", + "maxLength": 10000, + "description": "This is not returned in the API." + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "apiKey" + ] + }, "TwilioVoicemailDetection": { "type": "object", "properties": { @@ -9504,8 +10870,156 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/TransportConfigurationTwilio", + "$ref": "#/components/schemas/TransportConfigurationTwilio", + "title": "Twilio" + } + ] + } + }, + "credentials": { + "type": "array", + "description": "These are dynamic credentials that will be used for the assistant calls. By default, all the credentials are available for use in the call but you can supplement an additional credentials using this. Dynamic credentials override existing credentials.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/AnthropicCredentialUserEditable", + "title": "Anthropic" + }, + { + "$ref": "#/components/schemas/AnyscaleCredentialUserEditable", + "title": "Anyscale" + }, + { + "$ref": "#/components/schemas/AssemblyAICredentialUserEditable", + "title": "AssemblyAI" + }, + { + "$ref": "#/components/schemas/AzureCredentialUserEditable", + "title": "Azure" + }, + { + "$ref": "#/components/schemas/AzureOpenAICredentialUserEditable", + "title": "AzureOpenAI" + }, + { + "$ref": "#/components/schemas/ByoSipTrunkCredentialUserEditable", + "title": "ByoSipTrunk" + }, + { + "$ref": "#/components/schemas/CartesiaCredentialUserEditable", + "title": "Cartesia" + }, + { + "$ref": "#/components/schemas/CloudflareCredentialUserEditable", + "title": "Cloudflare" + }, + { + "$ref": "#/components/schemas/CustomLLMCredentialUserEditable", + "title": "CustomLLM" + }, + { + "$ref": "#/components/schemas/DeepgramCredentialUserEditable", + "title": "Deepgram" + }, + { + "$ref": "#/components/schemas/DeepInfraCredentialUserEditable", + "title": "DeepInfra" + }, + { + "$ref": "#/components/schemas/ElevenLabsCredentialUserEditable", + "title": "11Labs" + }, + { + "$ref": "#/components/schemas/GcpCredentialUserEditable", + "title": "GCP" + }, + { + "$ref": "#/components/schemas/GladiaCredentialUserEditable", + "title": "Gladia" + }, + { + "$ref": "#/components/schemas/GoHighLevelCredentialUserEditable", + "title": "GoHighLevel" + }, + { + "$ref": "#/components/schemas/GoogleCredentialUserEditable", + "title": "Google" + }, + { + "$ref": "#/components/schemas/GroqCredentialUserEditable", + "title": "Groq" + }, + { + "$ref": "#/components/schemas/InflectionAICredentialUserEditable", + "title": "InflectionAI" + }, + { + "$ref": "#/components/schemas/LangfuseCredentialUserEditable", + "title": "Langfuse" + }, + { + "$ref": "#/components/schemas/LmntCredentialUserEditable", + "title": "LMNT" + }, + { + "$ref": "#/components/schemas/MakeCredentialUserEditable", + "title": "Make" + }, + { + "$ref": "#/components/schemas/OpenAICredentialUserEditable", + "title": "OpenAI" + }, + { + "$ref": "#/components/schemas/OpenRouterCredentialUserEditable", + "title": "OpenRouter" + }, + { + "$ref": "#/components/schemas/PerplexityAICredentialUserEditable", + "title": "PerplexityAI" + }, + { + "$ref": "#/components/schemas/PlayHTCredentialUserEditable", + "title": "PlayHT" + }, + { + "$ref": "#/components/schemas/RimeAICredentialUserEditable", + "title": "RimeAI" + }, + { + "$ref": "#/components/schemas/RunpodCredentialUserEditable", + "title": "Runpod" + }, + { + "$ref": "#/components/schemas/S3CredentialUserEditable", + "title": "S3" + }, + { + "$ref": "#/components/schemas/TavusCredentialUserEditable", + "title": "Tavus" + }, + { + "$ref": "#/components/schemas/TogetherAICredentialUserEditable", + "title": "TogetherAI" + }, + { + "$ref": "#/components/schemas/TrieveCredentialUserEditable", + "title": "Trieve" + }, + { + "$ref": "#/components/schemas/TwilioCredentialUserEditable", "title": "Twilio" + }, + { + "$ref": "#/components/schemas/VonageCredentialUserEditable", + "title": "Vonage" + }, + { + "$ref": "#/components/schemas/WebhookCredentialUserEditable", + "title": "Webhook" + }, + { + "$ref": "#/components/schemas/XAiCredentialUserEditable", + "title": "XAI" } ] } @@ -9926,6 +11440,154 @@ ] } }, + "credentials": { + "type": "array", + "description": "These are dynamic credentials that will be used for the assistant calls. By default, all the credentials are available for use in the call but you can supplement an additional credentials using this. Dynamic credentials override existing credentials.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/AnthropicCredentialUserEditable", + "title": "Anthropic" + }, + { + "$ref": "#/components/schemas/AnyscaleCredentialUserEditable", + "title": "Anyscale" + }, + { + "$ref": "#/components/schemas/AssemblyAICredentialUserEditable", + "title": "AssemblyAI" + }, + { + "$ref": "#/components/schemas/AzureCredentialUserEditable", + "title": "Azure" + }, + { + "$ref": "#/components/schemas/AzureOpenAICredentialUserEditable", + "title": "AzureOpenAI" + }, + { + "$ref": "#/components/schemas/ByoSipTrunkCredentialUserEditable", + "title": "ByoSipTrunk" + }, + { + "$ref": "#/components/schemas/CartesiaCredentialUserEditable", + "title": "Cartesia" + }, + { + "$ref": "#/components/schemas/CloudflareCredentialUserEditable", + "title": "Cloudflare" + }, + { + "$ref": "#/components/schemas/CustomLLMCredentialUserEditable", + "title": "CustomLLM" + }, + { + "$ref": "#/components/schemas/DeepgramCredentialUserEditable", + "title": "Deepgram" + }, + { + "$ref": "#/components/schemas/DeepInfraCredentialUserEditable", + "title": "DeepInfra" + }, + { + "$ref": "#/components/schemas/ElevenLabsCredentialUserEditable", + "title": "11Labs" + }, + { + "$ref": "#/components/schemas/GcpCredentialUserEditable", + "title": "GCP" + }, + { + "$ref": "#/components/schemas/GladiaCredentialUserEditable", + "title": "Gladia" + }, + { + "$ref": "#/components/schemas/GoHighLevelCredentialUserEditable", + "title": "GoHighLevel" + }, + { + "$ref": "#/components/schemas/GoogleCredentialUserEditable", + "title": "Google" + }, + { + "$ref": "#/components/schemas/GroqCredentialUserEditable", + "title": "Groq" + }, + { + "$ref": "#/components/schemas/InflectionAICredentialUserEditable", + "title": "InflectionAI" + }, + { + "$ref": "#/components/schemas/LangfuseCredentialUserEditable", + "title": "Langfuse" + }, + { + "$ref": "#/components/schemas/LmntCredentialUserEditable", + "title": "LMNT" + }, + { + "$ref": "#/components/schemas/MakeCredentialUserEditable", + "title": "Make" + }, + { + "$ref": "#/components/schemas/OpenAICredentialUserEditable", + "title": "OpenAI" + }, + { + "$ref": "#/components/schemas/OpenRouterCredentialUserEditable", + "title": "OpenRouter" + }, + { + "$ref": "#/components/schemas/PerplexityAICredentialUserEditable", + "title": "PerplexityAI" + }, + { + "$ref": "#/components/schemas/PlayHTCredentialUserEditable", + "title": "PlayHT" + }, + { + "$ref": "#/components/schemas/RimeAICredentialUserEditable", + "title": "RimeAI" + }, + { + "$ref": "#/components/schemas/RunpodCredentialUserEditable", + "title": "Runpod" + }, + { + "$ref": "#/components/schemas/S3CredentialUserEditable", + "title": "S3" + }, + { + "$ref": "#/components/schemas/TavusCredentialUserEditable", + "title": "Tavus" + }, + { + "$ref": "#/components/schemas/TogetherAICredentialUserEditable", + "title": "TogetherAI" + }, + { + "$ref": "#/components/schemas/TrieveCredentialUserEditable", + "title": "Trieve" + }, + { + "$ref": "#/components/schemas/TwilioCredentialUserEditable", + "title": "Twilio" + }, + { + "$ref": "#/components/schemas/VonageCredentialUserEditable", + "title": "Vonage" + }, + { + "$ref": "#/components/schemas/WebhookCredentialUserEditable", + "title": "Webhook" + }, + { + "$ref": "#/components/schemas/XAiCredentialUserEditable", + "title": "XAI" + } + ] + } + }, "variableValues": { "type": "object", "description": "These are values that will be used to replace the template variables in the assistant messages and other text-based fields.\nThis uses LiquidJS syntax. https://liquidjs.com/tutorials/intro-to-liquid.html\n\nSo for example, `{{ name }}` will be replaced with the value of `name` in `variableValues`.\n`{{\"now\" | date: \"%b %d, %Y, %I:%M %p\", \"America/New_York\"}}` will be replaced with the current date and time in New York.\n Some VAPI reserved defaults:\n - *customer* - the customer object" @@ -11375,6 +13037,154 @@ ] } }, + "credentials": { + "type": "array", + "description": "These are dynamic credentials that will be used for the assistant calls. By default, all the credentials are available for use in the call but you can supplement an additional credentials using this. Dynamic credentials override existing credentials.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/AnthropicCredentialUserEditable", + "title": "Anthropic" + }, + { + "$ref": "#/components/schemas/AnyscaleCredentialUserEditable", + "title": "Anyscale" + }, + { + "$ref": "#/components/schemas/AssemblyAICredentialUserEditable", + "title": "AssemblyAI" + }, + { + "$ref": "#/components/schemas/AzureCredentialUserEditable", + "title": "Azure" + }, + { + "$ref": "#/components/schemas/AzureOpenAICredentialUserEditable", + "title": "AzureOpenAI" + }, + { + "$ref": "#/components/schemas/ByoSipTrunkCredentialUserEditable", + "title": "ByoSipTrunk" + }, + { + "$ref": "#/components/schemas/CartesiaCredentialUserEditable", + "title": "Cartesia" + }, + { + "$ref": "#/components/schemas/CloudflareCredentialUserEditable", + "title": "Cloudflare" + }, + { + "$ref": "#/components/schemas/CustomLLMCredentialUserEditable", + "title": "CustomLLM" + }, + { + "$ref": "#/components/schemas/DeepgramCredentialUserEditable", + "title": "Deepgram" + }, + { + "$ref": "#/components/schemas/DeepInfraCredentialUserEditable", + "title": "DeepInfra" + }, + { + "$ref": "#/components/schemas/ElevenLabsCredentialUserEditable", + "title": "11Labs" + }, + { + "$ref": "#/components/schemas/GcpCredentialUserEditable", + "title": "GCP" + }, + { + "$ref": "#/components/schemas/GladiaCredentialUserEditable", + "title": "Gladia" + }, + { + "$ref": "#/components/schemas/GoHighLevelCredentialUserEditable", + "title": "GoHighLevel" + }, + { + "$ref": "#/components/schemas/GoogleCredentialUserEditable", + "title": "Google" + }, + { + "$ref": "#/components/schemas/GroqCredentialUserEditable", + "title": "Groq" + }, + { + "$ref": "#/components/schemas/InflectionAICredentialUserEditable", + "title": "InflectionAI" + }, + { + "$ref": "#/components/schemas/LangfuseCredentialUserEditable", + "title": "Langfuse" + }, + { + "$ref": "#/components/schemas/LmntCredentialUserEditable", + "title": "LMNT" + }, + { + "$ref": "#/components/schemas/MakeCredentialUserEditable", + "title": "Make" + }, + { + "$ref": "#/components/schemas/OpenAICredentialUserEditable", + "title": "OpenAI" + }, + { + "$ref": "#/components/schemas/OpenRouterCredentialUserEditable", + "title": "OpenRouter" + }, + { + "$ref": "#/components/schemas/PerplexityAICredentialUserEditable", + "title": "PerplexityAI" + }, + { + "$ref": "#/components/schemas/PlayHTCredentialUserEditable", + "title": "PlayHT" + }, + { + "$ref": "#/components/schemas/RimeAICredentialUserEditable", + "title": "RimeAI" + }, + { + "$ref": "#/components/schemas/RunpodCredentialUserEditable", + "title": "Runpod" + }, + { + "$ref": "#/components/schemas/S3CredentialUserEditable", + "title": "S3" + }, + { + "$ref": "#/components/schemas/TavusCredentialUserEditable", + "title": "Tavus" + }, + { + "$ref": "#/components/schemas/TogetherAICredentialUserEditable", + "title": "TogetherAI" + }, + { + "$ref": "#/components/schemas/TrieveCredentialUserEditable", + "title": "Trieve" + }, + { + "$ref": "#/components/schemas/TwilioCredentialUserEditable", + "title": "Twilio" + }, + { + "$ref": "#/components/schemas/VonageCredentialUserEditable", + "title": "Vonage" + }, + { + "$ref": "#/components/schemas/WebhookCredentialUserEditable", + "title": "Webhook" + }, + { + "$ref": "#/components/schemas/XAiCredentialUserEditable", + "title": "XAI" + } + ] + } + }, "name": { "type": "string", "description": "This is the name of the assistant.\n\nThis is required when you want to transfer between assistants in a call.", @@ -11809,8 +13619,156 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/TransportConfigurationTwilio", + "$ref": "#/components/schemas/TransportConfigurationTwilio", + "title": "Twilio" + } + ] + } + }, + "credentials": { + "type": "array", + "description": "These are dynamic credentials that will be used for the assistant calls. By default, all the credentials are available for use in the call but you can supplement an additional credentials using this. Dynamic credentials override existing credentials.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/AnthropicCredentialUserEditable", + "title": "Anthropic" + }, + { + "$ref": "#/components/schemas/AnyscaleCredentialUserEditable", + "title": "Anyscale" + }, + { + "$ref": "#/components/schemas/AssemblyAICredentialUserEditable", + "title": "AssemblyAI" + }, + { + "$ref": "#/components/schemas/AzureCredentialUserEditable", + "title": "Azure" + }, + { + "$ref": "#/components/schemas/AzureOpenAICredentialUserEditable", + "title": "AzureOpenAI" + }, + { + "$ref": "#/components/schemas/ByoSipTrunkCredentialUserEditable", + "title": "ByoSipTrunk" + }, + { + "$ref": "#/components/schemas/CartesiaCredentialUserEditable", + "title": "Cartesia" + }, + { + "$ref": "#/components/schemas/CloudflareCredentialUserEditable", + "title": "Cloudflare" + }, + { + "$ref": "#/components/schemas/CustomLLMCredentialUserEditable", + "title": "CustomLLM" + }, + { + "$ref": "#/components/schemas/DeepgramCredentialUserEditable", + "title": "Deepgram" + }, + { + "$ref": "#/components/schemas/DeepInfraCredentialUserEditable", + "title": "DeepInfra" + }, + { + "$ref": "#/components/schemas/ElevenLabsCredentialUserEditable", + "title": "11Labs" + }, + { + "$ref": "#/components/schemas/GcpCredentialUserEditable", + "title": "GCP" + }, + { + "$ref": "#/components/schemas/GladiaCredentialUserEditable", + "title": "Gladia" + }, + { + "$ref": "#/components/schemas/GoHighLevelCredentialUserEditable", + "title": "GoHighLevel" + }, + { + "$ref": "#/components/schemas/GoogleCredentialUserEditable", + "title": "Google" + }, + { + "$ref": "#/components/schemas/GroqCredentialUserEditable", + "title": "Groq" + }, + { + "$ref": "#/components/schemas/InflectionAICredentialUserEditable", + "title": "InflectionAI" + }, + { + "$ref": "#/components/schemas/LangfuseCredentialUserEditable", + "title": "Langfuse" + }, + { + "$ref": "#/components/schemas/LmntCredentialUserEditable", + "title": "LMNT" + }, + { + "$ref": "#/components/schemas/MakeCredentialUserEditable", + "title": "Make" + }, + { + "$ref": "#/components/schemas/OpenAICredentialUserEditable", + "title": "OpenAI" + }, + { + "$ref": "#/components/schemas/OpenRouterCredentialUserEditable", + "title": "OpenRouter" + }, + { + "$ref": "#/components/schemas/PerplexityAICredentialUserEditable", + "title": "PerplexityAI" + }, + { + "$ref": "#/components/schemas/PlayHTCredentialUserEditable", + "title": "PlayHT" + }, + { + "$ref": "#/components/schemas/RimeAICredentialUserEditable", + "title": "RimeAI" + }, + { + "$ref": "#/components/schemas/RunpodCredentialUserEditable", + "title": "Runpod" + }, + { + "$ref": "#/components/schemas/S3CredentialUserEditable", + "title": "S3" + }, + { + "$ref": "#/components/schemas/TavusCredentialUserEditable", + "title": "Tavus" + }, + { + "$ref": "#/components/schemas/TogetherAICredentialUserEditable", + "title": "TogetherAI" + }, + { + "$ref": "#/components/schemas/TrieveCredentialUserEditable", + "title": "Trieve" + }, + { + "$ref": "#/components/schemas/TwilioCredentialUserEditable", "title": "Twilio" + }, + { + "$ref": "#/components/schemas/VonageCredentialUserEditable", + "title": "Vonage" + }, + { + "$ref": "#/components/schemas/WebhookCredentialUserEditable", + "title": "Webhook" + }, + { + "$ref": "#/components/schemas/XAiCredentialUserEditable", + "title": "XAI" } ] } @@ -15737,7 +17695,8 @@ "type": "string", "description": "This is the service being used in Azure.", "enum": [ - "speech" + "speech", + "blob_storage" ], "default": "speech" }, @@ -15791,6 +17750,14 @@ "description": "This is the name of credential. This is just for your reference.", "minLength": 1, "maxLength": 40 + }, + "bucketPlan": { + "description": "This is the bucket plan that can be provided to store call artifacts in Azure Blob Storage.", + "allOf": [ + { + "$ref": "#/components/schemas/AzureBlobStorageBucketPlan" + } + ] } }, "required": [ @@ -15869,6 +17836,10 @@ "maxLength": 10000, "description": "This is not returned in the API." }, + "ocpApimSubscriptionKey": { + "type": "string", + "description": "This is not returned in the API." + }, "id": { "type": "string", "description": "This is the unique identifier for the credential." @@ -15910,90 +17881,6 @@ "openAIEndpoint" ] }, - "SipTrunkGateway": { - "type": "object", - "properties": { - "ip": { - "type": "string", - "description": "This is the address of the gateway. It can be an IPv4 address like 1.1.1.1 or a fully qualified domain name like my-sip-trunk.pstn.twilio.com." - }, - "port": { - "type": "number", - "description": "This is the port number of the gateway. Default is 5060.\n\n@default 5060", - "minimum": 1, - "maximum": 65535 - }, - "netmask": { - "type": "number", - "description": "This is the netmask of the gateway. Defaults to 32.\n\n@default 32", - "minimum": 24, - "maximum": 32 - }, - "inboundEnabled": { - "type": "boolean", - "description": "This is whether inbound calls are allowed from this gateway. Default is true.\n\n@default true" - }, - "outboundEnabled": { - "type": "boolean", - "description": "This is whether outbound calls should be sent to this gateway. Default is true.\n\nNote, if netmask is less than 32, it doesn't affect the outbound IPs that are tried. 1 attempt is made to `ip:port`.\n\n@default true" - }, - "outboundProtocol": { - "type": "string", - "description": "This is the protocol to use for SIP signaling outbound calls. Default is udp.\n\n@default udp", - "enum": [ - "tls/srtp", - "tcp", - "tls", - "udp" - ] - }, - "optionsPingEnabled": { - "type": "boolean", - "description": "This is whether to send options ping to the gateway. This can be used to check if the gateway is reachable. Default is false.\n\nThis is useful for high availability setups where you want to check if the gateway is reachable before routing calls to it. Note, if no gateway for a trunk is reachable, outbound calls will be rejected.\n\n@default false" - } - }, - "required": [ - "ip" - ] - }, - "SipTrunkOutboundSipRegisterPlan": { - "type": "object", - "properties": { - "domain": { - "type": "string" - }, - "username": { - "type": "string" - }, - "realm": { - "type": "string" - } - } - }, - "SipTrunkOutboundAuthenticationPlan": { - "type": "object", - "properties": { - "authPassword": { - "type": "string", - "description": "This is not returned in the API." - }, - "authUsername": { - "type": "string" - }, - "sipRegisterPlan": { - "description": "This can be used to configure if SIP register is required by the SIP trunk. If not provided, no SIP registration will be attempted.", - "allOf": [ - { - "$ref": "#/components/schemas/SipTrunkOutboundSipRegisterPlan" - } - ] - } - } - }, - "SbcConfiguration": { - "type": "object", - "properties": {} - }, "ByoSipTrunkCredential": { "type": "object", "properties": { @@ -16121,35 +18008,6 @@ "updatedAt" ] }, - "OAuth2AuthenticationPlan": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "oauth2" - ] - }, - "url": { - "type": "string", - "description": "This is the OAuth2 URL." - }, - "clientId": { - "type": "string", - "description": "This is the OAuth2 client ID." - }, - "clientSecret": { - "type": "string", - "description": "This is the OAuth2 client secret." - } - }, - "required": [ - "type", - "url", - "clientId", - "clientSecret" - ] - }, "Oauth2AuthenticationSession": { "type": "object", "properties": { @@ -16374,96 +18232,6 @@ "updatedAt" ] }, - "GcpKey": { - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "This is the type of the key. Most likely, this is \"service_account\"." - }, - "projectId": { - "type": "string", - "description": "This is the ID of the Google Cloud project associated with this key." - }, - "privateKeyId": { - "type": "string", - "description": "This is the unique identifier for the private key." - }, - "privateKey": { - "type": "string", - "description": "This is the private key in PEM format.\n\nNote: This is not returned in the API." - }, - "clientEmail": { - "type": "string", - "description": "This is the email address associated with the service account." - }, - "clientId": { - "type": "string", - "description": "This is the unique identifier for the client." - }, - "authUri": { - "type": "string", - "description": "This is the URI for the auth provider's authorization endpoint." - }, - "tokenUri": { - "type": "string", - "description": "This is the URI for the auth provider's token endpoint." - }, - "authProviderX509CertUrl": { - "type": "string", - "description": "This is the URL of the public x509 certificate for the auth provider." - }, - "clientX509CertUrl": { - "type": "string", - "description": "This is the URL of the public x509 certificate for the client." - }, - "universeDomain": { - "type": "string", - "description": "This is the domain associated with the universe this service account belongs to." - } - }, - "required": [ - "type", - "projectId", - "privateKeyId", - "privateKey", - "clientEmail", - "clientId", - "authUri", - "tokenUri", - "authProviderX509CertUrl", - "clientX509CertUrl", - "universeDomain" - ] - }, - "BucketPlan": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "This is the name of the bucket." - }, - "region": { - "type": "string", - "description": "This is the region of the bucket.\n\nUsage:\n- If `credential.type` is `aws`, then this is required.\n- If `credential.type` is `gcp`, then this is optional since GCP allows buckets to be accessed without a region but region is required for data residency requirements. Read here: https://cloud.google.com/storage/docs/request-endpoints" - }, - "path": { - "type": "string", - "description": "This is the path where call artifacts will be stored.\n\nUsage:\n- To store call artifacts in a specific folder, set this to the full path. Eg. \"/folder-name1/folder-name2\".\n- To store call artifacts in the root of the bucket, leave this blank.\n\n@default \"/\"" - }, - "hmacAccessKey": { - "type": "string", - "description": "This is the HMAC access key offered by GCP for interoperability with S3 clients. Here is the guide on how to create: https://cloud.google.com/storage/docs/authentication/managing-hmackeys#console\n\nUsage:\n- If `credential.type` is `gcp`, then this is required.\n- If `credential.type` is `aws`, then this is not required since credential.awsAccessKeyId is used instead." - }, - "hmacSecret": { - "type": "string", - "description": "This is the secret for the HMAC access key. Here is the guide on how to create: https://cloud.google.com/storage/docs/authentication/managing-hmackeys#console\n\nUsage:\n- If `credential.type` is `gcp`, then this is required.\n- If `credential.type` is `aws`, then this is not required since credential.awsSecretAccessKey is used instead.\n\nNote: This is not returned in the API." - } - }, - "required": [ - "name" - ] - }, "GcpCredential": { "type": "object", "properties": { @@ -17684,7 +19452,8 @@ "type": "string", "description": "This is the service being used in Azure.", "enum": [ - "speech" + "speech", + "blob_storage" ], "default": "speech" }, @@ -17715,6 +19484,14 @@ "description": "This is not returned in the API.", "maxLength": 10000 }, + "bucketPlan": { + "description": "This is the bucket plan that can be provided to store call artifacts in Azure Blob Storage.", + "allOf": [ + { + "$ref": "#/components/schemas/AzureBlobStorageBucketPlan" + } + ] + }, "name": { "type": "string", "description": "This is the name of credential. This is just for your reference.", @@ -17794,6 +19571,10 @@ "maxLength": 10000, "description": "This is not returned in the API." }, + "ocpApimSubscriptionKey": { + "type": "string", + "description": "This is not returned in the API." + }, "openAIEndpoint": { "type": "string", "maxLength": 10000 @@ -18725,7 +20506,8 @@ "type": "string", "description": "This is the service being used in Azure.", "enum": [ - "speech" + "speech", + "blob_storage" ], "default": "speech" }, @@ -18756,6 +20538,14 @@ "description": "This is not returned in the API.", "maxLength": 10000 }, + "bucketPlan": { + "description": "This is the bucket plan that can be provided to store call artifacts in Azure Blob Storage.", + "allOf": [ + { + "$ref": "#/components/schemas/AzureBlobStorageBucketPlan" + } + ] + }, "name": { "type": "string", "description": "This is the name of credential. This is just for your reference.", @@ -18835,6 +20625,10 @@ "maxLength": 10000, "description": "This is not returned in the API." }, + "ocpApimSubscriptionKey": { + "type": "string", + "description": "This is not returned in the API." + }, "openAIEndpoint": { "type": "string", "maxLength": 10000 From f8083b0a25becf729bd2e22b16765d62b40a6682 Mon Sep 17 00:00:00 2001 From: "fern-api[bot]" <115122769+fern-api[bot]@users.noreply.github.com> Date: Sat, 11 Jan 2025 00:02:39 +0000 Subject: [PATCH 3/8] feat(openapi): update OpenAPI spec to support multiple providers for UpdatePhoneNumberDTO --- fern/apis/api/openapi.json | 6643 +++++++++++++++++++----------------- 1 file changed, 3490 insertions(+), 3153 deletions(-) diff --git a/fern/apis/api/openapi.json b/fern/apis/api/openapi.json index 3df6af217..2aafa5929 100644 --- a/fern/apis/api/openapi.json +++ b/fern/apis/api/openapi.json @@ -887,7 +887,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdatePhoneNumberDTO" + "oneOf": [ + { + "$ref": "#/components/schemas/UpdateByoPhoneNumberDTO", + "title": "ByoPhoneNumber" + }, + { + "$ref": "#/components/schemas/UpdateTwilioPhoneNumberDTO", + "title": "TwilioPhoneNumber" + }, + { + "$ref": "#/components/schemas/UpdateVonagePhoneNumberDTO", + "title": "VonagePhoneNumber" + }, + { + "$ref": "#/components/schemas/UpdateVapiPhoneNumberDTO", + "title": "VapiPhoneNumber" + } + ], + "discriminator": { + "propertyName": "provider", + "mapping": { + "byo-phone-number": "#/components/schemas/UpdateByoPhoneNumberDTO", + "twilio": "#/components/schemas/UpdateTwilioPhoneNumberDTO", + "vonage": "#/components/schemas/UpdateVonagePhoneNumberDTO", + "vapi": "#/components/schemas/UpdateVapiPhoneNumberDTO" + } + } } } } @@ -1542,6 +1568,32 @@ } } ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpdateTrieveKnowledgeBaseDTO", + "title": "UpdateTrieveKnowledgeBaseDTO" + }, + { + "$ref": "#/components/schemas/UpdateCustomKnowledgeBaseDTO", + "title": "UpdateCustomKnowledgeBaseDTO" + } + ], + "discriminator": { + "propertyName": "provider", + "mapping": { + "trieve": "#/components/schemas/UpdateTrieveKnowledgeBaseDTO", + "custom-knowledge-base": "#/components/schemas/UpdateCustomKnowledgeBaseDTO" + } + } + } + } + } + }, "responses": { "200": { "description": "", @@ -1924,7 +1976,28 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdateBlockDTO" + "oneOf": [ + { + "$ref": "#/components/schemas/UpdateConversationBlockDTO", + "title": "ConversationBlock" + }, + { + "$ref": "#/components/schemas/UpdateToolCallBlockDTO", + "title": "ToolCallBlock" + }, + { + "$ref": "#/components/schemas/UpdateWorkflowBlockDTO", + "title": "WorkflowBlock" + } + ], + "discriminator": { + "propertyName": "type", + "mapping": { + "conversation": "#/components/schemas/UpdateConversationBlockDTO", + "tool-call": "#/components/schemas/UpdateToolCallBlockDTO", + "workflow": "#/components/schemas/UpdateWorkflowBlockDTO" + } + } } } } @@ -2461,7 +2534,63 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdateToolDTO" + "oneOf": [ + { + "$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" + } + ], + "discriminator": { + "propertyName": "type", + "mapping": { + "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" + } + } } } } @@ -2858,7 +2987,7 @@ }, "/logs": { "get": { - "operationId": "LoggingController_queryLogs", + "operationId": "LoggingController_logsQuery", "summary": "Get Logs", "parameters": [ { @@ -3074,6 +3203,79 @@ "bearer": [] } ] + }, + "delete": { + "operationId": "LoggingController_logsDeleteQuery", + "summary": "Delete Logs", + "parameters": [ + { + "name": "orgId", + "required": false, + "in": "query", + "description": "This is the unique identifier for the org that this log belongs to.", + "schema": { + "type": "string" + } + }, + { + "name": "assistantId", + "required": false, + "in": "query", + "description": "This is the ID of the assistant.", + "schema": { + "type": "string" + } + }, + { + "name": "phoneNumberId", + "required": false, + "in": "query", + "description": "This is the ID of the phone number.", + "schema": { + "type": "string" + } + }, + { + "name": "customerId", + "required": false, + "in": "query", + "description": "This is the ID of the customer.", + "schema": { + "type": "string" + } + }, + { + "name": "squadId", + "required": false, + "in": "query", + "description": "This is the ID of the squad.", + "schema": { + "type": "string" + } + }, + { + "name": "callId", + "required": false, + "in": "query", + "description": "This is the ID of the call.", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "" + } + }, + "tags": [ + "Logs" + ], + "security": [ + { + "bearer": [] + } + ] } } }, @@ -4848,7 +5050,7 @@ ] }, "message": { - "description": "This is the message the assistant will deliver to the destination party before connecting the customer.\n\nUsage:\n- Used only when `mode` is `warm-transfer-say-message` or `warm-transfer-wait-for-operator-to-speak-first-and-then-say-message`.", + "description": "This is the message the assistant will deliver to the destination party before connecting the customer.\n\nUsage:\n- Used only when `mode` is `blind-transfer-add-summary-to-sip-header`, `warm-transfer-say-message` or `warm-transfer-wait-for-operator-to-speak-first-and-then-say-message`.", "oneOf": [ { "type": "string" @@ -4858,6 +5060,15 @@ } ] }, + "sipVerb": { + "type": "object", + "description": "This specifies the SIP verb to use while transferring the call.\n- 'refer': Uses SIP REFER to transfer the call (default)\n- 'bye': Ends current call with SIP BYE", + "default": "refer", + "enum": [ + "refer", + "bye" + ] + }, "summaryPlan": { "description": "This is the plan for generating a summary of the call to present to the destination party.\n\nUsage:\n- Used only when `mode` is `blind-transfer-add-summary-to-sip-header` or `warm-transfer-say-summary` or `warm-transfer-wait-for-operator-to-speak-first-and-then-say-summary`.", "allOf": [ @@ -5951,7 +6162,7 @@ "provider" ] }, - "OpenAIModel": { + "DeepSeekModel": { "type": "object", "properties": { "messages": { @@ -6017,69 +6228,175 @@ "type": "string", "description": "This is the ID of the knowledge base the model will use." }, - "provider": { + "model": { "type": "string", - "description": "This is the provider that will be used for the model.", + "description": "This is the name of the model. Ex. cognitivecomputations/dolphin-mixtral-8x7b", "enum": [ - "openai" + "deepseek-chat" ] }, - "model": { + "provider": { "type": "string", - "description": "This is the OpenAI model that will be used.", "enum": [ - "o1-preview", - "o1-preview-2024-09-12", - "o1-mini", - "o1-mini-2024-09-12", - "gpt-4o-realtime-preview-2024-10-01", - "gpt-4o-realtime-preview-2024-12-17", - "gpt-4o-mini-realtime-preview-2024-12-17", - "gpt-4o-mini", - "gpt-4o-mini-2024-07-18", - "gpt-4o", - "gpt-4o-2024-05-13", - "gpt-4o-2024-08-06", - "gpt-4o-2024-11-20", - "gpt-4-turbo", - "gpt-4-turbo-2024-04-09", - "gpt-4-turbo-preview", - "gpt-4-0125-preview", - "gpt-4-1106-preview", - "gpt-4", - "gpt-4-0613", - "gpt-3.5-turbo", - "gpt-3.5-turbo-0125", - "gpt-3.5-turbo-1106", - "gpt-3.5-turbo-16k", - "gpt-3.5-turbo-0613" + "deep-seek" ] }, - "fallbackModels": { + "temperature": { + "type": "number", + "description": "This is the temperature that will be used for calls. Default is 0 to leverage caching for lower latency.", + "minimum": 0, + "maximum": 2 + }, + "maxTokens": { + "type": "number", + "description": "This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250.", + "minimum": 50, + "maximum": 10000 + }, + "emotionRecognitionEnabled": { + "type": "boolean", + "description": "This determines whether we detect user's emotion while they speak and send it as an additional info to model.\n\nDefault `false` because the model is usually are good at understanding the user's emotion from text.\n\n@default false" + }, + "numFastTurns": { + "type": "number", + "description": "This sets how many turns at the start of the conversation to use a smaller, faster model from the same provider before switching to the primary model. Example, gpt-3.5-turbo if provider is openai.\n\nDefault is 0.\n\n@default 0", + "minimum": 0 + } + }, + "required": [ + "model", + "provider" + ] + }, + "OpenAIModel": { + "type": "object", + "properties": { + "messages": { + "description": "This is the starting state for the conversation.", "type": "array", - "description": "These are the fallback models that will be used if the primary model fails. This shouldn't be specified unless you have a specific reason to do so. Vapi will automatically find the fastest fallbacks that make sense.", - "enum": [ - "o1-preview", - "o1-preview-2024-09-12", - "o1-mini", - "o1-mini-2024-09-12", - "gpt-4o-realtime-preview-2024-10-01", - "gpt-4o-realtime-preview-2024-12-17", - "gpt-4o-mini-realtime-preview-2024-12-17", - "gpt-4o-mini", - "gpt-4o-mini-2024-07-18", - "gpt-4o", - "gpt-4o-2024-05-13", - "gpt-4o-2024-08-06", - "gpt-4o-2024-11-20", - "gpt-4-turbo", - "gpt-4-turbo-2024-04-09", - "gpt-4-turbo-preview", - "gpt-4-0125-preview", - "gpt-4-1106-preview", - "gpt-4", - "gpt-4-0613", - "gpt-3.5-turbo", + "items": { + "$ref": "#/components/schemas/OpenAIMessage" + } + }, + "tools": { + "type": "array", + "description": "These are the tools that the assistant can use during the call. To use existing tools, use `toolIds`.\n\nBoth `tools` and `toolIds` can be used together.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/CreateDtmfToolDTO", + "title": "DtmfTool" + }, + { + "$ref": "#/components/schemas/CreateEndCallToolDTO", + "title": "EndCallTool" + }, + { + "$ref": "#/components/schemas/CreateVoicemailToolDTO", + "title": "VoicemailTool" + }, + { + "$ref": "#/components/schemas/CreateFunctionToolDTO", + "title": "FunctionTool" + }, + { + "$ref": "#/components/schemas/CreateGhlToolDTO", + "title": "GhlTool" + }, + { + "$ref": "#/components/schemas/CreateMakeToolDTO", + "title": "MakeTool" + }, + { + "$ref": "#/components/schemas/CreateTransferCallToolDTO", + "title": "TransferTool" + } + ] + } + }, + "toolIds": { + "description": "These are the tools that the assistant can use during the call. To use transient tools, use `tools`.\n\nBoth `tools` and `toolIds` can be used together.", + "type": "array", + "items": { + "type": "string" + } + }, + "knowledgeBase": { + "description": "These are the options for the knowledge base.", + "oneOf": [ + { + "$ref": "#/components/schemas/CreateCustomKnowledgeBaseDTO", + "title": "Custom" + } + ] + }, + "knowledgeBaseId": { + "type": "string", + "description": "This is the ID of the knowledge base the model will use." + }, + "provider": { + "type": "string", + "description": "This is the provider that will be used for the model.", + "enum": [ + "openai" + ] + }, + "model": { + "type": "string", + "description": "This is the OpenAI model that will be used.", + "enum": [ + "o1-preview", + "o1-preview-2024-09-12", + "o1-mini", + "o1-mini-2024-09-12", + "gpt-4o-realtime-preview-2024-10-01", + "gpt-4o-realtime-preview-2024-12-17", + "gpt-4o-mini-realtime-preview-2024-12-17", + "gpt-4o-mini", + "gpt-4o-mini-2024-07-18", + "gpt-4o", + "gpt-4o-2024-05-13", + "gpt-4o-2024-08-06", + "gpt-4o-2024-11-20", + "gpt-4-turbo", + "gpt-4-turbo-2024-04-09", + "gpt-4-turbo-preview", + "gpt-4-0125-preview", + "gpt-4-1106-preview", + "gpt-4", + "gpt-4-0613", + "gpt-3.5-turbo", + "gpt-3.5-turbo-0125", + "gpt-3.5-turbo-1106", + "gpt-3.5-turbo-16k", + "gpt-3.5-turbo-0613" + ] + }, + "fallbackModels": { + "type": "array", + "description": "These are the fallback models that will be used if the primary model fails. This shouldn't be specified unless you have a specific reason to do so. Vapi will automatically find the fastest fallbacks that make sense.", + "enum": [ + "o1-preview", + "o1-preview-2024-09-12", + "o1-mini", + "o1-mini-2024-09-12", + "gpt-4o-realtime-preview-2024-10-01", + "gpt-4o-realtime-preview-2024-12-17", + "gpt-4o-mini-realtime-preview-2024-12-17", + "gpt-4o-mini", + "gpt-4o-mini-2024-07-18", + "gpt-4o", + "gpt-4o-2024-05-13", + "gpt-4o-2024-08-06", + "gpt-4o-2024-11-20", + "gpt-4-turbo", + "gpt-4-turbo-2024-04-09", + "gpt-4-turbo-preview", + "gpt-4-0125-preview", + "gpt-4-1106-preview", + "gpt-4", + "gpt-4-0613", + "gpt-3.5-turbo", "gpt-3.5-turbo-0125", "gpt-3.5-turbo-1106", "gpt-3.5-turbo-16k", @@ -6927,6 +7244,10 @@ "$ref": "#/components/schemas/FallbackRimeAIVoice", "title": "RimeAI" }, + { + "$ref": "#/components/schemas/FallbackSmallestAIVoice", + "title": "Smallest AI" + }, { "$ref": "#/components/schemas/FallbackTavusVoice", "title": "TavusVoice" @@ -7764,6 +8085,90 @@ "voiceId" ] }, + "SmallestAIVoice": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "description": "This is the voice provider that will be used.", + "enum": [ + "smallest-ai" + ] + }, + "voiceId": { + "description": "This is the provider-specific ID that will be used.", + "oneOf": [ + { + "type": "string", + "enum": [ + "emily", + "jasmine", + "arman", + "james", + "mithali", + "aravind", + "raj", + "diya", + "raman", + "ananya", + "isha", + "william", + "aarav", + "monika", + "niharika", + "deepika", + "raghav", + "kajal", + "radhika", + "mansi", + "nisha", + "saurabh", + "pooja", + "saina", + "sanya" + ], + "title": "Preset Voice Options" + }, + { + "type": "string", + "title": "Smallest AI Voice ID" + } + ] + }, + "model": { + "type": "string", + "description": "Smallest AI voice model to use. Defaults to 'lightning' when not specified.", + "enum": [ + "lightning" + ] + }, + "speed": { + "type": "number", + "description": "This is the speed multiplier that will be used.", + "example": null + }, + "chunkPlan": { + "description": "This is the plan for chunking the model output before it is sent to the voice provider.", + "allOf": [ + { + "$ref": "#/components/schemas/ChunkPlan" + } + ] + }, + "fallbackPlan": { + "description": "This is the plan for voice provider fallbacks in the event that the primary voice provider fails.", + "allOf": [ + { + "$ref": "#/components/schemas/FallbackPlan" + } + ] + } + }, + "required": [ + "provider", + "voiceId" + ] + }, "TavusConversationProperties": { "type": "object", "properties": { @@ -8630,6 +9035,82 @@ "voiceId" ] }, + "FallbackSmallestAIVoice": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "description": "This is the voice provider that will be used.", + "enum": [ + "smallest-ai" + ] + }, + "voiceId": { + "description": "This is the provider-specific ID that will be used.", + "oneOf": [ + { + "type": "string", + "enum": [ + "emily", + "jasmine", + "arman", + "james", + "mithali", + "aravind", + "raj", + "diya", + "raman", + "ananya", + "isha", + "william", + "aarav", + "monika", + "niharika", + "deepika", + "raghav", + "kajal", + "radhika", + "mansi", + "nisha", + "saurabh", + "pooja", + "saina", + "sanya" + ], + "title": "Preset Voice Options" + }, + { + "type": "string", + "title": "Smallest AI Voice ID" + } + ] + }, + "model": { + "type": "string", + "description": "Smallest AI voice model to use. Defaults to 'lightning' when not specified.", + "enum": [ + "lightning" + ] + }, + "speed": { + "type": "number", + "description": "This is the speed multiplier that will be used.", + "example": null + }, + "chunkPlan": { + "description": "This is the plan for chunking the model output before it is sent to the voice provider.", + "allOf": [ + { + "$ref": "#/components/schemas/ChunkPlan" + } + ] + } + }, + "required": [ + "provider", + "voiceId" + ] + }, "FallbackTavusVoice": { "type": "object", "properties": { @@ -8733,7 +9214,7 @@ "provider" ] }, - "AnthropicCredentialUserEditable": { + "CreateAnthropicCredentialDTO": { "type": "object", "properties": { "provider": { @@ -8759,7 +9240,7 @@ "apiKey" ] }, - "AnyscaleCredentialUserEditable": { + "CreateAnyscaleCredentialDTO": { "type": "object", "properties": { "provider": { @@ -8785,7 +9266,7 @@ "apiKey" ] }, - "AssemblyAICredentialUserEditable": { + "CreateAssemblyAICredentialDTO": { "type": "object", "properties": { "provider": { @@ -8831,7 +9312,7 @@ "containerName" ] }, - "AzureCredentialUserEditable": { + "CreateAzureCredentialDTO": { "type": "object", "properties": { "provider": { @@ -8896,7 +9377,7 @@ "service" ] }, - "AzureOpenAICredentialUserEditable": { + "CreateAzureOpenAICredentialDTO": { "type": "object", "properties": { "provider": { @@ -9070,7 +9551,7 @@ "type": "object", "properties": {} }, - "ByoSipTrunkCredentialUserEditable": { + "CreateByoSipTrunkCredentialDTO": { "type": "object", "properties": { "provider": { @@ -9128,7 +9609,7 @@ "gateways" ] }, - "CartesiaCredentialUserEditable": { + "CreateCartesiaCredentialDTO": { "type": "object", "properties": { "provider": { @@ -9181,7 +9662,7 @@ "name" ] }, - "CloudflareCredentialUserEditable": { + "CreateCloudflareCredentialDTO": { "type": "object", "properties": { "provider": { @@ -9251,7 +9732,7 @@ "clientSecret" ] }, - "CustomLLMCredentialUserEditable": { + "CreateCustomLLMCredentialDTO": { "type": "object", "properties": { "provider": { @@ -9285,7 +9766,7 @@ "apiKey" ] }, - "DeepgramCredentialUserEditable": { + "CreateDeepgramCredentialDTO": { "type": "object", "properties": { "provider": { @@ -9314,7 +9795,7 @@ "apiKey" ] }, - "DeepInfraCredentialUserEditable": { + "CreateDeepInfraCredentialDTO": { "type": "object", "properties": { "provider": { @@ -9339,18 +9820,17 @@ "apiKey" ] }, - "ElevenLabsCredentialUserEditable": { + "CreateDeepSeekCredentialDTO": { "type": "object", "properties": { "provider": { "type": "string", "enum": [ - "11labs" + "deep-seek" ] }, "apiKey": { "type": "string", - "maxLength": 10000, "description": "This is not returned in the API." }, "name": { @@ -9365,22 +9845,48 @@ "apiKey" ] }, - "GcpKey": { + "CreateElevenLabsCredentialDTO": { "type": "object", "properties": { - "type": { - "type": "string", - "description": "This is the type of the key. Most likely, this is \"service_account\"." - }, - "projectId": { + "provider": { "type": "string", - "description": "This is the ID of the Google Cloud project associated with this key." + "enum": [ + "11labs" + ] }, - "privateKeyId": { + "apiKey": { "type": "string", - "description": "This is the unique identifier for the private key." + "maxLength": 10000, + "description": "This is not returned in the API." }, - "privateKey": { + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "apiKey" + ] + }, + "GcpKey": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "This is the type of the key. Most likely, this is \"service_account\"." + }, + "projectId": { + "type": "string", + "description": "This is the ID of the Google Cloud project associated with this key." + }, + "privateKeyId": { + "type": "string", + "description": "This is the unique identifier for the private key." + }, + "privateKey": { "type": "string", "description": "This is the private key in PEM format.\n\nNote: This is not returned in the API." }, @@ -9455,7 +9961,7 @@ "name" ] }, - "GcpCredentialUserEditable": { + "CreateGcpCredentialDTO": { "type": "object", "properties": { "provider": { @@ -9492,7 +9998,7 @@ "gcpKey" ] }, - "GladiaCredentialUserEditable": { + "CreateGladiaCredentialDTO": { "type": "object", "properties": { "provider": { @@ -9517,7 +10023,7 @@ "apiKey" ] }, - "GoHighLevelCredentialUserEditable": { + "CreateGoHighLevelCredentialDTO": { "type": "object", "properties": { "provider": { @@ -9542,34 +10048,7 @@ "apiKey" ] }, - "GoogleCredentialUserEditable": { - "type": "object", - "properties": { - "provider": { - "type": "string", - "description": "This is the key for Gemini in Google AI Studio. Get it from here: https://aistudio.google.com/app/apikey", - "enum": [ - "google" - ] - }, - "apiKey": { - "type": "string", - "maxLength": 10000, - "description": "This is not returned in the API." - }, - "name": { - "type": "string", - "description": "This is the name of credential. This is just for your reference.", - "minLength": 1, - "maxLength": 40 - } - }, - "required": [ - "provider", - "apiKey" - ] - }, - "GroqCredentialUserEditable": { + "CreateGroqCredentialDTO": { "type": "object", "properties": { "provider": { @@ -9594,34 +10073,7 @@ "apiKey" ] }, - "InflectionAICredentialUserEditable": { - "type": "object", - "properties": { - "provider": { - "type": "string", - "description": "This is the api key for Pi in InflectionAI's console. Get it from here: https://developers.inflection.ai/keys, billing will need to be setup", - "enum": [ - "inflection-ai" - ] - }, - "apiKey": { - "type": "string", - "maxLength": 10000, - "description": "This is not returned in the API." - }, - "name": { - "type": "string", - "description": "This is the name of credential. This is just for your reference.", - "minLength": 1, - "maxLength": 40 - } - }, - "required": [ - "provider", - "apiKey" - ] - }, - "LangfuseCredentialUserEditable": { + "CreateLangfuseCredentialDTO": { "type": "object", "properties": { "provider": { @@ -9656,7 +10108,7 @@ "apiUrl" ] }, - "LmntCredentialUserEditable": { + "CreateLmntCredentialDTO": { "type": "object", "properties": { "provider": { @@ -9681,7 +10133,7 @@ "apiKey" ] }, - "MakeCredentialUserEditable": { + "CreateMakeCredentialDTO": { "type": "object", "properties": { "provider": { @@ -9716,7 +10168,7 @@ "apiKey" ] }, - "OpenAICredentialUserEditable": { + "CreateOpenAICredentialDTO": { "type": "object", "properties": { "provider": { @@ -9741,7 +10193,7 @@ "apiKey" ] }, - "OpenRouterCredentialUserEditable": { + "CreateOpenRouterCredentialDTO": { "type": "object", "properties": { "provider": { @@ -9766,7 +10218,7 @@ "apiKey" ] }, - "PerplexityAICredentialUserEditable": { + "CreatePerplexityAICredentialDTO": { "type": "object", "properties": { "provider": { @@ -9791,7 +10243,7 @@ "apiKey" ] }, - "PlayHTCredentialUserEditable": { + "CreatePlayHTCredentialDTO": { "type": "object", "properties": { "provider": { @@ -9820,7 +10272,7 @@ "userId" ] }, - "RimeAICredentialUserEditable": { + "CreateRimeAICredentialDTO": { "type": "object", "properties": { "provider": { @@ -9845,7 +10297,7 @@ "apiKey" ] }, - "RunpodCredentialUserEditable": { + "CreateRunpodCredentialDTO": { "type": "object", "properties": { "provider": { @@ -9870,7 +10322,7 @@ "apiKey" ] }, - "S3CredentialUserEditable": { + "CreateS3CredentialDTO": { "type": "object", "properties": { "provider": { @@ -9916,13 +10368,13 @@ "s3PathPrefix" ] }, - "TavusCredentialUserEditable": { + "CreateSmallestAICredentialDTO": { "type": "object", "properties": { "provider": { "type": "string", "enum": [ - "tavus" + "smallest-ai" ] }, "apiKey": { @@ -9941,13 +10393,13 @@ "apiKey" ] }, - "TogetherAICredentialUserEditable": { + "CreateTavusCredentialDTO": { "type": "object", "properties": { "provider": { "type": "string", "enum": [ - "together-ai" + "tavus" ] }, "apiKey": { @@ -9966,18 +10418,24 @@ "apiKey" ] }, - "TrieveCredentialUserEditable": { + "CreateTogetherAICredentialDTO": { "type": "object", "properties": { "provider": { "type": "string", "enum": [ - "trieve" + "together-ai" ] }, "apiKey": { "type": "string", - "description": "Trieve API Key." + "description": "This is not returned in the API." + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 } }, "required": [ @@ -9985,7 +10443,7 @@ "apiKey" ] }, - "TwilioCredentialUserEditable": { + "CreateTwilioCredentialDTO": { "type": "object", "properties": { "provider": { @@ -10014,7 +10472,7 @@ "accountSid" ] }, - "VonageCredentialUserEditable": { + "CreateVonageCredentialDTO": { "type": "object", "properties": { "provider": { @@ -10043,7 +10501,7 @@ "apiKey" ] }, - "WebhookCredentialUserEditable": { + "CreateWebhookCredentialDTO": { "type": "object", "properties": { "provider": { @@ -10072,7 +10530,7 @@ "authenticationPlan" ] }, - "XAiCredentialUserEditable": { + "CreateXAiCredentialDTO": { "type": "object", "properties": { "provider": { @@ -10624,6 +11082,10 @@ "$ref": "#/components/schemas/InflectionAIModel", "title": "InflectionAI" }, + { + "$ref": "#/components/schemas/DeepSeekModel", + "title": "DeepSeek" + }, { "$ref": "#/components/schemas/OpenAIModel", "title": "OpenAI" @@ -10693,6 +11155,10 @@ "$ref": "#/components/schemas/RimeAIVoice", "title": "RimeAI" }, + { + "$ref": "#/components/schemas/SmallestAIVoice", + "title": "SmallestAI" + }, { "$ref": "#/components/schemas/TavusVoice", "title": "TavusVoice" @@ -10882,144 +11348,140 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/AnthropicCredentialUserEditable", - "title": "Anthropic" - }, - { - "$ref": "#/components/schemas/AnyscaleCredentialUserEditable", - "title": "Anyscale" + "$ref": "#/components/schemas/CreateAnthropicCredentialDTO", + "title": "AnthropicCredential" }, { - "$ref": "#/components/schemas/AssemblyAICredentialUserEditable", - "title": "AssemblyAI" + "$ref": "#/components/schemas/CreateAnyscaleCredentialDTO", + "title": "AnyscaleCredential" }, { - "$ref": "#/components/schemas/AzureCredentialUserEditable", - "title": "Azure" + "$ref": "#/components/schemas/CreateAssemblyAICredentialDTO", + "title": "AssemblyAICredential" }, { - "$ref": "#/components/schemas/AzureOpenAICredentialUserEditable", - "title": "AzureOpenAI" + "$ref": "#/components/schemas/CreateAzureOpenAICredentialDTO", + "title": "AzureOpenAICredential" }, { - "$ref": "#/components/schemas/ByoSipTrunkCredentialUserEditable", - "title": "ByoSipTrunk" + "$ref": "#/components/schemas/CreateAzureCredentialDTO", + "title": "AzureCredential" }, { - "$ref": "#/components/schemas/CartesiaCredentialUserEditable", - "title": "Cartesia" + "$ref": "#/components/schemas/CreateByoSipTrunkCredentialDTO", + "title": "ByoSipTrunkCredential" }, { - "$ref": "#/components/schemas/CloudflareCredentialUserEditable", - "title": "Cloudflare" + "$ref": "#/components/schemas/CreateCartesiaCredentialDTO", + "title": "CartesiaCredential" }, { - "$ref": "#/components/schemas/CustomLLMCredentialUserEditable", - "title": "CustomLLM" + "$ref": "#/components/schemas/CreateCloudflareCredentialDTO", + "title": "CloudflareCredential" }, { - "$ref": "#/components/schemas/DeepgramCredentialUserEditable", - "title": "Deepgram" + "$ref": "#/components/schemas/CreateCustomLLMCredentialDTO", + "title": "CustomLLMCredential" }, { - "$ref": "#/components/schemas/DeepInfraCredentialUserEditable", - "title": "DeepInfra" + "$ref": "#/components/schemas/CreateDeepgramCredentialDTO", + "title": "DeepgramCredential" }, { - "$ref": "#/components/schemas/ElevenLabsCredentialUserEditable", - "title": "11Labs" + "$ref": "#/components/schemas/CreateDeepInfraCredentialDTO", + "title": "DeepInfraCredential" }, { - "$ref": "#/components/schemas/GcpCredentialUserEditable", - "title": "GCP" + "$ref": "#/components/schemas/CreateDeepSeekCredentialDTO", + "title": "DeepSeekCredential" }, { - "$ref": "#/components/schemas/GladiaCredentialUserEditable", - "title": "Gladia" + "$ref": "#/components/schemas/CreateElevenLabsCredentialDTO", + "title": "ElevenLabsCredential" }, { - "$ref": "#/components/schemas/GoHighLevelCredentialUserEditable", - "title": "GoHighLevel" + "$ref": "#/components/schemas/CreateGcpCredentialDTO", + "title": "GcpCredential" }, { - "$ref": "#/components/schemas/GoogleCredentialUserEditable", - "title": "Google" + "$ref": "#/components/schemas/CreateGladiaCredentialDTO", + "title": "GladiaCredential" }, { - "$ref": "#/components/schemas/GroqCredentialUserEditable", - "title": "Groq" + "$ref": "#/components/schemas/CreateGoHighLevelCredentialDTO", + "title": "GhlCredential" }, { - "$ref": "#/components/schemas/InflectionAICredentialUserEditable", - "title": "InflectionAI" + "$ref": "#/components/schemas/CreateGroqCredentialDTO", + "title": "GroqCredential" }, { - "$ref": "#/components/schemas/LangfuseCredentialUserEditable", - "title": "Langfuse" + "$ref": "#/components/schemas/CreateLangfuseCredentialDTO", + "title": "LangfuseCredential" }, { - "$ref": "#/components/schemas/LmntCredentialUserEditable", - "title": "LMNT" + "$ref": "#/components/schemas/CreateLmntCredentialDTO", + "title": "LmntCredential" }, { - "$ref": "#/components/schemas/MakeCredentialUserEditable", - "title": "Make" + "$ref": "#/components/schemas/CreateMakeCredentialDTO", + "title": "MakeCredential" }, { - "$ref": "#/components/schemas/OpenAICredentialUserEditable", - "title": "OpenAI" + "$ref": "#/components/schemas/CreateOpenAICredentialDTO", + "title": "OpenAICredential" }, { - "$ref": "#/components/schemas/OpenRouterCredentialUserEditable", - "title": "OpenRouter" + "$ref": "#/components/schemas/CreateOpenRouterCredentialDTO", + "title": "OpenRouterCredential" }, { - "$ref": "#/components/schemas/PerplexityAICredentialUserEditable", - "title": "PerplexityAI" + "$ref": "#/components/schemas/CreatePerplexityAICredentialDTO", + "title": "PerplexityAICredential" }, { - "$ref": "#/components/schemas/PlayHTCredentialUserEditable", - "title": "PlayHT" + "$ref": "#/components/schemas/CreatePlayHTCredentialDTO", + "title": "PlayHTCredential" }, { - "$ref": "#/components/schemas/RimeAICredentialUserEditable", - "title": "RimeAI" + "$ref": "#/components/schemas/CreateRimeAICredentialDTO", + "title": "RimeAICredential" }, { - "$ref": "#/components/schemas/RunpodCredentialUserEditable", - "title": "Runpod" + "$ref": "#/components/schemas/CreateRunpodCredentialDTO", + "title": "RunpodCredential" }, { - "$ref": "#/components/schemas/S3CredentialUserEditable", - "title": "S3" + "$ref": "#/components/schemas/CreateS3CredentialDTO", + "title": "S3Credential" }, { - "$ref": "#/components/schemas/TavusCredentialUserEditable", - "title": "Tavus" + "$ref": "#/components/schemas/CreateSmallestAICredentialDTO", + "title": "SmallestAICredential" }, { - "$ref": "#/components/schemas/TogetherAICredentialUserEditable", - "title": "TogetherAI" + "$ref": "#/components/schemas/CreateTavusCredentialDTO", + "title": "TavusCredential" }, { - "$ref": "#/components/schemas/TrieveCredentialUserEditable", - "title": "Trieve" + "$ref": "#/components/schemas/CreateTogetherAICredentialDTO", + "title": "TogetherAICredential" }, { - "$ref": "#/components/schemas/TwilioCredentialUserEditable", - "title": "Twilio" + "$ref": "#/components/schemas/CreateTwilioCredentialDTO", + "title": "TwilioCredential" }, { - "$ref": "#/components/schemas/VonageCredentialUserEditable", - "title": "Vonage" + "$ref": "#/components/schemas/CreateVonageCredentialDTO", + "title": "VonageCredential" }, { - "$ref": "#/components/schemas/WebhookCredentialUserEditable", - "title": "Webhook" + "$ref": "#/components/schemas/CreateWebhookCredentialDTO", + "title": "WebhookCredential" }, { - "$ref": "#/components/schemas/XAiCredentialUserEditable", - "title": "XAI" + "$ref": "#/components/schemas/CreateXAiCredentialDTO", + "title": "XAiCredential" } ] } @@ -11188,6 +11650,10 @@ "$ref": "#/components/schemas/InflectionAIModel", "title": "InflectionAI" }, + { + "$ref": "#/components/schemas/DeepSeekModel", + "title": "DeepSeek" + }, { "$ref": "#/components/schemas/OpenAIModel", "title": "OpenAI" @@ -11257,6 +11723,10 @@ "$ref": "#/components/schemas/RimeAIVoice", "title": "RimeAI" }, + { + "$ref": "#/components/schemas/SmallestAIVoice", + "title": "SmallestAI" + }, { "$ref": "#/components/schemas/TavusVoice", "title": "TavusVoice" @@ -11446,144 +11916,140 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/AnthropicCredentialUserEditable", - "title": "Anthropic" - }, - { - "$ref": "#/components/schemas/AnyscaleCredentialUserEditable", - "title": "Anyscale" + "$ref": "#/components/schemas/CreateAnthropicCredentialDTO", + "title": "AnthropicCredential" }, { - "$ref": "#/components/schemas/AssemblyAICredentialUserEditable", - "title": "AssemblyAI" + "$ref": "#/components/schemas/CreateAnyscaleCredentialDTO", + "title": "AnyscaleCredential" }, { - "$ref": "#/components/schemas/AzureCredentialUserEditable", - "title": "Azure" + "$ref": "#/components/schemas/CreateAssemblyAICredentialDTO", + "title": "AssemblyAICredential" }, { - "$ref": "#/components/schemas/AzureOpenAICredentialUserEditable", - "title": "AzureOpenAI" + "$ref": "#/components/schemas/CreateAzureOpenAICredentialDTO", + "title": "AzureOpenAICredential" }, { - "$ref": "#/components/schemas/ByoSipTrunkCredentialUserEditable", - "title": "ByoSipTrunk" + "$ref": "#/components/schemas/CreateAzureCredentialDTO", + "title": "AzureCredential" }, { - "$ref": "#/components/schemas/CartesiaCredentialUserEditable", - "title": "Cartesia" + "$ref": "#/components/schemas/CreateByoSipTrunkCredentialDTO", + "title": "ByoSipTrunkCredential" }, { - "$ref": "#/components/schemas/CloudflareCredentialUserEditable", - "title": "Cloudflare" + "$ref": "#/components/schemas/CreateCartesiaCredentialDTO", + "title": "CartesiaCredential" }, { - "$ref": "#/components/schemas/CustomLLMCredentialUserEditable", - "title": "CustomLLM" + "$ref": "#/components/schemas/CreateCloudflareCredentialDTO", + "title": "CloudflareCredential" }, { - "$ref": "#/components/schemas/DeepgramCredentialUserEditable", - "title": "Deepgram" + "$ref": "#/components/schemas/CreateCustomLLMCredentialDTO", + "title": "CustomLLMCredential" }, { - "$ref": "#/components/schemas/DeepInfraCredentialUserEditable", - "title": "DeepInfra" + "$ref": "#/components/schemas/CreateDeepgramCredentialDTO", + "title": "DeepgramCredential" }, { - "$ref": "#/components/schemas/ElevenLabsCredentialUserEditable", - "title": "11Labs" + "$ref": "#/components/schemas/CreateDeepInfraCredentialDTO", + "title": "DeepInfraCredential" }, { - "$ref": "#/components/schemas/GcpCredentialUserEditable", - "title": "GCP" + "$ref": "#/components/schemas/CreateDeepSeekCredentialDTO", + "title": "DeepSeekCredential" }, { - "$ref": "#/components/schemas/GladiaCredentialUserEditable", - "title": "Gladia" + "$ref": "#/components/schemas/CreateElevenLabsCredentialDTO", + "title": "ElevenLabsCredential" }, { - "$ref": "#/components/schemas/GoHighLevelCredentialUserEditable", - "title": "GoHighLevel" + "$ref": "#/components/schemas/CreateGcpCredentialDTO", + "title": "GcpCredential" }, { - "$ref": "#/components/schemas/GoogleCredentialUserEditable", - "title": "Google" + "$ref": "#/components/schemas/CreateGladiaCredentialDTO", + "title": "GladiaCredential" }, { - "$ref": "#/components/schemas/GroqCredentialUserEditable", - "title": "Groq" + "$ref": "#/components/schemas/CreateGoHighLevelCredentialDTO", + "title": "GhlCredential" }, { - "$ref": "#/components/schemas/InflectionAICredentialUserEditable", - "title": "InflectionAI" + "$ref": "#/components/schemas/CreateGroqCredentialDTO", + "title": "GroqCredential" }, { - "$ref": "#/components/schemas/LangfuseCredentialUserEditable", - "title": "Langfuse" + "$ref": "#/components/schemas/CreateLangfuseCredentialDTO", + "title": "LangfuseCredential" }, { - "$ref": "#/components/schemas/LmntCredentialUserEditable", - "title": "LMNT" + "$ref": "#/components/schemas/CreateLmntCredentialDTO", + "title": "LmntCredential" }, { - "$ref": "#/components/schemas/MakeCredentialUserEditable", - "title": "Make" + "$ref": "#/components/schemas/CreateMakeCredentialDTO", + "title": "MakeCredential" }, { - "$ref": "#/components/schemas/OpenAICredentialUserEditable", - "title": "OpenAI" + "$ref": "#/components/schemas/CreateOpenAICredentialDTO", + "title": "OpenAICredential" }, { - "$ref": "#/components/schemas/OpenRouterCredentialUserEditable", - "title": "OpenRouter" + "$ref": "#/components/schemas/CreateOpenRouterCredentialDTO", + "title": "OpenRouterCredential" }, { - "$ref": "#/components/schemas/PerplexityAICredentialUserEditable", - "title": "PerplexityAI" + "$ref": "#/components/schemas/CreatePerplexityAICredentialDTO", + "title": "PerplexityAICredential" }, { - "$ref": "#/components/schemas/PlayHTCredentialUserEditable", - "title": "PlayHT" + "$ref": "#/components/schemas/CreatePlayHTCredentialDTO", + "title": "PlayHTCredential" }, { - "$ref": "#/components/schemas/RimeAICredentialUserEditable", - "title": "RimeAI" + "$ref": "#/components/schemas/CreateRimeAICredentialDTO", + "title": "RimeAICredential" }, { - "$ref": "#/components/schemas/RunpodCredentialUserEditable", - "title": "Runpod" + "$ref": "#/components/schemas/CreateRunpodCredentialDTO", + "title": "RunpodCredential" }, { - "$ref": "#/components/schemas/S3CredentialUserEditable", - "title": "S3" + "$ref": "#/components/schemas/CreateS3CredentialDTO", + "title": "S3Credential" }, { - "$ref": "#/components/schemas/TavusCredentialUserEditable", - "title": "Tavus" + "$ref": "#/components/schemas/CreateSmallestAICredentialDTO", + "title": "SmallestAICredential" }, { - "$ref": "#/components/schemas/TogetherAICredentialUserEditable", - "title": "TogetherAI" + "$ref": "#/components/schemas/CreateTavusCredentialDTO", + "title": "TavusCredential" }, { - "$ref": "#/components/schemas/TrieveCredentialUserEditable", - "title": "Trieve" + "$ref": "#/components/schemas/CreateTogetherAICredentialDTO", + "title": "TogetherAICredential" }, { - "$ref": "#/components/schemas/TwilioCredentialUserEditable", - "title": "Twilio" + "$ref": "#/components/schemas/CreateTwilioCredentialDTO", + "title": "TwilioCredential" }, { - "$ref": "#/components/schemas/VonageCredentialUserEditable", - "title": "Vonage" + "$ref": "#/components/schemas/CreateVonageCredentialDTO", + "title": "VonageCredential" }, { - "$ref": "#/components/schemas/WebhookCredentialUserEditable", - "title": "Webhook" + "$ref": "#/components/schemas/CreateWebhookCredentialDTO", + "title": "WebhookCredential" }, { - "$ref": "#/components/schemas/XAiCredentialUserEditable", - "title": "XAI" + "$ref": "#/components/schemas/CreateXAiCredentialDTO", + "title": "XAiCredential" } ] } @@ -12242,6 +12708,7 @@ "pipeline-error-azure-voice-failed", "pipeline-error-rime-ai-voice-failed", "pipeline-error-neets-voice-failed", + "pipeline-error-smallest-ai-voice-failed", "pipeline-error-deepgram-transcriber-failed", "pipeline-error-gladia-transcriber-failed", "pipeline-error-assembly-ai-transcriber-failed", @@ -12272,6 +12739,8 @@ "pipeline-error-google-llm-failed", "pipeline-error-xai-llm-failed", "pipeline-error-inflection-ai-llm-failed", + "pipeline-error-cerebras-llm-failed", + "pipeline-error-deep-seek-llm-failed", "pipeline-error-openai-400-bad-request-validation-failed", "pipeline-error-openai-401-unauthorized", "pipeline-error-openai-403-model-access-denied", @@ -12292,6 +12761,11 @@ "pipeline-error-inflection-ai-403-model-access-denied", "pipeline-error-inflection-ai-429-exceeded-quota", "pipeline-error-inflection-ai-500-server-error", + "pipeline-error-deep-seek-400-bad-request-validation-failed", + "pipeline-error-deep-seek-401-unauthorized", + "pipeline-error-deep-seek-403-model-access-denied", + "pipeline-error-deep-seek-429-exceeded-quota", + "pipeline-error-deep-seek-500-server-error", "pipeline-error-azure-openai-400-bad-request-validation-failed", "pipeline-error-azure-openai-401-unauthorized", "pipeline-error-azure-openai-403-model-access-denied", @@ -12302,6 +12776,11 @@ "pipeline-error-groq-403-model-access-denied", "pipeline-error-groq-429-exceeded-quota", "pipeline-error-groq-500-server-error", + "pipeline-error-cerebras-400-bad-request-validation-failed", + "pipeline-error-cerebras-401-unauthorized", + "pipeline-error-cerebras-403-model-access-denied", + "pipeline-error-cerebras-429-exceeded-quota", + "pipeline-error-cerebras-500-server-error", "pipeline-error-anthropic-400-bad-request-validation-failed", "pipeline-error-anthropic-401-unauthorized", "pipeline-error-anthropic-403-model-access-denied", @@ -12785,6 +13264,10 @@ "$ref": "#/components/schemas/InflectionAIModel", "title": "InflectionAI" }, + { + "$ref": "#/components/schemas/DeepSeekModel", + "title": "DeepSeek" + }, { "$ref": "#/components/schemas/OpenAIModel", "title": "OpenAI" @@ -12854,6 +13337,10 @@ "$ref": "#/components/schemas/RimeAIVoice", "title": "RimeAI" }, + { + "$ref": "#/components/schemas/SmallestAIVoice", + "title": "SmallestAI" + }, { "$ref": "#/components/schemas/TavusVoice", "title": "TavusVoice" @@ -13043,144 +13530,140 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/AnthropicCredentialUserEditable", - "title": "Anthropic" - }, - { - "$ref": "#/components/schemas/AnyscaleCredentialUserEditable", - "title": "Anyscale" + "$ref": "#/components/schemas/CreateAnthropicCredentialDTO", + "title": "AnthropicCredential" }, { - "$ref": "#/components/schemas/AssemblyAICredentialUserEditable", - "title": "AssemblyAI" + "$ref": "#/components/schemas/CreateAnyscaleCredentialDTO", + "title": "AnyscaleCredential" }, { - "$ref": "#/components/schemas/AzureCredentialUserEditable", - "title": "Azure" + "$ref": "#/components/schemas/CreateAssemblyAICredentialDTO", + "title": "AssemblyAICredential" }, { - "$ref": "#/components/schemas/AzureOpenAICredentialUserEditable", - "title": "AzureOpenAI" + "$ref": "#/components/schemas/CreateAzureOpenAICredentialDTO", + "title": "AzureOpenAICredential" }, { - "$ref": "#/components/schemas/ByoSipTrunkCredentialUserEditable", - "title": "ByoSipTrunk" + "$ref": "#/components/schemas/CreateAzureCredentialDTO", + "title": "AzureCredential" }, { - "$ref": "#/components/schemas/CartesiaCredentialUserEditable", - "title": "Cartesia" + "$ref": "#/components/schemas/CreateByoSipTrunkCredentialDTO", + "title": "ByoSipTrunkCredential" }, { - "$ref": "#/components/schemas/CloudflareCredentialUserEditable", - "title": "Cloudflare" + "$ref": "#/components/schemas/CreateCartesiaCredentialDTO", + "title": "CartesiaCredential" }, { - "$ref": "#/components/schemas/CustomLLMCredentialUserEditable", - "title": "CustomLLM" + "$ref": "#/components/schemas/CreateCloudflareCredentialDTO", + "title": "CloudflareCredential" }, { - "$ref": "#/components/schemas/DeepgramCredentialUserEditable", - "title": "Deepgram" + "$ref": "#/components/schemas/CreateCustomLLMCredentialDTO", + "title": "CustomLLMCredential" }, { - "$ref": "#/components/schemas/DeepInfraCredentialUserEditable", - "title": "DeepInfra" + "$ref": "#/components/schemas/CreateDeepgramCredentialDTO", + "title": "DeepgramCredential" }, { - "$ref": "#/components/schemas/ElevenLabsCredentialUserEditable", - "title": "11Labs" + "$ref": "#/components/schemas/CreateDeepInfraCredentialDTO", + "title": "DeepInfraCredential" }, { - "$ref": "#/components/schemas/GcpCredentialUserEditable", - "title": "GCP" + "$ref": "#/components/schemas/CreateDeepSeekCredentialDTO", + "title": "DeepSeekCredential" }, { - "$ref": "#/components/schemas/GladiaCredentialUserEditable", - "title": "Gladia" + "$ref": "#/components/schemas/CreateElevenLabsCredentialDTO", + "title": "ElevenLabsCredential" }, { - "$ref": "#/components/schemas/GoHighLevelCredentialUserEditable", - "title": "GoHighLevel" + "$ref": "#/components/schemas/CreateGcpCredentialDTO", + "title": "GcpCredential" }, { - "$ref": "#/components/schemas/GoogleCredentialUserEditable", - "title": "Google" + "$ref": "#/components/schemas/CreateGladiaCredentialDTO", + "title": "GladiaCredential" }, { - "$ref": "#/components/schemas/GroqCredentialUserEditable", - "title": "Groq" + "$ref": "#/components/schemas/CreateGoHighLevelCredentialDTO", + "title": "GhlCredential" }, { - "$ref": "#/components/schemas/InflectionAICredentialUserEditable", - "title": "InflectionAI" + "$ref": "#/components/schemas/CreateGroqCredentialDTO", + "title": "GroqCredential" }, { - "$ref": "#/components/schemas/LangfuseCredentialUserEditable", - "title": "Langfuse" + "$ref": "#/components/schemas/CreateLangfuseCredentialDTO", + "title": "LangfuseCredential" }, { - "$ref": "#/components/schemas/LmntCredentialUserEditable", - "title": "LMNT" + "$ref": "#/components/schemas/CreateLmntCredentialDTO", + "title": "LmntCredential" }, { - "$ref": "#/components/schemas/MakeCredentialUserEditable", - "title": "Make" + "$ref": "#/components/schemas/CreateMakeCredentialDTO", + "title": "MakeCredential" }, { - "$ref": "#/components/schemas/OpenAICredentialUserEditable", - "title": "OpenAI" + "$ref": "#/components/schemas/CreateOpenAICredentialDTO", + "title": "OpenAICredential" }, { - "$ref": "#/components/schemas/OpenRouterCredentialUserEditable", - "title": "OpenRouter" + "$ref": "#/components/schemas/CreateOpenRouterCredentialDTO", + "title": "OpenRouterCredential" }, { - "$ref": "#/components/schemas/PerplexityAICredentialUserEditable", - "title": "PerplexityAI" + "$ref": "#/components/schemas/CreatePerplexityAICredentialDTO", + "title": "PerplexityAICredential" }, { - "$ref": "#/components/schemas/PlayHTCredentialUserEditable", - "title": "PlayHT" + "$ref": "#/components/schemas/CreatePlayHTCredentialDTO", + "title": "PlayHTCredential" }, { - "$ref": "#/components/schemas/RimeAICredentialUserEditable", - "title": "RimeAI" + "$ref": "#/components/schemas/CreateRimeAICredentialDTO", + "title": "RimeAICredential" }, { - "$ref": "#/components/schemas/RunpodCredentialUserEditable", - "title": "Runpod" + "$ref": "#/components/schemas/CreateRunpodCredentialDTO", + "title": "RunpodCredential" }, { - "$ref": "#/components/schemas/S3CredentialUserEditable", - "title": "S3" + "$ref": "#/components/schemas/CreateS3CredentialDTO", + "title": "S3Credential" }, { - "$ref": "#/components/schemas/TavusCredentialUserEditable", - "title": "Tavus" + "$ref": "#/components/schemas/CreateSmallestAICredentialDTO", + "title": "SmallestAICredential" }, { - "$ref": "#/components/schemas/TogetherAICredentialUserEditable", - "title": "TogetherAI" + "$ref": "#/components/schemas/CreateTavusCredentialDTO", + "title": "TavusCredential" }, { - "$ref": "#/components/schemas/TrieveCredentialUserEditable", - "title": "Trieve" + "$ref": "#/components/schemas/CreateTogetherAICredentialDTO", + "title": "TogetherAICredential" }, { - "$ref": "#/components/schemas/TwilioCredentialUserEditable", - "title": "Twilio" + "$ref": "#/components/schemas/CreateTwilioCredentialDTO", + "title": "TwilioCredential" }, { - "$ref": "#/components/schemas/VonageCredentialUserEditable", - "title": "Vonage" + "$ref": "#/components/schemas/CreateVonageCredentialDTO", + "title": "VonageCredential" }, { - "$ref": "#/components/schemas/WebhookCredentialUserEditable", - "title": "Webhook" + "$ref": "#/components/schemas/CreateWebhookCredentialDTO", + "title": "WebhookCredential" }, { - "$ref": "#/components/schemas/XAiCredentialUserEditable", - "title": "XAI" + "$ref": "#/components/schemas/CreateXAiCredentialDTO", + "title": "XAiCredential" } ] } @@ -13373,6 +13856,10 @@ "$ref": "#/components/schemas/InflectionAIModel", "title": "InflectionAI" }, + { + "$ref": "#/components/schemas/DeepSeekModel", + "title": "DeepSeek" + }, { "$ref": "#/components/schemas/OpenAIModel", "title": "OpenAI" @@ -13442,6 +13929,10 @@ "$ref": "#/components/schemas/RimeAIVoice", "title": "RimeAI" }, + { + "$ref": "#/components/schemas/SmallestAIVoice", + "title": "SmallestAI" + }, { "$ref": "#/components/schemas/TavusVoice", "title": "TavusVoice" @@ -13631,144 +14122,140 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/AnthropicCredentialUserEditable", - "title": "Anthropic" - }, - { - "$ref": "#/components/schemas/AnyscaleCredentialUserEditable", - "title": "Anyscale" + "$ref": "#/components/schemas/CreateAnthropicCredentialDTO", + "title": "AnthropicCredential" }, { - "$ref": "#/components/schemas/AssemblyAICredentialUserEditable", - "title": "AssemblyAI" + "$ref": "#/components/schemas/CreateAnyscaleCredentialDTO", + "title": "AnyscaleCredential" }, { - "$ref": "#/components/schemas/AzureCredentialUserEditable", - "title": "Azure" + "$ref": "#/components/schemas/CreateAssemblyAICredentialDTO", + "title": "AssemblyAICredential" }, { - "$ref": "#/components/schemas/AzureOpenAICredentialUserEditable", - "title": "AzureOpenAI" + "$ref": "#/components/schemas/CreateAzureOpenAICredentialDTO", + "title": "AzureOpenAICredential" }, { - "$ref": "#/components/schemas/ByoSipTrunkCredentialUserEditable", - "title": "ByoSipTrunk" + "$ref": "#/components/schemas/CreateAzureCredentialDTO", + "title": "AzureCredential" }, { - "$ref": "#/components/schemas/CartesiaCredentialUserEditable", - "title": "Cartesia" + "$ref": "#/components/schemas/CreateByoSipTrunkCredentialDTO", + "title": "ByoSipTrunkCredential" }, { - "$ref": "#/components/schemas/CloudflareCredentialUserEditable", - "title": "Cloudflare" + "$ref": "#/components/schemas/CreateCartesiaCredentialDTO", + "title": "CartesiaCredential" }, { - "$ref": "#/components/schemas/CustomLLMCredentialUserEditable", - "title": "CustomLLM" + "$ref": "#/components/schemas/CreateCloudflareCredentialDTO", + "title": "CloudflareCredential" }, { - "$ref": "#/components/schemas/DeepgramCredentialUserEditable", - "title": "Deepgram" + "$ref": "#/components/schemas/CreateCustomLLMCredentialDTO", + "title": "CustomLLMCredential" }, { - "$ref": "#/components/schemas/DeepInfraCredentialUserEditable", - "title": "DeepInfra" + "$ref": "#/components/schemas/CreateDeepgramCredentialDTO", + "title": "DeepgramCredential" }, { - "$ref": "#/components/schemas/ElevenLabsCredentialUserEditable", - "title": "11Labs" + "$ref": "#/components/schemas/CreateDeepInfraCredentialDTO", + "title": "DeepInfraCredential" }, { - "$ref": "#/components/schemas/GcpCredentialUserEditable", - "title": "GCP" + "$ref": "#/components/schemas/CreateDeepSeekCredentialDTO", + "title": "DeepSeekCredential" }, { - "$ref": "#/components/schemas/GladiaCredentialUserEditable", - "title": "Gladia" + "$ref": "#/components/schemas/CreateElevenLabsCredentialDTO", + "title": "ElevenLabsCredential" }, { - "$ref": "#/components/schemas/GoHighLevelCredentialUserEditable", - "title": "GoHighLevel" + "$ref": "#/components/schemas/CreateGcpCredentialDTO", + "title": "GcpCredential" }, { - "$ref": "#/components/schemas/GoogleCredentialUserEditable", - "title": "Google" + "$ref": "#/components/schemas/CreateGladiaCredentialDTO", + "title": "GladiaCredential" }, { - "$ref": "#/components/schemas/GroqCredentialUserEditable", - "title": "Groq" + "$ref": "#/components/schemas/CreateGoHighLevelCredentialDTO", + "title": "GhlCredential" }, { - "$ref": "#/components/schemas/InflectionAICredentialUserEditable", - "title": "InflectionAI" + "$ref": "#/components/schemas/CreateGroqCredentialDTO", + "title": "GroqCredential" }, { - "$ref": "#/components/schemas/LangfuseCredentialUserEditable", - "title": "Langfuse" + "$ref": "#/components/schemas/CreateLangfuseCredentialDTO", + "title": "LangfuseCredential" }, { - "$ref": "#/components/schemas/LmntCredentialUserEditable", - "title": "LMNT" + "$ref": "#/components/schemas/CreateLmntCredentialDTO", + "title": "LmntCredential" }, { - "$ref": "#/components/schemas/MakeCredentialUserEditable", - "title": "Make" + "$ref": "#/components/schemas/CreateMakeCredentialDTO", + "title": "MakeCredential" }, { - "$ref": "#/components/schemas/OpenAICredentialUserEditable", - "title": "OpenAI" + "$ref": "#/components/schemas/CreateOpenAICredentialDTO", + "title": "OpenAICredential" }, { - "$ref": "#/components/schemas/OpenRouterCredentialUserEditable", - "title": "OpenRouter" + "$ref": "#/components/schemas/CreateOpenRouterCredentialDTO", + "title": "OpenRouterCredential" }, { - "$ref": "#/components/schemas/PerplexityAICredentialUserEditable", - "title": "PerplexityAI" + "$ref": "#/components/schemas/CreatePerplexityAICredentialDTO", + "title": "PerplexityAICredential" }, { - "$ref": "#/components/schemas/PlayHTCredentialUserEditable", - "title": "PlayHT" + "$ref": "#/components/schemas/CreatePlayHTCredentialDTO", + "title": "PlayHTCredential" }, { - "$ref": "#/components/schemas/RimeAICredentialUserEditable", - "title": "RimeAI" + "$ref": "#/components/schemas/CreateRimeAICredentialDTO", + "title": "RimeAICredential" }, { - "$ref": "#/components/schemas/RunpodCredentialUserEditable", - "title": "Runpod" + "$ref": "#/components/schemas/CreateRunpodCredentialDTO", + "title": "RunpodCredential" }, { - "$ref": "#/components/schemas/S3CredentialUserEditable", - "title": "S3" + "$ref": "#/components/schemas/CreateS3CredentialDTO", + "title": "S3Credential" }, { - "$ref": "#/components/schemas/TavusCredentialUserEditable", - "title": "Tavus" + "$ref": "#/components/schemas/CreateSmallestAICredentialDTO", + "title": "SmallestAICredential" }, { - "$ref": "#/components/schemas/TogetherAICredentialUserEditable", - "title": "TogetherAI" + "$ref": "#/components/schemas/CreateTavusCredentialDTO", + "title": "TavusCredential" }, { - "$ref": "#/components/schemas/TrieveCredentialUserEditable", - "title": "Trieve" + "$ref": "#/components/schemas/CreateTogetherAICredentialDTO", + "title": "TogetherAICredential" }, { - "$ref": "#/components/schemas/TwilioCredentialUserEditable", - "title": "Twilio" + "$ref": "#/components/schemas/CreateTwilioCredentialDTO", + "title": "TwilioCredential" }, { - "$ref": "#/components/schemas/VonageCredentialUserEditable", - "title": "Vonage" + "$ref": "#/components/schemas/CreateVonageCredentialDTO", + "title": "VonageCredential" }, { - "$ref": "#/components/schemas/WebhookCredentialUserEditable", - "title": "Webhook" + "$ref": "#/components/schemas/CreateWebhookCredentialDTO", + "title": "WebhookCredential" }, { - "$ref": "#/components/schemas/XAiCredentialUserEditable", - "title": "XAI" + "$ref": "#/components/schemas/CreateXAiCredentialDTO", + "title": "XAiCredential" } ] } @@ -14487,7 +14974,7 @@ "sipUri" ] }, - "BuyPhoneNumberDTO": { + "UpdateByoPhoneNumberDTO": { "type": "object", "properties": { "fallbackDestination": { @@ -14503,11 +14990,10 @@ } ] }, - "areaCode": { - "type": "string", - "description": "This is the area code of the phone number to purchase.", - "minLength": 3, - "maxLength": 3 + "numberE164CheckEnabled": { + "type": "boolean", + "description": "This is the flag to toggle the E164 check for the `number` field. This is an advanced property which should be used if you know your use case requires it.\n\nUse cases:\n- `false`: To allow non-E164 numbers like `+001234567890`, `1234`, or `abc`. This is useful for dialing out to non-E164 numbers on your SIP trunks.\n- `true` (default): To allow only E164 numbers like `+14155551234`. This is standard for PSTN calls.\n\nIf `false`, the `number` is still required to only contain alphanumeric characters (regex: `/^\\+?[a-zA-Z0-9]+$/`).\n\n@default true (E164 check is enabled)", + "default": true }, "name": { "type": "string", @@ -14529,13 +15015,20 @@ "$ref": "#/components/schemas/Server" } ] + }, + "number": { + "type": "string", + "description": "This is the number of the customer.", + "minLength": 3, + "maxLength": 40 + }, + "credentialId": { + "type": "string", + "description": "This is the credential of your own SIP trunk or Carrier (type `byo-sip-trunk`) which can be used to make calls to this phone number.\n\nYou can add the SIP trunk or Carrier credential in the Provider Credentials page on the Dashboard to get the credentialId." } - }, - "required": [ - "areaCode" - ] + } }, - "ImportVonagePhoneNumberDTO": { + "UpdateTwilioPhoneNumberDTO": { "type": "object", "properties": { "fallbackDestination": { @@ -14551,15 +15044,6 @@ } ] }, - "vonagePhoneNumber": { - "type": "string", - "description": "These are the digits of the phone number you own on your Vonage.", - "deprecated": true - }, - "credentialId": { - "type": "string", - "description": "This is the credential that is used to make outgoing calls, and do operations like call transfer and hang up.\n\nYou can add the Vonage Credential in the Provider Credentials page on the dashboard to get the credentialId." - }, "name": { "type": "string", "description": "This is the name of the phone number. This is just for your own reference.", @@ -14580,51 +15064,22 @@ "$ref": "#/components/schemas/Server" } ] - } - }, - "required": [ - "vonagePhoneNumber", - "credentialId" - ] - }, - "PhoneNumberPaginatedResponse": { - "type": "object", - "properties": { - "results": { - "type": "array", - "description": "A list of phone numbers, which can be of any provider type.", - "items": { - "oneOf": [ - { - "$ref": "#/components/schemas/ByoPhoneNumber" - }, - { - "$ref": "#/components/schemas/TwilioPhoneNumber" - }, - { - "$ref": "#/components/schemas/VonagePhoneNumber" - }, - { - "$ref": "#/components/schemas/VapiPhoneNumber" - } - ] - } }, - "metadata": { - "description": "Metadata about the pagination.", - "allOf": [ - { - "$ref": "#/components/schemas/PaginationMeta" - } - ] + "number": { + "type": "string", + "description": "These are the digits of the phone number you own on your Twilio." + }, + "twilioAccountSid": { + "type": "string", + "description": "This is the Twilio Account SID for the phone number." + }, + "twilioAuthToken": { + "type": "string", + "description": "This is the Twilio Auth Token for the phone number." } - }, - "required": [ - "results", - "metadata" - ] + } }, - "UpdatePhoneNumberDTO": { + "UpdateVonagePhoneNumberDTO": { "type": "object", "properties": { "fallbackDestination": { @@ -14660,9 +15115,205 @@ "$ref": "#/components/schemas/Server" } ] - } + }, + "number": { + "type": "string", + "description": "These are the digits of the phone number you own on your Vonage." + }, + "credentialId": { + "type": "string", + "description": "This is the credential that is used to make outgoing calls, and do operations like call transfer and hang up." + } + } + }, + "UpdateVapiPhoneNumberDTO": { + "type": "object", + "properties": { + "fallbackDestination": { + "description": "This is the fallback destination an inbound call will be transferred to if:\n1. `assistantId` is not set\n2. `squadId` is not set\n3. and, `assistant-request` message to the `serverUrl` fails\n\nIf this is not set and above conditions are met, the inbound call is hung up with an error message.", + "oneOf": [ + { + "$ref": "#/components/schemas/TransferDestinationNumber", + "title": "NumberTransferDestination" + }, + { + "$ref": "#/components/schemas/TransferDestinationSip", + "title": "SipTransferDestination" + } + ] + }, + "name": { + "type": "string", + "description": "This is the name of the phone number. This is just for your own reference.", + "maxLength": 40 + }, + "assistantId": { + "type": "string", + "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + }, + "squadId": { + "type": "string", + "description": "This is the squad that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + }, + "server": { + "description": "This is where Vapi will send webhooks. You can find all webhooks available along with their shape in ServerMessage schema.\n\nThe order of precedence is:\n\n1. assistant.server\n2. phoneNumber.server\n3. org.server", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] + }, + "sipUri": { + "type": "string", + "description": "This is the SIP URI of the phone number. You can SIP INVITE this. The assistant attached to this number will answer.\n\nThis is case-insensitive." + }, + "authentication": { + "description": "This enables authentication for incoming SIP INVITE requests to the `sipUri`.\n\nIf not set, any username/password to the 401 challenge of the SIP INVITE will be accepted.", + "allOf": [ + { + "$ref": "#/components/schemas/SipAuthentication" + } + ] + } } }, + "BuyPhoneNumberDTO": { + "type": "object", + "properties": { + "fallbackDestination": { + "description": "This is the fallback destination an inbound call will be transferred to if:\n1. `assistantId` is not set\n2. `squadId` is not set\n3. and, `assistant-request` message to the `serverUrl` fails\n\nIf this is not set and above conditions are met, the inbound call is hung up with an error message.", + "oneOf": [ + { + "$ref": "#/components/schemas/TransferDestinationNumber", + "title": "NumberTransferDestination" + }, + { + "$ref": "#/components/schemas/TransferDestinationSip", + "title": "SipTransferDestination" + } + ] + }, + "areaCode": { + "type": "string", + "description": "This is the area code of the phone number to purchase.", + "minLength": 3, + "maxLength": 3 + }, + "name": { + "type": "string", + "description": "This is the name of the phone number. This is just for your own reference.", + "maxLength": 40 + }, + "assistantId": { + "type": "string", + "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + }, + "squadId": { + "type": "string", + "description": "This is the squad that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + }, + "server": { + "description": "This is where Vapi will send webhooks. You can find all webhooks available along with their shape in ServerMessage schema.\n\nThe order of precedence is:\n\n1. assistant.server\n2. phoneNumber.server\n3. org.server", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] + } + }, + "required": [ + "areaCode" + ] + }, + "ImportVonagePhoneNumberDTO": { + "type": "object", + "properties": { + "fallbackDestination": { + "description": "This is the fallback destination an inbound call will be transferred to if:\n1. `assistantId` is not set\n2. `squadId` is not set\n3. and, `assistant-request` message to the `serverUrl` fails\n\nIf this is not set and above conditions are met, the inbound call is hung up with an error message.", + "oneOf": [ + { + "$ref": "#/components/schemas/TransferDestinationNumber", + "title": "NumberTransferDestination" + }, + { + "$ref": "#/components/schemas/TransferDestinationSip", + "title": "SipTransferDestination" + } + ] + }, + "vonagePhoneNumber": { + "type": "string", + "description": "These are the digits of the phone number you own on your Vonage.", + "deprecated": true + }, + "credentialId": { + "type": "string", + "description": "This is the credential that is used to make outgoing calls, and do operations like call transfer and hang up.\n\nYou can add the Vonage Credential in the Provider Credentials page on the dashboard to get the credentialId." + }, + "name": { + "type": "string", + "description": "This is the name of the phone number. This is just for your own reference.", + "maxLength": 40 + }, + "assistantId": { + "type": "string", + "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + }, + "squadId": { + "type": "string", + "description": "This is the squad that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + }, + "server": { + "description": "This is where Vapi will send webhooks. You can find all webhooks available along with their shape in ServerMessage schema.\n\nThe order of precedence is:\n\n1. assistant.server\n2. phoneNumber.server\n3. org.server", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] + } + }, + "required": [ + "vonagePhoneNumber", + "credentialId" + ] + }, + "PhoneNumberPaginatedResponse": { + "type": "object", + "properties": { + "results": { + "type": "array", + "description": "A list of phone numbers, which can be of any provider type.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ByoPhoneNumber" + }, + { + "$ref": "#/components/schemas/TwilioPhoneNumber" + }, + { + "$ref": "#/components/schemas/VonagePhoneNumber" + }, + { + "$ref": "#/components/schemas/VapiPhoneNumber" + } + ] + } + }, + "metadata": { + "description": "Metadata about the pagination.", + "allOf": [ + { + "$ref": "#/components/schemas/PaginationMeta" + } + ] + } + }, + "required": [ + "results", + "metadata" + ] + }, "Squad": { "type": "object", "properties": { @@ -14919,6 +15570,48 @@ "vectorStoreSearchPlan" ] }, + "UpdateTrieveKnowledgeBaseDTO": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "This is the name of the knowledge base." + }, + "vectorStoreSearchPlan": { + "description": "This is the plan on how to search the vector store while a call is going on.", + "allOf": [ + { + "$ref": "#/components/schemas/TrieveKnowledgeBaseVectorStoreSearchPlan" + } + ] + }, + "vectorStoreCreatePlan": { + "description": "This is the plan if you want us to create a new vector store on your behalf. To use an existing vector store from your account, use `vectoreStoreProviderId`", + "allOf": [ + { + "$ref": "#/components/schemas/TrieveKnowledgeBaseVectorStoreCreatePlan" + } + ] + }, + "vectorStoreProviderId": { + "type": "string", + "description": "This is an vector store that you already have on your account with the provider. To create a new vector store, use vectorStoreCreatePlan.\n\nUsage:\n- To bring your own vector store from Trieve, go to https://trieve.ai\n- Create a dataset, and use the datasetId here." + } + } + }, + "UpdateCustomKnowledgeBaseDTO": { + "type": "object", + "properties": { + "server": { + "description": "/**\nThis is where the knowledge base request will be sent.\n\nRequest Example:\n\nPOST https://{server.url}\nContent-Type: application/json\n\n{\n \"messsage\": {\n \"type\": \"knowledge-base-request\",\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Why is ocean blue?\"\n }\n ],\n ...other metadata about the call...\n }\n}\n\nResponse Expected:\n```\n{\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"The ocean is blue because water absorbs everything but blue.\",\n }, // YOU CAN RETURN THE EXACT RESPONSE TO SPEAK\n \"documents\": [\n {\n \"content\": \"The ocean is blue primarily because water absorbs colors in the red part of the light spectrum and scatters the blue light, making it more visible to our eyes.\",\n \"similarity\": 1\n },\n {\n \"content\": \"Blue light is scattered more by the water molecules than other colors, enhancing the blue appearance of the ocean.\",\n \"similarity\": .5\n }\n ] // OR, YOU CAN RETURN AN ARRAY OF DOCUMENTS THAT WILL BE SENT TO THE MODEL\n}\n```", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] + } + } + }, "ConversationBlock": { "type": "object", "properties": { @@ -15566,7 +16259,7 @@ "type" ] }, - "UpdateBlockDTO": { + "UpdateConversationBlockDTO": { "type": "object", "properties": { "messages": { @@ -15601,26 +16294,72 @@ } ] }, - "tool": { - "description": "This is the tool that the block will call. To use an existing tool, use `toolId`.", - "oneOf": [ - { - "$ref": "#/components/schemas/CreateDtmfToolDTO", - "title": "DtmfTool" - }, - { - "$ref": "#/components/schemas/CreateEndCallToolDTO", - "title": "EndCallTool" - }, - { - "$ref": "#/components/schemas/CreateVoicemailToolDTO", - "title": "VoicemailTool" - }, - { - "$ref": "#/components/schemas/CreateFunctionToolDTO", - "title": "FunctionTool" - }, - { + "name": { + "type": "string", + "description": "This is the name of the block. This is just for your reference." + }, + "instruction": { + "type": "string", + "description": "This is the instruction to the model.\n\nYou can reference any variable in the context of the current block execution (step):\n- \"{{input.your-property-name}}\" for the current step's input\n- \"{{your-step-name.output.your-property-name}}\" for another step's output (in the same workflow; read caveat #1)\n- \"{{your-step-name.input.your-property-name}}\" for another step's input (in the same workflow; read caveat #1)\n- \"{{your-block-name.output.your-property-name}}\" for another block's output (in the same workflow; read caveat #2)\n- \"{{your-block-name.input.your-property-name}}\" for another block's input (in the same workflow; read caveat #2)\n- \"{{workflow.input.your-property-name}}\" for the current workflow's input\n- \"{{global.your-property-name}}\" for the global context\n\nThis can be as simple or as complex as you want it to be.\n- \"say hello and ask the user about their day!\"\n- \"collect the user's first and last name\"\n- \"user is {{input.firstName}} {{input.lastName}}. their age is {{input.age}}. ask them about their salary and if they might be interested in buying a house. we offer {{input.offer}}\"\n\nCaveats:\n1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.output/input.propertyName}} will reference the latest usage of the step.\n2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.output/input.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow with steps.", + "minLength": 1 + } + } + }, + "UpdateToolCallBlockDTO": { + "type": "object", + "properties": { + "messages": { + "type": "array", + "description": "These are the pre-configured messages that will be spoken to the user while the block is running.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/BlockStartMessage", + "title": "BlockStartMessage" + }, + { + "$ref": "#/components/schemas/BlockCompleteMessage", + "title": "BlockCompleteMessage" + } + ] + } + }, + "inputSchema": { + "description": "This is the input schema for the block. This is the input the block needs to run. It's given to the block as `steps[0].input`\n\nThese are accessible as variables:\n- ({{input.propertyName}}) in context of the block execution (step)\n- ({{stepName.input.propertyName}}) in context of the workflow", + "allOf": [ + { + "$ref": "#/components/schemas/JsonSchema" + } + ] + }, + "outputSchema": { + "description": "This is the output schema for the block. This is the output the block will return to the workflow (`{{stepName.output}}`).\n\nThese are accessible as variables:\n- ({{output.propertyName}}) in context of the block execution (step)\n- ({{stepName.output.propertyName}}) in context of the workflow (read caveat #1)\n- ({{blockName.output.propertyName}}) in context of the workflow (read caveat #2)\n\nCaveats:\n1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.output.propertyName}} will reference the latest usage of the step.\n2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.output.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow with steps.", + "allOf": [ + { + "$ref": "#/components/schemas/JsonSchema" + } + ] + }, + "tool": { + "description": "This is the tool that the block will call. To use an existing tool, use `toolId`.", + "oneOf": [ + { + "$ref": "#/components/schemas/CreateDtmfToolDTO", + "title": "DtmfTool" + }, + { + "$ref": "#/components/schemas/CreateEndCallToolDTO", + "title": "EndCallTool" + }, + { + "$ref": "#/components/schemas/CreateVoicemailToolDTO", + "title": "VoicemailTool" + }, + { + "$ref": "#/components/schemas/CreateFunctionToolDTO", + "title": "FunctionTool" + }, + { "$ref": "#/components/schemas/CreateGhlToolDTO", "title": "GhlTool" }, @@ -15634,6 +16373,51 @@ } ] }, + "name": { + "type": "string", + "description": "This is the name of the block. This is just for your reference." + }, + "toolId": { + "type": "string", + "description": "This is the id of the tool that the block will call. To use a transient tool, use `tool`." + } + } + }, + "UpdateWorkflowBlockDTO": { + "type": "object", + "properties": { + "messages": { + "type": "array", + "description": "These are the pre-configured messages that will be spoken to the user while the block is running.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/BlockStartMessage", + "title": "BlockStartMessage" + }, + { + "$ref": "#/components/schemas/BlockCompleteMessage", + "title": "BlockCompleteMessage" + } + ] + } + }, + "inputSchema": { + "description": "This is the input schema for the block. This is the input the block needs to run. It's given to the block as `steps[0].input`\n\nThese are accessible as variables:\n- ({{input.propertyName}}) in context of the block execution (step)\n- ({{stepName.input.propertyName}}) in context of the workflow", + "allOf": [ + { + "$ref": "#/components/schemas/JsonSchema" + } + ] + }, + "outputSchema": { + "description": "This is the output schema for the block. This is the output the block will return to the workflow (`{{stepName.output}}`).\n\nThese are accessible as variables:\n- ({{output.propertyName}}) in context of the block execution (step)\n- ({{stepName.output.propertyName}}) in context of the workflow (read caveat #1)\n- ({{blockName.output.propertyName}}) in context of the workflow (read caveat #2)\n\nCaveats:\n1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.output.propertyName}} will reference the latest usage of the step.\n2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.output.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow with steps.", + "allOf": [ + { + "$ref": "#/components/schemas/JsonSchema" + } + ] + }, "steps": { "type": "array", "description": "These are the steps in the workflow.", @@ -15653,15 +16437,6 @@ "name": { "type": "string", "description": "This is the name of the block. This is just for your reference." - }, - "instruction": { - "type": "string", - "description": "This is the instruction to the model.\n\nYou can reference any variable in the context of the current block execution (step):\n- \"{{input.your-property-name}}\" for the current step's input\n- \"{{your-step-name.output.your-property-name}}\" for another step's output (in the same workflow; read caveat #1)\n- \"{{your-step-name.input.your-property-name}}\" for another step's input (in the same workflow; read caveat #1)\n- \"{{your-block-name.output.your-property-name}}\" for another block's output (in the same workflow; read caveat #2)\n- \"{{your-block-name.input.your-property-name}}\" for another block's input (in the same workflow; read caveat #2)\n- \"{{workflow.input.your-property-name}}\" for the current workflow's input\n- \"{{global.your-property-name}}\" for the global context\n\nThis can be as simple or as complex as you want it to be.\n- \"say hello and ask the user about their day!\"\n- \"collect the user's first and last name\"\n- \"user is {{input.firstName}} {{input.lastName}}. their age is {{input.age}}. ask them about their salary and if they might be interested in buying a house. we offer {{input.offer}}\"\n\nCaveats:\n1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.output/input.propertyName}} will reference the latest usage of the step.\n2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.output/input.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow with steps.", - "minLength": 1 - }, - "toolId": { - "type": "string", - "description": "This is the id of the tool that the block will call. To use a transient tool, use `tool`." } } }, @@ -16886,7 +17661,7 @@ "name" ] }, - "UpdateToolDTO": { + "UpdateDtmfToolDTO": { "type": "object", "properties": { "async": { @@ -16936,2339 +17711,1159 @@ } } }, - "CreateFileDTO": { - "type": "object", - "properties": { - "file": { - "type": "string", - "description": "This is the File you want to upload for use with the Knowledge Base.", - "format": "binary" - } - }, - "required": [ - "file" - ] - }, - "File": { + "UpdateEndCallToolDTO": { "type": "object", "properties": { - "object": { - "type": "string", - "enum": [ - "file" - ] - }, - "status": { - "enum": [ - "indexed", - "not_indexed" - ], - "type": "string" - }, - "name": { - "type": "string", - "description": "This is the name of the file. This is just for your own reference.", - "maxLength": 40 - }, - "originalName": { - "type": "string" - }, - "bytes": { - "type": "number" - }, - "purpose": { - "type": "string" - }, - "mimetype": { - "type": "string" - }, - "key": { - "type": "string" - }, - "path": { - "type": "string" - }, - "bucket": { - "type": "string" - }, - "url": { - "type": "string" - }, - "metadata": { - "type": "object" - }, - "id": { - "type": "string", - "description": "This is the unique identifier for the file." + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false }, - "orgId": { - "type": "string", - "description": "This is the unique identifier for the org that this file belongs to." + "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" + } + ] + } }, - "createdAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the file was created." + "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" + } + ] }, - "updatedAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the file was last updated." - } - }, - "required": [ - "id", - "orgId", - "createdAt", - "updatedAt" - ] - }, - "UpdateFileDTO": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "This is the name of the file. This is just for your own reference.", - "minLength": 1, - "maxLength": 40 + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] } } }, - "Metrics": { + "UpdateFunctionToolDTO": { "type": "object", "properties": { - "orgId": { - "type": "string" + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false }, - "rangeStart": { - "type": "string" - }, - "rangeEnd": { - "type": "string" - }, - "bill": { - "type": "number" - }, - "billWithinBillingLimit": { - "type": "boolean" - }, - "billDailyBreakdown": { - "type": "object" - }, - "callActive": { - "type": "number" - }, - "callActiveWithinConcurrencyLimit": { - "type": "boolean" - }, - "callMinutes": { - "type": "number" - }, - "callMinutesDailyBreakdown": { - "type": "object" - }, - "callMinutesAverage": { - "type": "number" - }, - "callMinutesAverageDailyBreakdown": { - "type": "object" - }, - "callCount": { - "type": "number" + "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" + } + ] + } }, - "callCountDailyBreakdown": { - "type": "object" - } - }, - "required": [ - "orgId", - "rangeStart", - "rangeEnd", - "bill", - "billWithinBillingLimit", - "billDailyBreakdown", - "callActive", - "callActiveWithinConcurrencyLimit", - "callMinutes", - "callMinutesDailyBreakdown", - "callMinutesAverage", - "callMinutesAverageDailyBreakdown", - "callCount", - "callCountDailyBreakdown" - ] - }, - "TimeRange": { - "type": "object", - "properties": { - "step": { - "type": "string", - "description": "This is the time step for aggregations.\n\nIf not provided, defaults to returning for the entire time range.", - "enum": [ - "minute", - "hour", - "day", - "week", - "month", - "quarter", - "year", - "decade", - "century", - "millennium" + "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" + } ] }, - "start": { - "format": "date-time", - "type": "string", - "description": "This is the start date for the time range.\n\nIf not provided, defaults to the 7 days ago." - }, - "end": { - "format": "date-time", - "type": "string", - "description": "This is the end date for the time range.\n\nIf not provided, defaults to now." - }, - "timezone": { - "type": "string", - "description": "This is the timezone you want to set for the query.\n\nIf not provided, defaults to UTC." + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] } } }, - "AnalyticsOperation": { + "UpdateGhlToolDTO": { "type": "object", "properties": { - "operation": { - "type": "string", - "description": "This is the aggregation operation you want to perform.", - "enum": [ - "sum", - "avg", - "count", - "min", - "max" + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false + }, + "messages": { + "type": "array", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ToolMessageStart", + "title": "ToolMessageStart" + }, + { + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" + }, + { + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" + }, + { + "$ref": "#/components/schemas/ToolMessageDelayed", + "title": "ToolMessageDelayed" + } + ] + } + }, + "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" + } ] }, - "column": { - "type": "string", - "description": "This is the columns you want to perform the aggregation operation on.", - "enum": [ - "id", - "cost", - "costBreakdown.llm", - "costBreakdown.stt", - "costBreakdown.tts", - "costBreakdown.vapi", - "costBreakdown.ttsCharacters", - "costBreakdown.llmPromptTokens", - "costBreakdown.llmCompletionTokens", - "duration" + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } ] }, - "alias": { - "type": "string", - "description": "This is the alias for column name returned. Defaults to `${operation}${column}`.", - "maxLength": 40 + "metadata": { + "$ref": "#/components/schemas/GhlToolMetadata" } - }, - "required": [ - "operation", - "column" - ] + } }, - "AnalyticsQuery": { + "UpdateMakeToolDTO": { "type": "object", "properties": { - "table": { - "type": "string", - "description": "This is the table you want to query.", - "enum": [ - "call" - ] + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false }, - "groupBy": { + "messages": { "type": "array", - "description": "This is the list of columns you want to group by.", - "enum": [ - "type", - "assistantId", - "endedReason", - "analysis.successEvaluation", - "status" - ], + "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": { - "type": "string", - "enum": [ - "type", - "assistantId", - "endedReason", - "analysis.successEvaluation", - "status" + "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" + } ] } }, - "name": { - "type": "string", - "description": "This is the name of the query. This will be used to identify the query in the response.", - "maxLength": 40 - }, - "timeRange": { - "description": "This is the time range for the query.", + "function": { + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", "allOf": [ { - "$ref": "#/components/schemas/TimeRange" + "$ref": "#/components/schemas/OpenAIFunction" } ] }, - "operations": { - "description": "This is the list of operations you want to perform.", - "type": "array", - "items": { - "$ref": "#/components/schemas/AnalyticsOperation" - } + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] + }, + "metadata": { + "$ref": "#/components/schemas/MakeToolMetadata" } - }, - "required": [ - "table", - "name", - "operations" - ] + } }, - "AnalyticsQueryDTO": { + "UpdateTransferCallToolDTO": { "type": "object", "properties": { - "queries": { - "description": "This is the list of metric queries you want to perform.", + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false + }, + "messages": { "type": "array", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", "items": { - "$ref": "#/components/schemas/AnalyticsQuery" + "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" + } + ] } - } - }, - "required": [ - "queries" - ] - }, - "AnalyticsQueryResult": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "This is the unique key for the query." }, - "timeRange": { - "description": "This is the time range for the query.", + "destinations": { + "type": "array", + "description": "These are the destinations that the call can be transferred to. If no destinations are provided, server.url will be used to get the transfer destination once the tool is called.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/TransferDestinationAssistant", + "title": "Assistant" + }, + { + "$ref": "#/components/schemas/TransferDestinationStep", + "title": "Step" + }, + { + "$ref": "#/components/schemas/TransferDestinationNumber", + "title": "Number" + }, + { + "$ref": "#/components/schemas/TransferDestinationSip", + "title": "Sip" + } + ] + } + }, + "function": { + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", "allOf": [ { - "$ref": "#/components/schemas/TimeRange" + "$ref": "#/components/schemas/OpenAIFunction" } ] }, - "result": { - "description": "This is the result of the query, a list of unique groups with result of their aggregations.\n\nExample:\n\"result\": [\n { \"date\": \"2023-01-01\", \"assistantId\": \"123\", \"endedReason\": \"customer-ended-call\", \"sumDuration\": 120, \"avgCost\": 10.5 },\n { \"date\": \"2023-01-02\", \"assistantId\": \"123\", \"endedReason\": \"customer-did-not-give-microphone-permission\", \"sumDuration\": 0, \"avgCost\": 0 },\n // Additional results\n]", - "type": "array", - "items": { - "type": "object" - } + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] } - }, - "required": [ - "name", - "timeRange", - "result" - ] + } }, - "CallLogPrivileged": { + "UpdateOutputToolDTO": { "type": "object", "properties": { - "callId": { - "type": "string", - "description": "This is the unique identifier for the call." - }, - "orgId": { - "type": "string", - "description": "This is the unique identifier for the org that this call log belongs to." + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false }, - "log": { - "type": "string", - "description": "This is the log message associated with the call." + "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" + } + ] + } }, - "level": { - "type": "string", - "description": "This is the level of the log message.", - "enum": [ - "INFO", - "LOG", - "WARN", - "ERROR", - "CHECKPOINT" + "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" + } ] }, - "time": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the log was created." + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] } - }, - "required": [ - "callId", - "orgId", - "log", - "level", - "time" - ] + } }, - "CallLogsPaginatedResponse": { + "UpdateBashToolDTO": { "type": "object", "properties": { - "results": { + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false + }, + "messages": { "type": "array", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", "items": { - "$ref": "#/components/schemas/CallLogPrivileged" + "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" + } + ] } }, - "metadata": { - "$ref": "#/components/schemas/PaginationMeta" - } - }, - "required": [ - "results", - "metadata" - ] - }, - "Error": { - "type": "object", - "properties": { - "message": { - "type": "string" - } - }, - "required": [ - "message" - ] - }, - "Log": { - "type": "object", - "properties": { - "time": { + "subType": { "type": "string", - "description": "This is the timestamp at which the log was written." + "enum": [ + "bash_20241022" + ], + "description": "The sub type of tool." }, - "orgId": { - "type": "string", - "description": "This is the unique identifier for the org that this log belongs to." + "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" + } + ] }, - "type": { - "type": "string", - "description": "This is the type of the log.", - "enum": [ - "API", - "Webhook", - "Call", - "Provider" - ] - }, - "webhookType": { - "type": "string", - "description": "This is the type of the webhook, given the log is from a webhook." - }, - "resource": { - "type": "string", - "description": "This is the specific resource, relevant only to API logs.", - "enum": [ - "org", - "assistant", - "analytics", - "credential", - "phone-number", - "block", - "voice-library", - "provider", - "tool", - "token", - "template", - "squad", - "call", - "file", - "metric", - "log" - ] - }, - "requestDurationSeconds": { - "type": "number", - "description": "'This is how long the request took.", - "minimum": 0 - }, - "requestStartedAt": { - "type": "string", - "description": "This is the timestamp at which the request began." - }, - "requestFinishedAt": { - "type": "string", - "description": "This is the timestamp at which the request finished." - }, - "requestBody": { - "type": "object", - "description": "This is the body of the request." - }, - "requestHttpMethod": { - "type": "string", - "description": "This is the request method.", - "enum": [ - "POST", - "GET", - "PUT", - "PATCH", - "DELETE" - ] - }, - "requestUrl": { - "type": "string", - "description": "This is the request URL." - }, - "requestPath": { - "type": "string", - "description": "This is the request path." - }, - "requestQuery": { - "type": "string", - "description": "This is the request query." - }, - "responseHttpCode": { - "type": "number", - "description": "This the HTTP status code of the response." - }, - "requestIpAddress": { - "type": "string", - "description": "This is the request IP address." - }, - "requestOrigin": { - "type": "string", - "description": "This is the origin of the request" - }, - "responseBody": { - "type": "object", - "description": "This is the body of the response." - }, - "requestHeaders": { - "type": "object", - "description": "These are the headers of the request." - }, - "error": { - "description": "This is the error, if one occurred.", + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", "allOf": [ { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/Server" } ] }, - "assistantId": { - "type": "string", - "description": "This is the ID of the assistant." - }, - "phoneNumberId": { - "type": "string", - "description": "This is the ID of the phone number." - }, - "customerId": { - "type": "string", - "description": "This is the ID of the customer." - }, - "squadId": { - "type": "string", - "description": "This is the ID of the squad." - }, - "callId": { - "type": "string", - "description": "This is the ID of the call." - } - }, - "required": [ - "time", - "orgId", - "type", - "requestDurationSeconds", - "requestStartedAt", - "requestFinishedAt", - "requestBody", - "requestHttpMethod", - "requestUrl", - "requestPath", - "responseHttpCode" - ] - }, - "LogsPaginatedResponse": { - "type": "object", - "properties": { - "results": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Log" - } - }, - "metadata": { - "$ref": "#/components/schemas/PaginationMeta" - } - }, - "required": [ - "results", - "metadata" - ] - }, - "ChatDTO": { - "type": "object", - "properties": { - "messages": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAIMessage" - } - }, - "assistantId": { - "type": "string" - }, - "assistant": { - "$ref": "#/components/schemas/CreateAssistantDTO" - }, - "assistantOverrides": { - "$ref": "#/components/schemas/AssistantOverrides" - } - }, - "required": [ - "messages" - ] - }, - "ChatServiceResponse": { - "type": "object", - "properties": {} - }, - "AnthropicCredential": { - "type": "object", - "properties": { - "provider": { - "type": "string", - "enum": [ - "anthropic" - ] - }, - "apiKey": { - "type": "string", - "maxLength": 10000, - "description": "This is not returned in the API." - }, - "id": { - "type": "string", - "description": "This is the unique identifier for the credential." - }, - "orgId": { - "type": "string", - "description": "This is the unique identifier for the org that this credential belongs to." - }, - "createdAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the credential was created." - }, - "updatedAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the assistant was last updated." - }, - "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" - ] - }, - "AnyscaleCredential": { - "type": "object", - "properties": { - "provider": { - "type": "string", - "enum": [ - "anyscale" - ] - }, - "apiKey": { - "type": "string", - "maxLength": 10000, - "description": "This is not returned in the API." - }, - "id": { - "type": "string", - "description": "This is the unique identifier for the credential." - }, - "orgId": { - "type": "string", - "description": "This is the unique identifier for the org that this credential belongs to." - }, - "createdAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the credential was created." - }, - "updatedAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the assistant was last updated." - }, - "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" - ] - }, - "AssemblyAICredential": { - "type": "object", - "properties": { - "provider": { - "type": "string", - "enum": [ - "assembly-ai" - ] - }, - "apiKey": { - "type": "string", - "description": "This is not returned in the API." - }, - "id": { - "type": "string", - "description": "This is the unique identifier for the credential." - }, - "orgId": { - "type": "string", - "description": "This is the unique identifier for the org that this credential belongs to." - }, - "createdAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the credential was created." - }, - "updatedAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the assistant was last updated." - }, - "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" - ] - }, - "AzureCredential": { - "type": "object", - "properties": { - "provider": { - "type": "string", - "enum": [ - "azure" - ] - }, - "service": { - "type": "string", - "description": "This is the service being used in Azure.", - "enum": [ - "speech", - "blob_storage" - ], - "default": "speech" - }, - "region": { - "type": "string", - "description": "This is the region of the Azure resource.", - "enum": [ - "australia", - "canada", - "eastus2", - "eastus", - "france", - "india", - "japan", - "uaenorth", - "northcentralus", - "norway", - "southcentralus", - "swedencentral", - "switzerland", - "uk", - "westus", - "westus3" - ] - }, - "apiKey": { - "type": "string", - "description": "This is not returned in the API.", - "maxLength": 10000 - }, - "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 - }, - "bucketPlan": { - "description": "This is the bucket plan that can be provided to store call artifacts in Azure Blob Storage.", - "allOf": [ - { - "$ref": "#/components/schemas/AzureBlobStorageBucketPlan" - } - ] - } - }, - "required": [ - "provider", - "service", - "id", - "orgId", - "createdAt", - "updatedAt" - ] - }, - "AzureOpenAICredential": { - "type": "object", - "properties": { - "provider": { - "type": "string", - "enum": [ - "azure-openai" - ] - }, - "region": { - "type": "string", - "enum": [ - "australia", - "canada", - "eastus2", - "eastus", - "france", - "india", - "japan", - "uaenorth", - "northcentralus", - "norway", - "southcentralus", - "swedencentral", - "switzerland", - "uk", - "westus", - "westus3" - ] - }, - "models": { - "type": "array", - "enum": [ - "gpt-4o-2024-08-06", - "gpt-4o-mini-2024-07-18", - "gpt-4o-2024-05-13", - "gpt-4-turbo-2024-04-09", - "gpt-4-0125-preview", - "gpt-4-1106-preview", - "gpt-4-0613", - "gpt-35-turbo-0125", - "gpt-35-turbo-1106" - ], - "example": [ - "gpt-4-0125-preview", - "gpt-4-0613" - ], - "items": { - "type": "string", - "enum": [ - "gpt-4o-2024-08-06", - "gpt-4o-mini-2024-07-18", - "gpt-4o-2024-05-13", - "gpt-4-turbo-2024-04-09", - "gpt-4-0125-preview", - "gpt-4-1106-preview", - "gpt-4-0613", - "gpt-35-turbo-0125", - "gpt-35-turbo-1106" - ] - } - }, - "openAIKey": { - "type": "string", - "maxLength": 10000, - "description": "This is not returned in the API." - }, - "ocpApimSubscriptionKey": { - "type": "string", - "description": "This is not returned in the API." - }, - "id": { - "type": "string", - "description": "This is the unique identifier for the credential." - }, - "orgId": { - "type": "string", - "description": "This is the unique identifier for the org that this credential belongs to." - }, - "createdAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the credential was created." - }, - "updatedAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the assistant was last updated." - }, - "name": { - "type": "string", - "description": "This is the name of credential. This is just for your reference.", - "minLength": 1, - "maxLength": 40 - }, - "openAIEndpoint": { - "type": "string", - "maxLength": 10000 - } - }, - "required": [ - "provider", - "region", - "models", - "openAIKey", - "id", - "orgId", - "createdAt", - "updatedAt", - "openAIEndpoint" - ] - }, - "ByoSipTrunkCredential": { - "type": "object", - "properties": { - "provider": { - "type": "string", - "description": "This can be used to bring your own SIP trunks or to connect to a Carrier.", - "enum": [ - "byo-sip-trunk" - ] - }, - "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 - }, - "gateways": { - "description": "This is the list of SIP trunk's gateways.", - "type": "array", - "items": { - "$ref": "#/components/schemas/SipTrunkGateway" - } - }, - "outboundAuthenticationPlan": { - "description": "This can be used to configure the outbound authentication if required by the SIP trunk.", - "allOf": [ - { - "$ref": "#/components/schemas/SipTrunkOutboundAuthenticationPlan" - } - ] - }, - "outboundLeadingPlusEnabled": { - "type": "boolean", - "description": "This ensures the outbound origination attempts have a leading plus. Defaults to false to match conventional telecom behavior.\n\nUsage:\n- Vonage/Twilio requires leading plus for all outbound calls. Set this to true.\n\n@default false" - }, - "techPrefix": { - "type": "string", - "description": "This can be used to configure the tech prefix on outbound calls. This is an advanced property.", - "maxLength": 10000 - }, - "sipDiversionHeader": { - "type": "string", - "description": "This can be used to enable the SIP diversion header for authenticating the calling number if the SIP trunk supports it. This is an advanced property.", - "maxLength": 10000 - }, - "sbcConfiguration": { - "description": "This is an advanced configuration for enterprise deployments. This uses the onprem SBC to trunk into the SIP trunk's `gateways`, rather than the managed SBC provided by Vapi.", - "allOf": [ - { - "$ref": "#/components/schemas/SbcConfiguration" - } - ] - } - }, - "required": [ - "id", - "orgId", - "createdAt", - "updatedAt", - "gateways" - ] - }, - "CartesiaCredential": { - "type": "object", - "properties": { - "provider": { - "type": "string", - "enum": [ - "cartesia" - ] - }, - "apiKey": { - "type": "string", - "description": "This is not returned in the API." - }, - "id": { - "type": "string", - "description": "This is the unique identifier for the credential." - }, - "orgId": { - "type": "string", - "description": "This is the unique identifier for the org that this credential belongs to." - }, - "createdAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the credential was created." - }, - "updatedAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the assistant was last updated." - }, - "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" - ] - }, - "Oauth2AuthenticationSession": { - "type": "object", - "properties": { - "accessToken": { - "type": "string", - "description": "This is the OAuth2 access token." - }, - "expiresAt": { - "format": "date-time", - "type": "string", - "description": "This is the OAuth2 access token expiration." - } - } - }, - "CustomLLMCredential": { - "type": "object", - "properties": { - "provider": { - "type": "string", - "enum": [ - "custom-llm" - ] - }, - "apiKey": { - "type": "string", - "maxLength": 10000, - "description": "This is not returned in the API." - }, - "authenticationPlan": { - "description": "This is the authentication plan. Currently supports OAuth2 RFC 6749. To use Bearer authentication, use apiKey", - "allOf": [ - { - "$ref": "#/components/schemas/OAuth2AuthenticationPlan" - } - ] - }, - "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." - }, - "authenticationSession": { - "description": "This is the authentication session for the credential. Available for credentials that have an authentication plan.", - "allOf": [ - { - "$ref": "#/components/schemas/Oauth2AuthenticationSession" - } - ] - }, - "name": { - "type": "string", - "description": "This is the name of credential. This is just for your reference.", - "minLength": 1, - "maxLength": 40 - } - }, - "required": [ - "provider", - "apiKey", - "id", - "orgId", - "createdAt", - "updatedAt" - ] - }, - "DeepgramCredential": { - "type": "object", - "properties": { - "provider": { - "type": "string", - "enum": [ - "deepgram" - ] - }, - "apiKey": { - "type": "string", - "description": "This is not returned in the API." - }, - "id": { - "type": "string", - "description": "This is the unique identifier for the credential." - }, - "orgId": { - "type": "string", - "description": "This is the unique identifier for the org that this credential belongs to." - }, - "createdAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the credential was created." - }, - "updatedAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the assistant was last updated." - }, - "name": { - "type": "string", - "description": "This is the name of credential. This is just for your reference.", - "minLength": 1, - "maxLength": 40 - }, - "apiUrl": { - "type": "string", - "description": "This can be used to point to an onprem Deepgram instance. Defaults to api.deepgram.com." - } - }, - "required": [ - "provider", - "apiKey", - "id", - "orgId", - "createdAt", - "updatedAt" - ] - }, - "DeepInfraCredential": { - "type": "object", - "properties": { - "provider": { - "type": "string", - "enum": [ - "deepinfra" - ] - }, - "apiKey": { - "type": "string", - "description": "This is not returned in the API." - }, - "id": { - "type": "string", - "description": "This is the unique identifier for the credential." - }, - "orgId": { - "type": "string", - "description": "This is the unique identifier for the org that this credential belongs to." - }, - "createdAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the credential was created." - }, - "updatedAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the assistant was last updated." - }, - "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" - ] - }, - "ElevenLabsCredential": { - "type": "object", - "properties": { - "provider": { - "type": "string", - "enum": [ - "11labs" - ] - }, - "apiKey": { - "type": "string", - "maxLength": 10000, - "description": "This is not returned in the API." - }, - "id": { - "type": "string", - "description": "This is the unique identifier for the credential." - }, - "orgId": { - "type": "string", - "description": "This is the unique identifier for the org that this credential belongs to." - }, - "createdAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the credential was created." - }, - "updatedAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the assistant was last updated." - }, - "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" - ] - }, - "GcpCredential": { - "type": "object", - "properties": { - "provider": { - "type": "string", - "enum": [ - "gcp" - ] - }, - "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 - }, - "gcpKey": { - "description": "This is the GCP key. This is the JSON that can be generated in the Google Cloud Console at https://console.cloud.google.com/iam-admin/serviceaccounts/details//keys.\n\nThe schema is identical to the JSON that GCP outputs.", - "allOf": [ - { - "$ref": "#/components/schemas/GcpKey" - } - ] - }, - "bucketPlan": { - "description": "This is the bucket plan that can be provided to store call artifacts in GCP.", - "allOf": [ - { - "$ref": "#/components/schemas/BucketPlan" - } - ] - } - }, - "required": [ - "provider", - "id", - "orgId", - "createdAt", - "updatedAt", - "gcpKey" - ] - }, - "GladiaCredential": { - "type": "object", - "properties": { - "provider": { - "type": "string", - "enum": [ - "gladia" - ] - }, - "apiKey": { - "type": "string", - "description": "This is not returned in the API." - }, - "id": { - "type": "string", - "description": "This is the unique identifier for the credential." - }, - "orgId": { - "type": "string", - "description": "This is the unique identifier for the org that this credential belongs to." - }, - "createdAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the credential was created." - }, - "updatedAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the assistant was last updated." - }, - "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" - ] - }, - "GoHighLevelCredential": { - "type": "object", - "properties": { - "provider": { - "type": "string", - "enum": [ - "gohighlevel" - ] - }, - "apiKey": { - "type": "string", - "description": "This is not returned in the API." - }, - "id": { - "type": "string", - "description": "This is the unique identifier for the credential." - }, - "orgId": { - "type": "string", - "description": "This is the unique identifier for the org that this credential belongs to." - }, - "createdAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the credential was created." - }, - "updatedAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the assistant was last updated." - }, - "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" - ] - }, - "GoogleCredential": { - "type": "object", - "properties": { - "provider": { - "type": "string", - "description": "This is the key for Gemini in Google AI Studio. Get it from here: https://aistudio.google.com/app/apikey", - "enum": [ - "google" - ] - }, - "apiKey": { - "type": "string", - "maxLength": 10000, - "description": "This is not returned in the API." - }, - "id": { - "type": "string", - "description": "This is the unique identifier for the credential." - }, - "orgId": { - "type": "string", - "description": "This is the unique identifier for the org that this credential belongs to." - }, - "createdAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the credential was created." - }, - "updatedAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the assistant was last updated." - }, - "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" - ] - }, - "GroqCredential": { - "type": "object", - "properties": { - "provider": { - "type": "string", - "enum": [ - "groq" - ] - }, - "apiKey": { - "type": "string", - "description": "This is not returned in the API." - }, - "id": { - "type": "string", - "description": "This is the unique identifier for the credential." - }, - "orgId": { - "type": "string", - "description": "This is the unique identifier for the org that this credential belongs to." - }, - "createdAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the credential was created." - }, - "updatedAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the assistant was last updated." - }, - "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" - ] - }, - "InflectionAICredential": { - "type": "object", - "properties": { - "provider": { - "type": "string", - "description": "This is the api key for Pi in InflectionAI's console. Get it from here: https://developers.inflection.ai/keys, billing will need to be setup", - "enum": [ - "inflection-ai" - ] - }, - "apiKey": { - "type": "string", - "maxLength": 10000, - "description": "This is not returned in the API." - }, - "id": { - "type": "string", - "description": "This is the unique identifier for the credential." - }, - "orgId": { - "type": "string", - "description": "This is the unique identifier for the org that this credential belongs to." - }, - "createdAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the credential was created." - }, - "updatedAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the assistant was last updated." - }, - "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" - ] - }, - "LangfuseCredential": { - "type": "object", - "properties": { - "provider": { - "type": "string", - "enum": [ - "langfuse" - ] - }, - "publicKey": { - "type": "string", - "description": "The public key for Langfuse project. Eg: pk-lf-..." - }, - "apiKey": { - "type": "string", - "description": "The secret key for Langfuse project. Eg: sk-lf-... .This is not returned in the API." - }, - "apiUrl": { - "type": "string", - "description": "The host URL for Langfuse project. Eg: https://cloud.langfuse.com" - }, - "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", - "publicKey", - "apiKey", - "apiUrl", - "id", - "orgId", - "createdAt", - "updatedAt" - ] - }, - "LmntCredential": { - "type": "object", - "properties": { - "provider": { - "type": "string", - "enum": [ - "lmnt" - ] - }, - "apiKey": { - "type": "string", - "description": "This is not returned in the API." - }, - "id": { - "type": "string", - "description": "This is the unique identifier for the credential." - }, - "orgId": { - "type": "string", - "description": "This is the unique identifier for the org that this credential belongs to." - }, - "createdAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the credential was created." - }, - "updatedAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the assistant was last updated." - }, "name": { "type": "string", - "description": "This is the name of credential. This is just for your reference.", - "minLength": 1, - "maxLength": 40 + "description": "The name of the tool, fixed to 'bash'", + "default": "bash", + "enum": [ + "bash" + ] } - }, - "required": [ - "provider", - "apiKey", - "id", - "orgId", - "createdAt", - "updatedAt" - ] + } }, - "MakeCredential": { + "UpdateComputerToolDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "make" - ] + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false }, - "teamId": { - "type": "string", - "description": "Team ID" + "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" + } + ] + } }, - "region": { + "subType": { "type": "string", - "description": "Region of your application. For example: eu1, eu2, us1, us2" + "enum": [ + "computer_20241022" + ], + "description": "The sub type of tool." }, - "apiKey": { - "type": "string", - "description": "This is not returned in the API." + "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" + } + ] }, - "id": { - "type": "string", - "description": "This is the unique identifier for the credential." + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] }, - "orgId": { + "name": { "type": "string", - "description": "This is the unique identifier for the org that this credential belongs to." + "description": "The name of the tool, fixed to 'computer'", + "default": "computer", + "enum": [ + "computer" + ] }, - "createdAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the credential was created." + "displayWidthPx": { + "type": "number", + "description": "The display width in pixels" }, - "updatedAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the assistant was last updated." + "displayHeightPx": { + "type": "number", + "description": "The display height in pixels" }, - "name": { - "type": "string", - "description": "This is the name of credential. This is just for your reference.", - "minLength": 1, - "maxLength": 40 + "displayNumber": { + "type": "number", + "description": "Optional display number" } - }, - "required": [ - "provider", - "teamId", - "region", - "apiKey", - "id", - "orgId", - "createdAt", - "updatedAt" - ] + } }, - "OpenAICredential": { + "UpdateTextEditorToolDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "openai" - ] - }, - "apiKey": { - "type": "string", - "description": "This is not returned in the API." + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false }, - "id": { - "type": "string", - "description": "This is the unique identifier for the credential." + "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" + } + ] + } }, - "orgId": { + "subType": { "type": "string", - "description": "This is the unique identifier for the org that this credential belongs to." + "enum": [ + "text_editor_20241022" + ], + "description": "The sub type of tool." }, - "createdAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the credential was created." + "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" + } + ] }, - "updatedAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the assistant was last updated." + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] }, "name": { "type": "string", - "description": "This is the name of credential. This is just for your reference.", - "minLength": 1, - "maxLength": 40 + "description": "The name of the tool, fixed to 'str_replace_editor'", + "default": "str_replace_editor", + "enum": [ + "str_replace_editor" + ] + } + } + }, + "CreateFileDTO": { + "type": "object", + "properties": { + "file": { + "type": "string", + "description": "This is the File you want to upload for use with the Knowledge Base.", + "format": "binary" } }, "required": [ - "provider", - "apiKey", - "id", - "orgId", - "createdAt", - "updatedAt" + "file" ] }, - "OpenRouterCredential": { + "File": { "type": "object", "properties": { - "provider": { + "object": { "type": "string", "enum": [ - "openrouter" + "file" ] }, - "apiKey": { - "type": "string", - "description": "This is not returned in the API." + "status": { + "enum": [ + "indexed", + "not_indexed" + ], + "type": "string" + }, + "name": { + "type": "string", + "description": "This is the name of the file. This is just for your own reference.", + "maxLength": 40 + }, + "originalName": { + "type": "string" + }, + "bytes": { + "type": "number" + }, + "purpose": { + "type": "string" + }, + "mimetype": { + "type": "string" + }, + "key": { + "type": "string" + }, + "path": { + "type": "string" + }, + "bucket": { + "type": "string" + }, + "url": { + "type": "string" + }, + "metadata": { + "type": "object" }, "id": { "type": "string", - "description": "This is the unique identifier for the credential." + "description": "This is the unique identifier for the file." }, "orgId": { "type": "string", - "description": "This is the unique identifier for the org that this credential belongs to." + "description": "This is the unique identifier for the org that this file belongs to." }, "createdAt": { "format": "date-time", "type": "string", - "description": "This is the ISO 8601 date-time string of when the credential was created." + "description": "This is the ISO 8601 date-time string of when the file 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 + "description": "This is the ISO 8601 date-time string of when the file was last updated." } }, "required": [ - "provider", - "apiKey", "id", "orgId", "createdAt", "updatedAt" ] }, - "PerplexityAICredential": { + "UpdateFileDTO": { "type": "object", "properties": { - "provider": { + "name": { "type": "string", - "enum": [ - "perplexity-ai" - ] + "description": "This is the name of the file. This is just for your own reference.", + "minLength": 1, + "maxLength": 40 + } + } + }, + "Metrics": { + "type": "object", + "properties": { + "orgId": { + "type": "string" }, - "apiKey": { - "type": "string", - "description": "This is not returned in the API." + "rangeStart": { + "type": "string" }, - "id": { - "type": "string", - "description": "This is the unique identifier for the credential." + "rangeEnd": { + "type": "string" }, - "orgId": { - "type": "string", - "description": "This is the unique identifier for the org that this credential belongs to." + "bill": { + "type": "number" }, - "createdAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the credential was created." + "billWithinBillingLimit": { + "type": "boolean" }, - "updatedAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the assistant was last updated." + "billDailyBreakdown": { + "type": "object" }, - "name": { - "type": "string", - "description": "This is the name of credential. This is just for your reference.", - "minLength": 1, - "maxLength": 40 + "callActive": { + "type": "number" + }, + "callActiveWithinConcurrencyLimit": { + "type": "boolean" + }, + "callMinutes": { + "type": "number" + }, + "callMinutesDailyBreakdown": { + "type": "object" + }, + "callMinutesAverage": { + "type": "number" + }, + "callMinutesAverageDailyBreakdown": { + "type": "object" + }, + "callCount": { + "type": "number" + }, + "callCountDailyBreakdown": { + "type": "object" } }, "required": [ - "provider", - "apiKey", - "id", "orgId", - "createdAt", - "updatedAt" + "rangeStart", + "rangeEnd", + "bill", + "billWithinBillingLimit", + "billDailyBreakdown", + "callActive", + "callActiveWithinConcurrencyLimit", + "callMinutes", + "callMinutesDailyBreakdown", + "callMinutesAverage", + "callMinutesAverageDailyBreakdown", + "callCount", + "callCountDailyBreakdown" ] }, - "PlayHTCredential": { + "TimeRange": { "type": "object", "properties": { - "provider": { + "step": { "type": "string", + "description": "This is the time step for aggregations.\n\nIf not provided, defaults to returning for the entire time range.", "enum": [ - "playht" + "minute", + "hour", + "day", + "week", + "month", + "quarter", + "year", + "decade", + "century", + "millennium" ] }, - "apiKey": { + "start": { + "format": "date-time", "type": "string", - "description": "This is not returned in the API." + "description": "This is the start date for the time range.\n\nIf not provided, defaults to the 7 days ago." }, - "id": { + "end": { + "format": "date-time", "type": "string", - "description": "This is the unique identifier for the credential." + "description": "This is the end date for the time range.\n\nIf not provided, defaults to now." }, - "orgId": { + "timezone": { "type": "string", - "description": "This is the unique identifier for the org that this credential belongs to." + "description": "This is the timezone you want to set for the query.\n\nIf not provided, defaults to UTC." + } + } + }, + "AnalyticsOperation": { + "type": "object", + "properties": { + "operation": { + "type": "string", + "description": "This is the aggregation operation you want to perform.", + "enum": [ + "sum", + "avg", + "count", + "min", + "max" + ] }, - "createdAt": { - "format": "date-time", + "column": { "type": "string", - "description": "This is the ISO 8601 date-time string of when the credential was created." + "description": "This is the columns you want to perform the aggregation operation on.", + "enum": [ + "id", + "cost", + "costBreakdown.llm", + "costBreakdown.stt", + "costBreakdown.tts", + "costBreakdown.vapi", + "costBreakdown.ttsCharacters", + "costBreakdown.llmPromptTokens", + "costBreakdown.llmCompletionTokens", + "duration" + ] }, - "updatedAt": { - "format": "date-time", + "alias": { "type": "string", - "description": "This is the ISO 8601 date-time string of when the assistant was last updated." + "description": "This is the alias for column name returned. Defaults to `${operation}${column}`.", + "maxLength": 40 + } + }, + "required": [ + "operation", + "column" + ] + }, + "AnalyticsQuery": { + "type": "object", + "properties": { + "table": { + "type": "string", + "description": "This is the table you want to query.", + "enum": [ + "call" + ] + }, + "groupBy": { + "type": "array", + "description": "This is the list of columns you want to group by.", + "enum": [ + "type", + "assistantId", + "endedReason", + "analysis.successEvaluation", + "status" + ], + "items": { + "type": "string", + "enum": [ + "type", + "assistantId", + "endedReason", + "analysis.successEvaluation", + "status" + ] + } }, "name": { "type": "string", - "description": "This is the name of credential. This is just for your reference.", - "minLength": 1, + "description": "This is the name of the query. This will be used to identify the query in the response.", "maxLength": 40 }, - "userId": { - "type": "string" + "timeRange": { + "description": "This is the time range for the query.", + "allOf": [ + { + "$ref": "#/components/schemas/TimeRange" + } + ] + }, + "operations": { + "description": "This is the list of operations you want to perform.", + "type": "array", + "items": { + "$ref": "#/components/schemas/AnalyticsOperation" + } + } + }, + "required": [ + "table", + "name", + "operations" + ] + }, + "AnalyticsQueryDTO": { + "type": "object", + "properties": { + "queries": { + "description": "This is the list of metric queries you want to perform.", + "type": "array", + "items": { + "$ref": "#/components/schemas/AnalyticsQuery" + } } }, "required": [ - "provider", - "apiKey", - "id", - "orgId", - "createdAt", - "updatedAt", - "userId" + "queries" ] }, - "RimeAICredential": { + "AnalyticsQueryResult": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "rime-ai" - ] - }, - "apiKey": { - "type": "string", - "description": "This is not returned in the API." - }, - "id": { - "type": "string", - "description": "This is the unique identifier for the credential." - }, - "orgId": { - "type": "string", - "description": "This is the unique identifier for the org that this credential belongs to." - }, - "createdAt": { - "format": "date-time", + "name": { "type": "string", - "description": "This is the ISO 8601 date-time string of when the credential was created." + "description": "This is the unique key for the query." }, - "updatedAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the assistant was last updated." + "timeRange": { + "description": "This is the time range for the query.", + "allOf": [ + { + "$ref": "#/components/schemas/TimeRange" + } + ] }, - "name": { - "type": "string", - "description": "This is the name of credential. This is just for your reference.", - "minLength": 1, - "maxLength": 40 + "result": { + "description": "This is the result of the query, a list of unique groups with result of their aggregations.\n\nExample:\n\"result\": [\n { \"date\": \"2023-01-01\", \"assistantId\": \"123\", \"endedReason\": \"customer-ended-call\", \"sumDuration\": 120, \"avgCost\": 10.5 },\n { \"date\": \"2023-01-02\", \"assistantId\": \"123\", \"endedReason\": \"customer-did-not-give-microphone-permission\", \"sumDuration\": 0, \"avgCost\": 0 },\n // Additional results\n]", + "type": "array", + "items": { + "type": "object" + } } }, "required": [ - "provider", - "apiKey", - "id", - "orgId", - "createdAt", - "updatedAt" + "name", + "timeRange", + "result" ] }, - "RunpodCredential": { + "CallLogPrivileged": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "runpod" - ] - }, - "apiKey": { - "type": "string", - "description": "This is not returned in the API." - }, - "id": { + "callId": { "type": "string", - "description": "This is the unique identifier for the credential." + "description": "This is the unique identifier for the call." }, "orgId": { "type": "string", - "description": "This is the unique identifier for the org that this credential belongs to." + "description": "This is the unique identifier for the org that this call log belongs to." }, - "createdAt": { - "format": "date-time", + "log": { "type": "string", - "description": "This is the ISO 8601 date-time string of when the credential was created." + "description": "This is the log message associated with the call." }, - "updatedAt": { - "format": "date-time", + "level": { "type": "string", - "description": "This is the ISO 8601 date-time string of when the assistant was last updated." + "description": "This is the level of the log message.", + "enum": [ + "INFO", + "LOG", + "WARN", + "ERROR", + "CHECKPOINT" + ] }, - "name": { + "time": { + "format": "date-time", "type": "string", - "description": "This is the name of credential. This is just for your reference.", - "minLength": 1, - "maxLength": 40 + "description": "This is the ISO 8601 date-time string of when the log was created." } }, "required": [ - "provider", - "apiKey", - "id", + "callId", "orgId", - "createdAt", - "updatedAt" + "log", + "level", + "time" ] }, - "S3Credential": { + "CallLogsPaginatedResponse": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "s3" - ], - "description": "Credential provider. Only allowed value is s3" + "results": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CallLogPrivileged" + } }, - "awsAccessKeyId": { + "metadata": { + "$ref": "#/components/schemas/PaginationMeta" + } + }, + "required": [ + "results", + "metadata" + ] + }, + "Error": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + }, + "required": [ + "message" + ] + }, + "Log": { + "type": "object", + "properties": { + "time": { "type": "string", - "description": "AWS access key ID." + "description": "This is the timestamp at which the log was written." }, - "awsSecretAccessKey": { + "orgId": { "type": "string", - "description": "AWS access key secret. This is not returned in the API." + "description": "This is the unique identifier for the org that this log belongs to." }, - "region": { + "type": { "type": "string", - "description": "AWS region in which the S3 bucket is located." + "description": "This is the type of the log.", + "enum": [ + "API", + "Webhook", + "Call", + "Provider" + ] }, - "s3BucketName": { + "webhookType": { "type": "string", - "description": "AWS S3 bucket name." + "description": "This is the type of the webhook, given the log is from a webhook." }, - "s3PathPrefix": { + "resource": { "type": "string", - "description": "The path prefix for the uploaded recording. Ex. \"recordings/\"" + "description": "This is the specific resource, relevant only to API logs.", + "enum": [ + "org", + "assistant", + "analytics", + "credential", + "phone-number", + "block", + "voice-library", + "provider", + "tool", + "token", + "template", + "squad", + "call", + "file", + "metric", + "log" + ] }, - "id": { - "type": "string", - "description": "This is the unique identifier for the credential." + "requestDurationSeconds": { + "type": "number", + "description": "'This is how long the request took.", + "minimum": 0 }, - "orgId": { + "requestStartedAt": { "type": "string", - "description": "This is the unique identifier for the org that this credential belongs to." + "description": "This is the timestamp at which the request began." }, - "createdAt": { - "format": "date-time", + "requestFinishedAt": { "type": "string", - "description": "This is the ISO 8601 date-time string of when the credential was created." + "description": "This is the timestamp at which the request finished." }, - "updatedAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the assistant was last updated." + "requestBody": { + "type": "object", + "description": "This is the body of the request." }, - "name": { - "type": "string", - "description": "This is the name of credential. This is just for your reference.", - "minLength": 1, - "maxLength": 40 - } - }, - "required": [ - "provider", - "awsAccessKeyId", - "awsSecretAccessKey", - "region", - "s3BucketName", - "s3PathPrefix", - "id", - "orgId", - "createdAt", - "updatedAt" - ] - }, - "TavusCredential": { - "type": "object", - "properties": { - "provider": { + "requestHttpMethod": { "type": "string", + "description": "This is the request method.", "enum": [ - "tavus" - ] - }, - "apiKey": { - "type": "string", - "description": "This is not returned in the API." + "POST", + "GET", + "PUT", + "PATCH", + "DELETE" + ] }, - "id": { + "requestUrl": { "type": "string", - "description": "This is the unique identifier for the credential." + "description": "This is the request URL." }, - "orgId": { + "requestPath": { "type": "string", - "description": "This is the unique identifier for the org that this credential belongs to." + "description": "This is the request path." }, - "createdAt": { - "format": "date-time", + "requestQuery": { "type": "string", - "description": "This is the ISO 8601 date-time string of when the credential was created." + "description": "This is the request query." }, - "updatedAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the assistant was last updated." + "responseHttpCode": { + "type": "number", + "description": "This the HTTP status code of the response." }, - "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" - ] - }, - "TogetherAICredential": { - "type": "object", - "properties": { - "provider": { + "requestIpAddress": { "type": "string", - "enum": [ - "together-ai" - ] + "description": "This is the request IP address." }, - "apiKey": { + "requestOrigin": { "type": "string", - "description": "This is not returned in the API." + "description": "This is the origin of the request" }, - "id": { + "responseBody": { + "type": "object", + "description": "This is the body of the response." + }, + "requestHeaders": { + "type": "object", + "description": "These are the headers of the request." + }, + "error": { + "description": "This is the error, if one occurred.", + "allOf": [ + { + "$ref": "#/components/schemas/Error" + } + ] + }, + "assistantId": { "type": "string", - "description": "This is the unique identifier for the credential." + "description": "This is the ID of the assistant." }, - "orgId": { + "phoneNumberId": { "type": "string", - "description": "This is the unique identifier for the org that this credential belongs to." + "description": "This is the ID of the phone number." }, - "createdAt": { - "format": "date-time", + "customerId": { "type": "string", - "description": "This is the ISO 8601 date-time string of when the credential was created." + "description": "This is the ID of the customer." }, - "updatedAt": { - "format": "date-time", + "squadId": { "type": "string", - "description": "This is the ISO 8601 date-time string of when the assistant was last updated." + "description": "This is the ID of the squad." }, - "name": { + "callId": { "type": "string", - "description": "This is the name of credential. This is just for your reference.", - "minLength": 1, - "maxLength": 40 + "description": "This is the ID of the call." } }, "required": [ - "provider", - "apiKey", - "id", + "time", "orgId", - "createdAt", - "updatedAt" + "type", + "requestDurationSeconds", + "requestStartedAt", + "requestFinishedAt", + "requestBody", + "requestHttpMethod", + "requestUrl", + "requestPath", + "responseHttpCode" ] }, - "TwilioCredential": { + "LogsPaginatedResponse": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "twilio" - ] - }, - "authToken": { - "type": "string", - "description": "This is not returned in the API." - }, - "id": { - "type": "string", - "description": "This is the unique identifier for the credential." - }, - "orgId": { - "type": "string", - "description": "This is the unique identifier for the org that this credential belongs to." - }, - "createdAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the credential was created." - }, - "updatedAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the assistant was last updated." - }, - "name": { - "type": "string", - "description": "This is the name of credential. This is just for your reference.", - "minLength": 1, - "maxLength": 40 + "results": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Log" + } }, - "accountSid": { - "type": "string" + "metadata": { + "$ref": "#/components/schemas/PaginationMeta" } }, "required": [ - "provider", - "authToken", - "id", - "orgId", - "createdAt", - "updatedAt", - "accountSid" + "results", + "metadata" ] }, - "VonageCredential": { + "ChatDTO": { "type": "object", "properties": { - "vonageApplicationPrivateKey": { - "type": "string", - "description": "This is not returned in the API.", - "maxLength": 10000 - }, - "provider": { - "type": "string", - "enum": [ - "vonage" - ] - }, - "apiSecret": { - "type": "string", - "description": "This is not returned in the API." - }, - "id": { - "type": "string", - "description": "This is the unique identifier for the credential." - }, - "orgId": { - "type": "string", - "description": "This is the unique identifier for the org that this credential belongs to." - }, - "createdAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the credential was created." - }, - "updatedAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the assistant was last updated." + "messages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAIMessage" + } }, - "vonageApplicationId": { - "type": "string", - "description": "This is the Vonage Application ID for the credential.\n\nOnly relevant for Vonage credentials.", - "maxLength": 10000 + "assistantId": { + "type": "string" }, - "name": { - "type": "string", - "description": "This is the name of credential. This is just for your reference.", - "minLength": 1, - "maxLength": 40 + "assistant": { + "$ref": "#/components/schemas/CreateAssistantDTO" }, - "apiKey": { - "type": "string" + "assistantOverrides": { + "$ref": "#/components/schemas/AssistantOverrides" } }, "required": [ - "vonageApplicationPrivateKey", - "provider", - "apiSecret", - "id", - "orgId", - "createdAt", - "updatedAt", - "vonageApplicationId", - "apiKey" + "messages" ] }, - "WebhookCredential": { + "ChatServiceResponse": { + "type": "object", + "properties": {} + }, + "AnthropicCredential": { "type": "object", "properties": { "provider": { "type": "string", "enum": [ - "webhook" + "anthropic" ] }, - "authenticationPlan": { - "description": "This is the authentication plan. Currently supports OAuth2 RFC 6749.", - "allOf": [ - { - "$ref": "#/components/schemas/OAuth2AuthenticationPlan" - } - ] + "apiKey": { + "type": "string", + "maxLength": 10000, + "description": "This is not returned in the API." }, "id": { "type": "string", @@ -19288,14 +18883,6 @@ "type": "string", "description": "This is the ISO 8601 date-time string of when the assistant was last updated." }, - "authenticationSession": { - "description": "This is the authentication session for the credential. Available for credentials that have an authentication plan.", - "allOf": [ - { - "$ref": "#/components/schemas/Oauth2AuthenticationSession" - } - ] - }, "name": { "type": "string", "description": "This is the name of credential. This is just for your reference.", @@ -19305,22 +18892,20 @@ }, "required": [ "provider", - "authenticationPlan", + "apiKey", "id", "orgId", "createdAt", - "updatedAt", - "authenticationSession" + "updatedAt" ] }, - "XAiCredential": { + "AnyscaleCredential": { "type": "object", "properties": { "provider": { "type": "string", - "description": "This is the api key for Grok in XAi's console. Get it from here: https://console.x.ai", "enum": [ - "xai" + "anyscale" ] }, "apiKey": { @@ -19362,70 +18947,36 @@ "updatedAt" ] }, - "CreateAnthropicCredentialDTO": { + "AssemblyAICredential": { "type": "object", "properties": { "provider": { "type": "string", "enum": [ - "anthropic" + "assembly-ai" ] }, "apiKey": { "type": "string", - "maxLength": 10000, "description": "This is not returned in the API." }, - "name": { - "type": "string", - "description": "This is the name of credential. This is just for your reference.", - "minLength": 1, - "maxLength": 40 - } - }, - "required": [ - "provider", - "apiKey" - ] - }, - "CreateAnyscaleCredentialDTO": { - "type": "object", - "properties": { - "provider": { + "id": { "type": "string", - "enum": [ - "anyscale" - ] + "description": "This is the unique identifier for the credential." }, - "apiKey": { + "orgId": { "type": "string", - "maxLength": 10000, - "description": "This is not returned in the API." + "description": "This is the unique identifier for the org that this credential belongs to." }, - "name": { - "type": "string", - "description": "This is the name of credential. This is just for your reference.", - "minLength": 1, - "maxLength": 40 - } - }, - "required": [ - "provider", - "apiKey" - ] - }, - "CreateAssemblyAICredentialDTO": { - "type": "object", - "properties": { - "provider": { + "createdAt": { + "format": "date-time", "type": "string", - "enum": [ - "assembly-ai" - ] + "description": "This is the ISO 8601 date-time string of when the credential was created." }, - "apiKey": { + "updatedAt": { + "format": "date-time", "type": "string", - "description": "This is not returned in the API." + "description": "This is the ISO 8601 date-time string of when the assistant was last updated." }, "name": { "type": "string", @@ -19436,10 +18987,14 @@ }, "required": [ "provider", - "apiKey" + "apiKey", + "id", + "orgId", + "createdAt", + "updatedAt" ] }, - "CreateAzureCredentialDTO": { + "AzureCredential": { "type": "object", "properties": { "provider": { @@ -19484,6 +19039,30 @@ "description": "This is not returned in the API.", "maxLength": 10000 }, + "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 + }, "bucketPlan": { "description": "This is the bucket plan that can be provided to store call artifacts in Azure Blob Storage.", "allOf": [ @@ -19491,20 +19070,18 @@ "$ref": "#/components/schemas/AzureBlobStorageBucketPlan" } ] - }, - "name": { - "type": "string", - "description": "This is the name of credential. This is just for your reference.", - "minLength": 1, - "maxLength": 40 } }, "required": [ "provider", - "service" + "service", + "id", + "orgId", + "createdAt", + "updatedAt" ] }, - "CreateAzureOpenAICredentialDTO": { + "AzureOpenAICredential": { "type": "object", "properties": { "provider": { @@ -19575,9 +19152,157 @@ "type": "string", "description": "This is not returned in the API." }, - "openAIEndpoint": { + "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 + }, + "openAIEndpoint": { + "type": "string", + "maxLength": 10000 + } + }, + "required": [ + "provider", + "region", + "models", + "openAIKey", + "id", + "orgId", + "createdAt", + "updatedAt", + "openAIEndpoint" + ] + }, + "ByoSipTrunkCredential": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "description": "This can be used to bring your own SIP trunks or to connect to a Carrier.", + "enum": [ + "byo-sip-trunk" + ] + }, + "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 + }, + "gateways": { + "description": "This is the list of SIP trunk's gateways.", + "type": "array", + "items": { + "$ref": "#/components/schemas/SipTrunkGateway" + } + }, + "outboundAuthenticationPlan": { + "description": "This can be used to configure the outbound authentication if required by the SIP trunk.", + "allOf": [ + { + "$ref": "#/components/schemas/SipTrunkOutboundAuthenticationPlan" + } + ] + }, + "outboundLeadingPlusEnabled": { + "type": "boolean", + "description": "This ensures the outbound origination attempts have a leading plus. Defaults to false to match conventional telecom behavior.\n\nUsage:\n- Vonage/Twilio requires leading plus for all outbound calls. Set this to true.\n\n@default false" + }, + "techPrefix": { + "type": "string", + "description": "This can be used to configure the tech prefix on outbound calls. This is an advanced property.", + "maxLength": 10000 + }, + "sipDiversionHeader": { + "type": "string", + "description": "This can be used to enable the SIP diversion header for authenticating the calling number if the SIP trunk supports it. This is an advanced property.", + "maxLength": 10000 + }, + "sbcConfiguration": { + "description": "This is an advanced configuration for enterprise deployments. This uses the onprem SBC to trunk into the SIP trunk's `gateways`, rather than the managed SBC provided by Vapi.", + "allOf": [ + { + "$ref": "#/components/schemas/SbcConfiguration" + } + ] + } + }, + "required": [ + "id", + "orgId", + "createdAt", + "updatedAt", + "gateways" + ] + }, + "CartesiaCredential": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "cartesia" + ] + }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + }, + "id": { + "type": "string", + "description": "This is the unique identifier for the credential." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the org that this credential belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the credential was created." + }, + "updatedAt": { + "format": "date-time", "type": "string", - "maxLength": 10000 + "description": "This is the ISO 8601 date-time string of when the assistant was last updated." }, "name": { "type": "string", @@ -19588,58 +19313,44 @@ }, "required": [ "provider", - "region", - "models", - "openAIKey", - "openAIEndpoint" + "apiKey", + "id", + "orgId", + "createdAt", + "updatedAt" ] }, - "CreateByoSipTrunkCredentialDTO": { + "CerebrasCredential": { "type": "object", "properties": { "provider": { "type": "string", - "description": "This can be used to bring your own SIP trunks or to connect to a Carrier.", "enum": [ - "byo-sip-trunk" + "cerebras" ] }, - "gateways": { - "description": "This is the list of SIP trunk's gateways.", - "type": "array", - "items": { - "$ref": "#/components/schemas/SipTrunkGateway" - } - }, - "outboundAuthenticationPlan": { - "description": "This can be used to configure the outbound authentication if required by the SIP trunk.", - "allOf": [ - { - "$ref": "#/components/schemas/SipTrunkOutboundAuthenticationPlan" - } - ] + "apiKey": { + "type": "string", + "maxLength": 10000, + "description": "This is not returned in the API." }, - "outboundLeadingPlusEnabled": { - "type": "boolean", - "description": "This ensures the outbound origination attempts have a leading plus. Defaults to false to match conventional telecom behavior.\n\nUsage:\n- Vonage/Twilio requires leading plus for all outbound calls. Set this to true.\n\n@default false" + "id": { + "type": "string", + "description": "This is the unique identifier for the credential." }, - "techPrefix": { + "orgId": { "type": "string", - "description": "This can be used to configure the tech prefix on outbound calls. This is an advanced property.", - "maxLength": 10000 + "description": "This is the unique identifier for the org that this credential belongs to." }, - "sipDiversionHeader": { + "createdAt": { + "format": "date-time", "type": "string", - "description": "This can be used to enable the SIP diversion header for authenticating the calling number if the SIP trunk supports it. This is an advanced property.", - "maxLength": 10000 + "description": "This is the ISO 8601 date-time string of when the credential was created." }, - "sbcConfiguration": { - "description": "This is an advanced configuration for enterprise deployments. This uses the onprem SBC to trunk into the SIP trunk's `gateways`, rather than the managed SBC provided by Vapi.", - "allOf": [ - { - "$ref": "#/components/schemas/SbcConfiguration" - } - ] + "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", @@ -19649,35 +19360,92 @@ } }, "required": [ - "gateways" + "provider", + "apiKey", + "id", + "orgId", + "createdAt", + "updatedAt" ] }, - "CreateCartesiaCredentialDTO": { + "CloudflareCredential": { "type": "object", "properties": { "provider": { "type": "string", "enum": [ - "cartesia" - ] + "cloudflare" + ], + "description": "Credential provider. Only allowed value is cloudflare" + }, + "accountId": { + "type": "string", + "description": "Cloudflare Account Id." }, "apiKey": { "type": "string", - "description": "This is not returned in the API." + "description": "Cloudflare API Key / Token." + }, + "accountEmail": { + "type": "string", + "description": "Cloudflare Account Email." + }, + "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 + }, + "bucketPlan": { + "description": "This is the bucket plan that can be provided to store call artifacts in R2", + "allOf": [ + { + "$ref": "#/components/schemas/CloudflareR2BucketPlan" + } + ] } }, "required": [ "provider", - "apiKey" + "id", + "orgId", + "createdAt", + "updatedAt" ] }, - "CreateCustomLLMCredentialDTO": { + "Oauth2AuthenticationSession": { + "type": "object", + "properties": { + "accessToken": { + "type": "string", + "description": "This is the OAuth2 access token." + }, + "expiresAt": { + "format": "date-time", + "type": "string", + "description": "This is the OAuth2 access token expiration." + } + } + }, + "CustomLLMCredential": { "type": "object", "properties": { "provider": { @@ -19699,6 +19467,32 @@ } ] }, + "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." + }, + "authenticationSession": { + "description": "This is the authentication session for the credential. Available for credentials that have an authentication plan.", + "allOf": [ + { + "$ref": "#/components/schemas/Oauth2AuthenticationSession" + } + ] + }, "name": { "type": "string", "description": "This is the name of credential. This is just for your reference.", @@ -19708,10 +19502,14 @@ }, "required": [ "provider", - "apiKey" + "apiKey", + "id", + "orgId", + "createdAt", + "updatedAt" ] }, - "CreateDeepgramCredentialDTO": { + "DeepgramCredential": { "type": "object", "properties": { "provider": { @@ -19724,9 +19522,74 @@ "type": "string", "description": "This is not returned in the API." }, + "id": { + "type": "string", + "description": "This is the unique identifier for the credential." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the org that this credential belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the credential was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the assistant was last updated." + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + }, "apiUrl": { "type": "string", "description": "This can be used to point to an onprem Deepgram instance. Defaults to api.deepgram.com." + } + }, + "required": [ + "provider", + "apiKey", + "id", + "orgId", + "createdAt", + "updatedAt" + ] + }, + "DeepInfraCredential": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "deepinfra" + ] + }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + }, + "id": { + "type": "string", + "description": "This is the unique identifier for the credential." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the org that this credential belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the credential was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the assistant was last updated." }, "name": { "type": "string", @@ -19737,21 +19600,43 @@ }, "required": [ "provider", - "apiKey" + "apiKey", + "id", + "orgId", + "createdAt", + "updatedAt" ] }, - "CreateDeepInfraCredentialDTO": { + "DeepSeekCredential": { "type": "object", "properties": { "provider": { "type": "string", - "enum": [ - "deepinfra" - ] + "enum": [ + "deep-seek" + ] + }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + }, + "id": { + "type": "string", + "description": "This is the unique identifier for the credential." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the org that this credential belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the credential was created." }, - "apiKey": { + "updatedAt": { + "format": "date-time", "type": "string", - "description": "This is not returned in the API." + "description": "This is the ISO 8601 date-time string of when the assistant was last updated." }, "name": { "type": "string", @@ -19762,10 +19647,14 @@ }, "required": [ "provider", - "apiKey" + "apiKey", + "id", + "orgId", + "createdAt", + "updatedAt" ] }, - "CreateElevenLabsCredentialDTO": { + "ElevenLabsCredential": { "type": "object", "properties": { "provider": { @@ -19779,6 +19668,24 @@ "maxLength": 10000, "description": "This is not returned in the API." }, + "id": { + "type": "string", + "description": "This is the unique identifier for the credential." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the org that this credential belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the credential was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the assistant was last updated." + }, "name": { "type": "string", "description": "This is the name of credential. This is just for your reference.", @@ -19788,10 +19695,14 @@ }, "required": [ "provider", - "apiKey" + "apiKey", + "id", + "orgId", + "createdAt", + "updatedAt" ] }, - "CreateGcpCredentialDTO": { + "GcpCredential": { "type": "object", "properties": { "provider": { @@ -19800,6 +19711,30 @@ "gcp" ] }, + "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 + }, "gcpKey": { "description": "This is the GCP key. This is the JSON that can be generated in the Google Cloud Console at https://console.cloud.google.com/iam-admin/serviceaccounts/details//keys.\n\nThe schema is identical to the JSON that GCP outputs.", "allOf": [ @@ -19815,20 +19750,18 @@ "$ref": "#/components/schemas/BucketPlan" } ] - }, - "name": { - "type": "string", - "description": "This is the name of credential. This is just for your reference.", - "minLength": 1, - "maxLength": 40 } }, "required": [ "provider", + "id", + "orgId", + "createdAt", + "updatedAt", "gcpKey" ] }, - "CreateGladiaCredentialDTO": { + "GladiaCredential": { "type": "object", "properties": { "provider": { @@ -19841,6 +19774,24 @@ "type": "string", "description": "This is not returned in the API." }, + "id": { + "type": "string", + "description": "This is the unique identifier for the credential." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the org that this credential belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the credential was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the assistant was last updated." + }, "name": { "type": "string", "description": "This is the name of credential. This is just for your reference.", @@ -19850,10 +19801,14 @@ }, "required": [ "provider", - "apiKey" + "apiKey", + "id", + "orgId", + "createdAt", + "updatedAt" ] }, - "CreateGoHighLevelCredentialDTO": { + "GoHighLevelCredential": { "type": "object", "properties": { "provider": { @@ -19866,6 +19821,24 @@ "type": "string", "description": "This is not returned in the API." }, + "id": { + "type": "string", + "description": "This is the unique identifier for the credential." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the org that this credential belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the credential was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the assistant was last updated." + }, "name": { "type": "string", "description": "This is the name of credential. This is just for your reference.", @@ -19875,10 +19848,14 @@ }, "required": [ "provider", - "apiKey" + "apiKey", + "id", + "orgId", + "createdAt", + "updatedAt" ] }, - "CreateGoogleCredentialDTO": { + "GoogleCredential": { "type": "object", "properties": { "provider": { @@ -19893,6 +19870,24 @@ "maxLength": 10000, "description": "This is not returned in the API." }, + "id": { + "type": "string", + "description": "This is the unique identifier for the credential." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the org that this credential belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the credential was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the assistant was last updated." + }, "name": { "type": "string", "description": "This is the name of credential. This is just for your reference.", @@ -19902,10 +19897,14 @@ }, "required": [ "provider", - "apiKey" + "apiKey", + "id", + "orgId", + "createdAt", + "updatedAt" ] }, - "CreateGroqCredentialDTO": { + "GroqCredential": { "type": "object", "properties": { "provider": { @@ -19918,6 +19917,24 @@ "type": "string", "description": "This is not returned in the API." }, + "id": { + "type": "string", + "description": "This is the unique identifier for the credential." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the org that this credential belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the credential was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the assistant was last updated." + }, "name": { "type": "string", "description": "This is the name of credential. This is just for your reference.", @@ -19927,10 +19944,14 @@ }, "required": [ "provider", - "apiKey" + "apiKey", + "id", + "orgId", + "createdAt", + "updatedAt" ] }, - "CreateInflectionAICredentialDTO": { + "InflectionAICredential": { "type": "object", "properties": { "provider": { @@ -19945,6 +19966,24 @@ "maxLength": 10000, "description": "This is not returned in the API." }, + "id": { + "type": "string", + "description": "This is the unique identifier for the credential." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the org that this credential belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the credential was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the assistant was last updated." + }, "name": { "type": "string", "description": "This is the name of credential. This is just for your reference.", @@ -19954,10 +19993,14 @@ }, "required": [ "provider", - "apiKey" + "apiKey", + "id", + "orgId", + "createdAt", + "updatedAt" ] }, - "CreateLangfuseCredentialDTO": { + "LangfuseCredential": { "type": "object", "properties": { "provider": { @@ -19978,6 +20021,24 @@ "type": "string", "description": "The host URL for Langfuse project. Eg: https://cloud.langfuse.com" }, + "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.", @@ -19989,10 +20050,14 @@ "provider", "publicKey", "apiKey", - "apiUrl" + "apiUrl", + "id", + "orgId", + "createdAt", + "updatedAt" ] }, - "CreateLmntCredentialDTO": { + "LmntCredential": { "type": "object", "properties": { "provider": { @@ -20005,6 +20070,24 @@ "type": "string", "description": "This is not returned in the API." }, + "id": { + "type": "string", + "description": "This is the unique identifier for the credential." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the org that this credential belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the credential was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the assistant was last updated." + }, "name": { "type": "string", "description": "This is the name of credential. This is just for your reference.", @@ -20014,10 +20097,14 @@ }, "required": [ "provider", - "apiKey" + "apiKey", + "id", + "orgId", + "createdAt", + "updatedAt" ] }, - "CreateMakeCredentialDTO": { + "MakeCredential": { "type": "object", "properties": { "provider": { @@ -20038,6 +20125,24 @@ "type": "string", "description": "This is not returned in the API." }, + "id": { + "type": "string", + "description": "This is the unique identifier for the credential." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the org that this credential belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the credential was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the assistant was last updated." + }, "name": { "type": "string", "description": "This is the name of credential. This is just for your reference.", @@ -20049,10 +20154,14 @@ "provider", "teamId", "region", - "apiKey" + "apiKey", + "id", + "orgId", + "createdAt", + "updatedAt" ] }, - "CreateOpenAICredentialDTO": { + "OpenAICredential": { "type": "object", "properties": { "provider": { @@ -20065,6 +20174,24 @@ "type": "string", "description": "This is not returned in the API." }, + "id": { + "type": "string", + "description": "This is the unique identifier for the credential." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the org that this credential belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the credential was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the assistant was last updated." + }, "name": { "type": "string", "description": "This is the name of credential. This is just for your reference.", @@ -20074,10 +20201,14 @@ }, "required": [ "provider", - "apiKey" + "apiKey", + "id", + "orgId", + "createdAt", + "updatedAt" ] }, - "CreateOpenRouterCredentialDTO": { + "OpenRouterCredential": { "type": "object", "properties": { "provider": { @@ -20090,6 +20221,24 @@ "type": "string", "description": "This is not returned in the API." }, + "id": { + "type": "string", + "description": "This is the unique identifier for the credential." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the org that this credential belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the credential was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the assistant was last updated." + }, "name": { "type": "string", "description": "This is the name of credential. This is just for your reference.", @@ -20099,10 +20248,14 @@ }, "required": [ "provider", - "apiKey" + "apiKey", + "id", + "orgId", + "createdAt", + "updatedAt" ] }, - "CreatePerplexityAICredentialDTO": { + "PerplexityAICredential": { "type": "object", "properties": { "provider": { @@ -20115,6 +20268,24 @@ "type": "string", "description": "This is not returned in the API." }, + "id": { + "type": "string", + "description": "This is the unique identifier for the credential." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the org that this credential belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the credential was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the assistant was last updated." + }, "name": { "type": "string", "description": "This is the name of credential. This is just for your reference.", @@ -20124,10 +20295,14 @@ }, "required": [ "provider", - "apiKey" + "apiKey", + "id", + "orgId", + "createdAt", + "updatedAt" ] }, - "CreatePlayHTCredentialDTO": { + "PlayHTCredential": { "type": "object", "properties": { "provider": { @@ -20140,23 +20315,45 @@ "type": "string", "description": "This is not returned in the API." }, - "userId": { - "type": "string" + "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 + }, + "userId": { + "type": "string" } }, "required": [ "provider", "apiKey", + "id", + "orgId", + "createdAt", + "updatedAt", "userId" ] }, - "CreateRimeAICredentialDTO": { + "RimeAICredential": { "type": "object", "properties": { "provider": { @@ -20169,6 +20366,24 @@ "type": "string", "description": "This is not returned in the API." }, + "id": { + "type": "string", + "description": "This is the unique identifier for the credential." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the org that this credential belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the credential was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the assistant was last updated." + }, "name": { "type": "string", "description": "This is the name of credential. This is just for your reference.", @@ -20178,10 +20393,14 @@ }, "required": [ "provider", - "apiKey" + "apiKey", + "id", + "orgId", + "createdAt", + "updatedAt" ] }, - "CreateRunpodCredentialDTO": { + "RunpodCredential": { "type": "object", "properties": { "provider": { @@ -20194,6 +20413,24 @@ "type": "string", "description": "This is not returned in the API." }, + "id": { + "type": "string", + "description": "This is the unique identifier for the credential." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the org that this credential belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the credential was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the assistant was last updated." + }, "name": { "type": "string", "description": "This is the name of credential. This is just for your reference.", @@ -20203,10 +20440,14 @@ }, "required": [ "provider", - "apiKey" + "apiKey", + "id", + "orgId", + "createdAt", + "updatedAt" ] }, - "CreateS3CredentialDTO": { + "S3Credential": { "type": "object", "properties": { "provider": { @@ -20230,11 +20471,80 @@ }, "s3BucketName": { "type": "string", - "description": "AWS S3 bucket name." + "description": "AWS S3 bucket name." + }, + "s3PathPrefix": { + "type": "string", + "description": "The path prefix for the uploaded recording. Ex. \"recordings/\"" + }, + "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", + "awsAccessKeyId", + "awsSecretAccessKey", + "region", + "s3BucketName", + "s3PathPrefix", + "id", + "orgId", + "createdAt", + "updatedAt" + ] + }, + "SmallestAICredential": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "smallest-ai" + ] + }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + }, + "id": { + "type": "string", + "description": "This is the unique identifier for the credential." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the org that this credential belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the credential was created." }, - "s3PathPrefix": { + "updatedAt": { + "format": "date-time", "type": "string", - "description": "The path prefix for the uploaded recording. Ex. \"recordings/\"" + "description": "This is the ISO 8601 date-time string of when the assistant was last updated." }, "name": { "type": "string", @@ -20245,14 +20555,14 @@ }, "required": [ "provider", - "awsAccessKeyId", - "awsSecretAccessKey", - "region", - "s3BucketName", - "s3PathPrefix" + "apiKey", + "id", + "orgId", + "createdAt", + "updatedAt" ] }, - "CreateTavusCredentialDTO": { + "TavusCredential": { "type": "object", "properties": { "provider": { @@ -20265,6 +20575,24 @@ "type": "string", "description": "This is not returned in the API." }, + "id": { + "type": "string", + "description": "This is the unique identifier for the credential." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the org that this credential belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the credential was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the assistant was last updated." + }, "name": { "type": "string", "description": "This is the name of credential. This is just for your reference.", @@ -20274,10 +20602,14 @@ }, "required": [ "provider", - "apiKey" + "apiKey", + "id", + "orgId", + "createdAt", + "updatedAt" ] }, - "CreateTogetherAICredentialDTO": { + "TogetherAICredential": { "type": "object", "properties": { "provider": { @@ -20290,6 +20622,24 @@ "type": "string", "description": "This is not returned in the API." }, + "id": { + "type": "string", + "description": "This is the unique identifier for the credential." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the org that this credential belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the credential was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the assistant was last updated." + }, "name": { "type": "string", "description": "This is the name of credential. This is just for your reference.", @@ -20299,10 +20649,14 @@ }, "required": [ "provider", - "apiKey" + "apiKey", + "id", + "orgId", + "createdAt", + "updatedAt" ] }, - "CreateTwilioCredentialDTO": { + "TwilioCredential": { "type": "object", "properties": { "provider": { @@ -20315,25 +20669,52 @@ "type": "string", "description": "This is not returned in the API." }, - "accountSid": { - "type": "string" + "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 + }, + "accountSid": { + "type": "string" } }, "required": [ "provider", "authToken", + "id", + "orgId", + "createdAt", + "updatedAt", "accountSid" ] }, - "CreateVonageCredentialDTO": { + "VonageCredential": { "type": "object", "properties": { + "vonageApplicationPrivateKey": { + "type": "string", + "description": "This is not returned in the API.", + "maxLength": 10000 + }, "provider": { "type": "string", "enum": [ @@ -20344,23 +20725,52 @@ "type": "string", "description": "This is not returned in the API." }, - "apiKey": { - "type": "string" + "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." + }, + "vonageApplicationId": { + "type": "string", + "description": "This is the Vonage Application ID for the credential.\n\nOnly relevant for Vonage credentials.", + "maxLength": 10000 }, "name": { "type": "string", "description": "This is the name of credential. This is just for your reference.", "minLength": 1, "maxLength": 40 + }, + "apiKey": { + "type": "string" } }, "required": [ + "vonageApplicationPrivateKey", "provider", "apiSecret", + "id", + "orgId", + "createdAt", + "updatedAt", + "vonageApplicationId", "apiKey" ] }, - "CreateWebhookCredentialDTO": { + "WebhookCredential": { "type": "object", "properties": { "provider": { @@ -20377,6 +20787,32 @@ } ] }, + "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." + }, + "authenticationSession": { + "description": "This is the authentication session for the credential. Available for credentials that have an authentication plan.", + "allOf": [ + { + "$ref": "#/components/schemas/Oauth2AuthenticationSession" + } + ] + }, "name": { "type": "string", "description": "This is the name of credential. This is just for your reference.", @@ -20386,10 +20822,15 @@ }, "required": [ "provider", - "authenticationPlan" + "authenticationPlan", + "id", + "orgId", + "createdAt", + "updatedAt", + "authenticationSession" ] }, - "CreateXAiCredentialDTO": { + "XAiCredential": { "type": "object", "properties": { "provider": { @@ -20404,6 +20845,24 @@ "maxLength": 10000, "description": "This is not returned in the API." }, + "id": { + "type": "string", + "description": "This is the unique identifier for the credential." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the org that this credential belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the credential was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the assistant was last updated." + }, "name": { "type": "string", "description": "This is the name of credential. This is just for your reference.", @@ -20413,16 +20872,20 @@ }, "required": [ "provider", - "apiKey" + "apiKey", + "id", + "orgId", + "createdAt", + "updatedAt" ] }, - "UpdateAnthropicCredentialDTO": { + "CreateCerebrasCredentialDTO": { "type": "object", "properties": { "provider": { "type": "string", "enum": [ - "anthropic" + "cerebras" ] }, "apiKey": { @@ -20442,13 +20905,14 @@ "apiKey" ] }, - "UpdateAnyscaleCredentialDTO": { + "CreateGoogleCredentialDTO": { "type": "object", "properties": { "provider": { "type": "string", + "description": "This is the key for Gemini in Google AI Studio. Get it from here: https://aistudio.google.com/app/apikey", "enum": [ - "anyscale" + "google" ] }, "apiKey": { @@ -20468,17 +20932,19 @@ "apiKey" ] }, - "UpdateAssemblyAICredentialDTO": { + "CreateInflectionAICredentialDTO": { "type": "object", "properties": { "provider": { "type": "string", + "description": "This is the api key for Pi in InflectionAI's console. Get it from here: https://developers.inflection.ai/keys, billing will need to be setup", "enum": [ - "assembly-ai" + "inflection-ai" ] }, "apiKey": { "type": "string", + "maxLength": 10000, "description": "This is not returned in the API." }, "name": { @@ -20493,15 +20959,56 @@ "apiKey" ] }, + "UpdateAnthropicCredentialDTO": { + "type": "object", + "properties": { + "apiKey": { + "type": "string", + "maxLength": 10000, + "description": "This is not returned in the API." + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + } + }, + "UpdateAnyscaleCredentialDTO": { + "type": "object", + "properties": { + "apiKey": { + "type": "string", + "maxLength": 10000, + "description": "This is not returned in the API." + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + } + }, + "UpdateAssemblyAICredentialDTO": { + "type": "object", + "properties": { + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + } + }, "UpdateAzureCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "azure" - ] - }, "service": { "type": "string", "description": "This is the service being used in Azure.", @@ -20538,6 +21045,12 @@ "description": "This is not returned in the API.", "maxLength": 10000 }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + }, "bucketPlan": { "description": "This is the bucket plan that can be provided to store call artifacts in Azure Blob Storage.", "allOf": [ @@ -20545,28 +21058,12 @@ "$ref": "#/components/schemas/AzureBlobStorageBucketPlan" } ] - }, - "name": { - "type": "string", - "description": "This is the name of credential. This is just for your reference.", - "minLength": 1, - "maxLength": 40 } - }, - "required": [ - "provider", - "service" - ] + } }, "UpdateAzureOpenAICredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "azure-openai" - ] - }, "region": { "type": "string", "enum": [ @@ -20629,34 +21126,26 @@ "type": "string", "description": "This is not returned in the API." }, - "openAIEndpoint": { - "type": "string", - "maxLength": 10000 - }, "name": { "type": "string", "description": "This is the name of credential. This is just for your reference.", "minLength": 1, "maxLength": 40 + }, + "openAIEndpoint": { + "type": "string", + "maxLength": 10000 } - }, - "required": [ - "provider", - "region", - "models", - "openAIKey", - "openAIEndpoint" - ] + } }, "UpdateByoSipTrunkCredentialDTO": { "type": "object", "properties": { - "provider": { + "name": { "type": "string", - "description": "This can be used to bring your own SIP trunks or to connect to a Carrier.", - "enum": [ - "byo-sip-trunk" - ] + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 }, "gateways": { "description": "This is the list of SIP trunk's gateways.", @@ -20694,6 +21183,15 @@ "$ref": "#/components/schemas/SbcConfiguration" } ] + } + } + }, + "UpdateCartesiaCredentialDTO": { + "type": "object", + "properties": { + "apiKey": { + "type": "string", + "description": "This is not returned in the API." }, "name": { "type": "string", @@ -20701,22 +21199,14 @@ "minLength": 1, "maxLength": 40 } - }, - "required": [ - "gateways" - ] + } }, - "UpdateCartesiaCredentialDTO": { + "UpdateCerebrasCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "cartesia" - ] - }, "apiKey": { "type": "string", + "maxLength": 10000, "description": "This is not returned in the API." }, "name": { @@ -20725,21 +21215,42 @@ "minLength": 1, "maxLength": 40 } - }, - "required": [ - "provider", - "apiKey" - ] + } }, - "UpdateCustomLLMCredentialDTO": { + "UpdateCloudflareCredentialDTO": { "type": "object", "properties": { - "provider": { + "accountId": { "type": "string", - "enum": [ - "custom-llm" - ] + "description": "Cloudflare Account Id." + }, + "apiKey": { + "type": "string", + "description": "Cloudflare API Key / Token." + }, + "accountEmail": { + "type": "string", + "description": "Cloudflare Account Email." + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 }, + "bucketPlan": { + "description": "This is the bucket plan that can be provided to store call artifacts in R2", + "allOf": [ + { + "$ref": "#/components/schemas/CloudflareR2BucketPlan" + } + ] + } + } + }, + "UpdateCustomLLMCredentialDTO": { + "type": "object", + "properties": { "apiKey": { "type": "string", "maxLength": 10000, @@ -20759,28 +21270,33 @@ "minLength": 1, "maxLength": 40 } - }, - "required": [ - "provider", - "apiKey" - ] + } }, "UpdateDeepgramCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "deepgram" - ] - }, "apiKey": { "type": "string", "description": "This is not returned in the API." }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + }, "apiUrl": { "type": "string", "description": "This can be used to point to an onprem Deepgram instance. Defaults to api.deepgram.com." + } + } + }, + "UpdateDeepInfraCredentialDTO": { + "type": "object", + "properties": { + "apiKey": { + "type": "string", + "description": "This is not returned in the API." }, "name": { "type": "string", @@ -20788,21 +21304,11 @@ "minLength": 1, "maxLength": 40 } - }, - "required": [ - "provider", - "apiKey" - ] + } }, - "UpdateDeepInfraCredentialDTO": { + "UpdateDeepSeekCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "deepinfra" - ] - }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -20813,21 +21319,11 @@ "minLength": 1, "maxLength": 40 } - }, - "required": [ - "provider", - "apiKey" - ] + } }, "UpdateElevenLabsCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "11labs" - ] - }, "apiKey": { "type": "string", "maxLength": 10000, @@ -20839,20 +21335,16 @@ "minLength": 1, "maxLength": 40 } - }, - "required": [ - "provider", - "apiKey" - ] + } }, "UpdateGcpCredentialDTO": { "type": "object", "properties": { - "provider": { + "name": { "type": "string", - "enum": [ - "gcp" - ] + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 }, "gcpKey": { "description": "This is the GCP key. This is the JSON that can be generated in the Google Cloud Console at https://console.cloud.google.com/iam-admin/serviceaccounts/details//keys.\n\nThe schema is identical to the JSON that GCP outputs.", @@ -20869,28 +21361,12 @@ "$ref": "#/components/schemas/BucketPlan" } ] - }, - "name": { - "type": "string", - "description": "This is the name of credential. This is just for your reference.", - "minLength": 1, - "maxLength": 40 } - }, - "required": [ - "provider", - "gcpKey" - ] + } }, "UpdateGladiaCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "gladia" - ] - }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -20901,21 +21377,11 @@ "minLength": 1, "maxLength": 40 } - }, - "required": [ - "provider", - "apiKey" - ] + } }, "UpdateGoHighLevelCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "gohighlevel" - ] - }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -20926,22 +21392,11 @@ "minLength": 1, "maxLength": 40 } - }, - "required": [ - "provider", - "apiKey" - ] + } }, "UpdateGoogleCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "description": "This is the key for Gemini in Google AI Studio. Get it from here: https://aistudio.google.com/app/apikey", - "enum": [ - "google" - ] - }, "apiKey": { "type": "string", "maxLength": 10000, @@ -20953,21 +21408,11 @@ "minLength": 1, "maxLength": 40 } - }, - "required": [ - "provider", - "apiKey" - ] + } }, "UpdateGroqCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "groq" - ] - }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -20978,22 +21423,11 @@ "minLength": 1, "maxLength": 40 } - }, - "required": [ - "provider", - "apiKey" - ] + } }, "UpdateInflectionAICredentialDTO": { - "type": "object", - "properties": { - "provider": { - "type": "string", - "description": "This is the api key for Pi in InflectionAI's console. Get it from here: https://developers.inflection.ai/keys, billing will need to be setup", - "enum": [ - "inflection-ai" - ] - }, + "type": "object", + "properties": { "apiKey": { "type": "string", "maxLength": 10000, @@ -21005,21 +21439,11 @@ "minLength": 1, "maxLength": 40 } - }, - "required": [ - "provider", - "apiKey" - ] + } }, "UpdateLangfuseCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "langfuse" - ] - }, "publicKey": { "type": "string", "description": "The public key for Langfuse project. Eg: pk-lf-..." @@ -21038,23 +21462,11 @@ "minLength": 1, "maxLength": 40 } - }, - "required": [ - "provider", - "publicKey", - "apiKey", - "apiUrl" - ] + } }, "UpdateLmntCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "lmnt" - ] - }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -21065,21 +21477,11 @@ "minLength": 1, "maxLength": 40 } - }, - "required": [ - "provider", - "apiKey" - ] + } }, "UpdateMakeCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "make" - ] - }, "teamId": { "type": "string", "description": "Team ID" @@ -21098,23 +21500,11 @@ "minLength": 1, "maxLength": 40 } - }, - "required": [ - "provider", - "teamId", - "region", - "apiKey" - ] + } }, "UpdateOpenAICredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "openai" - ] - }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -21125,21 +21515,11 @@ "minLength": 1, "maxLength": 40 } - }, - "required": [ - "provider", - "apiKey" - ] + } }, "UpdateOpenRouterCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "openrouter" - ] - }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -21150,21 +21530,11 @@ "minLength": 1, "maxLength": 40 } - }, - "required": [ - "provider", - "apiKey" - ] + } }, "UpdatePerplexityAICredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "perplexity-ai" - ] - }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -21175,50 +21545,29 @@ "minLength": 1, "maxLength": 40 } - }, - "required": [ - "provider", - "apiKey" - ] + } }, "UpdatePlayHTCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "playht" - ] - }, "apiKey": { "type": "string", "description": "This is not returned in the API." }, - "userId": { - "type": "string" - }, "name": { "type": "string", "description": "This is the name of credential. This is just for your reference.", "minLength": 1, "maxLength": 40 + }, + "userId": { + "type": "string" } - }, - "required": [ - "provider", - "apiKey", - "userId" - ] + } }, "UpdateRimeAICredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "rime-ai" - ] - }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -21229,21 +21578,11 @@ "minLength": 1, "maxLength": 40 } - }, - "required": [ - "provider", - "apiKey" - ] + } }, "UpdateRunpodCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "runpod" - ] - }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -21254,22 +21593,11 @@ "minLength": 1, "maxLength": 40 } - }, - "required": [ - "provider", - "apiKey" - ] + } }, "UpdateS3CredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "s3" - ], - "description": "Credential provider. Only allowed value is s3" - }, "awsAccessKeyId": { "type": "string", "description": "AWS access key ID." @@ -21296,25 +21624,26 @@ "minLength": 1, "maxLength": 40 } - }, - "required": [ - "provider", - "awsAccessKeyId", - "awsSecretAccessKey", - "region", - "s3BucketName", - "s3PathPrefix" - ] + } }, - "UpdateTavusCredentialDTO": { + "UpdateSmallestAICredentialDTO": { "type": "object", "properties": { - "provider": { + "apiKey": { "type": "string", - "enum": [ - "tavus" - ] + "description": "This is not returned in the API." }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + } + }, + "UpdateTavusCredentialDTO": { + "type": "object", + "properties": { "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -21325,21 +21654,11 @@ "minLength": 1, "maxLength": 40 } - }, - "required": [ - "provider", - "apiKey" - ] + } }, "UpdateTogetherAICredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "together-ai" - ] - }, "apiKey": { "type": "string", "description": "This is not returned in the API." @@ -21350,80 +21669,47 @@ "minLength": 1, "maxLength": 40 } - }, - "required": [ - "provider", - "apiKey" - ] + } }, "UpdateTwilioCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "twilio" - ] - }, "authToken": { "type": "string", "description": "This is not returned in the API." }, - "accountSid": { - "type": "string" - }, "name": { "type": "string", "description": "This is the name of credential. This is just for your reference.", "minLength": 1, "maxLength": 40 + }, + "accountSid": { + "type": "string" } - }, - "required": [ - "provider", - "authToken", - "accountSid" - ] + } }, "UpdateVonageCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "enum": [ - "vonage" - ] - }, "apiSecret": { "type": "string", "description": "This is not returned in the API." }, - "apiKey": { - "type": "string" - }, "name": { "type": "string", "description": "This is the name of credential. This is just for your reference.", "minLength": 1, "maxLength": 40 + }, + "apiKey": { + "type": "string" } - }, - "required": [ - "provider", - "apiSecret", - "apiKey" - ] + } }, "UpdateXAiCredentialDTO": { "type": "object", "properties": { - "provider": { - "type": "string", - "description": "This is the api key for Grok in XAi's console. Get it from here: https://console.x.ai", - "enum": [ - "xai" - ] - }, "apiKey": { "type": "string", "maxLength": 10000, @@ -21435,11 +21721,7 @@ "minLength": 1, "maxLength": 40 } - }, - "required": [ - "provider", - "apiKey" - ] + } }, "CreateOrgDTO": { "type": "object", @@ -22083,6 +22365,7 @@ "openai", "playht", "rime-ai", + "smallest-ai", "tavus" ] }, @@ -22730,6 +23013,32 @@ "value" ] }, + "UpdateTokenDTO": { + "type": "object", + "properties": { + "tag": { + "type": "string", + "description": "This is the tag for the token. It represents its scope.", + "enum": [ + "private", + "public" + ] + }, + "name": { + "type": "string", + "description": "This is the name of the token. This is just for your own reference.", + "maxLength": 40 + }, + "restrictions": { + "description": "This are the restrictions for the token.", + "allOf": [ + { + "$ref": "#/components/schemas/TokenRestrictions" + } + ] + } + } + }, "SyncVoiceLibraryDTO": { "type": "object", "properties": { @@ -22747,6 +23056,7 @@ "openai", "playht", "rime-ai", + "smallest-ai", "tavus" ], "items": { @@ -22762,6 +23072,7 @@ "openai", "playht", "rime-ai", + "smallest-ai", "tavus" ] } @@ -23490,6 +23801,7 @@ "pipeline-error-azure-voice-failed", "pipeline-error-rime-ai-voice-failed", "pipeline-error-neets-voice-failed", + "pipeline-error-smallest-ai-voice-failed", "pipeline-error-deepgram-transcriber-failed", "pipeline-error-gladia-transcriber-failed", "pipeline-error-assembly-ai-transcriber-failed", @@ -23520,6 +23832,8 @@ "pipeline-error-google-llm-failed", "pipeline-error-xai-llm-failed", "pipeline-error-inflection-ai-llm-failed", + "pipeline-error-cerebras-llm-failed", + "pipeline-error-deep-seek-llm-failed", "pipeline-error-openai-400-bad-request-validation-failed", "pipeline-error-openai-401-unauthorized", "pipeline-error-openai-403-model-access-denied", @@ -23540,6 +23854,11 @@ "pipeline-error-inflection-ai-403-model-access-denied", "pipeline-error-inflection-ai-429-exceeded-quota", "pipeline-error-inflection-ai-500-server-error", + "pipeline-error-deep-seek-400-bad-request-validation-failed", + "pipeline-error-deep-seek-401-unauthorized", + "pipeline-error-deep-seek-403-model-access-denied", + "pipeline-error-deep-seek-429-exceeded-quota", + "pipeline-error-deep-seek-500-server-error", "pipeline-error-azure-openai-400-bad-request-validation-failed", "pipeline-error-azure-openai-401-unauthorized", "pipeline-error-azure-openai-403-model-access-denied", @@ -23550,6 +23869,11 @@ "pipeline-error-groq-403-model-access-denied", "pipeline-error-groq-429-exceeded-quota", "pipeline-error-groq-500-server-error", + "pipeline-error-cerebras-400-bad-request-validation-failed", + "pipeline-error-cerebras-401-unauthorized", + "pipeline-error-cerebras-403-model-access-denied", + "pipeline-error-cerebras-429-exceeded-quota", + "pipeline-error-cerebras-500-server-error", "pipeline-error-anthropic-400-bad-request-validation-failed", "pipeline-error-anthropic-401-unauthorized", "pipeline-error-anthropic-403-model-access-denied", @@ -24272,6 +24596,7 @@ "pipeline-error-azure-voice-failed", "pipeline-error-rime-ai-voice-failed", "pipeline-error-neets-voice-failed", + "pipeline-error-smallest-ai-voice-failed", "pipeline-error-deepgram-transcriber-failed", "pipeline-error-gladia-transcriber-failed", "pipeline-error-assembly-ai-transcriber-failed", @@ -24302,6 +24627,8 @@ "pipeline-error-google-llm-failed", "pipeline-error-xai-llm-failed", "pipeline-error-inflection-ai-llm-failed", + "pipeline-error-cerebras-llm-failed", + "pipeline-error-deep-seek-llm-failed", "pipeline-error-openai-400-bad-request-validation-failed", "pipeline-error-openai-401-unauthorized", "pipeline-error-openai-403-model-access-denied", @@ -24322,6 +24649,11 @@ "pipeline-error-inflection-ai-403-model-access-denied", "pipeline-error-inflection-ai-429-exceeded-quota", "pipeline-error-inflection-ai-500-server-error", + "pipeline-error-deep-seek-400-bad-request-validation-failed", + "pipeline-error-deep-seek-401-unauthorized", + "pipeline-error-deep-seek-403-model-access-denied", + "pipeline-error-deep-seek-429-exceeded-quota", + "pipeline-error-deep-seek-500-server-error", "pipeline-error-azure-openai-400-bad-request-validation-failed", "pipeline-error-azure-openai-401-unauthorized", "pipeline-error-azure-openai-403-model-access-denied", @@ -24332,6 +24664,11 @@ "pipeline-error-groq-403-model-access-denied", "pipeline-error-groq-429-exceeded-quota", "pipeline-error-groq-500-server-error", + "pipeline-error-cerebras-400-bad-request-validation-failed", + "pipeline-error-cerebras-401-unauthorized", + "pipeline-error-cerebras-403-model-access-denied", + "pipeline-error-cerebras-429-exceeded-quota", + "pipeline-error-cerebras-500-server-error", "pipeline-error-anthropic-400-bad-request-validation-failed", "pipeline-error-anthropic-401-unauthorized", "pipeline-error-anthropic-403-model-access-denied", From c9712d500183809092362d77c4ee27cc2f849146 Mon Sep 17 00:00:00 2001 From: "fern-api[bot]" <115122769+fern-api[bot]@users.noreply.github.com> Date: Sun, 12 Jan 2025 00:02:24 +0000 Subject: [PATCH 4/8] feat(openapi): add new tool types and improve tool configuration --- fern/apis/api/openapi.json | 257 +++++++++++++++++++++++++++++++++++++ 1 file changed, 257 insertions(+) diff --git a/fern/apis/api/openapi.json b/fern/apis/api/openapi.json index 2aafa5929..cb5021b5c 100644 --- a/fern/apis/api/openapi.json +++ b/fern/apis/api/openapi.json @@ -26601,6 +26601,263 @@ "metadata" ] }, + "BashToolWithToolCall": { + "type": "object", + "properties": { + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false + }, + "messages": { + "type": "array", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ToolMessageStart", + "title": "ToolMessageStart" + }, + { + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" + }, + { + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" + }, + { + "$ref": "#/components/schemas/ToolMessageDelayed", + "title": "ToolMessageDelayed" + } + ] + } + }, + "type": { + "type": "string", + "enum": [ + "bash" + ], + "description": "The type of tool. \"bash\" for Bash tool." + }, + "subType": { + "type": "string", + "enum": [ + "bash_20241022" + ], + "description": "The sub type of tool." + }, + "toolCall": { + "$ref": "#/components/schemas/ToolCall" + }, + "name": { + "type": "string", + "description": "The name of the tool, fixed to 'bash'", + "default": "bash", + "enum": [ + "bash" + ] + }, + "function": { + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAIFunction" + } + ] + }, + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] + } + }, + "required": [ + "type", + "subType", + "toolCall", + "name" + ] + }, + "ComputerToolWithToolCall": { + "type": "object", + "properties": { + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false + }, + "messages": { + "type": "array", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ToolMessageStart", + "title": "ToolMessageStart" + }, + { + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" + }, + { + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" + }, + { + "$ref": "#/components/schemas/ToolMessageDelayed", + "title": "ToolMessageDelayed" + } + ] + } + }, + "type": { + "type": "string", + "enum": [ + "computer" + ], + "description": "The type of tool. \"computer\" for Computer tool." + }, + "subType": { + "type": "string", + "enum": [ + "computer_20241022" + ], + "description": "The sub type of tool." + }, + "toolCall": { + "$ref": "#/components/schemas/ToolCall" + }, + "name": { + "type": "string", + "description": "The name of the tool, fixed to 'computer'", + "default": "computer", + "enum": [ + "computer" + ] + }, + "displayWidthPx": { + "type": "number", + "description": "The display width in pixels" + }, + "displayHeightPx": { + "type": "number", + "description": "The display height in pixels" + }, + "displayNumber": { + "type": "number", + "description": "Optional display number" + }, + "function": { + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAIFunction" + } + ] + }, + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] + } + }, + "required": [ + "type", + "subType", + "toolCall", + "name", + "displayWidthPx", + "displayHeightPx" + ] + }, + "TextEditorToolWithToolCall": { + "type": "object", + "properties": { + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false + }, + "messages": { + "type": "array", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ToolMessageStart", + "title": "ToolMessageStart" + }, + { + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" + }, + { + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" + }, + { + "$ref": "#/components/schemas/ToolMessageDelayed", + "title": "ToolMessageDelayed" + } + ] + } + }, + "type": { + "type": "string", + "enum": [ + "textEditor" + ], + "description": "The type of tool. \"textEditor\" for Text Editor tool." + }, + "subType": { + "type": "string", + "enum": [ + "text_editor_20241022" + ], + "description": "The sub type of tool." + }, + "toolCall": { + "$ref": "#/components/schemas/ToolCall" + }, + "name": { + "type": "string", + "description": "The name of the tool, fixed to 'str_replace_editor'", + "default": "str_replace_editor", + "enum": [ + "str_replace_editor" + ] + }, + "function": { + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAIFunction" + } + ] + }, + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] + } + }, + "required": [ + "type", + "subType", + "toolCall", + "name" + ] + }, "StepDestination": { "type": "object", "properties": { From ff1f9c23c748e0b8732cdf3fc4a6d312525e9504 Mon Sep 17 00:00:00 2001 From: "fern-api[bot]" <115122769+fern-api[bot]@users.noreply.github.com> Date: Wed, 15 Jan 2025 00:02:26 +0000 Subject: [PATCH 5/8] feat(openapi.json): added ClientInboundMessageEndCall object and EndCall action to the ClientInboundMessageTransfer properties. --- fern/apis/api/openapi.json | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/fern/apis/api/openapi.json b/fern/apis/api/openapi.json index cb5021b5c..20e2b28a6 100644 --- a/fern/apis/api/openapi.json +++ b/fern/apis/api/openapi.json @@ -25962,6 +25962,21 @@ } } }, + "ClientInboundMessageEndCall": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "This is the type of the message. Send \"end-call\" message to end the call.", + "enum": [ + "end-call" + ] + } + }, + "required": [ + "type" + ] + }, "ClientInboundMessageTransfer": { "type": "object", "properties": { @@ -26008,6 +26023,10 @@ "$ref": "#/components/schemas/ClientInboundMessageSay", "title": "Say" }, + { + "$ref": "#/components/schemas/ClientInboundMessageEndCall", + "title": "EndCall" + }, { "$ref": "#/components/schemas/ClientInboundMessageTransfer", "title": "Transfer" From 27e9efa431bdba97c48384a5b7254fc3cb03928f Mon Sep 17 00:00:00 2001 From: "fern-api[bot]" <115122769+fern-api[bot]@users.noreply.github.com> Date: Thu, 16 Jan 2025 00:02:34 +0000 Subject: [PATCH 6/8] fix(openapi): remove orgId from logsQuery and logsDelete parameters and update type description and enum --- fern/apis/api/openapi.json | 30 +++++++++--------------------- 1 file changed, 9 insertions(+), 21 deletions(-) diff --git a/fern/apis/api/openapi.json b/fern/apis/api/openapi.json index 20e2b28a6..880099f51 100644 --- a/fern/apis/api/openapi.json +++ b/fern/apis/api/openapi.json @@ -2990,15 +2990,6 @@ "operationId": "LoggingController_logsQuery", "summary": "Get Logs", "parameters": [ - { - "name": "orgId", - "required": false, - "in": "query", - "description": "This is the unique identifier for the org that this log belongs to.", - "schema": { - "type": "string" - } - }, { "name": "type", "required": false, @@ -3209,11 +3200,17 @@ "summary": "Delete Logs", "parameters": [ { - "name": "orgId", + "name": "type", "required": false, "in": "query", - "description": "This is the unique identifier for the org that this log belongs to.", + "description": "This is the type of the log.", "schema": { + "enum": [ + "API", + "Webhook", + "Call", + "Provider" + ], "type": "string" } }, @@ -3221,7 +3218,6 @@ "name": "assistantId", "required": false, "in": "query", - "description": "This is the ID of the assistant.", "schema": { "type": "string" } @@ -18795,15 +18791,7 @@ "required": [ "time", "orgId", - "type", - "requestDurationSeconds", - "requestStartedAt", - "requestFinishedAt", - "requestBody", - "requestHttpMethod", - "requestUrl", - "requestPath", - "responseHttpCode" + "type" ] }, "LogsPaginatedResponse": { From 67f773f5c9def414a64cdd5e6ce11af480ab827d Mon Sep 17 00:00:00 2001 From: "fern-api[bot]" <115122769+fern-api[bot]@users.noreply.github.com> Date: Mon, 20 Jan 2025 00:02:22 +0000 Subject: [PATCH 7/8] fix(openapi): update OpenAPI specification for knowledge base and workflows --- fern/apis/api/openapi.json | 452 +++++++++++++++++++++++++++++++------ 1 file changed, 378 insertions(+), 74 deletions(-) diff --git a/fern/apis/api/openapi.json b/fern/apis/api/openapi.json index 880099f51..b77c9bbbf 100644 --- a/fern/apis/api/openapi.json +++ b/fern/apis/api/openapi.json @@ -4441,6 +4441,13 @@ "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" + } } }, "required": [ @@ -5278,7 +5285,7 @@ ] }, "server": { - "description": "/**\nThis is where the knowledge base request will be sent.\n\nRequest Example:\n\nPOST https://{server.url}\nContent-Type: application/json\n\n{\n \"messsage\": {\n \"type\": \"knowledge-base-request\",\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Why is ocean blue?\"\n }\n ],\n ...other metadata about the call...\n }\n}\n\nResponse Expected:\n```\n{\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"The ocean is blue because water absorbs everything but blue.\",\n }, // YOU CAN RETURN THE EXACT RESPONSE TO SPEAK\n \"documents\": [\n {\n \"content\": \"The ocean is blue primarily because water absorbs colors in the red part of the light spectrum and scatters the blue light, making it more visible to our eyes.\",\n \"similarity\": 1\n },\n {\n \"content\": \"Blue light is scattered more by the water molecules than other colors, enhancing the blue appearance of the ocean.\",\n \"similarity\": .5\n }\n ] // OR, YOU CAN RETURN AN ARRAY OF DOCUMENTS THAT WILL BE SENT TO THE MODEL\n}\n```", + "description": "This is where the knowledge base request will be sent.\n\nRequest Example:\n\nPOST https://{server.url}\nContent-Type: application/json\n\n{\n \"messsage\": {\n \"type\": \"knowledge-base-request\",\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Why is ocean blue?\"\n }\n ],\n ...other metadata about the call...\n }\n}\n\nResponse Expected:\n```\n{\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"The ocean is blue because water absorbs everything but blue.\",\n }, // YOU CAN RETURN THE EXACT RESPONSE TO SPEAK\n \"documents\": [\n {\n \"content\": \"The ocean is blue primarily because water absorbs colors in the red part of the light spectrum and scatters the blue light, making it more visible to our eyes.\",\n \"similarity\": 1\n },\n {\n \"content\": \"Blue light is scattered more by the water molecules than other colors, enhancing the blue appearance of the ocean.\",\n \"similarity\": .5\n }\n ] // OR, YOU CAN RETURN AN ARRAY OF DOCUMENTS THAT WILL BE SENT TO THE MODEL\n}\n```", "allOf": [ { "$ref": "#/components/schemas/Server" @@ -6773,6 +6780,142 @@ "model" ] }, + "SemanticEdgeCondition": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "semantic" + ] + }, + "matches": { + "type": "array", + "maxLength": 100, + "items": { + "type": "string" + } + } + }, + "required": [ + "type" + ] + }, + "ProgrammaticEdgeCondition": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "programmatic" + ] + }, + "booleanExpression": { + "type": "string", + "maxLength": 100 + } + }, + "required": [ + "type" + ] + }, + "Edge": { + "type": "object", + "properties": { + "condition": { + "oneOf": [ + { + "$ref": "#/components/schemas/SemanticEdgeCondition", + "title": "SemanticEdgeCondition" + }, + { + "$ref": "#/components/schemas/ProgrammaticEdgeCondition", + "title": "ProgrammaticEdgeCondition" + } + ] + }, + "from": { + "type": "string", + "maxLength": 40 + }, + "to": { + "type": "string", + "maxLength": 40 + } + }, + "required": [ + "from", + "to" + ] + }, + "Workflow": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "workflow" + ] + }, + "nodes": { + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/Say", + "title": "Say" + }, + { + "$ref": "#/components/schemas/Gather", + "title": "Gather" + }, + { + "$ref": "#/components/schemas/Hangup", + "title": "Hangup" + }, + { + "$ref": "#/components/schemas/CreateWorkflowDTO", + "title": "CreateWorkflowDTO" + } + ] + } + }, + "id": { + "type": "string" + }, + "orgId": { + "type": "string" + }, + "createdAt": { + "format": "date-time", + "type": "string" + }, + "updatedAt": { + "format": "date-time", + "type": "string" + }, + "name": { + "type": "string", + "maxLength": 40 + }, + "edges": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Edge" + } + } + }, + "required": [ + "type", + "nodes", + "id", + "orgId", + "createdAt", + "updatedAt", + "name", + "edges" + ] + }, "VapiModel": { "type": "object", "properties": { @@ -6860,6 +7003,18 @@ "vapi" ] }, + "workflowId": { + "type": "string", + "description": "This is the workflow that will be used for the call. To use a transient workflow, use `workflow` instead." + }, + "workflow": { + "description": "This is the workflow that will be used for the call. To use an existing workflow, use `workflowId` instead.", + "allOf": [ + { + "$ref": "#/components/schemas/Workflow" + } + ] + }, "model": { "type": "string", "description": "This is the name of the model. Ex. cognitivecomputations/dolphin-mixtral-8x7b" @@ -15386,7 +15541,7 @@ "members" ] }, - "TrieveKnowledgeBaseVectorStoreSearchPlan": { + "TrieveKnowledgeBaseSearchPlan": { "type": "object", "properties": { "removeStopWords": { @@ -15412,36 +15567,6 @@ "searchType" ] }, - "TrieveKnowledgeBaseVectorStoreCreatePlan": { - "type": "object", - "properties": { - "fileIds": { - "description": "These are the file ids that will be used to create the vector store. To upload files, use the `POST /files` endpoint.", - "type": "array", - "items": { - "type": "string" - } - }, - "targetSplitsPerChunk": { - "type": "number", - "description": "This is an optional field which allows you to specify the number of splits you want per chunk. If not specified, the default 20 is used. However, you may want to use a different number." - }, - "splitDelimiters": { - "description": "This is an optional field which allows you to specify the delimiters to use when splitting the file before chunking the text. If not specified, the default [.!?\\n] are used to split into sentences. However, you may want to use spaces or other delimiters.", - "type": "array", - "items": { - "type": "string" - } - }, - "rebalanceChunks": { - "type": "boolean", - "description": "This is an optional field which allows you to specify whether or not to rebalance the chunks created from the file. If not specified, the default true is used. If true, Trieve will evenly distribute remainder splits across chunks such that 66 splits with a target_splits_per_chunk of 20 will result in 3 chunks with 22 splits each." - } - }, - "required": [ - "fileIds" - ] - }, "TrieveKnowledgeBase": { "type": "object", "properties": { @@ -15456,26 +15581,27 @@ "type": "string", "description": "This is the name of the knowledge base." }, - "vectorStoreSearchPlan": { - "description": "This is the plan on how to search the vector store while a call is going on.", + "searchPlan": { + "description": "This is the searching plan used when searching for relevant chunks from the vector store.\n\nYou should configure this if you're running into these issues:\n- Too much unnecessary context is being fed as knowledge base context.\n- Not enough relevant context is being fed as knowledge base context.", "allOf": [ { - "$ref": "#/components/schemas/TrieveKnowledgeBaseVectorStoreSearchPlan" + "$ref": "#/components/schemas/TrieveKnowledgeBaseSearchPlan" } ] }, - "vectorStoreCreatePlan": { - "description": "This is the plan if you want us to create a new vector store on your behalf. To use an existing vector store from your account, use `vectoreStoreProviderId`", - "allOf": [ + "createPlan": { + "description": "This is the plan if you want us to create/import a new vector store using Trieve.", + "oneOf": [ { - "$ref": "#/components/schemas/TrieveKnowledgeBaseVectorStoreCreatePlan" + "$ref": "#/components/schemas/TrieveKnowledgeBaseCreate", + "title": "Create" + }, + { + "$ref": "#/components/schemas/TrieveKnowledgeBaseImport", + "title": "Import" } ] }, - "vectorStoreProviderId": { - "type": "string", - "description": "This is an vector store that you already have on your account with the provider. To create a new vector store, use vectorStoreCreatePlan.\n\nUsage:\n- To bring your own vector store from Trieve, go to https://trieve.ai\n- Create a dataset, and use the datasetId here." - }, "id": { "type": "string", "description": "This is the id of the knowledge base." @@ -15487,7 +15613,6 @@ }, "required": [ "provider", - "vectorStoreSearchPlan", "id", "orgId" ] @@ -15503,7 +15628,7 @@ ] }, "server": { - "description": "/**\nThis is where the knowledge base request will be sent.\n\nRequest Example:\n\nPOST https://{server.url}\nContent-Type: application/json\n\n{\n \"messsage\": {\n \"type\": \"knowledge-base-request\",\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Why is ocean blue?\"\n }\n ],\n ...other metadata about the call...\n }\n}\n\nResponse Expected:\n```\n{\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"The ocean is blue because water absorbs everything but blue.\",\n }, // YOU CAN RETURN THE EXACT RESPONSE TO SPEAK\n \"documents\": [\n {\n \"content\": \"The ocean is blue primarily because water absorbs colors in the red part of the light spectrum and scatters the blue light, making it more visible to our eyes.\",\n \"similarity\": 1\n },\n {\n \"content\": \"Blue light is scattered more by the water molecules than other colors, enhancing the blue appearance of the ocean.\",\n \"similarity\": .5\n }\n ] // OR, YOU CAN RETURN AN ARRAY OF DOCUMENTS THAT WILL BE SENT TO THE MODEL\n}\n```", + "description": "This is where the knowledge base request will be sent.\n\nRequest Example:\n\nPOST https://{server.url}\nContent-Type: application/json\n\n{\n \"messsage\": {\n \"type\": \"knowledge-base-request\",\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Why is ocean blue?\"\n }\n ],\n ...other metadata about the call...\n }\n}\n\nResponse Expected:\n```\n{\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"The ocean is blue because water absorbs everything but blue.\",\n }, // YOU CAN RETURN THE EXACT RESPONSE TO SPEAK\n \"documents\": [\n {\n \"content\": \"The ocean is blue primarily because water absorbs colors in the red part of the light spectrum and scatters the blue light, making it more visible to our eyes.\",\n \"similarity\": 1\n },\n {\n \"content\": \"Blue light is scattered more by the water molecules than other colors, enhancing the blue appearance of the ocean.\",\n \"similarity\": .5\n }\n ] // OR, YOU CAN RETURN AN ARRAY OF DOCUMENTS THAT WILL BE SENT TO THE MODEL\n}\n```", "allOf": [ { "$ref": "#/components/schemas/Server" @@ -15540,30 +15665,30 @@ "type": "string", "description": "This is the name of the knowledge base." }, - "vectorStoreSearchPlan": { - "description": "This is the plan on how to search the vector store while a call is going on.", + "searchPlan": { + "description": "This is the searching plan used when searching for relevant chunks from the vector store.\n\nYou should configure this if you're running into these issues:\n- Too much unnecessary context is being fed as knowledge base context.\n- Not enough relevant context is being fed as knowledge base context.", "allOf": [ { - "$ref": "#/components/schemas/TrieveKnowledgeBaseVectorStoreSearchPlan" + "$ref": "#/components/schemas/TrieveKnowledgeBaseSearchPlan" } ] }, - "vectorStoreCreatePlan": { - "description": "This is the plan if you want us to create a new vector store on your behalf. To use an existing vector store from your account, use `vectoreStoreProviderId`", - "allOf": [ + "createPlan": { + "description": "This is the plan if you want us to create/import a new vector store using Trieve.", + "oneOf": [ + { + "$ref": "#/components/schemas/TrieveKnowledgeBaseCreate", + "title": "Create" + }, { - "$ref": "#/components/schemas/TrieveKnowledgeBaseVectorStoreCreatePlan" + "$ref": "#/components/schemas/TrieveKnowledgeBaseImport", + "title": "Import" } ] - }, - "vectorStoreProviderId": { - "type": "string", - "description": "This is an vector store that you already have on your account with the provider. To create a new vector store, use vectorStoreCreatePlan.\n\nUsage:\n- To bring your own vector store from Trieve, go to https://trieve.ai\n- Create a dataset, and use the datasetId here." } }, "required": [ - "provider", - "vectorStoreSearchPlan" + "provider" ] }, "UpdateTrieveKnowledgeBaseDTO": { @@ -15573,25 +15698,26 @@ "type": "string", "description": "This is the name of the knowledge base." }, - "vectorStoreSearchPlan": { - "description": "This is the plan on how to search the vector store while a call is going on.", + "searchPlan": { + "description": "This is the searching plan used when searching for relevant chunks from the vector store.\n\nYou should configure this if you're running into these issues:\n- Too much unnecessary context is being fed as knowledge base context.\n- Not enough relevant context is being fed as knowledge base context.", "allOf": [ { - "$ref": "#/components/schemas/TrieveKnowledgeBaseVectorStoreSearchPlan" + "$ref": "#/components/schemas/TrieveKnowledgeBaseSearchPlan" } ] }, - "vectorStoreCreatePlan": { - "description": "This is the plan if you want us to create a new vector store on your behalf. To use an existing vector store from your account, use `vectoreStoreProviderId`", - "allOf": [ + "createPlan": { + "description": "This is the plan if you want us to create/import a new vector store using Trieve.", + "oneOf": [ { - "$ref": "#/components/schemas/TrieveKnowledgeBaseVectorStoreCreatePlan" + "$ref": "#/components/schemas/TrieveKnowledgeBaseCreate", + "title": "Create" + }, + { + "$ref": "#/components/schemas/TrieveKnowledgeBaseImport", + "title": "Import" } ] - }, - "vectorStoreProviderId": { - "type": "string", - "description": "This is an vector store that you already have on your account with the provider. To create a new vector store, use vectorStoreCreatePlan.\n\nUsage:\n- To bring your own vector store from Trieve, go to https://trieve.ai\n- Create a dataset, and use the datasetId here." } } }, @@ -15599,7 +15725,7 @@ "type": "object", "properties": { "server": { - "description": "/**\nThis is where the knowledge base request will be sent.\n\nRequest Example:\n\nPOST https://{server.url}\nContent-Type: application/json\n\n{\n \"messsage\": {\n \"type\": \"knowledge-base-request\",\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Why is ocean blue?\"\n }\n ],\n ...other metadata about the call...\n }\n}\n\nResponse Expected:\n```\n{\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"The ocean is blue because water absorbs everything but blue.\",\n }, // YOU CAN RETURN THE EXACT RESPONSE TO SPEAK\n \"documents\": [\n {\n \"content\": \"The ocean is blue primarily because water absorbs colors in the red part of the light spectrum and scatters the blue light, making it more visible to our eyes.\",\n \"similarity\": 1\n },\n {\n \"content\": \"Blue light is scattered more by the water molecules than other colors, enhancing the blue appearance of the ocean.\",\n \"similarity\": .5\n }\n ] // OR, YOU CAN RETURN AN ARRAY OF DOCUMENTS THAT WILL BE SENT TO THE MODEL\n}\n```", + "description": "This is where the knowledge base request will be sent.\n\nRequest Example:\n\nPOST https://{server.url}\nContent-Type: application/json\n\n{\n \"messsage\": {\n \"type\": \"knowledge-base-request\",\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Why is ocean blue?\"\n }\n ],\n ...other metadata about the call...\n }\n}\n\nResponse Expected:\n```\n{\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"The ocean is blue because water absorbs everything but blue.\",\n }, // YOU CAN RETURN THE EXACT RESPONSE TO SPEAK\n \"documents\": [\n {\n \"content\": \"The ocean is blue primarily because water absorbs colors in the red part of the light spectrum and scatters the blue light, making it more visible to our eyes.\",\n \"similarity\": 1\n },\n {\n \"content\": \"Blue light is scattered more by the water molecules than other colors, enhancing the blue appearance of the ocean.\",\n \"similarity\": .5\n }\n ] // OR, YOU CAN RETURN AN ARRAY OF DOCUMENTS THAT WILL BE SENT TO THE MODEL\n}\n```", "allOf": [ { "$ref": "#/components/schemas/Server" @@ -15608,6 +15734,83 @@ } } }, + "TrieveKnowledgeBaseChunkPlan": { + "type": "object", + "properties": { + "fileIds": { + "description": "These are the file ids that will be used to create the vector store. To upload files, use the `POST /files` endpoint.", + "type": "array", + "items": { + "type": "string" + } + }, + "websites": { + "description": "These are the websites that will be used to create the vector store.", + "type": "array", + "items": { + "type": "string" + } + }, + "targetSplitsPerChunk": { + "type": "number", + "description": "This is an optional field which allows you to specify the number of splits you want per chunk. If not specified, the default 20 is used. However, you may want to use a different number." + }, + "splitDelimiters": { + "description": "This is an optional field which allows you to specify the delimiters to use when splitting the file before chunking the text. If not specified, the default [.!?\\n] are used to split into sentences. However, you may want to use spaces or other delimiters.", + "type": "array", + "items": { + "type": "string" + } + }, + "rebalanceChunks": { + "type": "boolean", + "description": "This is an optional field which allows you to specify whether or not to rebalance the chunks created from the file. If not specified, the default true is used. If true, Trieve will evenly distribute remainder splits across chunks such that 66 splits with a target_splits_per_chunk of 20 will result in 3 chunks with 22 splits each." + } + } + }, + "TrieveKnowledgeBaseCreate": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "This is to create a new dataset on Trieve.", + "enum": [ + "create" + ] + }, + "chunkPlans": { + "description": "These are the chunk plans used to create the dataset.", + "type": "array", + "items": { + "$ref": "#/components/schemas/TrieveKnowledgeBaseChunkPlan" + } + } + }, + "required": [ + "type", + "chunkPlans" + ] + }, + "TrieveKnowledgeBaseImport": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "This is to import an existing dataset from Trieve.", + "enum": [ + "import" + ] + }, + "providerId": { + "type": "string", + "description": "This is the `datasetId` of the dataset on your Trieve account." + } + }, + "required": [ + "type", + "providerId" + ] + }, "ConversationBlock": { "type": "object", "properties": { @@ -21813,10 +22016,10 @@ "type": "string", "description": "This is the number of credits the subscription currently has.\n\nNote: This is a string to avoid floating point precision issues." }, - "concurrencyLimit": { + "concurrencyCounter": { "type": "number", - "description": "This is the total concurrency limit for the subscription.", - "minimum": 10 + "description": "This is the total number of active calls (concurrency) across all orgs under this subscription.", + "minimum": 0 }, "concurrencyLimitIncluded": { "type": "number", @@ -21931,7 +22134,7 @@ "type", "status", "credits", - "concurrencyLimit", + "concurrencyCounter", "concurrencyLimitIncluded", "concurrencyLimitPurchased" ] @@ -23067,6 +23270,107 @@ } } }, + "Say": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "say" + ] + }, + "instruction": { + "type": "string", + "maxLength": 1000 + }, + "name": { + "type": "string", + "maxLength": 40 + } + }, + "required": [ + "type", + "instruction", + "name" + ] + }, + "Gather": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "gather" + ] + }, + "schema": { + "$ref": "#/components/schemas/JsonSchema" + }, + "instruction": { + "type": "string", + "maxLength": 1000 + }, + "name": { + "type": "string", + "maxLength": 40 + } + }, + "required": [ + "type", + "instruction", + "name" + ] + }, + "CreateWorkflowDTO": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "workflow" + ] + }, + "nodes": { + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/Say", + "title": "Say" + }, + { + "$ref": "#/components/schemas/Gather", + "title": "Gather" + }, + { + "$ref": "#/components/schemas/Hangup", + "title": "Hangup" + }, + { + "$ref": "#/components/schemas/CreateWorkflowDTO", + "title": "CreateWorkflowDTO" + } + ] + } + }, + "name": { + "type": "string", + "maxLength": 40 + }, + "edges": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Edge" + } + } + }, + "required": [ + "type", + "nodes", + "name", + "edges" + ] + }, "ClientMessageConversationUpdate": { "type": "object", "properties": { From c87f54682b005ca9a677369158d58f531326dbd7 Mon Sep 17 00:00:00 2001 From: "fern-api[bot]" <115122769+fern-api[bot]@users.noreply.github.com> Date: Wed, 22 Jan 2025 00:02:24 +0000 Subject: [PATCH 8/8] fix(openapi.json): update region enum and add UpdateWorkflowDTO schema --- fern/apis/api/openapi.json | 74 +++++++++++++++++++++++++++++++------- 1 file changed, 62 insertions(+), 12 deletions(-) diff --git a/fern/apis/api/openapi.json b/fern/apis/api/openapi.json index b77c9bbbf..ee7735798 100644 --- a/fern/apis/api/openapi.json +++ b/fern/apis/api/openapi.json @@ -9486,12 +9486,14 @@ "description": "This is the region of the Azure resource.", "enum": [ "australia", - "canada", + "canadaeast", + "canadacentral", "eastus2", "eastus", "france", "india", - "japan", + "japaneast", + "japanwest", "uaenorth", "northcentralus", "norway", @@ -9541,12 +9543,14 @@ "type": "string", "enum": [ "australia", - "canada", + "canadaeast", + "canadacentral", "eastus2", "eastus", "france", "india", - "japan", + "japaneast", + "japanwest", "uaenorth", "northcentralus", "norway", @@ -19208,12 +19212,14 @@ "description": "This is the region of the Azure resource.", "enum": [ "australia", - "canada", + "canadaeast", + "canadacentral", "eastus2", "eastus", "france", "india", - "japan", + "japaneast", + "japanwest", "uaenorth", "northcentralus", "norway", @@ -19285,12 +19291,14 @@ "type": "string", "enum": [ "australia", - "canada", + "canadaeast", + "canadacentral", "eastus2", "eastus", "france", "india", - "japan", + "japaneast", + "japanwest", "uaenorth", "northcentralus", "norway", @@ -21214,12 +21222,14 @@ "description": "This is the region of the Azure resource.", "enum": [ "australia", - "canada", + "canadaeast", + "canadacentral", "eastus2", "eastus", "france", "india", - "japan", + "japaneast", + "japanwest", "uaenorth", "northcentralus", "norway", @@ -21259,12 +21269,14 @@ "type": "string", "enum": [ "australia", - "canada", + "canadaeast", + "canadacentral", "eastus2", "eastus", "france", "india", - "japan", + "japaneast", + "japanwest", "uaenorth", "northcentralus", "norway", @@ -23371,6 +23383,44 @@ "edges" ] }, + "UpdateWorkflowDTO": { + "type": "object", + "properties": { + "nodes": { + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/Say", + "title": "Say" + }, + { + "$ref": "#/components/schemas/Gather", + "title": "Gather" + }, + { + "$ref": "#/components/schemas/Hangup", + "title": "Hangup" + }, + { + "$ref": "#/components/schemas/CreateWorkflowDTO", + "title": "CreateWorkflowDTO" + } + ] + } + }, + "name": { + "type": "string", + "maxLength": 40 + }, + "edges": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Edge" + } + } + } + }, "ClientMessageConversationUpdate": { "type": "object", "properties": {