diff --git a/fern/apis/api/openapi.json b/fern/apis/api/openapi.json index 693502012..b827ea73d 100644 --- a/fern/apis/api/openapi.json +++ b/fern/apis/api/openapi.json @@ -11209,6 +11209,10 @@ { "$ref": "#/components/schemas/FallbackXaiTranscriber", "title": "xAI" + }, + { + "$ref": "#/components/schemas/FallbackReson8Transcriber", + "title": "Reson8" } ] } @@ -13896,6 +13900,73 @@ "provider" ] }, + "Reson8Transcriber": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "reson8" + ] + }, + "model": { + "type": "string", + "description": "The Reson8 speech-to-text endpoint to use. `turns` is Reson8's turn-detection endpoint.", + "enum": [ + "turns" + ] + }, + "language": { + "type": "string", + "description": "Language for transcription (e.g. `nl`), or a comma-separated candidate list such as `nl,en` which constrains auto-detection. When omitted, Reson8 auto-detects the language per utterance. Supported: de, en, es, fr, fy, it, nl, pl, pt, sv.", + "pattern": "^(de|en|es|fr|fy|it|nl|pl|pt|sv)(,(de|en|es|fr|fy|it|nl|pl|pt|sv))*$" + }, + "keyterms": { + "description": "Domain-specific terms to boost recognition (brand names, product codes, jargon). Sent to Reson8 as the `phrases` parameter. Max 250 phrases.", + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + }, + "customModelId": { + "type": "string", + "description": "A stored Reson8 phrase collection (custom model) id, managed via the Reson8 API or console." + }, + "eagerTurnProbability": { + "type": "number", + "description": "Threshold (0-1) at which Reson8 emits an eager turn-end candidate. Provider default 0.5.", + "minimum": 0, + "maximum": 1 + }, + "finalTurnProbability": { + "type": "number", + "description": "Threshold (0-1) at which Reson8 confirms the end of a turn. Provider default 0.92.", + "minimum": 0, + "maximum": 1 + }, + "fillerMode": { + "type": "string", + "description": "How Reson8 renders filler words in transcripts. Provider default `natural`.", + "enum": [ + "clean", + "natural", + "verbatim" + ] + }, + "fallbackPlan": { + "description": "This is the plan for transcriber provider fallbacks in the event that the primary transcriber provider fails.", + "allOf": [ + { + "$ref": "#/components/schemas/FallbackTranscriberPlan" + } + ] + } + }, + "required": [ + "provider" + ] + }, "VapiTranscriber": { "type": "object", "properties": { @@ -16946,6 +17017,65 @@ "provider" ] }, + "FallbackReson8Transcriber": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "reson8" + ] + }, + "model": { + "type": "string", + "description": "The Reson8 speech-to-text endpoint to use. `turns` is Reson8's turn-detection endpoint.", + "enum": [ + "turns" + ] + }, + "language": { + "type": "string", + "description": "Language for transcription (e.g. `nl`), or a comma-separated candidate list such as `nl,en` which constrains auto-detection. When omitted, Reson8 auto-detects the language per utterance. Supported: de, en, es, fr, fy, it, nl, pl, pt, sv.", + "pattern": "^(de|en|es|fr|fy|it|nl|pl|pt|sv)(,(de|en|es|fr|fy|it|nl|pl|pt|sv))*$" + }, + "keyterms": { + "description": "Domain-specific terms to boost recognition (brand names, product codes, jargon). Sent to Reson8 as the `phrases` parameter. Max 250 phrases.", + "type": "array", + "items": { + "type": "string", + "maxLength": 255 + } + }, + "customModelId": { + "type": "string", + "description": "A stored Reson8 phrase collection (custom model) id, managed via the Reson8 API or console." + }, + "eagerTurnProbability": { + "type": "number", + "description": "Threshold (0-1) at which Reson8 emits an eager turn-end candidate. Provider default 0.5.", + "minimum": 0, + "maximum": 1 + }, + "finalTurnProbability": { + "type": "number", + "description": "Threshold (0-1) at which Reson8 confirms the end of a turn. Provider default 0.92.", + "minimum": 0, + "maximum": 1 + }, + "fillerMode": { + "type": "string", + "description": "How Reson8 renders filler words in transcripts. Provider default `natural`.", + "enum": [ + "clean", + "natural", + "verbatim" + ] + } + }, + "required": [ + "provider" + ] + }, "LangfuseObservabilityPlan": { "type": "object", "properties": { @@ -18833,6 +18963,10 @@ "$ref": "#/components/schemas/XaiTranscriber", "title": "XaiTranscriber" }, + { + "$ref": "#/components/schemas/Reson8Transcriber", + "title": "Reson8Transcriber" + }, { "$ref": "#/components/schemas/VapiTranscriber", "title": "VapiTranscriber" @@ -20619,6 +20753,10 @@ "$ref": "#/components/schemas/XaiTranscriber", "title": "XaiTranscriber" }, + { + "$ref": "#/components/schemas/Reson8Transcriber", + "title": "Reson8Transcriber" + }, { "$ref": "#/components/schemas/VapiTranscriber", "title": "VapiTranscriber" @@ -21182,6 +21320,10 @@ "$ref": "#/components/schemas/CreateSonioxCredentialDTO", "title": "SonioxCredential" }, + { + "$ref": "#/components/schemas/CreateReson8CredentialDTO", + "title": "Reson8Credential" + }, { "$ref": "#/components/schemas/CreateSupabaseCredentialDTO", "title": "SupabaseCredential" @@ -21309,6 +21451,7 @@ "mistral": "#/components/schemas/CreateMistralCredentialDTO", "speechmatics": "#/components/schemas/CreateSpeechmaticsCredentialDTO", "soniox": "#/components/schemas/CreateSonioxCredentialDTO", + "reson8": "#/components/schemas/CreateReson8CredentialDTO", "google.calendar.oauth2-client": "#/components/schemas/CreateGoogleCalendarOAuth2ClientCredentialDTO", "google.calendar.oauth2-authorization": "#/components/schemas/CreateGoogleCalendarOAuth2AuthorizationCredentialDTO", "google.sheets.oauth2-authorization": "#/components/schemas/CreateGoogleSheetsOAuth2AuthorizationCredentialDTO", @@ -21509,6 +21652,10 @@ "$ref": "#/components/schemas/XaiTranscriber", "title": "XaiTranscriber" }, + { + "$ref": "#/components/schemas/Reson8Transcriber", + "title": "Reson8Transcriber" + }, { "$ref": "#/components/schemas/VapiTranscriber", "title": "VapiTranscriber" @@ -22072,6 +22219,10 @@ "$ref": "#/components/schemas/CreateSonioxCredentialDTO", "title": "SonioxCredential" }, + { + "$ref": "#/components/schemas/CreateReson8CredentialDTO", + "title": "Reson8Credential" + }, { "$ref": "#/components/schemas/CreateSupabaseCredentialDTO", "title": "SupabaseCredential" @@ -22199,6 +22350,7 @@ "mistral": "#/components/schemas/CreateMistralCredentialDTO", "speechmatics": "#/components/schemas/CreateSpeechmaticsCredentialDTO", "soniox": "#/components/schemas/CreateSonioxCredentialDTO", + "reson8": "#/components/schemas/CreateReson8CredentialDTO", "google.calendar.oauth2-client": "#/components/schemas/CreateGoogleCalendarOAuth2ClientCredentialDTO", "google.calendar.oauth2-authorization": "#/components/schemas/CreateGoogleCalendarOAuth2AuthorizationCredentialDTO", "google.sheets.oauth2-authorization": "#/components/schemas/CreateGoogleSheetsOAuth2AuthorizationCredentialDTO", @@ -27419,6 +27571,10 @@ "$ref": "#/components/schemas/XaiTranscriber", "title": "XaiTranscriber" }, + { + "$ref": "#/components/schemas/Reson8Transcriber", + "title": "Reson8Transcriber" + }, { "$ref": "#/components/schemas/VapiTranscriber", "title": "VapiTranscriber" @@ -28737,6 +28893,10 @@ "$ref": "#/components/schemas/XaiTranscriber", "title": "XaiTranscriber" }, + { + "$ref": "#/components/schemas/Reson8Transcriber", + "title": "Reson8Transcriber" + }, { "$ref": "#/components/schemas/VapiTranscriber", "title": "VapiTranscriber" @@ -29041,6 +29201,10 @@ "$ref": "#/components/schemas/CreateSonioxCredentialDTO", "title": "SonioxCredential" }, + { + "$ref": "#/components/schemas/CreateReson8CredentialDTO", + "title": "Reson8Credential" + }, { "$ref": "#/components/schemas/CreateSupabaseCredentialDTO", "title": "SupabaseCredential" @@ -29168,6 +29332,7 @@ "mistral": "#/components/schemas/CreateMistralCredentialDTO", "speechmatics": "#/components/schemas/CreateSpeechmaticsCredentialDTO", "soniox": "#/components/schemas/CreateSonioxCredentialDTO", + "reson8": "#/components/schemas/CreateReson8CredentialDTO", "google.calendar.oauth2-client": "#/components/schemas/CreateGoogleCalendarOAuth2ClientCredentialDTO", "google.calendar.oauth2-authorization": "#/components/schemas/CreateGoogleCalendarOAuth2AuthorizationCredentialDTO", "google.sheets.oauth2-authorization": "#/components/schemas/CreateGoogleSheetsOAuth2AuthorizationCredentialDTO", @@ -36112,6 +36277,11 @@ "type": "string", "description": "The host URL for Langfuse project. Eg: https://cloud.langfuse.com" }, + "serverVersion": { + "type": "string", + "description": "The semver version of your Langfuse server, e.g. 3.63.0, as its /api/public/health endpoint reports it. Optional.", + "maxLength": 32 + }, "name": { "type": "string", "description": "This is the name of credential. This is just for your reference.", @@ -37056,6 +37226,10 @@ "$ref": "#/components/schemas/XaiTranscriber", "title": "XaiTranscriber" }, + { + "$ref": "#/components/schemas/Reson8Transcriber", + "title": "Reson8Transcriber" + }, { "$ref": "#/components/schemas/VapiTranscriber", "title": "VapiTranscriber" @@ -37619,6 +37793,10 @@ "$ref": "#/components/schemas/CreateSonioxCredentialDTO", "title": "SonioxCredential" }, + { + "$ref": "#/components/schemas/CreateReson8CredentialDTO", + "title": "Reson8Credential" + }, { "$ref": "#/components/schemas/CreateSupabaseCredentialDTO", "title": "SupabaseCredential" @@ -37746,6 +37924,7 @@ "mistral": "#/components/schemas/CreateMistralCredentialDTO", "speechmatics": "#/components/schemas/CreateSpeechmaticsCredentialDTO", "soniox": "#/components/schemas/CreateSonioxCredentialDTO", + "reson8": "#/components/schemas/CreateReson8CredentialDTO", "google.calendar.oauth2-client": "#/components/schemas/CreateGoogleCalendarOAuth2ClientCredentialDTO", "google.calendar.oauth2-authorization": "#/components/schemas/CreateGoogleCalendarOAuth2AuthorizationCredentialDTO", "google.sheets.oauth2-authorization": "#/components/schemas/CreateGoogleSheetsOAuth2AuthorizationCredentialDTO", @@ -37998,6 +38177,10 @@ "$ref": "#/components/schemas/XaiTranscriber", "title": "XaiTranscriber" }, + { + "$ref": "#/components/schemas/Reson8Transcriber", + "title": "Reson8Transcriber" + }, { "$ref": "#/components/schemas/VapiTranscriber", "title": "VapiTranscriber" @@ -38561,6 +38744,10 @@ "$ref": "#/components/schemas/CreateSonioxCredentialDTO", "title": "SonioxCredential" }, + { + "$ref": "#/components/schemas/CreateReson8CredentialDTO", + "title": "Reson8Credential" + }, { "$ref": "#/components/schemas/CreateSupabaseCredentialDTO", "title": "SupabaseCredential" @@ -38688,6 +38875,7 @@ "mistral": "#/components/schemas/CreateMistralCredentialDTO", "speechmatics": "#/components/schemas/CreateSpeechmaticsCredentialDTO", "soniox": "#/components/schemas/CreateSonioxCredentialDTO", + "reson8": "#/components/schemas/CreateReson8CredentialDTO", "google.calendar.oauth2-client": "#/components/schemas/CreateGoogleCalendarOAuth2ClientCredentialDTO", "google.calendar.oauth2-authorization": "#/components/schemas/CreateGoogleCalendarOAuth2AuthorizationCredentialDTO", "google.sheets.oauth2-authorization": "#/components/schemas/CreateGoogleSheetsOAuth2AuthorizationCredentialDTO", @@ -39036,6 +39224,10 @@ "$ref": "#/components/schemas/XaiTranscriber", "title": "XaiTranscriber" }, + { + "$ref": "#/components/schemas/Reson8Transcriber", + "title": "Reson8Transcriber" + }, { "$ref": "#/components/schemas/VapiTranscriber", "title": "VapiTranscriber" @@ -39599,6 +39791,10 @@ "$ref": "#/components/schemas/CreateSonioxCredentialDTO", "title": "SonioxCredential" }, + { + "$ref": "#/components/schemas/CreateReson8CredentialDTO", + "title": "Reson8Credential" + }, { "$ref": "#/components/schemas/CreateSupabaseCredentialDTO", "title": "SupabaseCredential" @@ -39726,6 +39922,7 @@ "mistral": "#/components/schemas/CreateMistralCredentialDTO", "speechmatics": "#/components/schemas/CreateSpeechmaticsCredentialDTO", "soniox": "#/components/schemas/CreateSonioxCredentialDTO", + "reson8": "#/components/schemas/CreateReson8CredentialDTO", "google.calendar.oauth2-client": "#/components/schemas/CreateGoogleCalendarOAuth2ClientCredentialDTO", "google.calendar.oauth2-authorization": "#/components/schemas/CreateGoogleCalendarOAuth2AuthorizationCredentialDTO", "google.sheets.oauth2-authorization": "#/components/schemas/CreateGoogleSheetsOAuth2AuthorizationCredentialDTO", @@ -40056,6 +40253,10 @@ "$ref": "#/components/schemas/XaiTranscriber", "title": "XaiTranscriber" }, + { + "$ref": "#/components/schemas/Reson8Transcriber", + "title": "Reson8Transcriber" + }, { "$ref": "#/components/schemas/VapiTranscriber", "title": "VapiTranscriber" @@ -40619,6 +40820,10 @@ "$ref": "#/components/schemas/CreateSonioxCredentialDTO", "title": "SonioxCredential" }, + { + "$ref": "#/components/schemas/CreateReson8CredentialDTO", + "title": "Reson8Credential" + }, { "$ref": "#/components/schemas/CreateSupabaseCredentialDTO", "title": "SupabaseCredential" @@ -40746,6 +40951,7 @@ "mistral": "#/components/schemas/CreateMistralCredentialDTO", "speechmatics": "#/components/schemas/CreateSpeechmaticsCredentialDTO", "soniox": "#/components/schemas/CreateSonioxCredentialDTO", + "reson8": "#/components/schemas/CreateReson8CredentialDTO", "google.calendar.oauth2-client": "#/components/schemas/CreateGoogleCalendarOAuth2ClientCredentialDTO", "google.calendar.oauth2-authorization": "#/components/schemas/CreateGoogleCalendarOAuth2AuthorizationCredentialDTO", "google.sheets.oauth2-authorization": "#/components/schemas/CreateGoogleSheetsOAuth2AuthorizationCredentialDTO", @@ -41077,6 +41283,10 @@ "$ref": "#/components/schemas/XaiTranscriber", "title": "XaiTranscriber" }, + { + "$ref": "#/components/schemas/Reson8Transcriber", + "title": "Reson8Transcriber" + }, { "$ref": "#/components/schemas/VapiTranscriber", "title": "VapiTranscriber" @@ -41640,6 +41850,10 @@ "$ref": "#/components/schemas/CreateSonioxCredentialDTO", "title": "SonioxCredential" }, + { + "$ref": "#/components/schemas/CreateReson8CredentialDTO", + "title": "Reson8Credential" + }, { "$ref": "#/components/schemas/CreateSupabaseCredentialDTO", "title": "SupabaseCredential" @@ -41767,6 +41981,7 @@ "mistral": "#/components/schemas/CreateMistralCredentialDTO", "speechmatics": "#/components/schemas/CreateSpeechmaticsCredentialDTO", "soniox": "#/components/schemas/CreateSonioxCredentialDTO", + "reson8": "#/components/schemas/CreateReson8CredentialDTO", "google.calendar.oauth2-client": "#/components/schemas/CreateGoogleCalendarOAuth2ClientCredentialDTO", "google.calendar.oauth2-authorization": "#/components/schemas/CreateGoogleCalendarOAuth2AuthorizationCredentialDTO", "google.sheets.oauth2-authorization": "#/components/schemas/CreateGoogleSheetsOAuth2AuthorizationCredentialDTO", @@ -41991,6 +42206,10 @@ "$ref": "#/components/schemas/XaiTranscriber", "title": "XaiTranscriber" }, + { + "$ref": "#/components/schemas/Reson8Transcriber", + "title": "Reson8Transcriber" + }, { "$ref": "#/components/schemas/VapiTranscriber", "title": "VapiTranscriber" @@ -42554,6 +42773,10 @@ "$ref": "#/components/schemas/CreateSonioxCredentialDTO", "title": "SonioxCredential" }, + { + "$ref": "#/components/schemas/CreateReson8CredentialDTO", + "title": "Reson8Credential" + }, { "$ref": "#/components/schemas/CreateSupabaseCredentialDTO", "title": "SupabaseCredential" @@ -42681,6 +42904,7 @@ "mistral": "#/components/schemas/CreateMistralCredentialDTO", "speechmatics": "#/components/schemas/CreateSpeechmaticsCredentialDTO", "soniox": "#/components/schemas/CreateSonioxCredentialDTO", + "reson8": "#/components/schemas/CreateReson8CredentialDTO", "google.calendar.oauth2-client": "#/components/schemas/CreateGoogleCalendarOAuth2ClientCredentialDTO", "google.calendar.oauth2-authorization": "#/components/schemas/CreateGoogleCalendarOAuth2AuthorizationCredentialDTO", "google.sheets.oauth2-authorization": "#/components/schemas/CreateGoogleSheetsOAuth2AuthorizationCredentialDTO", @@ -42881,6 +43105,10 @@ "$ref": "#/components/schemas/XaiTranscriber", "title": "XaiTranscriber" }, + { + "$ref": "#/components/schemas/Reson8Transcriber", + "title": "Reson8Transcriber" + }, { "$ref": "#/components/schemas/VapiTranscriber", "title": "VapiTranscriber" @@ -43444,6 +43672,10 @@ "$ref": "#/components/schemas/CreateSonioxCredentialDTO", "title": "SonioxCredential" }, + { + "$ref": "#/components/schemas/CreateReson8CredentialDTO", + "title": "Reson8Credential" + }, { "$ref": "#/components/schemas/CreateSupabaseCredentialDTO", "title": "SupabaseCredential" @@ -43571,6 +43803,7 @@ "mistral": "#/components/schemas/CreateMistralCredentialDTO", "speechmatics": "#/components/schemas/CreateSpeechmaticsCredentialDTO", "soniox": "#/components/schemas/CreateSonioxCredentialDTO", + "reson8": "#/components/schemas/CreateReson8CredentialDTO", "google.calendar.oauth2-client": "#/components/schemas/CreateGoogleCalendarOAuth2ClientCredentialDTO", "google.calendar.oauth2-authorization": "#/components/schemas/CreateGoogleCalendarOAuth2AuthorizationCredentialDTO", "google.sheets.oauth2-authorization": "#/components/schemas/CreateGoogleSheetsOAuth2AuthorizationCredentialDTO", @@ -44031,6 +44264,10 @@ "$ref": "#/components/schemas/XaiTranscriber", "title": "XaiTranscriber" }, + { + "$ref": "#/components/schemas/Reson8Transcriber", + "title": "Reson8Transcriber" + }, { "$ref": "#/components/schemas/VapiTranscriber", "title": "VapiTranscriber" @@ -44335,6 +44572,10 @@ "$ref": "#/components/schemas/CreateSonioxCredentialDTO", "title": "SonioxCredential" }, + { + "$ref": "#/components/schemas/CreateReson8CredentialDTO", + "title": "Reson8Credential" + }, { "$ref": "#/components/schemas/CreateSupabaseCredentialDTO", "title": "SupabaseCredential" @@ -44462,6 +44703,7 @@ "mistral": "#/components/schemas/CreateMistralCredentialDTO", "speechmatics": "#/components/schemas/CreateSpeechmaticsCredentialDTO", "soniox": "#/components/schemas/CreateSonioxCredentialDTO", + "reson8": "#/components/schemas/CreateReson8CredentialDTO", "google.calendar.oauth2-client": "#/components/schemas/CreateGoogleCalendarOAuth2ClientCredentialDTO", "google.calendar.oauth2-authorization": "#/components/schemas/CreateGoogleCalendarOAuth2AuthorizationCredentialDTO", "google.sheets.oauth2-authorization": "#/components/schemas/CreateGoogleSheetsOAuth2AuthorizationCredentialDTO", @@ -44731,6 +44973,10 @@ "$ref": "#/components/schemas/XaiTranscriber", "title": "XaiTranscriber" }, + { + "$ref": "#/components/schemas/Reson8Transcriber", + "title": "Reson8Transcriber" + }, { "$ref": "#/components/schemas/VapiTranscriber", "title": "VapiTranscriber" @@ -45035,6 +45281,10 @@ "$ref": "#/components/schemas/CreateSonioxCredentialDTO", "title": "SonioxCredential" }, + { + "$ref": "#/components/schemas/CreateReson8CredentialDTO", + "title": "Reson8Credential" + }, { "$ref": "#/components/schemas/CreateSupabaseCredentialDTO", "title": "SupabaseCredential" @@ -45162,6 +45412,7 @@ "mistral": "#/components/schemas/CreateMistralCredentialDTO", "speechmatics": "#/components/schemas/CreateSpeechmaticsCredentialDTO", "soniox": "#/components/schemas/CreateSonioxCredentialDTO", + "reson8": "#/components/schemas/CreateReson8CredentialDTO", "google.calendar.oauth2-client": "#/components/schemas/CreateGoogleCalendarOAuth2ClientCredentialDTO", "google.calendar.oauth2-authorization": "#/components/schemas/CreateGoogleCalendarOAuth2AuthorizationCredentialDTO", "google.sheets.oauth2-authorization": "#/components/schemas/CreateGoogleSheetsOAuth2AuthorizationCredentialDTO", @@ -45413,6 +45664,10 @@ "$ref": "#/components/schemas/XaiTranscriber", "title": "XaiTranscriber" }, + { + "$ref": "#/components/schemas/Reson8Transcriber", + "title": "Reson8Transcriber" + }, { "$ref": "#/components/schemas/VapiTranscriber", "title": "VapiTranscriber" @@ -45717,6 +45972,10 @@ "$ref": "#/components/schemas/CreateSonioxCredentialDTO", "title": "SonioxCredential" }, + { + "$ref": "#/components/schemas/CreateReson8CredentialDTO", + "title": "Reson8Credential" + }, { "$ref": "#/components/schemas/CreateSupabaseCredentialDTO", "title": "SupabaseCredential" @@ -45844,6 +46103,7 @@ "mistral": "#/components/schemas/CreateMistralCredentialDTO", "speechmatics": "#/components/schemas/CreateSpeechmaticsCredentialDTO", "soniox": "#/components/schemas/CreateSonioxCredentialDTO", + "reson8": "#/components/schemas/CreateReson8CredentialDTO", "google.calendar.oauth2-client": "#/components/schemas/CreateGoogleCalendarOAuth2ClientCredentialDTO", "google.calendar.oauth2-authorization": "#/components/schemas/CreateGoogleCalendarOAuth2AuthorizationCredentialDTO", "google.sheets.oauth2-authorization": "#/components/schemas/CreateGoogleSheetsOAuth2AuthorizationCredentialDTO", @@ -47460,23 +47720,23 @@ "properties": { "modelLatency": { "type": "number", - "description": "This is the model latency for the first token." + "description": "This is the time in milliseconds from the start of the turn's model stage to the model's first output token.\nIt includes knowledge-base retrieval and request routing before the provider request. 0 when it was not measured on this turn." }, "voiceLatency": { "type": "number", - "description": "This is the voice latency from the model output." + "description": "This is the time in milliseconds from the model's first output token to the first reply audio reaching Vapi's turn-taking buffer.\nIt includes the wait to collect enough text for the first voice request (set by `voice.chunkPlan`), the voice provider's time to first audio, and any sample-rate conversion. 0 when it was not measured on this turn." }, "transcriberLatency": { "type": "number", - "description": "This is the transcriber latency from the user speech." + "description": "This is the time in milliseconds from the user's last voice activity signal, normally the end of speech, to the transcriber returning the words of that speech.\n0 when it was not measured, including when the words arrived before that signal." }, "endpointingLatency": { "type": "number", - "description": "This is the endpointing latency." + "description": "This is the time in milliseconds from the transcriber returning the words to Vapi deciding the turn is over and sending it to the model.\n0 when the reply was not triggered by sending a user transcript to the model." }, "turnLatency": { "type": "number", - "description": "This is the latency for the whole turn." + "description": "This is the time in milliseconds from the user's last voice activity signal to Vapi starting to send the assistant's reply audio.\nIt is computed as `transcriberLatency` + `endpointingLatency` + the time from that decision to the reply starting, so when `transcriberLatency` is 0 because it was not measured, this total leaves that interval out. `modelLatency` and `voiceLatency` fall inside the last part, so the fields do not add up to this value." } } }, @@ -47484,7 +47744,7 @@ "type": "object", "properties": { "turnLatencies": { - "description": "These are the individual latencies for each turn.", + "description": "These are the individual latencies for each turn, in milliseconds, measured on Vapi's servers without network or playback time.\nA turn is recorded only when the assistant replies to the user. A first message the assistant speaks first is not recorded; with `assistant-waits-for-user` it is recorded, with `endpointingLatency` 0. A component that was not measured on a turn is 0.", "type": "array", "items": { "$ref": "#/components/schemas/TurnLatency" @@ -47492,11 +47752,11 @@ }, "modelLatencyAverage": { "type": "number", - "description": "This is the average latency for the model to output the first token." + "description": "This is the average `modelLatency` across `turnLatencies`, in milliseconds.\nTurns that recorded 0 because the model latency was not measured are included in the average." }, "voiceLatencyAverage": { "type": "number", - "description": "This is the average latency for the text to speech." + "description": "This is the average `voiceLatency` across `turnLatencies`, in milliseconds.\nTurns that recorded 0 because the voice latency was not measured are included in the average." }, "transcriberLatencyAverage": { "type": "number", @@ -48073,6 +48333,16 @@ "call.in-progress.error-vapifault-xai-transcriber-invalid-config", "call.in-progress.error-vapifault-xai-transcriber-server-error", "call.in-progress.error-vapifault-xai-transcriber-failed", + "pipeline-error-reson8-transcriber-auth-failed", + "pipeline-error-reson8-transcriber-rate-limited", + "pipeline-error-reson8-transcriber-invalid-config", + "pipeline-error-reson8-transcriber-closed", + "pipeline-error-reson8-transcriber-failed", + "call.in-progress.error-vapifault-reson8-transcriber-auth-failed", + "call.in-progress.error-vapifault-reson8-transcriber-rate-limited", + "call.in-progress.error-vapifault-reson8-transcriber-invalid-config", + "call.in-progress.error-vapifault-reson8-transcriber-closed", + "call.in-progress.error-vapifault-reson8-transcriber-failed", "pipeline-error-cartesia-transcriber-failed", "call.in-progress.error-vapifault-cartesia-transcriber-failed", "call.in-progress.error-pipeline-no-available-llm-model", @@ -48408,6 +48678,7 @@ "call.in-progress.error-vapifault-cartesia-socket-hang-up", "call.in-progress.error-vapifault-cartesia-requested-payment", "call.in-progress.error-providerfault-cartesia-500-server-error", + "call.in-progress.error-providerfault-cartesia-502-server-error", "call.in-progress.error-providerfault-cartesia-503-server-error", "call.in-progress.error-providerfault-cartesia-522-server-error", "pipeline-error-eleven-labs-voice-not-found", @@ -48528,6 +48799,16 @@ "call.in-progress.error-vapifault-xai-transcriber-invalid-config", "call.in-progress.error-vapifault-xai-transcriber-server-error", "call.in-progress.error-vapifault-xai-transcriber-failed", + "pipeline-error-reson8-transcriber-auth-failed", + "pipeline-error-reson8-transcriber-rate-limited", + "pipeline-error-reson8-transcriber-invalid-config", + "pipeline-error-reson8-transcriber-closed", + "pipeline-error-reson8-transcriber-failed", + "call.in-progress.error-vapifault-reson8-transcriber-auth-failed", + "call.in-progress.error-vapifault-reson8-transcriber-rate-limited", + "call.in-progress.error-vapifault-reson8-transcriber-invalid-config", + "call.in-progress.error-vapifault-reson8-transcriber-closed", + "call.in-progress.error-vapifault-reson8-transcriber-failed", "pipeline-error-cartesia-transcriber-failed", "call.in-progress.error-vapifault-cartesia-transcriber-failed", "call.in-progress.error-warm-transfer-max-duration", @@ -49739,6 +50020,697 @@ } } }, + "CallHealthDashboardApiErrorDTO": { + "type": "object", + "properties": { + "code": { + "type": "string", + "minLength": 1 + }, + "message": { + "type": "string", + "minLength": 1 + }, + "requestId": { + "type": "string", + "minLength": 1 + }, + "retryable": { + "type": "boolean" + } + }, + "required": [ + "code", + "message", + "requestId", + "retryable" + ] + }, + "CallHealthDashboardAssistantReferenceDTO": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string", + "minLength": 1 + }, + "latestVersion": { + "type": "string", + "description": "Current assistant.latest_version label; omitted when unavailable, never a goal revision.", + "minLength": 1 + } + }, + "required": [ + "id" + ] + }, + "CallHealthDashboardGoalDefinitionDTO": { + "type": "object", + "properties": { + "goalId": { + "type": "string", + "description": "Explicit selected goal identity, stable across its revisions.", + "format": "uuid" + }, + "succeedsWhen": { + "type": "string", + "description": "Current visible revision of the selected goal.", + "minLength": 1, + "maxLength": 600 + }, + "leaveOut": { + "type": "string", + "description": "Current optional semantic exclusions.", + "minLength": 1, + "maxLength": 300 + } + }, + "required": [ + "goalId", + "succeedsWhen" + ] + }, + "CallHealthDashboardGoalSummaryDTO": { + "type": "object", + "properties": { + "registeredCallCount": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "eligibleCallCount": { + "type": "integer", + "description": "Calls with an accepted semantic eligibility decision and binary goal outcome.", + "minimum": 0, + "maximum": 9007199254740991 + }, + "ineligibleCallCount": { + "type": "integer", + "description": "Accepted semantic exclusions; absent from the goal denominator.", + "minimum": 0, + "maximum": 9007199254740991 + }, + "unassessedCallCount": { + "type": "integer", + "description": "No accepted eligibility decision, including technical or privacy exclusions.", + "minimum": 0, + "maximum": 9007199254740991 + }, + "goalMetCount": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "goalNotMetCount": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "evaluatedCallCount": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "analyzedCallCount": { + "type": "integer", + "description": "Accepted current-goal results, including ineligible; independent of issue processing.", + "minimum": 0, + "maximum": 9007199254740991 + }, + "goalMetRate": { + "type": "number", + "description": "Goal-met / evaluatedCallCount; omitted when there are no binary outcomes.", + "minimum": 0, + "maximum": 1 + }, + "goalNotMetRate": { + "type": "number", + "minimum": 0, + "maximum": 1 + } + }, + "required": [ + "registeredCallCount", + "eligibleCallCount", + "ineligibleCallCount", + "unassessedCallCount", + "goalMetCount", + "goalNotMetCount", + "evaluatedCallCount", + "analyzedCallCount" + ] + }, + "CallHealthDashboardAssistantOverviewDTO": { + "type": "object", + "properties": { + "assistant": { + "description": "Current permitted assistant metadata, fetched in a batch.", + "allOf": [ + { + "$ref": "#/components/schemas/CallHealthDashboardAssistantReferenceDTO" + } + ] + }, + "goalDefinition": { + "description": "Every row represents an explicitly selected, tenant-owned assistant goal.", + "allOf": [ + { + "$ref": "#/components/schemas/CallHealthDashboardGoalDefinitionDTO" + } + ] + }, + "goal": { + "description": "Window totals for the selected goal, including zero-result assistants.", + "allOf": [ + { + "$ref": "#/components/schemas/CallHealthDashboardGoalSummaryDTO" + } + ] + } + }, + "required": [ + "assistant", + "goalDefinition", + "goal" + ] + }, + "CallHealthDashboardIntakeCoverageDTO": { + "type": "object", + "properties": { + "deliveryMode": { + "type": "string", + "enum": [ + "bestEffort" + ] + }, + "endToEndCoverage": { + "type": "string", + "enum": [ + "unknown" + ] + } + }, + "required": [ + "deliveryMode", + "endToEndCoverage" + ] + }, + "CallHealthDashboardGoalGapsDTO": { + "type": "object", + "properties": { + "pending": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "unavailable": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "skipped": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "error": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "excluded": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + } + }, + "required": [ + "pending", + "unavailable", + "skipped", + "error", + "excluded" + ] + }, + "CallHealthDashboardClassificationCoverageDTO": { + "type": "object", + "properties": { + "pending": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "unavailable": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "skipped": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "error": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "excluded": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "complete": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "partial": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + } + }, + "required": [ + "pending", + "unavailable", + "skipped", + "error", + "excluded", + "complete", + "partial" + ] + }, + "CallHealthDashboardAssignmentCoverageDTO": { + "type": "object", + "properties": { + "pending": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "unmatched": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "skipped": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "unavailable": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "error": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "coverageGapCount": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + } + }, + "required": [ + "pending", + "unmatched", + "skipped", + "unavailable", + "error", + "coverageGapCount" + ] + }, + "CallHealthDashboardDiscoveryCoverageDTO": { + "type": "object", + "properties": { + "pendingIssueCategoryCount": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "blockedIssueCategoryCount": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + } + }, + "required": [ + "pendingIssueCategoryCount", + "blockedIssueCategoryCount" + ] + }, + "CallHealthDashboardSweepCoverageDTO": { + "type": "object", + "properties": { + "state": { + "type": "string", + "enum": [ + "idle", + "enumerating", + "processing", + "deduplicating", + "blocked" + ] + } + }, + "required": [ + "state" + ] + }, + "CallHealthDashboardCoverageDTO": { + "type": "object", + "properties": { + "asOf": { + "type": "string", + "format": "date-time", + "pattern": "^\\d{4}-\\d{2}-\\d{2}T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.(\\d{1,6}))?(?:Z|[+-](?:[01]\\d|2[0-3]):[0-5]\\d)$" + }, + "intake": { + "$ref": "#/components/schemas/CallHealthDashboardIntakeCoverageDTO" + }, + "goal": { + "$ref": "#/components/schemas/CallHealthDashboardGoalGapsDTO" + }, + "classification": { + "$ref": "#/components/schemas/CallHealthDashboardClassificationCoverageDTO" + }, + "assignment": { + "$ref": "#/components/schemas/CallHealthDashboardAssignmentCoverageDTO" + }, + "discovery": { + "$ref": "#/components/schemas/CallHealthDashboardDiscoveryCoverageDTO" + }, + "sweep": { + "$ref": "#/components/schemas/CallHealthDashboardSweepCoverageDTO" + }, + "countsComplete": { + "type": "boolean", + "description": "Completeness of received authorized work only; never source delivery coverage." + } + }, + "required": [ + "asOf", + "intake", + "goal", + "classification", + "assignment", + "discovery", + "sweep", + "countsComplete" + ] + }, + "CallHealthDashboardAssistantListResponseDTO": { + "type": "object", + "properties": { + "results": { + "description": "Visible nondeleted assistants in ascending ID transport order; sort the exhausted result in the frontend.", + "type": "array", + "items": { + "$ref": "#/components/schemas/CallHealthDashboardAssistantOverviewDTO" + } + }, + "nextCursor": { + "type": "string", + "description": "Opaque ID continuation bound to tenant, completion window and filters.", + "minLength": 1, + "maxLength": 2048, + "pattern": "^[A-Za-z0-9_-]+$" + }, + "coverage": { + "description": "Received-work processing coverage, separate from analyzed goal results.", + "allOf": [ + { + "$ref": "#/components/schemas/CallHealthDashboardCoverageDTO" + } + ] + } + }, + "required": [ + "results", + "coverage" + ] + }, + "CallHealthDashboardGoalOptionDTO": { + "type": "object", + "properties": { + "goalId": { + "type": "string", + "description": "Explicit selected goal identity, stable across its revisions.", + "format": "uuid" + }, + "succeedsWhen": { + "type": "string", + "description": "Current visible revision of the selected goal.", + "minLength": 1, + "maxLength": 600 + }, + "leaveOut": { + "type": "string", + "description": "Current optional semantic exclusions.", + "minLength": 1, + "maxLength": 300 + }, + "goalVersion": { + "type": "string", + "description": "Current revision for display; clients select by stable goalId, never by this version.", + "pattern": "^[1-9]\\d{0,18}$", + "minLength": 1, + "maxLength": 19 + } + }, + "required": [ + "goalId", + "succeedsWhen", + "goalVersion" + ] + }, + "CallHealthDashboardAssistantGoalsDTO": { + "type": "object", + "properties": { + "assistantId": { + "type": "string", + "description": "Requested assistant identity whose current published row remains visible.", + "format": "uuid" + }, + "goals": { + "description": "Empty when this visible assistant has no goals; no goal is automatically selected.", + "type": "array", + "items": { + "$ref": "#/components/schemas/CallHealthDashboardGoalOptionDTO" + } + } + }, + "required": [ + "assistantId", + "goals" + ] + }, + "CallHealthDashboardAssistantGoalsResponseDTO": { + "type": "object", + "properties": { + "results": { + "description": "Complete requested visible assistant cohort, including assistants with no goal options.", + "type": "array", + "items": { + "$ref": "#/components/schemas/CallHealthDashboardAssistantGoalsDTO" + } + } + }, + "required": [ + "results" + ] + }, + "CallHealthDashboardGoalDailyDTO": { + "type": "object", + "properties": { + "registeredCallCount": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "eligibleCallCount": { + "type": "integer", + "description": "Calls with an accepted semantic eligibility decision and binary goal outcome.", + "minimum": 0, + "maximum": 9007199254740991 + }, + "ineligibleCallCount": { + "type": "integer", + "description": "Accepted semantic exclusions; absent from the goal denominator.", + "minimum": 0, + "maximum": 9007199254740991 + }, + "unassessedCallCount": { + "type": "integer", + "description": "No accepted eligibility decision, including technical or privacy exclusions.", + "minimum": 0, + "maximum": 9007199254740991 + }, + "goalMetCount": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "goalNotMetCount": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "evaluatedCallCount": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "analyzedCallCount": { + "type": "integer", + "description": "Accepted current-goal results, including ineligible; independent of issue processing.", + "minimum": 0, + "maximum": 9007199254740991 + }, + "goalMetRate": { + "type": "number", + "description": "Goal-met / evaluatedCallCount; omitted when there are no binary outcomes.", + "minimum": 0, + "maximum": 1 + }, + "goalNotMetRate": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "date": { + "type": "string", + "description": "UTC calendar date; the first and last buckets are clipped to the requested window.", + "format": "date" + } + }, + "required": [ + "registeredCallCount", + "eligibleCallCount", + "ineligibleCallCount", + "unassessedCallCount", + "goalMetCount", + "goalNotMetCount", + "evaluatedCallCount", + "analyzedCallCount", + "date" + ] + }, + "CallHealthDashboardWindowDTO": { + "type": "object", + "properties": { + "callTimeGte": { + "type": "string", + "format": "date-time", + "pattern": "^\\d{4}-\\d{2}-\\d{2}T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.(\\d{1,6}))?(?:Z|[+-](?:[01]\\d|2[0-3]):[0-5]\\d)$" + }, + "callTimeLt": { + "type": "string", + "format": "date-time", + "pattern": "^\\d{4}-\\d{2}-\\d{2}T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.(\\d{1,6}))?(?:Z|[+-](?:[01]\\d|2[0-3]):[0-5]\\d)$" + } + }, + "required": [ + "callTimeGte", + "callTimeLt" + ] + }, + "CallHealthDashboardSeriesPageDTO": { + "type": "object", + "properties": { + "window": { + "description": "Full resolved completion window used by every total, rate and coverage count.", + "allOf": [ + { + "$ref": "#/components/schemas/CallHealthDashboardWindowDTO" + } + ] + }, + "pageWindow": { + "description": "Clipped completion window represented by this page's daily buckets.", + "allOf": [ + { + "$ref": "#/components/schemas/CallHealthDashboardWindowDTO" + } + ] + }, + "nextCursor": { + "type": "string", + "description": "Continue chart dates only; independent of the issue-row nextCursor.", + "minLength": 1, + "maxLength": 2048, + "pattern": "^[A-Za-z0-9_-]+$" + } + }, + "required": [ + "window", + "pageWindow" + ] + }, + "CallHealthDashboardAssistantSummaryResponseDTO": { + "type": "object", + "properties": { + "assistant": { + "description": "Current permitted assistant metadata, fetched in a batch.", + "allOf": [ + { + "$ref": "#/components/schemas/CallHealthDashboardAssistantReferenceDTO" + } + ] + }, + "goalDefinition": { + "description": "Every row represents an explicitly selected, tenant-owned assistant goal.", + "allOf": [ + { + "$ref": "#/components/schemas/CallHealthDashboardGoalDefinitionDTO" + } + ] + }, + "goal": { + "description": "Window totals for the selected goal, including zero-result assistants.", + "allOf": [ + { + "$ref": "#/components/schemas/CallHealthDashboardGoalSummaryDTO" + } + ] + }, + "results": { + "description": "One ascending contiguous page of UTC dates, including empty buckets.", + "minItems": 1, + "maxItems": 100, + "type": "array", + "items": { + "$ref": "#/components/schemas/CallHealthDashboardGoalDailyDTO" + } + }, + "seriesPage": { + "$ref": "#/components/schemas/CallHealthDashboardSeriesPageDTO" + }, + "coverage": { + "description": "Received-work processing coverage, separate from success rates.", + "allOf": [ + { + "$ref": "#/components/schemas/CallHealthDashboardCoverageDTO" + } + ] + } + }, + "required": [ + "assistant", + "goalDefinition", + "goal", + "results", + "seriesPage", + "coverage" + ] + }, "DeveloperMessage": { "type": "object", "properties": { @@ -61280,53 +62252,6 @@ "toolId" ] }, - "CallHealthDashboardApiErrorDTO": { - "type": "object", - "properties": { - "code": { - "type": "string", - "minLength": 1 - }, - "message": { - "type": "string", - "minLength": 1 - }, - "requestId": { - "type": "string", - "minLength": 1 - }, - "retryable": { - "type": "boolean" - } - }, - "required": [ - "code", - "message", - "requestId", - "retryable" - ] - }, - "CallHealthDashboardAssistantReferenceDTO": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "name": { - "type": "string", - "minLength": 1 - }, - "latestVersion": { - "type": "string", - "description": "Current assistant.latest_version label; omitted when unavailable, never a goal revision.", - "minLength": 1 - } - }, - "required": [ - "id" - ] - }, "CallHealthDashboardIssueDailyDTO": { "type": "object", "properties": { @@ -61468,57 +62393,6 @@ "coverage" ] }, - "CallHealthDashboardWindowDTO": { - "type": "object", - "properties": { - "callTimeGte": { - "type": "string", - "format": "date-time", - "pattern": "^\\d{4}-\\d{2}-\\d{2}T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.(\\d{1,6}))?(?:Z|[+-](?:[01]\\d|2[0-3]):[0-5]\\d)$" - }, - "callTimeLt": { - "type": "string", - "format": "date-time", - "pattern": "^\\d{4}-\\d{2}-\\d{2}T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.(\\d{1,6}))?(?:Z|[+-](?:[01]\\d|2[0-3]):[0-5]\\d)$" - } - }, - "required": [ - "callTimeGte", - "callTimeLt" - ] - }, - "CallHealthDashboardSeriesPageDTO": { - "type": "object", - "properties": { - "window": { - "description": "Full resolved completion window used by every total, rate and coverage count.", - "allOf": [ - { - "$ref": "#/components/schemas/CallHealthDashboardWindowDTO" - } - ] - }, - "pageWindow": { - "description": "Clipped completion window represented by this page's daily buckets.", - "allOf": [ - { - "$ref": "#/components/schemas/CallHealthDashboardWindowDTO" - } - ] - }, - "nextCursor": { - "type": "string", - "description": "Continue chart dates only; independent of the issue-row nextCursor.", - "minLength": 1, - "maxLength": 2048, - "pattern": "^[A-Za-z0-9_-]+$" - } - }, - "required": [ - "window", - "pageWindow" - ] - }, "CallHealthDashboardFacetsDTO": { "type": "object", "properties": { @@ -61538,235 +62412,6 @@ "statuses" ] }, - "CallHealthDashboardIntakeCoverageDTO": { - "type": "object", - "properties": { - "deliveryMode": { - "type": "string", - "enum": [ - "bestEffort" - ] - }, - "endToEndCoverage": { - "type": "string", - "enum": [ - "unknown" - ] - } - }, - "required": [ - "deliveryMode", - "endToEndCoverage" - ] - }, - "CallHealthDashboardGoalGapsDTO": { - "type": "object", - "properties": { - "pending": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "unavailable": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "skipped": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "error": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "excluded": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - } - }, - "required": [ - "pending", - "unavailable", - "skipped", - "error", - "excluded" - ] - }, - "CallHealthDashboardClassificationCoverageDTO": { - "type": "object", - "properties": { - "pending": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "unavailable": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "skipped": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "error": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "excluded": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "complete": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "partial": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - } - }, - "required": [ - "pending", - "unavailable", - "skipped", - "error", - "excluded", - "complete", - "partial" - ] - }, - "CallHealthDashboardAssignmentCoverageDTO": { - "type": "object", - "properties": { - "pending": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "unmatched": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "skipped": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "unavailable": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "error": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "coverageGapCount": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - } - }, - "required": [ - "pending", - "unmatched", - "skipped", - "unavailable", - "error", - "coverageGapCount" - ] - }, - "CallHealthDashboardDiscoveryCoverageDTO": { - "type": "object", - "properties": { - "pendingIssueCategoryCount": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "blockedIssueCategoryCount": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - } - }, - "required": [ - "pendingIssueCategoryCount", - "blockedIssueCategoryCount" - ] - }, - "CallHealthDashboardSweepCoverageDTO": { - "type": "object", - "properties": { - "state": { - "type": "string", - "enum": [ - "idle", - "enumerating", - "processing", - "deduplicating", - "blocked" - ] - } - }, - "required": [ - "state" - ] - }, - "CallHealthDashboardCoverageDTO": { - "type": "object", - "properties": { - "asOf": { - "type": "string", - "format": "date-time", - "pattern": "^\\d{4}-\\d{2}-\\d{2}T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.(\\d{1,6}))?(?:Z|[+-](?:[01]\\d|2[0-3]):[0-5]\\d)$" - }, - "intake": { - "$ref": "#/components/schemas/CallHealthDashboardIntakeCoverageDTO" - }, - "goal": { - "$ref": "#/components/schemas/CallHealthDashboardGoalGapsDTO" - }, - "classification": { - "$ref": "#/components/schemas/CallHealthDashboardClassificationCoverageDTO" - }, - "assignment": { - "$ref": "#/components/schemas/CallHealthDashboardAssignmentCoverageDTO" - }, - "discovery": { - "$ref": "#/components/schemas/CallHealthDashboardDiscoveryCoverageDTO" - }, - "sweep": { - "$ref": "#/components/schemas/CallHealthDashboardSweepCoverageDTO" - }, - "countsComplete": { - "type": "boolean", - "description": "Completeness of received authorized work only; never source delivery coverage." - } - }, - "required": [ - "asOf", - "intake", - "goal", - "classification", - "assignment", - "discovery", - "sweep", - "countsComplete" - ] - }, "CallHealthDashboardIssueListResponseDTO": { "type": "object", "properties": { @@ -66085,121 +66730,125 @@ "updatedAt" ] }, - "InsightTimeRange": { - "type": "object", - "properties": { - "start": { - "type": "object", - "description": "This is the start date for the time range.\n\nShould be a valid ISO 8601 date-time string or relative time string.\nIf not provided, defaults to the 7 days ago.\n\nRelative time strings of the format \"-{number}{unit}\" are allowed.\n\nValid units are:\n- d: days\n- h: hours\n- w: weeks\n- m: months\n- y: years", - "example": "\"2025-01-01\" or \"-7d\" or \"now\"" - }, - "end": { - "type": "object", - "description": "This is the end date for the time range.\n\nShould be a valid ISO 8601 date-time string or relative time string.\nIf not provided, defaults to now.\n\nRelative time strings of the format \"-{number}{unit}\" are allowed.\n\nValid units are:\n- d: days\n- h: hours\n- w: weeks\n- m: months\n- y: years", - "example": "\"2025-01-01\" or \"now\"" - }, - "timezone": { - "type": "string", - "description": "This is the timezone you want to set for the query.\n\nIf not provided, defaults to UTC." - } - } - }, - "PieInsight": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "This is the name of the Insight.", - "minLength": 1, - "maxLength": 255 - }, - "type": { - "type": "string", - "description": "This is the type of the Insight.\nIt is required to be `pie` to create a pie insight.", - "enum": [ - "pie" - ] - }, - "formulas": { - "type": "array", - "description": "Formulas are mathematical expressions applied on the data returned by the queries to transform them before being used to create the insight.\nThe formulas needs to be a valid mathematical expression, supported by MathJS - https://mathjs.org/docs/expressions/syntax.html\nA formula is created by using the query names as the variable.\nThe formulas must contain at least one query name in the LiquidJS format {{query_name}} or {{['query name']}} which will be substituted with the query result.\nFor example, if you have 2 queries, 'Was Booking Made' and 'Average Call Duration', you can create a formula like this:\n```\n{{['Query 1']}} / {{['Query 2']}} * 100\n```\n\n```\n({{[Query 1]}} * 10) + {{[Query 2]}}\n```\nThis will take the\n\nYou can also use the query names as the variable in the formula.", - "items": { - "$ref": "#/components/schemas/InsightFormula" - } - }, - "timeRange": { - "$ref": "#/components/schemas/InsightTimeRange" - }, - "groupBy": { - "type": "string", - "description": "This is the group by column for the insight when table is `call`.\nThese are the columns to group the results by.\nAll results are grouped by the time range step by default.", - "example": [ - "assistant_id" - ], - "enum": [ - "assistantId", - "workflowId", - "squadId", - "phoneNumberId", - "type", - "endedReason", - "customerNumber", - "campaignId", - "artifact.structuredOutputs[OutputID]" - ] - }, - "queries": { - "type": "array", - "description": "These are the queries to run to generate the insight.", - "items": { - "oneOf": [ - { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn", - "title": "JSONQueryOnCallTableWithStringTypeColumn" - }, - { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn", - "title": "JSONQueryOnCallTableWithNumberTypeColumn" - }, - { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn", - "title": "JSONQueryOnCallTableWithStructuredOutputColumn" - } - ] - } - }, - "id": { - "type": "string", - "description": "This is the unique identifier for the Insight." - }, - "orgId": { - "type": "string", - "description": "This is the unique identifier for the org that this Insight belongs to." - }, - "createdAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the Insight was created." - }, - "updatedAt": { - "format": "date-time", - "type": "string", - "description": "This is the ISO 8601 date-time string of when the Insight was last updated." - }, - "systemKey": { - "type": "string", - "description": "Stable server-owned identifier for system-created insights." - } - }, - "required": [ - "type", - "queries", - "id", - "orgId", - "createdAt", - "updatedAt" - ] - }, + "InsightTimeRange": { + "type": "object", + "properties": { + "start": { + "type": "object", + "description": "This is the start date for the time range.\n\nShould be a valid ISO 8601 date-time string or relative time string.\nIf not provided, defaults to the 7 days ago.\n\nRelative time strings of the format \"-{number}{unit}\" are allowed.\n\nValid units are:\n- d: days\n- h: hours\n- w: weeks\n- m: months\n- y: years", + "example": "\"2025-01-01\" or \"-7d\" or \"now\"" + }, + "end": { + "type": "object", + "description": "This is the end date for the time range.\n\nShould be a valid ISO 8601 date-time string or relative time string.\nIf not provided, defaults to now.\n\nRelative time strings of the format \"-{number}{unit}\" are allowed.\n\nValid units are:\n- d: days\n- h: hours\n- w: weeks\n- m: months\n- y: years", + "example": "\"2025-01-01\" or \"now\"" + }, + "timezone": { + "type": "string", + "description": "This is the timezone you want to set for the query.\n\nIf not provided, defaults to UTC." + } + } + }, + "PieInsight": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "This is the name of the Insight.", + "minLength": 1, + "maxLength": 255 + }, + "type": { + "type": "string", + "description": "This is the type of the Insight.\nIt is required to be `pie` to create a pie insight.", + "enum": [ + "pie" + ] + }, + "formulas": { + "type": "array", + "description": "Formulas are mathematical expressions applied on the data returned by the queries to transform them before being used to create the insight.\nThe formulas needs to be a valid mathematical expression, supported by MathJS - https://mathjs.org/docs/expressions/syntax.html\nA formula is created by using the query names as the variable.\nThe formulas must contain at least one query name in the LiquidJS format {{query_name}} or {{['query name']}} which will be substituted with the query result.\nFor example, if you have 2 queries, 'Was Booking Made' and 'Average Call Duration', you can create a formula like this:\n```\n{{['Query 1']}} / {{['Query 2']}} * 100\n```\n\n```\n({{[Query 1]}} * 10) + {{[Query 2]}}\n```\nThis will take the\n\nYou can also use the query names as the variable in the formula.", + "items": { + "$ref": "#/components/schemas/InsightFormula" + } + }, + "timeRange": { + "$ref": "#/components/schemas/InsightTimeRange" + }, + "groupBy": { + "type": "string", + "description": "This is the group by column for the insight when table is `call`.\nThese are the columns to group the results by.\nAll results are grouped by the time range step by default.", + "example": [ + "assistant_id" + ], + "enum": [ + "assistantId", + "workflowId", + "squadId", + "phoneNumberId", + "type", + "endedReason", + "customerNumber", + "campaignId", + "artifact.structuredOutputs[OutputID]" + ] + }, + "queries": { + "type": "array", + "description": "These are the queries to run to generate the insight.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn", + "title": "JSONQueryOnCallTableWithStringTypeColumn" + }, + { + "$ref": "#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn", + "title": "JSONQueryOnCallTableWithNumberTypeColumn" + }, + { + "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn", + "title": "JSONQueryOnCallTableWithStructuredOutputColumn" + }, + { + "$ref": "#/components/schemas/JSONQueryOnEventsTable", + "title": "JSONQueryOnEventsTable" + } + ] + } + }, + "id": { + "type": "string", + "description": "This is the unique identifier for the Insight." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the org that this Insight belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the Insight was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the Insight was last updated." + }, + "systemKey": { + "type": "string", + "description": "Stable server-owned identifier for system-created insights." + } + }, + "required": [ + "type", + "queries", + "id", + "orgId", + "createdAt", + "updatedAt" + ] + }, "LineInsightMetadata": { "type": "object", "properties": { @@ -66294,6 +66943,10 @@ { "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn", "title": "JSONQueryOnCallTableWithStructuredOutputColumn" + }, + { + "$ref": "#/components/schemas/JSONQueryOnEventsTable", + "title": "JSONQueryOnEventsTable" } ] } @@ -66372,6 +67025,10 @@ { "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn", "title": "JSONQueryOnCallTableWithStructuredOutputColumn" + }, + { + "$ref": "#/components/schemas/JSONQueryOnEventsTable", + "title": "JSONQueryOnEventsTable" } ] } @@ -66546,6 +67203,10 @@ { "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn", "title": "JSONQueryOnCallTableWithStructuredOutputColumn" + }, + { + "$ref": "#/components/schemas/JSONQueryOnEventsTable", + "title": "JSONQueryOnEventsTable" } ] } @@ -66620,6 +67281,10 @@ { "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn", "title": "JSONQueryOnCallTableWithStructuredOutputColumn" + }, + { + "$ref": "#/components/schemas/JSONQueryOnEventsTable", + "title": "JSONQueryOnEventsTable" } ] } @@ -66668,6 +67333,10 @@ { "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn", "title": "JSONQueryOnCallTableWithStructuredOutputColumn" + }, + { + "$ref": "#/components/schemas/JSONQueryOnEventsTable", + "title": "JSONQueryOnEventsTable" } ] } @@ -66816,6 +67485,10 @@ { "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn", "title": "JSONQueryOnCallTableWithStructuredOutputColumn" + }, + { + "$ref": "#/components/schemas/JSONQueryOnEventsTable", + "title": "JSONQueryOnEventsTable" } ] } @@ -66894,6 +67567,10 @@ { "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn", "title": "JSONQueryOnCallTableWithStructuredOutputColumn" + }, + { + "$ref": "#/components/schemas/JSONQueryOnEventsTable", + "title": "JSONQueryOnEventsTable" } ] } @@ -66946,6 +67623,10 @@ { "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn", "title": "JSONQueryOnCallTableWithStructuredOutputColumn" + }, + { + "$ref": "#/components/schemas/JSONQueryOnEventsTable", + "title": "JSONQueryOnEventsTable" } ] } @@ -67092,12 +67773,13 @@ "operation": { "type": "string", "enum": [ + "count", "average", "sum", "min", "max" ], - "description": "This is the aggregation operation to perform on the column.\nWhen the column is a number type, the operation must be one of the following:\n- average\n- sum\n- min\n- max", + "description": "This is the aggregation operation to perform on the column.\nWhen the column is a number type, the operation must be one of the following:\n- count\n- average\n- sum\n- min\n- max", "example": "sum" }, "name": { @@ -67318,6 +68000,12 @@ "pipeline.denoiserFailed" ] }, + "column": { + "type": "string", + "description": "The structured output an evaluation monitor tracks, as artifact.structuredOutputs[OutputID]", + "example": "artifact.structuredOutputs[1016c445-5a16-410d-a744-3bc07d8b1508]", + "pattern": "^artifact\\.structuredOutputs\\[[^\\]]+\\]$" + }, "operation": { "type": "string", "description": "This is the operation to perform on matching events.\n- \"count\": Returns the raw count of matching events\n- \"percentage\": Returns (count of matching events / total calls) * 100", @@ -67779,154 +68467,162 @@ "queries" ] }, - "PieInsightFromCallTable": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "This is the name of the Insight.", - "minLength": 1, - "maxLength": 255 - }, - "type": { - "type": "string", - "description": "This is the type of the Insight.\nIt is required to be `pie` to create a pie insight.", - "enum": [ - "pie" - ] - }, - "formulas": { - "type": "array", - "description": "Formulas are mathematical expressions applied on the data returned by the queries to transform them before being used to create the insight.\nThe formulas needs to be a valid mathematical expression, supported by MathJS - https://mathjs.org/docs/expressions/syntax.html\nA formula is created by using the query names as the variable.\nThe formulas must contain at least one query name in the LiquidJS format {{query_name}} or {{['query name']}} which will be substituted with the query result.\nFor example, if you have 2 queries, 'Was Booking Made' and 'Average Call Duration', you can create a formula like this:\n```\n{{['Query 1']}} / {{['Query 2']}} * 100\n```\n\n```\n({{[Query 1]}} * 10) + {{[Query 2]}}\n```\nThis will take the\n\nYou can also use the query names as the variable in the formula.", - "items": { - "$ref": "#/components/schemas/InsightFormula" - } - }, - "timeRange": { - "$ref": "#/components/schemas/InsightTimeRange" - }, - "groupBy": { - "type": "string", - "description": "This is the group by column for the insight when table is `call`.\nThese are the columns to group the results by.\nAll results are grouped by the time range step by default.", - "example": [ - "assistant_id" - ], - "enum": [ - "assistantId", - "workflowId", - "squadId", - "phoneNumberId", - "type", - "endedReason", - "customerNumber", - "campaignId", - "artifact.structuredOutputs[OutputID]" - ] - }, - "queries": { - "type": "array", - "description": "These are the queries to run to generate the insight.", - "items": { - "oneOf": [ - { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn", - "title": "JSONQueryOnCallTableWithStringTypeColumn" - }, - { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn", - "title": "JSONQueryOnCallTableWithNumberTypeColumn" - }, - { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn", - "title": "JSONQueryOnCallTableWithStructuredOutputColumn" - } - ] - } - } - }, - "required": [ - "type", - "queries" - ] - }, - "LineInsightFromCallTable": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "This is the name of the Insight.", - "minLength": 1, - "maxLength": 255 - }, - "type": { - "type": "string", - "description": "This is the type of the Insight.\nIt is required to be `line` to create a line insight.", - "enum": [ - "line" - ] - }, - "formulas": { - "type": "array", - "description": "Formulas are mathematical expressions applied on the data returned by the queries to transform them before being used to create the insight.\nThe formulas needs to be a valid mathematical expression, supported by MathJS - https://mathjs.org/docs/expressions/syntax.html\nA formula is created by using the query names as the variable.\nThe formulas must contain at least one query name in the LiquidJS format {{query_name}} or {{['query name']}} which will be substituted with the query result.\nFor example, if you have 2 queries, 'Was Booking Made' and 'Average Call Duration', you can create a formula like this:\n```\n{{['Query 1']}} / {{['Query 2']}} * 100\n```\n\n```\n({{[Query 1]}} * 10) + {{[Query 2]}}\n```\nThis will take the\n\nYou can also use the query names as the variable in the formula.", - "items": { - "$ref": "#/components/schemas/InsightFormula" - } - }, - "metadata": { - "description": "This is the metadata for the insight.", - "allOf": [ - { - "$ref": "#/components/schemas/LineInsightMetadata" - } - ] - }, - "timeRange": { - "$ref": "#/components/schemas/InsightTimeRangeWithStep" - }, - "groupBy": { - "type": "string", - "description": "This is the group by column for the insight when table is `call`.\nThese are the columns to group the results by.\nAll results are grouped by the time range step by default.", - "example": [ - "assistant_id" - ], - "enum": [ - "assistantId", - "workflowId", - "squadId", - "phoneNumberId", - "type", - "endedReason", - "customerNumber", - "campaignId", - "artifact.structuredOutputs[OutputID]" - ] - }, - "queries": { - "type": "array", - "description": "These are the queries to run to generate the insight.", - "items": { - "oneOf": [ - { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn", - "title": "JSONQueryOnCallTableWithStringTypeColumn" - }, - { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn", - "title": "JSONQueryOnCallTableWithNumberTypeColumn" - }, - { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn", - "title": "JSONQueryOnCallTableWithStructuredOutputColumn" - } - ] - } - } - }, - "required": [ - "type", - "queries" - ] - }, + "PieInsightFromCallTable": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "This is the name of the Insight.", + "minLength": 1, + "maxLength": 255 + }, + "type": { + "type": "string", + "description": "This is the type of the Insight.\nIt is required to be `pie` to create a pie insight.", + "enum": [ + "pie" + ] + }, + "formulas": { + "type": "array", + "description": "Formulas are mathematical expressions applied on the data returned by the queries to transform them before being used to create the insight.\nThe formulas needs to be a valid mathematical expression, supported by MathJS - https://mathjs.org/docs/expressions/syntax.html\nA formula is created by using the query names as the variable.\nThe formulas must contain at least one query name in the LiquidJS format {{query_name}} or {{['query name']}} which will be substituted with the query result.\nFor example, if you have 2 queries, 'Was Booking Made' and 'Average Call Duration', you can create a formula like this:\n```\n{{['Query 1']}} / {{['Query 2']}} * 100\n```\n\n```\n({{[Query 1]}} * 10) + {{[Query 2]}}\n```\nThis will take the\n\nYou can also use the query names as the variable in the formula.", + "items": { + "$ref": "#/components/schemas/InsightFormula" + } + }, + "timeRange": { + "$ref": "#/components/schemas/InsightTimeRange" + }, + "groupBy": { + "type": "string", + "description": "This is the group by column for the insight when table is `call`.\nThese are the columns to group the results by.\nAll results are grouped by the time range step by default.", + "example": [ + "assistant_id" + ], + "enum": [ + "assistantId", + "workflowId", + "squadId", + "phoneNumberId", + "type", + "endedReason", + "customerNumber", + "campaignId", + "artifact.structuredOutputs[OutputID]" + ] + }, + "queries": { + "type": "array", + "description": "These are the queries to run to generate the insight.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn", + "title": "JSONQueryOnCallTableWithStringTypeColumn" + }, + { + "$ref": "#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn", + "title": "JSONQueryOnCallTableWithNumberTypeColumn" + }, + { + "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn", + "title": "JSONQueryOnCallTableWithStructuredOutputColumn" + }, + { + "$ref": "#/components/schemas/JSONQueryOnEventsTable", + "title": "JSONQueryOnEventsTable" + } + ] + } + } + }, + "required": [ + "type", + "queries" + ] + }, + "LineInsightFromCallTable": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "This is the name of the Insight.", + "minLength": 1, + "maxLength": 255 + }, + "type": { + "type": "string", + "description": "This is the type of the Insight.\nIt is required to be `line` to create a line insight.", + "enum": [ + "line" + ] + }, + "formulas": { + "type": "array", + "description": "Formulas are mathematical expressions applied on the data returned by the queries to transform them before being used to create the insight.\nThe formulas needs to be a valid mathematical expression, supported by MathJS - https://mathjs.org/docs/expressions/syntax.html\nA formula is created by using the query names as the variable.\nThe formulas must contain at least one query name in the LiquidJS format {{query_name}} or {{['query name']}} which will be substituted with the query result.\nFor example, if you have 2 queries, 'Was Booking Made' and 'Average Call Duration', you can create a formula like this:\n```\n{{['Query 1']}} / {{['Query 2']}} * 100\n```\n\n```\n({{[Query 1]}} * 10) + {{[Query 2]}}\n```\nThis will take the\n\nYou can also use the query names as the variable in the formula.", + "items": { + "$ref": "#/components/schemas/InsightFormula" + } + }, + "metadata": { + "description": "This is the metadata for the insight.", + "allOf": [ + { + "$ref": "#/components/schemas/LineInsightMetadata" + } + ] + }, + "timeRange": { + "$ref": "#/components/schemas/InsightTimeRangeWithStep" + }, + "groupBy": { + "type": "string", + "description": "This is the group by column for the insight when table is `call`.\nThese are the columns to group the results by.\nAll results are grouped by the time range step by default.", + "example": [ + "assistant_id" + ], + "enum": [ + "assistantId", + "workflowId", + "squadId", + "phoneNumberId", + "type", + "endedReason", + "customerNumber", + "campaignId", + "artifact.structuredOutputs[OutputID]" + ] + }, + "queries": { + "type": "array", + "description": "These are the queries to run to generate the insight.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn", + "title": "JSONQueryOnCallTableWithStringTypeColumn" + }, + { + "$ref": "#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn", + "title": "JSONQueryOnCallTableWithNumberTypeColumn" + }, + { + "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn", + "title": "JSONQueryOnCallTableWithStructuredOutputColumn" + }, + { + "$ref": "#/components/schemas/JSONQueryOnEventsTable", + "title": "JSONQueryOnEventsTable" + } + ] + } + } + }, + "required": [ + "type", + "queries" + ] + }, "TextInsightFromCallTable": { "type": "object", "properties": { @@ -67969,6 +68665,10 @@ { "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn", "title": "JSONQueryOnCallTableWithStructuredOutputColumn" + }, + { + "$ref": "#/components/schemas/JSONQueryOnEventsTable", + "title": "JSONQueryOnEventsTable" } ] } @@ -70213,6 +70913,62 @@ "results" ] }, + "CallHealthDashboardAffectedCallDTO": { + "type": "object", + "properties": { + "callId": { + "type": "string", + "format": "uuid" + }, + "assistantId": { + "type": "string", + "format": "uuid" + }, + "callTime": { + "type": "string", + "format": "date-time", + "pattern": "^\\d{4}-\\d{2}-\\d{2}T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.(\\d{1,6}))?(?:Z|[+-](?:[01]\\d|2[0-3]):[0-5]\\d)$", + "description": "Call completion time (endedAt), never startedAt." + }, + "callAvailability": { + "type": "string", + "enum": [ + "available", + "unavailable" + ] + } + }, + "required": [ + "callId", + "assistantId", + "callTime", + "callAvailability" + ] + }, + "CallHealthDashboardAffectedCallsResponseDTO": { + "type": "object", + "properties": { + "results": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CallHealthDashboardAffectedCallDTO" + } + }, + "nextCursor": { + "type": "string", + "minLength": 1, + "maxLength": 2048, + "pattern": "^[A-Za-z0-9_-]+$" + }, + "coverage": { + "$ref": "#/components/schemas/CallHealthDashboardCoverageDTO" + } + }, + "required": [ + "results", + "coverage" + ] + }, "CreateOrgDTO": { "type": "object", "properties": { @@ -72554,6 +73310,11 @@ "type": "string", "description": "The host URL for Langfuse project. Eg: https://cloud.langfuse.com" }, + "serverVersion": { + "type": "string", + "description": "The semver version of your Langfuse server, e.g. 3.63.0, as its /api/public/health endpoint reports it. Optional.", + "maxLength": 32 + }, "id": { "type": "string", "description": "This is the unique identifier for the credential." @@ -73387,6 +74148,54 @@ "updatedAt" ] }, + "Reson8Credential": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "reson8" + ] + }, + "apiKey": { + "type": "string", + "pattern": "\\S", + "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" + ] + }, "SonioxCredential": { "type": "object", "properties": { @@ -74656,6 +75465,32 @@ "bucketPlan" ] }, + "CreateReson8CredentialDTO": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "reson8" + ] + }, + "apiKey": { + "type": "string", + "pattern": "\\S", + "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" + ] + }, "CreateSonioxCredentialDTO": { "type": "object", "properties": { @@ -75645,6 +76480,11 @@ "type": "string", "description": "The host URL for Langfuse project. Eg: https://cloud.langfuse.com" }, + "serverVersion": { + "type": "string", + "description": "The semver version of your Langfuse server, e.g. 3.63.0, as its /api/public/health endpoint reports it. Optional.", + "maxLength": 32 + }, "name": { "type": "string", "description": "This is the name of credential. This is just for your reference.", @@ -76391,6 +77231,28 @@ } } }, + "UpdateReson8CredentialDTO": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "reson8" + ] + }, + "apiKey": { + "type": "string", + "pattern": "\\S", + "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 + } + } + }, "UpdateSonioxCredentialDTO": { "type": "object", "properties": { @@ -76445,8 +77307,7 @@ } }, "required": [ - "endUserId", - "organizationId" + "endUserId" ] }, "CredentialSessionError": { @@ -80704,6 +81565,16 @@ "call.in-progress.error-vapifault-xai-transcriber-invalid-config", "call.in-progress.error-vapifault-xai-transcriber-server-error", "call.in-progress.error-vapifault-xai-transcriber-failed", + "pipeline-error-reson8-transcriber-auth-failed", + "pipeline-error-reson8-transcriber-rate-limited", + "pipeline-error-reson8-transcriber-invalid-config", + "pipeline-error-reson8-transcriber-closed", + "pipeline-error-reson8-transcriber-failed", + "call.in-progress.error-vapifault-reson8-transcriber-auth-failed", + "call.in-progress.error-vapifault-reson8-transcriber-rate-limited", + "call.in-progress.error-vapifault-reson8-transcriber-invalid-config", + "call.in-progress.error-vapifault-reson8-transcriber-closed", + "call.in-progress.error-vapifault-reson8-transcriber-failed", "pipeline-error-cartesia-transcriber-failed", "call.in-progress.error-vapifault-cartesia-transcriber-failed", "call.in-progress.error-pipeline-no-available-llm-model", @@ -81039,6 +81910,7 @@ "call.in-progress.error-vapifault-cartesia-socket-hang-up", "call.in-progress.error-vapifault-cartesia-requested-payment", "call.in-progress.error-providerfault-cartesia-500-server-error", + "call.in-progress.error-providerfault-cartesia-502-server-error", "call.in-progress.error-providerfault-cartesia-503-server-error", "call.in-progress.error-providerfault-cartesia-522-server-error", "pipeline-error-eleven-labs-voice-not-found", @@ -81159,6 +82031,16 @@ "call.in-progress.error-vapifault-xai-transcriber-invalid-config", "call.in-progress.error-vapifault-xai-transcriber-server-error", "call.in-progress.error-vapifault-xai-transcriber-failed", + "pipeline-error-reson8-transcriber-auth-failed", + "pipeline-error-reson8-transcriber-rate-limited", + "pipeline-error-reson8-transcriber-invalid-config", + "pipeline-error-reson8-transcriber-closed", + "pipeline-error-reson8-transcriber-failed", + "call.in-progress.error-vapifault-reson8-transcriber-auth-failed", + "call.in-progress.error-vapifault-reson8-transcriber-rate-limited", + "call.in-progress.error-vapifault-reson8-transcriber-invalid-config", + "call.in-progress.error-vapifault-reson8-transcriber-closed", + "call.in-progress.error-vapifault-reson8-transcriber-failed", "pipeline-error-cartesia-transcriber-failed", "call.in-progress.error-vapifault-cartesia-transcriber-failed", "call.in-progress.error-warm-transfer-max-duration", @@ -82174,6 +83056,16 @@ "call.in-progress.error-vapifault-xai-transcriber-invalid-config", "call.in-progress.error-vapifault-xai-transcriber-server-error", "call.in-progress.error-vapifault-xai-transcriber-failed", + "pipeline-error-reson8-transcriber-auth-failed", + "pipeline-error-reson8-transcriber-rate-limited", + "pipeline-error-reson8-transcriber-invalid-config", + "pipeline-error-reson8-transcriber-closed", + "pipeline-error-reson8-transcriber-failed", + "call.in-progress.error-vapifault-reson8-transcriber-auth-failed", + "call.in-progress.error-vapifault-reson8-transcriber-rate-limited", + "call.in-progress.error-vapifault-reson8-transcriber-invalid-config", + "call.in-progress.error-vapifault-reson8-transcriber-closed", + "call.in-progress.error-vapifault-reson8-transcriber-failed", "pipeline-error-cartesia-transcriber-failed", "call.in-progress.error-vapifault-cartesia-transcriber-failed", "call.in-progress.error-pipeline-no-available-llm-model", @@ -82509,6 +83401,7 @@ "call.in-progress.error-vapifault-cartesia-socket-hang-up", "call.in-progress.error-vapifault-cartesia-requested-payment", "call.in-progress.error-providerfault-cartesia-500-server-error", + "call.in-progress.error-providerfault-cartesia-502-server-error", "call.in-progress.error-providerfault-cartesia-503-server-error", "call.in-progress.error-providerfault-cartesia-522-server-error", "pipeline-error-eleven-labs-voice-not-found", @@ -82629,6 +83522,16 @@ "call.in-progress.error-vapifault-xai-transcriber-invalid-config", "call.in-progress.error-vapifault-xai-transcriber-server-error", "call.in-progress.error-vapifault-xai-transcriber-failed", + "pipeline-error-reson8-transcriber-auth-failed", + "pipeline-error-reson8-transcriber-rate-limited", + "pipeline-error-reson8-transcriber-invalid-config", + "pipeline-error-reson8-transcriber-closed", + "pipeline-error-reson8-transcriber-failed", + "call.in-progress.error-vapifault-reson8-transcriber-auth-failed", + "call.in-progress.error-vapifault-reson8-transcriber-rate-limited", + "call.in-progress.error-vapifault-reson8-transcriber-invalid-config", + "call.in-progress.error-vapifault-reson8-transcriber-closed", + "call.in-progress.error-vapifault-reson8-transcriber-failed", "pipeline-error-cartesia-transcriber-failed", "call.in-progress.error-vapifault-cartesia-transcriber-failed", "call.in-progress.error-warm-transfer-max-duration",