1use serde::{Deserialize, Serialize};
12use utoipa::OpenApi;
13
14
15use crate::models;
16
17#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize, OpenApi)]
18pub struct Call {
19 #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
21 pub r#type: Option<Type>,
22 #[serde(rename = "costs", skip_serializing_if = "Option::is_none")]
24 pub costs: Option<Vec<models::CallCostsInner>>,
25 #[serde(rename = "messages", skip_serializing_if = "Option::is_none")]
26 pub messages: Option<Vec<models::ArtifactMessagesInner>>,
27 #[serde(rename = "phoneCallProvider", skip_serializing_if = "Option::is_none")]
29 pub phone_call_provider: Option<PhoneCallProvider>,
30 #[serde(rename = "phoneCallTransport", skip_serializing_if = "Option::is_none")]
32 pub phone_call_transport: Option<PhoneCallTransport>,
33 #[serde(rename = "status", skip_serializing_if = "Option::is_none")]
35 pub status: Option<Status>,
36 #[serde(rename = "endedReason", skip_serializing_if = "Option::is_none")]
38 pub ended_reason: Option<EndedReason>,
39 #[serde(rename = "destination", skip_serializing_if = "Option::is_none")]
40 pub destination: Option<models::CallDestination>,
41 #[serde(rename = "id")]
43 pub id: String,
44 #[serde(rename = "orgId")]
46 pub org_id: String,
47 #[serde(rename = "createdAt")]
49 pub created_at: String,
50 #[serde(rename = "updatedAt")]
52 pub updated_at: String,
53 #[serde(rename = "startedAt", skip_serializing_if = "Option::is_none")]
55 pub started_at: Option<String>,
56 #[serde(rename = "endedAt", skip_serializing_if = "Option::is_none")]
58 pub ended_at: Option<String>,
59 #[serde(rename = "cost", skip_serializing_if = "Option::is_none")]
61 pub cost: Option<f64>,
62 #[serde(rename = "costBreakdown", skip_serializing_if = "Option::is_none")]
64 pub cost_breakdown: Option<models::CostBreakdown>,
65 #[serde(rename = "artifactPlan", skip_serializing_if = "Option::is_none")]
67 pub artifact_plan: Option<models::ArtifactPlan>,
68 #[serde(rename = "analysis", skip_serializing_if = "Option::is_none")]
70 pub analysis: Option<models::Analysis>,
71 #[serde(rename = "monitor", skip_serializing_if = "Option::is_none")]
73 pub monitor: Option<models::Monitor>,
74 #[serde(rename = "artifact", skip_serializing_if = "Option::is_none")]
76 pub artifact: Option<models::Artifact>,
77 #[serde(rename = "transport", skip_serializing_if = "Option::is_none")]
79 pub transport: Option<models::Transport>,
80 #[serde(
82 rename = "phoneCallProviderId",
83 skip_serializing_if = "Option::is_none"
84 )]
85 pub phone_call_provider_id: Option<String>,
86 #[serde(rename = "assistantId", skip_serializing_if = "Option::is_none")]
88 pub assistant_id: Option<String>,
89 #[serde(rename = "assistant", skip_serializing_if = "Option::is_none")]
91 pub assistant: Option<models::CreateAssistantDto>,
92 #[serde(rename = "assistantOverrides", skip_serializing_if = "Option::is_none")]
94 pub assistant_overrides: Option<models::AssistantOverrides>,
95 #[serde(rename = "squadId", skip_serializing_if = "Option::is_none")]
97 pub squad_id: Option<String>,
98 #[serde(rename = "squad", skip_serializing_if = "Option::is_none")]
100 pub squad: Option<models::CreateSquadDto>,
101 #[serde(rename = "phoneNumberId", skip_serializing_if = "Option::is_none")]
103 pub phone_number_id: Option<String>,
104 #[serde(rename = "phoneNumber", skip_serializing_if = "Option::is_none")]
106 pub phone_number: Option<models::ImportTwilioPhoneNumberDto>,
107 #[serde(rename = "customerId", skip_serializing_if = "Option::is_none")]
109 pub customer_id: Option<String>,
110 #[serde(rename = "customer", skip_serializing_if = "Option::is_none")]
112 pub customer: Option<models::CreateCustomerDto>,
113 #[serde(rename = "name", skip_serializing_if = "Option::is_none")]
115 pub name: Option<String>,
116}
117
118impl Call {
119 pub fn new(id: String, org_id: String, created_at: String, updated_at: String) -> Call {
120 Call {
121 r#type: None,
122 costs: None,
123 messages: None,
124 phone_call_provider: None,
125 phone_call_transport: None,
126 status: None,
127 ended_reason: None,
128 destination: None,
129 id,
130 org_id,
131 created_at,
132 updated_at,
133 started_at: None,
134 ended_at: None,
135 cost: None,
136 cost_breakdown: None,
137 artifact_plan: None,
138 analysis: None,
139 monitor: None,
140 artifact: None,
141 transport: None,
142 phone_call_provider_id: None,
143 assistant_id: None,
144 assistant: None,
145 assistant_overrides: None,
146 squad_id: None,
147 squad: None,
148 phone_number_id: None,
149 phone_number: None,
150 customer_id: None,
151 customer: None,
152 name: None,
153 }
154 }
155}
156#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize, OpenApi)]
158pub enum Type {
159 #[serde(rename = "inboundPhoneCall")]
160 InboundPhoneCall,
161 #[serde(rename = "outboundPhoneCall")]
162 OutboundPhoneCall,
163 #[serde(rename = "webCall")]
164 WebCall,
165}
166
167impl Default for Type {
168 fn default() -> Type {
169 Self::InboundPhoneCall
170 }
171}
172#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize, OpenApi)]
174pub enum PhoneCallProvider {
175 #[serde(rename = "twilio")]
176 Twilio,
177 #[serde(rename = "vonage")]
178 Vonage,
179 #[serde(rename = "vapi")]
180 Vapi,
181}
182
183impl Default for PhoneCallProvider {
184 fn default() -> PhoneCallProvider {
185 Self::Twilio
186 }
187}
188#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize, OpenApi)]
190pub enum PhoneCallTransport {
191 #[serde(rename = "sip")]
192 Sip,
193 #[serde(rename = "pstn")]
194 Pstn,
195}
196
197impl Default for PhoneCallTransport {
198 fn default() -> PhoneCallTransport {
199 Self::Sip
200 }
201}
202#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize, OpenApi)]
204pub enum Status {
205 #[serde(rename = "queued")]
206 Queued,
207 #[serde(rename = "ringing")]
208 Ringing,
209 #[serde(rename = "in-progress")]
210 InProgress,
211 #[serde(rename = "forwarding")]
212 Forwarding,
213 #[serde(rename = "ended")]
214 Ended,
215}
216
217impl Default for Status {
218 fn default() -> Status {
219 Self::Queued
220 }
221}
222#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize, OpenApi)]
224pub enum EndedReason {
225 #[serde(rename = "assistant-not-valid")]
226 AssistantNotValid,
227 #[serde(rename = "assistant-not-provided")]
228 AssistantNotProvided,
229 #[serde(rename = "call-start-error-neither-assistant-nor-server-set")]
230 CallStartErrorNeitherAssistantNorServerSet,
231 #[serde(rename = "assistant-request-failed")]
232 AssistantRequestFailed,
233 #[serde(rename = "assistant-request-returned-error")]
234 AssistantRequestReturnedError,
235 #[serde(rename = "assistant-request-returned-unspeakable-error")]
236 AssistantRequestReturnedUnspeakableError,
237 #[serde(rename = "assistant-request-returned-invalid-assistant")]
238 AssistantRequestReturnedInvalidAssistant,
239 #[serde(rename = "assistant-request-returned-no-assistant")]
240 AssistantRequestReturnedNoAssistant,
241 #[serde(rename = "assistant-request-returned-forwarding-phone-number")]
242 AssistantRequestReturnedForwardingPhoneNumber,
243 #[serde(rename = "assistant-ended-call")]
244 AssistantEndedCall,
245 #[serde(rename = "assistant-said-end-call-phrase")]
246 AssistantSaidEndCallPhrase,
247 #[serde(rename = "assistant-ended-call-with-hangup-task")]
248 AssistantEndedCallWithHangupTask,
249 #[serde(rename = "assistant-forwarded-call")]
250 AssistantForwardedCall,
251 #[serde(rename = "assistant-join-timed-out")]
252 AssistantJoinTimedOut,
253 #[serde(rename = "customer-busy")]
254 CustomerBusy,
255 #[serde(rename = "customer-ended-call")]
256 CustomerEndedCall,
257 #[serde(rename = "customer-did-not-answer")]
258 CustomerDidNotAnswer,
259 #[serde(rename = "customer-did-not-give-microphone-permission")]
260 CustomerDidNotGiveMicrophonePermission,
261 #[serde(rename = "assistant-said-message-with-end-call-enabled")]
262 AssistantSaidMessageWithEndCallEnabled,
263 #[serde(rename = "exceeded-max-duration")]
264 ExceededMaxDuration,
265 #[serde(rename = "manually-canceled")]
266 ManuallyCanceled,
267 #[serde(rename = "phone-call-provider-closed-websocket")]
268 PhoneCallProviderClosedWebsocket,
269 #[serde(rename = "db-error")]
270 DbError,
271 #[serde(rename = "assistant-not-found")]
272 AssistantNotFound,
273 #[serde(rename = "license-check-failed")]
274 LicenseCheckFailed,
275 #[serde(rename = "pipeline-error-openai-voice-failed")]
276 PipelineErrorOpenaiVoiceFailed,
277 #[serde(rename = "pipeline-error-cartesia-voice-failed")]
278 PipelineErrorCartesiaVoiceFailed,
279 #[serde(rename = "pipeline-error-deepgram-voice-failed")]
280 PipelineErrorDeepgramVoiceFailed,
281 #[serde(rename = "pipeline-error-eleven-labs-voice-failed")]
282 PipelineErrorElevenLabsVoiceFailed,
283 #[serde(rename = "pipeline-error-playht-voice-failed")]
284 PipelineErrorPlayhtVoiceFailed,
285 #[serde(rename = "pipeline-error-lmnt-voice-failed")]
286 PipelineErrorLmntVoiceFailed,
287 #[serde(rename = "pipeline-error-azure-voice-failed")]
288 PipelineErrorAzureVoiceFailed,
289 #[serde(rename = "pipeline-error-rime-ai-voice-failed")]
290 PipelineErrorRimeAiVoiceFailed,
291 #[serde(rename = "pipeline-error-neets-voice-failed")]
292 PipelineErrorNeetsVoiceFailed,
293 #[serde(rename = "pipeline-error-smallest-ai-voice-failed")]
294 PipelineErrorSmallestAiVoiceFailed,
295 #[serde(rename = "pipeline-error-neuphonic-voice-failed")]
296 PipelineErrorNeuphonicVoiceFailed,
297 #[serde(rename = "pipeline-error-hume-voice-failed")]
298 PipelineErrorHumeVoiceFailed,
299 #[serde(rename = "pipeline-error-deepgram-transcriber-failed")]
300 PipelineErrorDeepgramTranscriberFailed,
301 #[serde(rename = "pipeline-error-gladia-transcriber-failed")]
302 PipelineErrorGladiaTranscriberFailed,
303 #[serde(rename = "pipeline-error-speechmatics-transcriber-failed")]
304 PipelineErrorSpeechmaticsTranscriberFailed,
305 #[serde(rename = "pipeline-error-assembly-ai-transcriber-failed")]
306 PipelineErrorAssemblyAiTranscriberFailed,
307 #[serde(rename = "pipeline-error-talkscriber-transcriber-failed")]
308 PipelineErrorTalkscriberTranscriberFailed,
309 #[serde(rename = "pipeline-error-azure-speech-transcriber-failed")]
310 PipelineErrorAzureSpeechTranscriberFailed,
311 #[serde(rename = "pipeline-error-vapi-llm-failed")]
312 PipelineErrorVapiLlmFailed,
313 #[serde(rename = "pipeline-error-vapi-400-bad-request-validation-failed")]
314 PipelineErrorVapi400BadRequestValidationFailed,
315 #[serde(rename = "pipeline-error-vapi-401-unauthorized")]
316 PipelineErrorVapi401Unauthorized,
317 #[serde(rename = "pipeline-error-vapi-403-model-access-denied")]
318 PipelineErrorVapi403ModelAccessDenied,
319 #[serde(rename = "pipeline-error-vapi-429-exceeded-quota")]
320 PipelineErrorVapi429ExceededQuota,
321 #[serde(rename = "pipeline-error-vapi-500-server-error")]
322 PipelineErrorVapi500ServerError,
323 #[serde(rename = "pipeline-no-available-model")]
324 PipelineNoAvailableModel,
325 #[serde(rename = "worker-shutdown")]
326 WorkerShutdown,
327 #[serde(rename = "unknown-error")]
328 UnknownError,
329 #[serde(rename = "vonage-disconnected")]
330 VonageDisconnected,
331 #[serde(rename = "vonage-failed-to-connect-call")]
332 VonageFailedToConnectCall,
333 #[serde(rename = "phone-call-provider-bypass-enabled-but-no-call-received")]
334 PhoneCallProviderBypassEnabledButNoCallReceived,
335 #[serde(rename = "vapifault-phone-call-worker-setup-socket-error")]
336 VapifaultPhoneCallWorkerSetupSocketError,
337 #[serde(rename = "vapifault-phone-call-worker-worker-setup-socket-timeout")]
338 VapifaultPhoneCallWorkerWorkerSetupSocketTimeout,
339 #[serde(rename = "vapifault-phone-call-worker-could-not-find-call")]
340 VapifaultPhoneCallWorkerCouldNotFindCall,
341 #[serde(rename = "vapifault-transport-never-connected")]
342 VapifaultTransportNeverConnected,
343 #[serde(rename = "vapifault-web-call-worker-setup-failed")]
344 VapifaultWebCallWorkerSetupFailed,
345 #[serde(rename = "vapifault-transport-connected-but-call-not-active")]
346 VapifaultTransportConnectedButCallNotActive,
347 #[serde(rename = "vapifault-call-started-but-connection-to-transport-missing")]
348 VapifaultCallStartedButConnectionToTransportMissing,
349 #[serde(rename = "pipeline-error-openai-llm-failed")]
350 PipelineErrorOpenaiLlmFailed,
351 #[serde(rename = "pipeline-error-azure-openai-llm-failed")]
352 PipelineErrorAzureOpenaiLlmFailed,
353 #[serde(rename = "pipeline-error-groq-llm-failed")]
354 PipelineErrorGroqLlmFailed,
355 #[serde(rename = "pipeline-error-google-llm-failed")]
356 PipelineErrorGoogleLlmFailed,
357 #[serde(rename = "pipeline-error-xai-llm-failed")]
358 PipelineErrorXaiLlmFailed,
359 #[serde(rename = "pipeline-error-mistral-llm-failed")]
360 PipelineErrorMistralLlmFailed,
361 #[serde(rename = "pipeline-error-inflection-ai-llm-failed")]
362 PipelineErrorInflectionAiLlmFailed,
363 #[serde(rename = "pipeline-error-cerebras-llm-failed")]
364 PipelineErrorCerebrasLlmFailed,
365 #[serde(rename = "pipeline-error-deep-seek-llm-failed")]
366 PipelineErrorDeepSeekLlmFailed,
367 #[serde(rename = "pipeline-error-openai-400-bad-request-validation-failed")]
368 PipelineErrorOpenai400BadRequestValidationFailed,
369 #[serde(rename = "pipeline-error-openai-401-unauthorized")]
370 PipelineErrorOpenai401Unauthorized,
371 #[serde(rename = "pipeline-error-openai-403-model-access-denied")]
372 PipelineErrorOpenai403ModelAccessDenied,
373 #[serde(rename = "pipeline-error-openai-429-exceeded-quota")]
374 PipelineErrorOpenai429ExceededQuota,
375 #[serde(rename = "pipeline-error-openai-500-server-error")]
376 PipelineErrorOpenai500ServerError,
377 #[serde(rename = "pipeline-error-google-400-bad-request-validation-failed")]
378 PipelineErrorGoogle400BadRequestValidationFailed,
379 #[serde(rename = "pipeline-error-google-401-unauthorized")]
380 PipelineErrorGoogle401Unauthorized,
381 #[serde(rename = "pipeline-error-google-403-model-access-denied")]
382 PipelineErrorGoogle403ModelAccessDenied,
383 #[serde(rename = "pipeline-error-google-429-exceeded-quota")]
384 PipelineErrorGoogle429ExceededQuota,
385 #[serde(rename = "pipeline-error-google-500-server-error")]
386 PipelineErrorGoogle500ServerError,
387 #[serde(rename = "pipeline-error-xai-400-bad-request-validation-failed")]
388 PipelineErrorXai400BadRequestValidationFailed,
389 #[serde(rename = "pipeline-error-xai-401-unauthorized")]
390 PipelineErrorXai401Unauthorized,
391 #[serde(rename = "pipeline-error-xai-403-model-access-denied")]
392 PipelineErrorXai403ModelAccessDenied,
393 #[serde(rename = "pipeline-error-xai-429-exceeded-quota")]
394 PipelineErrorXai429ExceededQuota,
395 #[serde(rename = "pipeline-error-xai-500-server-error")]
396 PipelineErrorXai500ServerError,
397 #[serde(rename = "pipeline-error-mistral-400-bad-request-validation-failed")]
398 PipelineErrorMistral400BadRequestValidationFailed,
399 #[serde(rename = "pipeline-error-mistral-401-unauthorized")]
400 PipelineErrorMistral401Unauthorized,
401 #[serde(rename = "pipeline-error-mistral-403-model-access-denied")]
402 PipelineErrorMistral403ModelAccessDenied,
403 #[serde(rename = "pipeline-error-mistral-429-exceeded-quota")]
404 PipelineErrorMistral429ExceededQuota,
405 #[serde(rename = "pipeline-error-mistral-500-server-error")]
406 PipelineErrorMistral500ServerError,
407 #[serde(rename = "pipeline-error-inflection-ai-400-bad-request-validation-failed")]
408 PipelineErrorInflectionAi400BadRequestValidationFailed,
409 #[serde(rename = "pipeline-error-inflection-ai-401-unauthorized")]
410 PipelineErrorInflectionAi401Unauthorized,
411 #[serde(rename = "pipeline-error-inflection-ai-403-model-access-denied")]
412 PipelineErrorInflectionAi403ModelAccessDenied,
413 #[serde(rename = "pipeline-error-inflection-ai-429-exceeded-quota")]
414 PipelineErrorInflectionAi429ExceededQuota,
415 #[serde(rename = "pipeline-error-inflection-ai-500-server-error")]
416 PipelineErrorInflectionAi500ServerError,
417 #[serde(rename = "pipeline-error-deep-seek-400-bad-request-validation-failed")]
418 PipelineErrorDeepSeek400BadRequestValidationFailed,
419 #[serde(rename = "pipeline-error-deep-seek-401-unauthorized")]
420 PipelineErrorDeepSeek401Unauthorized,
421 #[serde(rename = "pipeline-error-deep-seek-403-model-access-denied")]
422 PipelineErrorDeepSeek403ModelAccessDenied,
423 #[serde(rename = "pipeline-error-deep-seek-429-exceeded-quota")]
424 PipelineErrorDeepSeek429ExceededQuota,
425 #[serde(rename = "pipeline-error-deep-seek-500-server-error")]
426 PipelineErrorDeepSeek500ServerError,
427 #[serde(rename = "pipeline-error-azure-openai-400-bad-request-validation-failed")]
428 PipelineErrorAzureOpenai400BadRequestValidationFailed,
429 #[serde(rename = "pipeline-error-azure-openai-401-unauthorized")]
430 PipelineErrorAzureOpenai401Unauthorized,
431 #[serde(rename = "pipeline-error-azure-openai-403-model-access-denied")]
432 PipelineErrorAzureOpenai403ModelAccessDenied,
433 #[serde(rename = "pipeline-error-azure-openai-429-exceeded-quota")]
434 PipelineErrorAzureOpenai429ExceededQuota,
435 #[serde(rename = "pipeline-error-azure-openai-500-server-error")]
436 PipelineErrorAzureOpenai500ServerError,
437 #[serde(rename = "pipeline-error-groq-400-bad-request-validation-failed")]
438 PipelineErrorGroq400BadRequestValidationFailed,
439 #[serde(rename = "pipeline-error-groq-401-unauthorized")]
440 PipelineErrorGroq401Unauthorized,
441 #[serde(rename = "pipeline-error-groq-403-model-access-denied")]
442 PipelineErrorGroq403ModelAccessDenied,
443 #[serde(rename = "pipeline-error-groq-429-exceeded-quota")]
444 PipelineErrorGroq429ExceededQuota,
445 #[serde(rename = "pipeline-error-groq-500-server-error")]
446 PipelineErrorGroq500ServerError,
447 #[serde(rename = "pipeline-error-cerebras-400-bad-request-validation-failed")]
448 PipelineErrorCerebras400BadRequestValidationFailed,
449 #[serde(rename = "pipeline-error-cerebras-401-unauthorized")]
450 PipelineErrorCerebras401Unauthorized,
451 #[serde(rename = "pipeline-error-cerebras-403-model-access-denied")]
452 PipelineErrorCerebras403ModelAccessDenied,
453 #[serde(rename = "pipeline-error-cerebras-429-exceeded-quota")]
454 PipelineErrorCerebras429ExceededQuota,
455 #[serde(rename = "pipeline-error-cerebras-500-server-error")]
456 PipelineErrorCerebras500ServerError,
457 #[serde(rename = "pipeline-error-anthropic-400-bad-request-validation-failed")]
458 PipelineErrorAnthropic400BadRequestValidationFailed,
459 #[serde(rename = "pipeline-error-anthropic-401-unauthorized")]
460 PipelineErrorAnthropic401Unauthorized,
461 #[serde(rename = "pipeline-error-anthropic-403-model-access-denied")]
462 PipelineErrorAnthropic403ModelAccessDenied,
463 #[serde(rename = "pipeline-error-anthropic-429-exceeded-quota")]
464 PipelineErrorAnthropic429ExceededQuota,
465 #[serde(rename = "pipeline-error-anthropic-500-server-error")]
466 PipelineErrorAnthropic500ServerError,
467 #[serde(rename = "pipeline-error-anthropic-llm-failed")]
468 PipelineErrorAnthropicLlmFailed,
469 #[serde(rename = "pipeline-error-together-ai-400-bad-request-validation-failed")]
470 PipelineErrorTogetherAi400BadRequestValidationFailed,
471 #[serde(rename = "pipeline-error-together-ai-401-unauthorized")]
472 PipelineErrorTogetherAi401Unauthorized,
473 #[serde(rename = "pipeline-error-together-ai-403-model-access-denied")]
474 PipelineErrorTogetherAi403ModelAccessDenied,
475 #[serde(rename = "pipeline-error-together-ai-429-exceeded-quota")]
476 PipelineErrorTogetherAi429ExceededQuota,
477 #[serde(rename = "pipeline-error-together-ai-500-server-error")]
478 PipelineErrorTogetherAi500ServerError,
479 #[serde(rename = "pipeline-error-together-ai-llm-failed")]
480 PipelineErrorTogetherAiLlmFailed,
481 #[serde(rename = "pipeline-error-anyscale-400-bad-request-validation-failed")]
482 PipelineErrorAnyscale400BadRequestValidationFailed,
483 #[serde(rename = "pipeline-error-anyscale-401-unauthorized")]
484 PipelineErrorAnyscale401Unauthorized,
485 #[serde(rename = "pipeline-error-anyscale-403-model-access-denied")]
486 PipelineErrorAnyscale403ModelAccessDenied,
487 #[serde(rename = "pipeline-error-anyscale-429-exceeded-quota")]
488 PipelineErrorAnyscale429ExceededQuota,
489 #[serde(rename = "pipeline-error-anyscale-500-server-error")]
490 PipelineErrorAnyscale500ServerError,
491 #[serde(rename = "pipeline-error-anyscale-llm-failed")]
492 PipelineErrorAnyscaleLlmFailed,
493 #[serde(rename = "pipeline-error-openrouter-400-bad-request-validation-failed")]
494 PipelineErrorOpenrouter400BadRequestValidationFailed,
495 #[serde(rename = "pipeline-error-openrouter-401-unauthorized")]
496 PipelineErrorOpenrouter401Unauthorized,
497 #[serde(rename = "pipeline-error-openrouter-403-model-access-denied")]
498 PipelineErrorOpenrouter403ModelAccessDenied,
499 #[serde(rename = "pipeline-error-openrouter-429-exceeded-quota")]
500 PipelineErrorOpenrouter429ExceededQuota,
501 #[serde(rename = "pipeline-error-openrouter-500-server-error")]
502 PipelineErrorOpenrouter500ServerError,
503 #[serde(rename = "pipeline-error-openrouter-llm-failed")]
504 PipelineErrorOpenrouterLlmFailed,
505 #[serde(rename = "pipeline-error-perplexity-ai-400-bad-request-validation-failed")]
506 PipelineErrorPerplexityAi400BadRequestValidationFailed,
507 #[serde(rename = "pipeline-error-perplexity-ai-401-unauthorized")]
508 PipelineErrorPerplexityAi401Unauthorized,
509 #[serde(rename = "pipeline-error-perplexity-ai-403-model-access-denied")]
510 PipelineErrorPerplexityAi403ModelAccessDenied,
511 #[serde(rename = "pipeline-error-perplexity-ai-429-exceeded-quota")]
512 PipelineErrorPerplexityAi429ExceededQuota,
513 #[serde(rename = "pipeline-error-perplexity-ai-500-server-error")]
514 PipelineErrorPerplexityAi500ServerError,
515 #[serde(rename = "pipeline-error-perplexity-ai-llm-failed")]
516 PipelineErrorPerplexityAiLlmFailed,
517 #[serde(rename = "pipeline-error-deepinfra-400-bad-request-validation-failed")]
518 PipelineErrorDeepinfra400BadRequestValidationFailed,
519 #[serde(rename = "pipeline-error-deepinfra-401-unauthorized")]
520 PipelineErrorDeepinfra401Unauthorized,
521 #[serde(rename = "pipeline-error-deepinfra-403-model-access-denied")]
522 PipelineErrorDeepinfra403ModelAccessDenied,
523 #[serde(rename = "pipeline-error-deepinfra-429-exceeded-quota")]
524 PipelineErrorDeepinfra429ExceededQuota,
525 #[serde(rename = "pipeline-error-deepinfra-500-server-error")]
526 PipelineErrorDeepinfra500ServerError,
527 #[serde(rename = "pipeline-error-deepinfra-llm-failed")]
528 PipelineErrorDeepinfraLlmFailed,
529 #[serde(rename = "pipeline-error-runpod-400-bad-request-validation-failed")]
530 PipelineErrorRunpod400BadRequestValidationFailed,
531 #[serde(rename = "pipeline-error-runpod-401-unauthorized")]
532 PipelineErrorRunpod401Unauthorized,
533 #[serde(rename = "pipeline-error-runpod-403-model-access-denied")]
534 PipelineErrorRunpod403ModelAccessDenied,
535 #[serde(rename = "pipeline-error-runpod-429-exceeded-quota")]
536 PipelineErrorRunpod429ExceededQuota,
537 #[serde(rename = "pipeline-error-runpod-500-server-error")]
538 PipelineErrorRunpod500ServerError,
539 #[serde(rename = "pipeline-error-runpod-llm-failed")]
540 PipelineErrorRunpodLlmFailed,
541 #[serde(rename = "pipeline-error-custom-llm-400-bad-request-validation-failed")]
542 PipelineErrorCustomLlm400BadRequestValidationFailed,
543 #[serde(rename = "pipeline-error-custom-llm-401-unauthorized")]
544 PipelineErrorCustomLlm401Unauthorized,
545 #[serde(rename = "pipeline-error-custom-llm-403-model-access-denied")]
546 PipelineErrorCustomLlm403ModelAccessDenied,
547 #[serde(rename = "pipeline-error-custom-llm-429-exceeded-quota")]
548 PipelineErrorCustomLlm429ExceededQuota,
549 #[serde(rename = "pipeline-error-custom-llm-500-server-error")]
550 PipelineErrorCustomLlm500ServerError,
551 #[serde(rename = "pipeline-error-custom-llm-llm-failed")]
552 PipelineErrorCustomLlmLlmFailed,
553 #[serde(rename = "pipeline-error-custom-voice-failed")]
554 PipelineErrorCustomVoiceFailed,
555 #[serde(rename = "pipeline-error-cartesia-socket-hang-up")]
556 PipelineErrorCartesiaSocketHangUp,
557 #[serde(rename = "pipeline-error-cartesia-requested-payment")]
558 PipelineErrorCartesiaRequestedPayment,
559 #[serde(rename = "pipeline-error-cartesia-500-server-error")]
560 PipelineErrorCartesia500ServerError,
561 #[serde(rename = "pipeline-error-cartesia-503-server-error")]
562 PipelineErrorCartesia503ServerError,
563 #[serde(rename = "pipeline-error-cartesia-522-server-error")]
564 PipelineErrorCartesia522ServerError,
565 #[serde(rename = "pipeline-error-eleven-labs-voice-not-found")]
566 PipelineErrorElevenLabsVoiceNotFound,
567 #[serde(rename = "pipeline-error-eleven-labs-quota-exceeded")]
568 PipelineErrorElevenLabsQuotaExceeded,
569 #[serde(rename = "pipeline-error-eleven-labs-unauthorized-access")]
570 PipelineErrorElevenLabsUnauthorizedAccess,
571 #[serde(rename = "pipeline-error-eleven-labs-unauthorized-to-access-model")]
572 PipelineErrorElevenLabsUnauthorizedToAccessModel,
573 #[serde(rename = "pipeline-error-eleven-labs-professional-voices-only-for-creator-plus")]
574 PipelineErrorElevenLabsProfessionalVoicesOnlyForCreatorPlus,
575 #[serde(rename = "pipeline-error-eleven-labs-blocked-free-plan-and-requested-upgrade")]
576 PipelineErrorElevenLabsBlockedFreePlanAndRequestedUpgrade,
577 #[serde(
578 rename = "pipeline-error-eleven-labs-blocked-concurrent-requests-and-requested-upgrade"
579 )]
580 PipelineErrorElevenLabsBlockedConcurrentRequestsAndRequestedUpgrade,
581 #[serde(
582 rename = "pipeline-error-eleven-labs-blocked-using-instant-voice-clone-and-requested-upgrade"
583 )]
584 PipelineErrorElevenLabsBlockedUsingInstantVoiceCloneAndRequestedUpgrade,
585 #[serde(rename = "pipeline-error-eleven-labs-system-busy-and-requested-upgrade")]
586 PipelineErrorElevenLabsSystemBusyAndRequestedUpgrade,
587 #[serde(rename = "pipeline-error-eleven-labs-voice-not-fine-tuned")]
588 PipelineErrorElevenLabsVoiceNotFineTuned,
589 #[serde(rename = "pipeline-error-eleven-labs-invalid-api-key")]
590 PipelineErrorElevenLabsInvalidApiKey,
591 #[serde(rename = "pipeline-error-eleven-labs-invalid-voice-samples")]
592 PipelineErrorElevenLabsInvalidVoiceSamples,
593 #[serde(rename = "pipeline-error-eleven-labs-voice-disabled-by-owner")]
594 PipelineErrorElevenLabsVoiceDisabledByOwner,
595 #[serde(rename = "pipeline-error-eleven-labs-blocked-account-in-probation")]
596 PipelineErrorElevenLabsBlockedAccountInProbation,
597 #[serde(rename = "pipeline-error-eleven-labs-blocked-content-against-their-policy")]
598 PipelineErrorElevenLabsBlockedContentAgainstTheirPolicy,
599 #[serde(rename = "pipeline-error-eleven-labs-missing-samples-for-voice-clone")]
600 PipelineErrorElevenLabsMissingSamplesForVoiceClone,
601 #[serde(rename = "pipeline-error-eleven-labs-voice-not-fine-tuned-and-cannot-be-used")]
602 PipelineErrorElevenLabsVoiceNotFineTunedAndCannotBeUsed,
603 #[serde(rename = "pipeline-error-eleven-labs-voice-not-allowed-for-free-users")]
604 PipelineErrorElevenLabsVoiceNotAllowedForFreeUsers,
605 #[serde(rename = "pipeline-error-eleven-labs-500-server-error")]
606 PipelineErrorElevenLabs500ServerError,
607 #[serde(rename = "pipeline-error-eleven-labs-max-character-limit-exceeded")]
608 PipelineErrorElevenLabsMaxCharacterLimitExceeded,
609 #[serde(
610 rename = "pipeline-error-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification"
611 )]
612 PipelineErrorElevenLabsBlockedVoicePotentiallyAgainstTermsOfServiceAndAwaitingVerification,
613 #[serde(rename = "pipeline-error-playht-request-timed-out")]
614 PipelineErrorPlayhtRequestTimedOut,
615 #[serde(rename = "pipeline-error-playht-invalid-voice")]
616 PipelineErrorPlayhtInvalidVoice,
617 #[serde(rename = "pipeline-error-playht-unexpected-error")]
618 PipelineErrorPlayhtUnexpectedError,
619 #[serde(rename = "pipeline-error-playht-out-of-credits")]
620 PipelineErrorPlayhtOutOfCredits,
621 #[serde(rename = "pipeline-error-playht-invalid-emotion")]
622 PipelineErrorPlayhtInvalidEmotion,
623 #[serde(rename = "pipeline-error-playht-voice-must-be-a-valid-voice-manifest-uri")]
624 PipelineErrorPlayhtVoiceMustBeAValidVoiceManifestUri,
625 #[serde(rename = "pipeline-error-playht-401-unauthorized")]
626 PipelineErrorPlayht401Unauthorized,
627 #[serde(rename = "pipeline-error-playht-403-forbidden-out-of-characters")]
628 PipelineErrorPlayht403ForbiddenOutOfCharacters,
629 #[serde(rename = "pipeline-error-playht-403-forbidden-api-access-not-available")]
630 PipelineErrorPlayht403ForbiddenApiAccessNotAvailable,
631 #[serde(rename = "pipeline-error-playht-429-exceeded-quota")]
632 PipelineErrorPlayht429ExceededQuota,
633 #[serde(rename = "pipeline-error-playht-502-gateway-error")]
634 PipelineErrorPlayht502GatewayError,
635 #[serde(rename = "pipeline-error-playht-504-gateway-error")]
636 PipelineErrorPlayht504GatewayError,
637 #[serde(rename = "pipeline-error-tavus-video-failed")]
638 PipelineErrorTavusVideoFailed,
639 #[serde(rename = "pipeline-error-custom-transcriber-failed")]
640 PipelineErrorCustomTranscriberFailed,
641 #[serde(rename = "pipeline-error-11labs-transcriber-failed")]
642 PipelineError11labsTranscriberFailed,
643 #[serde(rename = "pipeline-error-deepgram-returning-403-model-access-denied")]
644 PipelineErrorDeepgramReturning403ModelAccessDenied,
645 #[serde(rename = "pipeline-error-deepgram-returning-401-invalid-credentials")]
646 PipelineErrorDeepgramReturning401InvalidCredentials,
647 #[serde(rename = "pipeline-error-deepgram-returning-404-not-found")]
648 PipelineErrorDeepgramReturning404NotFound,
649 #[serde(
650 rename = "pipeline-error-deepgram-returning-400-no-such-model-language-tier-combination"
651 )]
652 PipelineErrorDeepgramReturning400NoSuchModelLanguageTierCombination,
653 #[serde(rename = "pipeline-error-deepgram-returning-500-invalid-json")]
654 PipelineErrorDeepgramReturning500InvalidJson,
655 #[serde(rename = "pipeline-error-deepgram-returning-502-network-error")]
656 PipelineErrorDeepgramReturning502NetworkError,
657 #[serde(rename = "pipeline-error-deepgram-returning-502-bad-gateway-ehostunreach")]
658 PipelineErrorDeepgramReturning502BadGatewayEhostunreach,
659 #[serde(rename = "silence-timed-out")]
660 SilenceTimedOut,
661 #[serde(rename = "sip-gateway-failed-to-connect-call")]
662 SipGatewayFailedToConnectCall,
663 #[serde(rename = "twilio-failed-to-connect-call")]
664 TwilioFailedToConnectCall,
665 #[serde(rename = "twilio-reported-customer-misdialed")]
666 TwilioReportedCustomerMisdialed,
667 #[serde(rename = "vonage-rejected")]
668 VonageRejected,
669 #[serde(rename = "voicemail")]
670 Voicemail,
671}
672
673impl Default for EndedReason {
674 fn default() -> EndedReason {
675 Self::AssistantNotValid
676 }
677}