From 153137a9c733efe5a25b816d282234142aae3fc6 Mon Sep 17 00:00:00 2001
From: fern-api <115122769+fern-api[bot]@users.noreply.github.com>
Date: Thu, 26 Dec 2024 15:51:37 +0000
Subject: [PATCH] Release 0.2.0
---
README.md | 152 -
poetry.lock | 281 +-
pyproject.toml | 2 +-
reference.md | 3662 -----------------
src/vapi/__init__.py | 337 +-
src/vapi/analytics/client.py | 107 +-
src/vapi/assistants/client.py | 365 +-
...date_assistant_dto_client_messages_item.py | 1 +
.../types/update_assistant_dto_model.py | 6 +
...date_assistant_dto_server_messages_item.py | 1 +
.../types/update_assistant_dto_transcriber.py | 6 +-
.../types/update_assistant_dto_voice.py | 4 +
src/vapi/blocks/client.py | 156 +-
src/vapi/calls/client.py | 178 +-
src/vapi/client.py | 12 +-
src/vapi/core/client_wrapper.py | 16 +-
src/vapi/core/file.py | 21 +-
src/vapi/core/http_client.py | 28 +-
src/vapi/core/request_options.py | 3 +
src/vapi/files/client.py | 148 +-
src/vapi/knowledge_bases/__init__.py | 19 +
src/vapi/knowledge_bases/client.py | 482 +++
src/vapi/knowledge_bases/types/__init__.py | 17 +
.../types/knowledge_bases_create_request.py | 7 +
.../types/knowledge_bases_create_response.py | 7 +
.../types/knowledge_bases_delete_response.py | 7 +
.../types/knowledge_bases_get_response.py | 7 +
.../knowledge_bases_list_response_item.py | 7 +
.../types/knowledge_bases_update_response.py | 7 +
src/vapi/logs/client.py | 56 +-
src/vapi/phone_numbers/client.py | 156 +-
src/vapi/squads/client.py | 154 +-
src/vapi/tools/client.py | 152 +-
src/vapi/tools/types/tools_create_request.py | 6 +
src/vapi/tools/types/tools_create_response.py | 16 +-
src/vapi/tools/types/tools_delete_response.py | 16 +-
src/vapi/tools/types/tools_get_response.py | 16 +-
.../tools/types/tools_list_response_item.py | 14 +-
src/vapi/tools/types/tools_update_response.py | 16 +-
src/vapi/types/__init__.py | 322 +-
src/vapi/types/analytics_query_dto.py | 23 +
src/vapi/types/analytics_query_result.py | 6 +-
src/vapi/types/anthropic_credential.py | 5 +
src/vapi/types/anthropic_model.py | 23 +-
src/vapi/types/anthropic_model_model.py | 7 +-
src/vapi/types/anyscale_credential.py | 5 +
src/vapi/types/anyscale_model.py | 23 +-
src/vapi/types/artifact_plan.py | 2 -
src/vapi/types/assembly_ai_credential.py | 51 +
src/vapi/types/assembly_ai_transcriber.py | 58 +
src/vapi/types/assignment_mutation.py | 9 -
src/vapi/types/assistant.py | 69 +-
.../types/assistant_client_messages_item.py | 1 +
.../assistant_custom_endpointing_rule.py | 62 +
src/vapi/types/assistant_model.py | 6 +
src/vapi/types/assistant_overrides.py | 75 +-
...ssistant_overrides_client_messages_item.py | 1 +
src/vapi/types/assistant_overrides_model.py | 6 +
...ssistant_overrides_server_messages_item.py | 1 +
.../types/assistant_overrides_transcriber.py | 6 +-
src/vapi/types/assistant_overrides_voice.py | 4 +
.../types/assistant_server_messages_item.py | 1 +
src/vapi/types/assistant_transcriber.py | 6 +-
src/vapi/types/assistant_voice.py | 4 +
src/vapi/types/auto_reload_plan.py | 27 +
src/vapi/types/auto_reload_plan_dto.py | 28 +
src/vapi/types/azure_credential.py | 64 +
src/vapi/types/azure_credential_region.py | 25 +
src/vapi/types/azure_open_ai_credential.py | 5 +
.../azure_open_ai_credential_models_item.py | 1 +
.../types/azure_open_ai_credential_region.py | 1 +
src/vapi/types/azure_voice.py | 25 +-
src/vapi/types/bash_tool.py | 94 +
src/vapi/types/bash_tool_messages_item.py | 9 +
src/vapi/types/block_complete_message.py | 16 +-
src/vapi/types/block_start_message.py | 16 +-
.../types/both_custom_endpointing_rule.py | 71 +
src/vapi/types/bucket_plan.py | 4 -
src/vapi/types/buy_phone_number_dto.py | 1 -
src/vapi/types/byo_phone_number.py | 2 -
src/vapi/types/byo_sip_trunk_credential.py | 23 +-
src/vapi/types/call.py | 6 +
src/vapi/types/call_ended_reason.py | 73 +-
src/vapi/types/call_log_privileged.py | 46 +
src/vapi/types/call_log_privileged_level.py | 5 +
.../types/call_logs_paginated_response.py | 22 +
src/vapi/types/callback_step.py | 33 +-
src/vapi/types/cartesia_credential.py | 5 +
src/vapi/types/cartesia_voice.py | 25 +-
src/vapi/types/cartesia_voice_language.py | 4 +-
src/vapi/types/chunk_plan.py | 3 -
.../client_inbound_message_add_message.py | 15 +
.../types/client_inbound_message_control.py | 1 -
.../types/client_inbound_message_message.py | 3 +-
.../types/client_inbound_message_transfer.py | 28 +
...nt_inbound_message_transfer_destination.py | 7 +
src/vapi/types/client_message.py | 10 +
src/vapi/types/client_message_hang.py | 1 -
...lient_message_language_change_detected.py} | 6 +-
src/vapi/types/client_message_message.py | 6 +-
...ool_calls_tool_with_tool_call_list_item.py | 7 +-
.../types/client_message_transfer_update.py | 69 +
...ent_message_transfer_update_destination.py | 11 +
src/vapi/types/computer_tool.py | 111 +
src/vapi/types/computer_tool_messages_item.py | 9 +
src/vapi/types/condition.py | 14 +-
src/vapi/types/conversation_block.py | 6 -
.../types/create_anthropic_credential_dto.py | 5 +
.../types/create_anyscale_credential_dto.py | 5 +
.../create_assembly_ai_credential_dto.py | 30 +
src/vapi/types/create_assistant_dto.py | 69 +-
...eate_assistant_dto_client_messages_item.py | 1 +
src/vapi/types/create_assistant_dto_model.py | 6 +
...eate_assistant_dto_server_messages_item.py | 1 +
.../types/create_assistant_dto_transcriber.py | 6 +-
src/vapi/types/create_assistant_dto_voice.py | 4 +
src/vapi/types/create_azure_credential_dto.py | 43 +
.../create_azure_credential_dto_region.py | 25 +
.../create_azure_open_ai_credential_dto.py | 4 +
...zure_open_ai_credential_dto_models_item.py | 1 +
...ate_azure_open_ai_credential_dto_region.py | 1 +
src/vapi/types/create_bash_tool_dto.py | 73 +
.../create_bash_tool_dto_messages_item.py | 11 +
src/vapi/types/create_byo_phone_number_dto.py | 2 -
.../create_byo_sip_trunk_credential_dto.py | 25 +-
.../types/create_cartesia_credential_dto.py | 5 +
src/vapi/types/create_computer_tool_dto.py | 90 +
.../create_computer_tool_dto_messages_item.py | 11 +
.../types/create_conversation_block_dto.py | 6 -
.../types/create_custom_knowledge_base_dto.py | 63 +
.../types/create_custom_llm_credential_dto.py | 13 +
src/vapi/types/create_customer_dto.py | 1 -
.../types/create_deep_infra_credential_dto.py | 5 +
.../types/create_deepgram_credential_dto.py | 5 +
.../create_eleven_labs_credential_dto.py | 5 +
src/vapi/types/create_gcp_credential_dto.py | 12 +-
.../types/create_gladia_credential_dto.py | 5 +
.../create_go_high_level_credential_dto.py | 5 +
.../types/create_google_credential_dto.py | 34 +
src/vapi/types/create_groq_credential_dto.py | 5 +
.../create_inflection_ai_credential_dto.py | 34 +
.../types/create_langfuse_credential_dto.py | 40 +
src/vapi/types/create_lmnt_credential_dto.py | 5 +
src/vapi/types/create_make_credential_dto.py | 5 +
.../types/create_open_ai_credential_dto.py | 5 +
.../create_open_router_credential_dto.py | 5 +
src/vapi/types/create_org_dto.py | 13 +
src/vapi/types/create_org_dto_channel.py | 5 +
.../create_perplexity_ai_credential_dto.py | 5 +
.../types/create_play_ht_credential_dto.py | 4 +
.../types/create_rime_ai_credential_dto.py | 5 +
.../types/create_runpod_credential_dto.py | 5 +
src/vapi/types/create_s_3_credential_dto.py | 5 +
src/vapi/types/create_tavus_credential_dto.py | 30 +
src/vapi/types/create_text_editor_tool_dto.py | 73 +
...eate_text_editor_tool_dto_messages_item.py | 11 +
.../create_together_ai_credential_dto.py | 5 +
src/vapi/types/create_tool_call_block_dto.py | 3 -
.../types/create_trieve_knowledge_base_dto.py | 52 +
.../types/create_twilio_credential_dto.py | 4 +
.../types/create_twilio_phone_number_dto.py | 1 -
.../types/create_vapi_phone_number_dto.py | 9 +-
.../types/create_vonage_credential_dto.py | 4 +
.../types/create_vonage_phone_number_dto.py | 1 -
.../types/create_webhook_credential_dto.py | 33 +
src/vapi/types/create_workflow_block_dto.py | 3 -
src/vapi/types/create_x_ai_credential_dto.py | 34 +
src/vapi/types/credits_buy_dto.py | 22 +
src/vapi/types/custom_knowledge_base.py | 75 +
src/vapi/types/custom_llm_credential.py | 21 +
src/vapi/types/custom_llm_model.py | 23 +-
src/vapi/types/custom_message.py | 39 +
src/vapi/types/custom_transcriber.py | 65 +
src/vapi/types/custom_voice.py | 67 +
.../types/customer_custom_endpointing_rule.py | 61 +
src/vapi/types/deep_infra_credential.py | 5 +
src/vapi/types/deep_infra_model.py | 23 +-
src/vapi/types/deepgram_credential.py | 5 +
src/vapi/types/deepgram_transcriber.py | 37 +-
src/vapi/types/deepgram_voice.py | 21 +-
src/vapi/types/eleven_labs_credential.py | 5 +
src/vapi/types/eleven_labs_voice.py | 25 +-
src/vapi/types/exact_replacement.py | 1 -
src/vapi/types/fallback_azure_voice.py | 47 +
src/vapi/types/fallback_azure_voice_id.py | 6 +
.../types/fallback_azure_voice_voice_id.py | 5 +
src/vapi/types/fallback_cartesia_voice.py | 49 +
.../types/fallback_cartesia_voice_language.py | 7 +
.../types/fallback_cartesia_voice_model.py | 5 +
src/vapi/types/fallback_custom_voice.py | 59 +
src/vapi/types/fallback_deepgram_voice.py | 38 +
src/vapi/types/fallback_deepgram_voice_id.py | 6 +
.../types/fallback_deepgram_voice_id_enum.py | 10 +
src/vapi/types/fallback_eleven_labs_voice.py | 89 +
.../types/fallback_eleven_labs_voice_id.py | 6 +
.../fallback_eleven_labs_voice_id_enum.py | 24 +
.../types/fallback_eleven_labs_voice_model.py | 8 +
src/vapi/types/fallback_lmnt_voice.py | 43 +
src/vapi/types/fallback_lmnt_voice_id.py | 6 +
src/vapi/types/fallback_lmnt_voice_id_enum.py | 5 +
src/vapi/types/fallback_neets_voice.py | 38 +
src/vapi/types/fallback_neets_voice_id.py | 6 +
.../types/fallback_neets_voice_id_enum.py | 5 +
src/vapi/types/fallback_open_ai_voice.py | 44 +
src/vapi/types/fallback_open_ai_voice_id.py | 8 +
src/vapi/types/fallback_plan.py | 23 +
src/vapi/types/fallback_plan_voices_item.py | 28 +
src/vapi/types/fallback_play_ht_voice.py | 87 +
.../types/fallback_play_ht_voice_emotion.py | 21 +
src/vapi/types/fallback_play_ht_voice_id.py | 6 +
.../types/fallback_play_ht_voice_id_enum.py | 8 +
.../types/fallback_play_ht_voice_language.py | 46 +
.../types/fallback_play_ht_voice_model.py | 5 +
src/vapi/types/fallback_rime_ai_voice.py | 49 +
src/vapi/types/fallback_rime_ai_voice_id.py | 6 +
.../types/fallback_rime_ai_voice_id_enum.py | 90 +
.../types/fallback_rime_ai_voice_model.py | 5 +
src/vapi/types/fallback_tavus_voice.py | 79 +
.../types/fallback_tavus_voice_voice_id.py | 5 +
src/vapi/types/format_plan.py | 5 -
src/vapi/types/gcp_credential.py | 2 +-
src/vapi/types/gladia_credential.py | 5 +
src/vapi/types/go_high_level_credential.py | 5 +
src/vapi/types/google_credential.py | 55 +
src/vapi/types/google_model.py | 98 +
src/vapi/types/google_model_model.py | 10 +
src/vapi/types/google_model_tools_item.py | 20 +
src/vapi/types/groq_credential.py | 5 +
src/vapi/types/groq_model.py | 23 +-
src/vapi/types/handoff_step.py | 33 +-
src/vapi/types/hipaa_buy_dto.py | 31 +
.../types/import_twilio_phone_number_dto.py | 1 -
.../types/import_vonage_phone_number_dto.py | 1 -
src/vapi/types/inflection_ai_credential.py | 55 +
src/vapi/types/inflection_ai_model.py | 97 +
.../types/inflection_ai_model_tools_item.py | 20 +
src/vapi/types/invite_user_dto.py | 4 +-
.../types/knowledge_base_response_document.py | 34 +
src/vapi/types/langfuse_credential.py | 61 +
src/vapi/types/lmnt_credential.py | 5 +
src/vapi/types/lmnt_voice.py | 21 +-
src/vapi/types/log.py | 9 +-
src/vapi/types/log_resource.py | 20 +-
src/vapi/types/make_credential.py | 5 +
src/vapi/types/message_plan.py | 1 -
src/vapi/types/model_based_condition.py | 10 +-
src/vapi/types/model_cost.py | 1 -
src/vapi/types/neets_voice.py | 21 +-
.../types/o_auth_2_authentication_plan.py | 35 +
.../types/oauth_2_authentication_session.py | 34 +
src/vapi/types/open_ai_credential.py | 5 +
src/vapi/types/open_ai_function.py | 15 +-
src/vapi/types/open_ai_model.py | 23 +-
.../open_ai_model_fallback_models_item.py | 2 +
src/vapi/types/open_ai_model_model.py | 2 +
src/vapi/types/open_ai_voice.py | 22 +-
src/vapi/types/open_ai_voice_id.py | 5 +-
src/vapi/types/open_router_credential.py | 5 +
src/vapi/types/open_router_model.py | 23 +-
src/vapi/types/org.py | 15 +
src/vapi/types/org_channel.py | 5 +
src/vapi/types/org_with_org_user.py | 139 +
src/vapi/types/org_with_org_user_channel.py | 5 +
src/vapi/types/org_with_org_user_role.py | 5 +
src/vapi/types/payment.py | 98 +
...knowledge_base.py => payment_retry_dto.py} | 13 +-
src/vapi/types/payment_status.py | 5 +
src/vapi/types/payments_paginated_response.py | 22 +
src/vapi/types/perplexity_ai_credential.py | 5 +
src/vapi/types/perplexity_ai_model.py | 23 +-
.../types/phone_number_paginated_response.py | 29 +
..._number_paginated_response_results_item.py | 11 +
src/vapi/types/play_ht_credential.py | 5 +
src/vapi/types/play_ht_voice.py | 33 +-
src/vapi/types/play_ht_voice_language.py | 46 +
src/vapi/types/play_ht_voice_model.py | 5 +
src/vapi/types/regex_option.py | 3 +-
src/vapi/types/regex_replacement.py | 9 +-
src/vapi/types/rime_ai_credential.py | 5 +
src/vapi/types/rime_ai_voice.py | 21 +-
src/vapi/types/rule_based_condition.py | 8 -
src/vapi/types/runpod_credential.py | 5 +
src/vapi/types/s_3_credential.py | 5 +
src/vapi/types/server.py | 7 +
.../types/server_message_assistant_request.py | 3 -
.../server_message_conversation_update.py | 3 -
.../server_message_end_of_call_report.py | 3 -
...message_end_of_call_report_ended_reason.py | 73 +-
src/vapi/types/server_message_hang.py | 4 -
.../server_message_knowledge_base_request.py | 107 +
...ge_knowledge_base_request_messages_item.py | 12 +
...ge_knowledge_base_request_phone_number.py} | 2 +-
...erver_message_language_change_detected.py} | 19 +-
...e_language_change_detected_phone_number.py | 11 +
src/vapi/types/server_message_message.py | 6 +-
src/vapi/types/server_message_model_output.py | 3 -
.../server_message_phone_call_control.py | 3 -
...message_response_knowledge_base_request.py | 29 +
...erver_message_response_message_response.py | 2 +
.../server_message_response_voice_request.py | 13 +-
.../types/server_message_speech_update.py | 3 -
.../types/server_message_status_update.py | 3 -
...rver_message_status_update_ended_reason.py | 73 +-
src/vapi/types/server_message_tool_calls.py | 3 -
...ool_calls_tool_with_tool_call_list_item.py | 7 +-
src/vapi/types/server_message_transcript.py | 3 -
...er_message_transfer_destination_request.py | 3 -
.../types/server_message_transfer_update.py | 17 +-
.../types/server_message_user_interrupted.py | 3 -
src/vapi/types/server_message_voice_input.py | 3 -
.../types/server_message_voice_request.py | 16 +-
src/vapi/types/sip_authentication.py | 32 +
src/vapi/types/start_speaking_plan.py | 31 +-
...king_plan_custom_endpointing_rules_item.py | 10 +
src/vapi/types/stop_speaking_plan.py | 1 -
src/vapi/types/structured_data_plan.py | 15 +-
src/vapi/types/subscription.py | 225 +
.../subscription_concurrency_line_buy_dto.py | 22 +
...ubscription_concurrency_line_remove_dto.py | 22 +
src/vapi/types/subscription_coupon_add_dto.py | 29 +
src/vapi/types/subscription_monthly_charge.py | 29 +
src/vapi/types/subscription_status.py | 5 +
src/vapi/types/subscription_type.py | 5 +
src/vapi/types/success_evaluation_plan.py | 20 +-
src/vapi/types/summary_plan.py | 15 +-
.../sync_voice_library_dto_providers_item.py | 12 +-
.../types/tavus_conversation_properties.py | 95 +
src/vapi/types/tavus_credential.py | 51 +
src/vapi/types/tavus_voice.py | 87 +
src/vapi/types/tavus_voice_voice_id.py | 5 +
src/vapi/types/text_content.py | 22 +
src/vapi/types/text_content_language.py | 194 +
src/vapi/types/text_editor_tool.py | 94 +
.../types/text_editor_tool_messages_item.py | 9 +
src/vapi/types/together_ai_credential.py | 5 +
src/vapi/types/together_ai_model.py | 23 +-
src/vapi/types/tool_call_block.py | 3 -
src/vapi/types/tool_call_result.py | 3 -
src/vapi/types/tool_message_complete.py | 36 +-
src/vapi/types/tool_message_delayed.py | 15 +-
src/vapi/types/tool_message_failed.py | 14 +-
src/vapi/types/tool_message_start.py | 14 +-
src/vapi/types/transcriber_cost.py | 1 -
src/vapi/types/transcript_plan.py | 4 -
.../types/transfer_destination_assistant.py | 100 +-
.../transfer_destination_assistant_message.py | 6 +
src/vapi/types/transfer_destination_number.py | 27 +-
.../transfer_destination_number_message.py | 6 +
src/vapi/types/transfer_destination_sip.py | 32 +-
.../types/transfer_destination_sip_message.py | 6 +
src/vapi/types/transfer_destination_step.py | 23 +-
.../transfer_destination_step_message.py | 6 +
src/vapi/types/transfer_plan.py | 55 +
src/vapi/types/transfer_plan_message.py | 6 +
src/vapi/types/transfer_plan_mode.py | 15 +
src/vapi/types/transport.py | 34 +
src/vapi/types/transport_cost.py | 2 +
src/vapi/types/transport_cost_provider.py | 5 +
src/vapi/types/transport_provider.py | 5 +
src/vapi/types/trieve_knowledge_base.py | 62 +
...knowledge_base_vector_store_create_plan.py | 45 +
...knowledge_base_vector_store_search_plan.py | 43 +
...se_vector_store_search_plan_search_type.py | 7 +
src/vapi/types/twilio_credential.py | 5 +
src/vapi/types/twilio_phone_number.py | 1 -
src/vapi/types/twilio_voicemail_detection.py | 1 -
.../types/update_anthropic_credential_dto.py | 5 +
.../types/update_anyscale_credential_dto.py | 5 +
.../update_assembly_ai_credential_dto.py | 30 +
src/vapi/types/update_azure_credential_dto.py | 43 +
.../update_azure_credential_dto_region.py | 25 +
.../update_azure_open_ai_credential_dto.py | 4 +
...zure_open_ai_credential_dto_models_item.py | 1 +
...ate_azure_open_ai_credential_dto_region.py | 1 +
.../update_byo_sip_trunk_credential_dto.py | 25 +-
.../types/update_cartesia_credential_dto.py | 5 +
.../types/update_custom_llm_credential_dto.py | 13 +
.../types/update_deep_infra_credential_dto.py | 5 +
.../types/update_deepgram_credential_dto.py | 5 +
.../update_eleven_labs_credential_dto.py | 5 +
src/vapi/types/update_gcp_credential_dto.py | 12 +-
.../types/update_gladia_credential_dto.py | 5 +
.../update_go_high_level_credential_dto.py | 5 +
.../types/update_google_credential_dto.py | 34 +
src/vapi/types/update_groq_credential_dto.py | 5 +
.../update_inflection_ai_credential_dto.py | 34 +
.../types/update_langfuse_credential_dto.py | 40 +
src/vapi/types/update_lmnt_credential_dto.py | 5 +
src/vapi/types/update_make_credential_dto.py | 5 +
.../types/update_open_ai_credential_dto.py | 5 +
.../update_open_router_credential_dto.py | 5 +
src/vapi/types/update_org_dto.py | 13 +
src/vapi/types/update_org_dto_channel.py | 5 +
.../update_perplexity_ai_credential_dto.py | 5 +
.../types/update_play_ht_credential_dto.py | 4 +
.../types/update_rime_ai_credential_dto.py | 5 +
.../types/update_runpod_credential_dto.py | 5 +
src/vapi/types/update_s_3_credential_dto.py | 5 +
src/vapi/types/update_tavus_credential_dto.py | 30 +
.../update_together_ai_credential_dto.py | 5 +
.../types/update_twilio_credential_dto.py | 4 +
.../types/update_vonage_credential_dto.py | 4 +
src/vapi/types/update_x_ai_credential_dto.py | 34 +
src/vapi/types/vapi_cost.py | 8 +
src/vapi/types/vapi_cost_sub_type.py | 5 +
src/vapi/types/vapi_model.py | 23 +-
src/vapi/types/vapi_phone_number.py | 9 +-
src/vapi/types/voice_cost.py | 1 -
src/vapi/types/vonage_credential.py | 5 +
src/vapi/types/vonage_phone_number.py | 1 -
src/vapi/types/webhook_credential.py | 62 +
src/vapi/types/workflow_block.py | 3 -
src/vapi/types/x_ai_credential.py | 55 +
src/vapi/types/xai_model.py | 97 +
src/vapi/types/xai_model_tools_item.py | 20 +
415 files changed, 8904 insertions(+), 6059 deletions(-)
delete mode 100644 reference.md
create mode 100644 src/vapi/knowledge_bases/__init__.py
create mode 100644 src/vapi/knowledge_bases/client.py
create mode 100644 src/vapi/knowledge_bases/types/__init__.py
create mode 100644 src/vapi/knowledge_bases/types/knowledge_bases_create_request.py
create mode 100644 src/vapi/knowledge_bases/types/knowledge_bases_create_response.py
create mode 100644 src/vapi/knowledge_bases/types/knowledge_bases_delete_response.py
create mode 100644 src/vapi/knowledge_bases/types/knowledge_bases_get_response.py
create mode 100644 src/vapi/knowledge_bases/types/knowledge_bases_list_response_item.py
create mode 100644 src/vapi/knowledge_bases/types/knowledge_bases_update_response.py
create mode 100644 src/vapi/types/analytics_query_dto.py
create mode 100644 src/vapi/types/assembly_ai_credential.py
create mode 100644 src/vapi/types/assembly_ai_transcriber.py
create mode 100644 src/vapi/types/assistant_custom_endpointing_rule.py
create mode 100644 src/vapi/types/auto_reload_plan.py
create mode 100644 src/vapi/types/auto_reload_plan_dto.py
create mode 100644 src/vapi/types/azure_credential.py
create mode 100644 src/vapi/types/azure_credential_region.py
create mode 100644 src/vapi/types/bash_tool.py
create mode 100644 src/vapi/types/bash_tool_messages_item.py
create mode 100644 src/vapi/types/both_custom_endpointing_rule.py
create mode 100644 src/vapi/types/call_log_privileged.py
create mode 100644 src/vapi/types/call_log_privileged_level.py
create mode 100644 src/vapi/types/call_logs_paginated_response.py
create mode 100644 src/vapi/types/client_inbound_message_transfer.py
create mode 100644 src/vapi/types/client_inbound_message_transfer_destination.py
rename src/vapi/types/{client_message_language_changed.py => client_message_language_change_detected.py} (66%)
create mode 100644 src/vapi/types/client_message_transfer_update.py
create mode 100644 src/vapi/types/client_message_transfer_update_destination.py
create mode 100644 src/vapi/types/computer_tool.py
create mode 100644 src/vapi/types/computer_tool_messages_item.py
create mode 100644 src/vapi/types/create_assembly_ai_credential_dto.py
create mode 100644 src/vapi/types/create_azure_credential_dto.py
create mode 100644 src/vapi/types/create_azure_credential_dto_region.py
create mode 100644 src/vapi/types/create_bash_tool_dto.py
create mode 100644 src/vapi/types/create_bash_tool_dto_messages_item.py
create mode 100644 src/vapi/types/create_computer_tool_dto.py
create mode 100644 src/vapi/types/create_computer_tool_dto_messages_item.py
create mode 100644 src/vapi/types/create_custom_knowledge_base_dto.py
create mode 100644 src/vapi/types/create_google_credential_dto.py
create mode 100644 src/vapi/types/create_inflection_ai_credential_dto.py
create mode 100644 src/vapi/types/create_langfuse_credential_dto.py
create mode 100644 src/vapi/types/create_org_dto_channel.py
create mode 100644 src/vapi/types/create_tavus_credential_dto.py
create mode 100644 src/vapi/types/create_text_editor_tool_dto.py
create mode 100644 src/vapi/types/create_text_editor_tool_dto_messages_item.py
create mode 100644 src/vapi/types/create_trieve_knowledge_base_dto.py
create mode 100644 src/vapi/types/create_webhook_credential_dto.py
create mode 100644 src/vapi/types/create_x_ai_credential_dto.py
create mode 100644 src/vapi/types/credits_buy_dto.py
create mode 100644 src/vapi/types/custom_knowledge_base.py
create mode 100644 src/vapi/types/custom_message.py
create mode 100644 src/vapi/types/custom_transcriber.py
create mode 100644 src/vapi/types/custom_voice.py
create mode 100644 src/vapi/types/customer_custom_endpointing_rule.py
create mode 100644 src/vapi/types/fallback_azure_voice.py
create mode 100644 src/vapi/types/fallback_azure_voice_id.py
create mode 100644 src/vapi/types/fallback_azure_voice_voice_id.py
create mode 100644 src/vapi/types/fallback_cartesia_voice.py
create mode 100644 src/vapi/types/fallback_cartesia_voice_language.py
create mode 100644 src/vapi/types/fallback_cartesia_voice_model.py
create mode 100644 src/vapi/types/fallback_custom_voice.py
create mode 100644 src/vapi/types/fallback_deepgram_voice.py
create mode 100644 src/vapi/types/fallback_deepgram_voice_id.py
create mode 100644 src/vapi/types/fallback_deepgram_voice_id_enum.py
create mode 100644 src/vapi/types/fallback_eleven_labs_voice.py
create mode 100644 src/vapi/types/fallback_eleven_labs_voice_id.py
create mode 100644 src/vapi/types/fallback_eleven_labs_voice_id_enum.py
create mode 100644 src/vapi/types/fallback_eleven_labs_voice_model.py
create mode 100644 src/vapi/types/fallback_lmnt_voice.py
create mode 100644 src/vapi/types/fallback_lmnt_voice_id.py
create mode 100644 src/vapi/types/fallback_lmnt_voice_id_enum.py
create mode 100644 src/vapi/types/fallback_neets_voice.py
create mode 100644 src/vapi/types/fallback_neets_voice_id.py
create mode 100644 src/vapi/types/fallback_neets_voice_id_enum.py
create mode 100644 src/vapi/types/fallback_open_ai_voice.py
create mode 100644 src/vapi/types/fallback_open_ai_voice_id.py
create mode 100644 src/vapi/types/fallback_plan.py
create mode 100644 src/vapi/types/fallback_plan_voices_item.py
create mode 100644 src/vapi/types/fallback_play_ht_voice.py
create mode 100644 src/vapi/types/fallback_play_ht_voice_emotion.py
create mode 100644 src/vapi/types/fallback_play_ht_voice_id.py
create mode 100644 src/vapi/types/fallback_play_ht_voice_id_enum.py
create mode 100644 src/vapi/types/fallback_play_ht_voice_language.py
create mode 100644 src/vapi/types/fallback_play_ht_voice_model.py
create mode 100644 src/vapi/types/fallback_rime_ai_voice.py
create mode 100644 src/vapi/types/fallback_rime_ai_voice_id.py
create mode 100644 src/vapi/types/fallback_rime_ai_voice_id_enum.py
create mode 100644 src/vapi/types/fallback_rime_ai_voice_model.py
create mode 100644 src/vapi/types/fallback_tavus_voice.py
create mode 100644 src/vapi/types/fallback_tavus_voice_voice_id.py
create mode 100644 src/vapi/types/google_credential.py
create mode 100644 src/vapi/types/google_model.py
create mode 100644 src/vapi/types/google_model_model.py
create mode 100644 src/vapi/types/google_model_tools_item.py
create mode 100644 src/vapi/types/hipaa_buy_dto.py
create mode 100644 src/vapi/types/inflection_ai_credential.py
create mode 100644 src/vapi/types/inflection_ai_model.py
create mode 100644 src/vapi/types/inflection_ai_model_tools_item.py
create mode 100644 src/vapi/types/knowledge_base_response_document.py
create mode 100644 src/vapi/types/langfuse_credential.py
create mode 100644 src/vapi/types/o_auth_2_authentication_plan.py
create mode 100644 src/vapi/types/oauth_2_authentication_session.py
create mode 100644 src/vapi/types/org_channel.py
create mode 100644 src/vapi/types/org_with_org_user.py
create mode 100644 src/vapi/types/org_with_org_user_channel.py
create mode 100644 src/vapi/types/org_with_org_user_role.py
create mode 100644 src/vapi/types/payment.py
rename src/vapi/types/{knowledge_base.py => payment_retry_dto.py} (66%)
create mode 100644 src/vapi/types/payment_status.py
create mode 100644 src/vapi/types/payments_paginated_response.py
create mode 100644 src/vapi/types/phone_number_paginated_response.py
create mode 100644 src/vapi/types/phone_number_paginated_response_results_item.py
create mode 100644 src/vapi/types/play_ht_voice_language.py
create mode 100644 src/vapi/types/play_ht_voice_model.py
create mode 100644 src/vapi/types/server_message_knowledge_base_request.py
create mode 100644 src/vapi/types/server_message_knowledge_base_request_messages_item.py
rename src/vapi/types/{server_message_language_changed_phone_number.py => server_message_knowledge_base_request_phone_number.py} (88%)
rename src/vapi/types/{server_message_language_changed.py => server_message_language_change_detected.py} (77%)
create mode 100644 src/vapi/types/server_message_language_change_detected_phone_number.py
create mode 100644 src/vapi/types/server_message_response_knowledge_base_request.py
create mode 100644 src/vapi/types/sip_authentication.py
create mode 100644 src/vapi/types/start_speaking_plan_custom_endpointing_rules_item.py
create mode 100644 src/vapi/types/subscription.py
create mode 100644 src/vapi/types/subscription_concurrency_line_buy_dto.py
create mode 100644 src/vapi/types/subscription_concurrency_line_remove_dto.py
create mode 100644 src/vapi/types/subscription_coupon_add_dto.py
create mode 100644 src/vapi/types/subscription_monthly_charge.py
create mode 100644 src/vapi/types/subscription_status.py
create mode 100644 src/vapi/types/subscription_type.py
create mode 100644 src/vapi/types/tavus_conversation_properties.py
create mode 100644 src/vapi/types/tavus_credential.py
create mode 100644 src/vapi/types/tavus_voice.py
create mode 100644 src/vapi/types/tavus_voice_voice_id.py
create mode 100644 src/vapi/types/text_content.py
create mode 100644 src/vapi/types/text_content_language.py
create mode 100644 src/vapi/types/text_editor_tool.py
create mode 100644 src/vapi/types/text_editor_tool_messages_item.py
create mode 100644 src/vapi/types/transfer_destination_assistant_message.py
create mode 100644 src/vapi/types/transfer_destination_number_message.py
create mode 100644 src/vapi/types/transfer_destination_sip_message.py
create mode 100644 src/vapi/types/transfer_destination_step_message.py
create mode 100644 src/vapi/types/transfer_plan.py
create mode 100644 src/vapi/types/transfer_plan_message.py
create mode 100644 src/vapi/types/transfer_plan_mode.py
create mode 100644 src/vapi/types/transport.py
create mode 100644 src/vapi/types/transport_cost_provider.py
create mode 100644 src/vapi/types/transport_provider.py
create mode 100644 src/vapi/types/trieve_knowledge_base.py
create mode 100644 src/vapi/types/trieve_knowledge_base_vector_store_create_plan.py
create mode 100644 src/vapi/types/trieve_knowledge_base_vector_store_search_plan.py
create mode 100644 src/vapi/types/trieve_knowledge_base_vector_store_search_plan_search_type.py
create mode 100644 src/vapi/types/update_assembly_ai_credential_dto.py
create mode 100644 src/vapi/types/update_azure_credential_dto.py
create mode 100644 src/vapi/types/update_azure_credential_dto_region.py
create mode 100644 src/vapi/types/update_google_credential_dto.py
create mode 100644 src/vapi/types/update_inflection_ai_credential_dto.py
create mode 100644 src/vapi/types/update_langfuse_credential_dto.py
create mode 100644 src/vapi/types/update_org_dto_channel.py
create mode 100644 src/vapi/types/update_tavus_credential_dto.py
create mode 100644 src/vapi/types/update_x_ai_credential_dto.py
create mode 100644 src/vapi/types/vapi_cost_sub_type.py
create mode 100644 src/vapi/types/webhook_credential.py
create mode 100644 src/vapi/types/x_ai_credential.py
create mode 100644 src/vapi/types/xai_model.py
create mode 100644 src/vapi/types/xai_model_tools_item.py
diff --git a/README.md b/README.md
index f60a31d..e69de29 100644
--- a/README.md
+++ b/README.md
@@ -1,152 +0,0 @@
-# Vapi Python Library
-
-[![fern shield](https://img.shields.io/badge/%F0%9F%8C%BF-Built%20with%20Fern-brightgreen)](https://buildwithfern.com?utm_source=github&utm_medium=github&utm_campaign=readme&utm_source=https%3A%2F%2Fgithub.com%2FVapiAI%2Fserver-sdk-python)
-[![pypi](https://img.shields.io/pypi/v/vapi_server_sdk)](https://pypi.python.org/pypi/vapi_server_sdk)
-
-The Vapi Python library provides convenient access to the Vapi API from Python.
-
-## Installation
-
-```sh
-pip install vapi_server_sdk
-```
-
-## Reference
-
-A full reference for this library is available [here](./reference.md).
-
-## Usage
-
-Instantiate and use the client with the following:
-
-```python
-from vapi import Vapi
-
-client = Vapi(
- token="YOUR_TOKEN",
-)
-client.calls.create()
-```
-
-## Async Client
-
-The SDK also exports an `async` client so that you can make non-blocking calls to our API.
-
-```python
-import asyncio
-
-from vapi import AsyncVapi
-
-client = AsyncVapi(
- token="YOUR_TOKEN",
-)
-
-
-async def main() -> None:
- await client.calls.create()
-
-
-asyncio.run(main())
-```
-
-## Exception Handling
-
-When the API returns a non-success status code (4xx or 5xx response), a subclass of the following error
-will be thrown.
-
-```python
-from vapi.core.api_error import ApiError
-
-try:
- client.calls.create(...)
-except ApiError as e:
- print(e.status_code)
- print(e.body)
-```
-
-## Pagination
-
-Paginated requests will return a `SyncPager` or `AsyncPager`, which can be used as generators for the underlying object.
-
-```python
-from vapi import Vapi
-
-client = Vapi(
- token="YOUR_TOKEN",
-)
-response = client.logs.get()
-for item in response:
- yield item
-# alternatively, you can paginate page-by-page
-for page in response.iter_pages():
- yield page
-```
-
-## Advanced
-
-### Retries
-
-The SDK is instrumented with automatic retries with exponential backoff. A request will be retried as long
-as the request is deemed retriable and the number of retry attempts has not grown larger than the configured
-retry limit (default: 2).
-
-A request is deemed retriable when any of the following HTTP status codes is returned:
-
-- [408](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/408) (Timeout)
-- [429](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429) (Too Many Requests)
-- [5XX](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500) (Internal Server Errors)
-
-Use the `max_retries` request option to configure this behavior.
-
-```python
-client.calls.create(..., request_options={
- "max_retries": 1
-})
-```
-
-### Timeouts
-
-The SDK defaults to a 60 second timeout. You can configure this with a timeout option at the client or request level.
-
-```python
-
-from vapi import Vapi
-
-client = Vapi(
- ...,
- timeout=20.0,
-)
-
-
-# Override timeout for a specific method
-client.calls.create(..., request_options={
- "timeout_in_seconds": 1
-})
-```
-
-### Custom Client
-
-You can override the `httpx` client to customize it for your use-case. Some common use-cases include support for proxies
-and transports.
-```python
-import httpx
-from vapi import Vapi
-
-client = Vapi(
- ...,
- httpx_client=httpx.Client(
- proxies="http://my.test.proxy.example.com",
- transport=httpx.HTTPTransport(local_address="0.0.0.0"),
- ),
-)
-```
-
-## Contributing
-
-While we value open-source contributions to this SDK, this library is generated programmatically.
-Additions made directly to this library would have to be moved over to our generation code,
-otherwise they would be overwritten upon the next generated release. Feel free to open a PR as
-a proof of concept, but know that we will not be able to merge it as-is. We suggest opening
-an issue first to discuss with us!
-
-On the other hand, contributions to the README are always very welcome!
diff --git a/poetry.lock b/poetry.lock
index d8769c1..d40344b 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -1,4 +1,4 @@
-# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand.
+# This file is automatically @generated by Poetry 1.8.5 and should not be changed by hand.
[[package]]
name = "annotated-types"
@@ -38,13 +38,13 @@ trio = ["trio (>=0.26.1)"]
[[package]]
name = "certifi"
-version = "2024.8.30"
+version = "2024.12.14"
description = "Python package for providing Mozilla's CA Bundle."
optional = false
python-versions = ">=3.6"
files = [
- {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"},
- {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"},
+ {file = "certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56"},
+ {file = "certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db"},
]
[[package]]
@@ -85,13 +85,13 @@ files = [
[[package]]
name = "httpcore"
-version = "1.0.6"
+version = "1.0.7"
description = "A minimal low-level HTTP client."
optional = false
python-versions = ">=3.8"
files = [
- {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"},
- {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"},
+ {file = "httpcore-1.0.7-py3-none-any.whl", hash = "sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd"},
+ {file = "httpcore-1.0.7.tar.gz", hash = "sha256:8551cb62a169ec7162ac7be8d4817d561f60e08eaa485234898414bb5a8a0b4c"},
]
[package.dependencies]
@@ -106,13 +106,13 @@ trio = ["trio (>=0.22.0,<1.0)"]
[[package]]
name = "httpx"
-version = "0.27.2"
+version = "0.28.1"
description = "The next generation HTTP client."
optional = false
python-versions = ">=3.8"
files = [
- {file = "httpx-0.27.2-py3-none-any.whl", hash = "sha256:7bb2708e112d8fdd7829cd4243970f0c223274051cb35ee80c03301ee29a3df0"},
- {file = "httpx-0.27.2.tar.gz", hash = "sha256:f7c2be1d2f3c3c3160d441802406b206c2b76f5947b11115e6df10c6c65e66c2"},
+ {file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"},
+ {file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"},
]
[package.dependencies]
@@ -120,7 +120,6 @@ anyio = "*"
certifi = "*"
httpcore = "==1.*"
idna = "*"
-sniffio = "*"
[package.extras]
brotli = ["brotli", "brotlicffi"]
@@ -213,13 +212,13 @@ files = [
[[package]]
name = "packaging"
-version = "24.1"
+version = "24.2"
description = "Core utilities for Python packages"
optional = false
python-versions = ">=3.8"
files = [
- {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"},
- {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"},
+ {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"},
+ {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"},
]
[[package]]
@@ -239,22 +238,19 @@ testing = ["pytest", "pytest-benchmark"]
[[package]]
name = "pydantic"
-version = "2.9.2"
+version = "2.10.4"
description = "Data validation using Python type hints"
optional = false
python-versions = ">=3.8"
files = [
- {file = "pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12"},
- {file = "pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f"},
+ {file = "pydantic-2.10.4-py3-none-any.whl", hash = "sha256:597e135ea68be3a37552fb524bc7d0d66dcf93d395acd93a00682f1efcb8ee3d"},
+ {file = "pydantic-2.10.4.tar.gz", hash = "sha256:82f12e9723da6de4fe2ba888b5971157b3be7ad914267dea8f05f82b28254f06"},
]
[package.dependencies]
annotated-types = ">=0.6.0"
-pydantic-core = "2.23.4"
-typing-extensions = [
- {version = ">=4.12.2", markers = "python_version >= \"3.13\""},
- {version = ">=4.6.1", markers = "python_version < \"3.13\""},
-]
+pydantic-core = "2.27.2"
+typing-extensions = ">=4.12.2"
[package.extras]
email = ["email-validator (>=2.0.0)"]
@@ -262,100 +258,111 @@ timezone = ["tzdata"]
[[package]]
name = "pydantic-core"
-version = "2.23.4"
+version = "2.27.2"
description = "Core functionality for Pydantic validation and serialization"
optional = false
python-versions = ">=3.8"
files = [
- {file = "pydantic_core-2.23.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:b10bd51f823d891193d4717448fab065733958bdb6a6b351967bd349d48d5c9b"},
- {file = "pydantic_core-2.23.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4fc714bdbfb534f94034efaa6eadd74e5b93c8fa6315565a222f7b6f42ca1166"},
- {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63e46b3169866bd62849936de036f901a9356e36376079b05efa83caeaa02ceb"},
- {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed1a53de42fbe34853ba90513cea21673481cd81ed1be739f7f2efb931b24916"},
- {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cfdd16ab5e59fc31b5e906d1a3f666571abc367598e3e02c83403acabc092e07"},
- {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255a8ef062cbf6674450e668482456abac99a5583bbafb73f9ad469540a3a232"},
- {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a7cd62e831afe623fbb7aabbb4fe583212115b3ef38a9f6b71869ba644624a2"},
- {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f09e2ff1f17c2b51f2bc76d1cc33da96298f0a036a137f5440ab3ec5360b624f"},
- {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e38e63e6f3d1cec5a27e0afe90a085af8b6806ee208b33030e65b6516353f1a3"},
- {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0dbd8dbed2085ed23b5c04afa29d8fd2771674223135dc9bc937f3c09284d071"},
- {file = "pydantic_core-2.23.4-cp310-none-win32.whl", hash = "sha256:6531b7ca5f951d663c339002e91aaebda765ec7d61b7d1e3991051906ddde119"},
- {file = "pydantic_core-2.23.4-cp310-none-win_amd64.whl", hash = "sha256:7c9129eb40958b3d4500fa2467e6a83356b3b61bfff1b414c7361d9220f9ae8f"},
- {file = "pydantic_core-2.23.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:77733e3892bb0a7fa797826361ce8a9184d25c8dffaec60b7ffe928153680ba8"},
- {file = "pydantic_core-2.23.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b84d168f6c48fabd1f2027a3d1bdfe62f92cade1fb273a5d68e621da0e44e6d"},
- {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df49e7a0861a8c36d089c1ed57d308623d60416dab2647a4a17fe050ba85de0e"},
- {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff02b6d461a6de369f07ec15e465a88895f3223eb75073ffea56b84d9331f607"},
- {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:996a38a83508c54c78a5f41456b0103c30508fed9abcad0a59b876d7398f25fd"},
- {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d97683ddee4723ae8c95d1eddac7c192e8c552da0c73a925a89fa8649bf13eea"},
- {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:216f9b2d7713eb98cb83c80b9c794de1f6b7e3145eef40400c62e86cee5f4e1e"},
- {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6f783e0ec4803c787bcea93e13e9932edab72068f68ecffdf86a99fd5918878b"},
- {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d0776dea117cf5272382634bd2a5c1b6eb16767c223c6a5317cd3e2a757c61a0"},
- {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5f7a395a8cf1621939692dba2a6b6a830efa6b3cee787d82c7de1ad2930de64"},
- {file = "pydantic_core-2.23.4-cp311-none-win32.whl", hash = "sha256:74b9127ffea03643e998e0c5ad9bd3811d3dac8c676e47db17b0ee7c3c3bf35f"},
- {file = "pydantic_core-2.23.4-cp311-none-win_amd64.whl", hash = "sha256:98d134c954828488b153d88ba1f34e14259284f256180ce659e8d83e9c05eaa3"},
- {file = "pydantic_core-2.23.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f3e0da4ebaef65158d4dfd7d3678aad692f7666877df0002b8a522cdf088f231"},
- {file = "pydantic_core-2.23.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f69a8e0b033b747bb3e36a44e7732f0c99f7edd5cea723d45bc0d6e95377ffee"},
- {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:723314c1d51722ab28bfcd5240d858512ffd3116449c557a1336cbe3919beb87"},
- {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb2802e667b7051a1bebbfe93684841cc9351004e2badbd6411bf357ab8d5ac8"},
- {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d18ca8148bebe1b0a382a27a8ee60350091a6ddaf475fa05ef50dc35b5df6327"},
- {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33e3d65a85a2a4a0dc3b092b938a4062b1a05f3a9abde65ea93b233bca0e03f2"},
- {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:128585782e5bfa515c590ccee4b727fb76925dd04a98864182b22e89a4e6ed36"},
- {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:68665f4c17edcceecc112dfed5dbe6f92261fb9d6054b47d01bf6371a6196126"},
- {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20152074317d9bed6b7a95ade3b7d6054845d70584216160860425f4fbd5ee9e"},
- {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9261d3ce84fa1d38ed649c3638feefeae23d32ba9182963e465d58d62203bd24"},
- {file = "pydantic_core-2.23.4-cp312-none-win32.whl", hash = "sha256:4ba762ed58e8d68657fc1281e9bb72e1c3e79cc5d464be146e260c541ec12d84"},
- {file = "pydantic_core-2.23.4-cp312-none-win_amd64.whl", hash = "sha256:97df63000f4fea395b2824da80e169731088656d1818a11b95f3b173747b6cd9"},
- {file = "pydantic_core-2.23.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7530e201d10d7d14abce4fb54cfe5b94a0aefc87da539d0346a484ead376c3cc"},
- {file = "pydantic_core-2.23.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:df933278128ea1cd77772673c73954e53a1c95a4fdf41eef97c2b779271bd0bd"},
- {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cb3da3fd1b6a5d0279a01877713dbda118a2a4fc6f0d821a57da2e464793f05"},
- {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c6dcb030aefb668a2b7009c85b27f90e51e6a3b4d5c9bc4c57631292015b0d"},
- {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:696dd8d674d6ce621ab9d45b205df149399e4bb9aa34102c970b721554828510"},
- {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2971bb5ffe72cc0f555c13e19b23c85b654dd2a8f7ab493c262071377bfce9f6"},
- {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8394d940e5d400d04cad4f75c0598665cbb81aecefaca82ca85bd28264af7f9b"},
- {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0dff76e0602ca7d4cdaacc1ac4c005e0ce0dcfe095d5b5259163a80d3a10d327"},
- {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7d32706badfe136888bdea71c0def994644e09fff0bfe47441deaed8e96fdbc6"},
- {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ed541d70698978a20eb63d8c5d72f2cc6d7079d9d90f6b50bad07826f1320f5f"},
- {file = "pydantic_core-2.23.4-cp313-none-win32.whl", hash = "sha256:3d5639516376dce1940ea36edf408c554475369f5da2abd45d44621cb616f769"},
- {file = "pydantic_core-2.23.4-cp313-none-win_amd64.whl", hash = "sha256:5a1504ad17ba4210df3a045132a7baeeba5a200e930f57512ee02909fc5c4cb5"},
- {file = "pydantic_core-2.23.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d4488a93b071c04dc20f5cecc3631fc78b9789dd72483ba15d423b5b3689b555"},
- {file = "pydantic_core-2.23.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:81965a16b675b35e1d09dd14df53f190f9129c0202356ed44ab2728b1c905658"},
- {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ffa2ebd4c8530079140dd2d7f794a9d9a73cbb8e9d59ffe24c63436efa8f271"},
- {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:61817945f2fe7d166e75fbfb28004034b48e44878177fc54d81688e7b85a3665"},
- {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29d2c342c4bc01b88402d60189f3df065fb0dda3654744d5a165a5288a657368"},
- {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5e11661ce0fd30a6790e8bcdf263b9ec5988e95e63cf901972107efc49218b13"},
- {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d18368b137c6295db49ce7218b1a9ba15c5bc254c96d7c9f9e924a9bc7825ad"},
- {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec4e55f79b1c4ffb2eecd8a0cfba9955a2588497d96851f4c8f99aa4a1d39b12"},
- {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:374a5e5049eda9e0a44c696c7ade3ff355f06b1fe0bb945ea3cac2bc336478a2"},
- {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5c364564d17da23db1106787675fc7af45f2f7b58b4173bfdd105564e132e6fb"},
- {file = "pydantic_core-2.23.4-cp38-none-win32.whl", hash = "sha256:d7a80d21d613eec45e3d41eb22f8f94ddc758a6c4720842dc74c0581f54993d6"},
- {file = "pydantic_core-2.23.4-cp38-none-win_amd64.whl", hash = "sha256:5f5ff8d839f4566a474a969508fe1c5e59c31c80d9e140566f9a37bba7b8d556"},
- {file = "pydantic_core-2.23.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a4fa4fc04dff799089689f4fd502ce7d59de529fc2f40a2c8836886c03e0175a"},
- {file = "pydantic_core-2.23.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0a7df63886be5e270da67e0966cf4afbae86069501d35c8c1b3b6c168f42cb36"},
- {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcedcd19a557e182628afa1d553c3895a9f825b936415d0dbd3cd0bbcfd29b4b"},
- {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f54b118ce5de9ac21c363d9b3caa6c800341e8c47a508787e5868c6b79c9323"},
- {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86d2f57d3e1379a9525c5ab067b27dbb8a0642fb5d454e17a9ac434f9ce523e3"},
- {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de6d1d1b9e5101508cb37ab0d972357cac5235f5c6533d1071964c47139257df"},
- {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1278e0d324f6908e872730c9102b0112477a7f7cf88b308e4fc36ce1bdb6d58c"},
- {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a6b5099eeec78827553827f4c6b8615978bb4b6a88e5d9b93eddf8bb6790f55"},
- {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e55541f756f9b3ee346b840103f32779c695a19826a4c442b7954550a0972040"},
- {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a5c7ba8ffb6d6f8f2ab08743be203654bb1aaa8c9dcb09f82ddd34eadb695605"},
- {file = "pydantic_core-2.23.4-cp39-none-win32.whl", hash = "sha256:37b0fe330e4a58d3c58b24d91d1eb102aeec675a3db4c292ec3928ecd892a9a6"},
- {file = "pydantic_core-2.23.4-cp39-none-win_amd64.whl", hash = "sha256:1498bec4c05c9c787bde9125cfdcc63a41004ff167f495063191b863399b1a29"},
- {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f455ee30a9d61d3e1a15abd5068827773d6e4dc513e795f380cdd59932c782d5"},
- {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1e90d2e3bd2c3863d48525d297cd143fe541be8bbf6f579504b9712cb6b643ec"},
- {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e203fdf807ac7e12ab59ca2bfcabb38c7cf0b33c41efeb00f8e5da1d86af480"},
- {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e08277a400de01bc72436a0ccd02bdf596631411f592ad985dcee21445bd0068"},
- {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f220b0eea5965dec25480b6333c788fb72ce5f9129e8759ef876a1d805d00801"},
- {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d06b0c8da4f16d1d1e352134427cb194a0a6e19ad5db9161bf32b2113409e728"},
- {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ba1a0996f6c2773bd83e63f18914c1de3c9dd26d55f4ac302a7efe93fb8e7433"},
- {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:9a5bce9d23aac8f0cf0836ecfc033896aa8443b501c58d0602dbfd5bd5b37753"},
- {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:78ddaaa81421a29574a682b3179d4cf9e6d405a09b99d93ddcf7e5239c742e21"},
- {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:883a91b5dd7d26492ff2f04f40fbb652de40fcc0afe07e8129e8ae779c2110eb"},
- {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88ad334a15b32a791ea935af224b9de1bf99bcd62fabf745d5f3442199d86d59"},
- {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:233710f069d251feb12a56da21e14cca67994eab08362207785cf8c598e74577"},
- {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:19442362866a753485ba5e4be408964644dd6a09123d9416c54cd49171f50744"},
- {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:624e278a7d29b6445e4e813af92af37820fafb6dcc55c012c834f9e26f9aaaef"},
- {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f5ef8f42bec47f21d07668a043f077d507e5bf4e668d5c6dfe6aaba89de1a5b8"},
- {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:aea443fffa9fbe3af1a9ba721a87f926fe548d32cab71d188a6ede77d0ff244e"},
- {file = "pydantic_core-2.23.4.tar.gz", hash = "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863"},
+ {file = "pydantic_core-2.27.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2d367ca20b2f14095a8f4fa1210f5a7b78b8a20009ecced6b12818f455b1e9fa"},
+ {file = "pydantic_core-2.27.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:491a2b73db93fab69731eaee494f320faa4e093dbed776be1a829c2eb222c34c"},
+ {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7969e133a6f183be60e9f6f56bfae753585680f3b7307a8e555a948d443cc05a"},
+ {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3de9961f2a346257caf0aa508a4da705467f53778e9ef6fe744c038119737ef5"},
+ {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2bb4d3e5873c37bb3dd58714d4cd0b0e6238cebc4177ac8fe878f8b3aa8e74c"},
+ {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:280d219beebb0752699480fe8f1dc61ab6615c2046d76b7ab7ee38858de0a4e7"},
+ {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47956ae78b6422cbd46f772f1746799cbb862de838fd8d1fbd34a82e05b0983a"},
+ {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:14d4a5c49d2f009d62a2a7140d3064f686d17a5d1a268bc641954ba181880236"},
+ {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:337b443af21d488716f8d0b6164de833e788aa6bd7e3a39c005febc1284f4962"},
+ {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:03d0f86ea3184a12f41a2d23f7ccb79cdb5a18e06993f8a45baa8dfec746f0e9"},
+ {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7041c36f5680c6e0f08d922aed302e98b3745d97fe1589db0a3eebf6624523af"},
+ {file = "pydantic_core-2.27.2-cp310-cp310-win32.whl", hash = "sha256:50a68f3e3819077be2c98110c1f9dcb3817e93f267ba80a2c05bb4f8799e2ff4"},
+ {file = "pydantic_core-2.27.2-cp310-cp310-win_amd64.whl", hash = "sha256:e0fd26b16394ead34a424eecf8a31a1f5137094cabe84a1bcb10fa6ba39d3d31"},
+ {file = "pydantic_core-2.27.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8e10c99ef58cfdf2a66fc15d66b16c4a04f62bca39db589ae8cba08bc55331bc"},
+ {file = "pydantic_core-2.27.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:26f32e0adf166a84d0cb63be85c562ca8a6fa8de28e5f0d92250c6b7e9e2aff7"},
+ {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c19d1ea0673cd13cc2f872f6c9ab42acc4e4f492a7ca9d3795ce2b112dd7e15"},
+ {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e68c4446fe0810e959cdff46ab0a41ce2f2c86d227d96dc3847af0ba7def306"},
+ {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9640b0059ff4f14d1f37321b94061c6db164fbe49b334b31643e0528d100d99"},
+ {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:40d02e7d45c9f8af700f3452f329ead92da4c5f4317ca9b896de7ce7199ea459"},
+ {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c1fd185014191700554795c99b347d64f2bb637966c4cfc16998a0ca700d048"},
+ {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d81d2068e1c1228a565af076598f9e7451712700b673de8f502f0334f281387d"},
+ {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1a4207639fb02ec2dbb76227d7c751a20b1a6b4bc52850568e52260cae64ca3b"},
+ {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:3de3ce3c9ddc8bbd88f6e0e304dea0e66d843ec9de1b0042b0911c1663ffd474"},
+ {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:30c5f68ded0c36466acede341551106821043e9afaad516adfb6e8fa80a4e6a6"},
+ {file = "pydantic_core-2.27.2-cp311-cp311-win32.whl", hash = "sha256:c70c26d2c99f78b125a3459f8afe1aed4d9687c24fd677c6a4436bc042e50d6c"},
+ {file = "pydantic_core-2.27.2-cp311-cp311-win_amd64.whl", hash = "sha256:08e125dbdc505fa69ca7d9c499639ab6407cfa909214d500897d02afb816e7cc"},
+ {file = "pydantic_core-2.27.2-cp311-cp311-win_arm64.whl", hash = "sha256:26f0d68d4b235a2bae0c3fc585c585b4ecc51382db0e3ba402a22cbc440915e4"},
+ {file = "pydantic_core-2.27.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9e0c8cfefa0ef83b4da9588448b6d8d2a2bf1a53c3f1ae5fca39eb3061e2f0b0"},
+ {file = "pydantic_core-2.27.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:83097677b8e3bd7eaa6775720ec8e0405f1575015a463285a92bfdfe254529ef"},
+ {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:172fce187655fece0c90d90a678424b013f8fbb0ca8b036ac266749c09438cb7"},
+ {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:519f29f5213271eeeeb3093f662ba2fd512b91c5f188f3bb7b27bc5973816934"},
+ {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05e3a55d124407fffba0dd6b0c0cd056d10e983ceb4e5dbd10dda135c31071d6"},
+ {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c3ed807c7b91de05e63930188f19e921d1fe90de6b4f5cd43ee7fcc3525cb8c"},
+ {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fb4aadc0b9a0c063206846d603b92030eb6f03069151a625667f982887153e2"},
+ {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28ccb213807e037460326424ceb8b5245acb88f32f3d2777427476e1b32c48c4"},
+ {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:de3cd1899e2c279b140adde9357c4495ed9d47131b4a4eaff9052f23398076b3"},
+ {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:220f892729375e2d736b97d0e51466252ad84c51857d4d15f5e9692f9ef12be4"},
+ {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a0fcd29cd6b4e74fe8ddd2c90330fd8edf2e30cb52acda47f06dd615ae72da57"},
+ {file = "pydantic_core-2.27.2-cp312-cp312-win32.whl", hash = "sha256:1e2cb691ed9834cd6a8be61228471d0a503731abfb42f82458ff27be7b2186fc"},
+ {file = "pydantic_core-2.27.2-cp312-cp312-win_amd64.whl", hash = "sha256:cc3f1a99a4f4f9dd1de4fe0312c114e740b5ddead65bb4102884b384c15d8bc9"},
+ {file = "pydantic_core-2.27.2-cp312-cp312-win_arm64.whl", hash = "sha256:3911ac9284cd8a1792d3cb26a2da18f3ca26c6908cc434a18f730dc0db7bfa3b"},
+ {file = "pydantic_core-2.27.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7d14bd329640e63852364c306f4d23eb744e0f8193148d4044dd3dacdaacbd8b"},
+ {file = "pydantic_core-2.27.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82f91663004eb8ed30ff478d77c4d1179b3563df6cdb15c0817cd1cdaf34d154"},
+ {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71b24c7d61131bb83df10cc7e687433609963a944ccf45190cfc21e0887b08c9"},
+ {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa8e459d4954f608fa26116118bb67f56b93b209c39b008277ace29937453dc9"},
+ {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce8918cbebc8da707ba805b7fd0b382816858728ae7fe19a942080c24e5b7cd1"},
+ {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eda3f5c2a021bbc5d976107bb302e0131351c2ba54343f8a496dc8783d3d3a6a"},
+ {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8086fa684c4775c27f03f062cbb9eaa6e17f064307e86b21b9e0abc9c0f02e"},
+ {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8d9b3388db186ba0c099a6d20f0604a44eabdeef1777ddd94786cdae158729e4"},
+ {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7a66efda2387de898c8f38c0cf7f14fca0b51a8ef0b24bfea5849f1b3c95af27"},
+ {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:18a101c168e4e092ab40dbc2503bdc0f62010e95d292b27827871dc85450d7ee"},
+ {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ba5dd002f88b78a4215ed2f8ddbdf85e8513382820ba15ad5ad8955ce0ca19a1"},
+ {file = "pydantic_core-2.27.2-cp313-cp313-win32.whl", hash = "sha256:1ebaf1d0481914d004a573394f4be3a7616334be70261007e47c2a6fe7e50130"},
+ {file = "pydantic_core-2.27.2-cp313-cp313-win_amd64.whl", hash = "sha256:953101387ecf2f5652883208769a79e48db18c6df442568a0b5ccd8c2723abee"},
+ {file = "pydantic_core-2.27.2-cp313-cp313-win_arm64.whl", hash = "sha256:ac4dbfd1691affb8f48c2c13241a2e3b60ff23247cbcf981759c768b6633cf8b"},
+ {file = "pydantic_core-2.27.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d3e8d504bdd3f10835468f29008d72fc8359d95c9c415ce6e767203db6127506"},
+ {file = "pydantic_core-2.27.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:521eb9b7f036c9b6187f0b47318ab0d7ca14bd87f776240b90b21c1f4f149320"},
+ {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85210c4d99a0114f5a9481b44560d7d1e35e32cc5634c656bc48e590b669b145"},
+ {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d716e2e30c6f140d7560ef1538953a5cd1a87264c737643d481f2779fc247fe1"},
+ {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f66d89ba397d92f840f8654756196d93804278457b5fbede59598a1f9f90b228"},
+ {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:669e193c1c576a58f132e3158f9dfa9662969edb1a250c54d8fa52590045f046"},
+ {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdbe7629b996647b99c01b37f11170a57ae675375b14b8c13b8518b8320ced5"},
+ {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d262606bf386a5ba0b0af3b97f37c83d7011439e3dc1a9298f21efb292e42f1a"},
+ {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:cabb9bcb7e0d97f74df8646f34fc76fbf793b7f6dc2438517d7a9e50eee4f14d"},
+ {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_armv7l.whl", hash = "sha256:d2d63f1215638d28221f664596b1ccb3944f6e25dd18cd3b86b0a4c408d5ebb9"},
+ {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bca101c00bff0adb45a833f8451b9105d9df18accb8743b08107d7ada14bd7da"},
+ {file = "pydantic_core-2.27.2-cp38-cp38-win32.whl", hash = "sha256:f6f8e111843bbb0dee4cb6594cdc73e79b3329b526037ec242a3e49012495b3b"},
+ {file = "pydantic_core-2.27.2-cp38-cp38-win_amd64.whl", hash = "sha256:fd1aea04935a508f62e0d0ef1f5ae968774a32afc306fb8545e06f5ff5cdf3ad"},
+ {file = "pydantic_core-2.27.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c10eb4f1659290b523af58fa7cffb452a61ad6ae5613404519aee4bfbf1df993"},
+ {file = "pydantic_core-2.27.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ef592d4bad47296fb11f96cd7dc898b92e795032b4894dfb4076cfccd43a9308"},
+ {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c61709a844acc6bf0b7dce7daae75195a10aac96a596ea1b776996414791ede4"},
+ {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c5f762659e47fdb7b16956c71598292f60a03aa92f8b6351504359dbdba6cf"},
+ {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c9775e339e42e79ec99c441d9730fccf07414af63eac2f0e48e08fd38a64d76"},
+ {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57762139821c31847cfb2df63c12f725788bd9f04bc2fb392790959b8f70f118"},
+ {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d1e85068e818c73e048fe28cfc769040bb1f475524f4745a5dc621f75ac7630"},
+ {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:097830ed52fd9e427942ff3b9bc17fab52913b2f50f2880dc4a5611446606a54"},
+ {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:044a50963a614ecfae59bb1eaf7ea7efc4bc62f49ed594e18fa1e5d953c40e9f"},
+ {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:4e0b4220ba5b40d727c7f879eac379b822eee5d8fff418e9d3381ee45b3b0362"},
+ {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e4f4bb20d75e9325cc9696c6802657b58bc1dbbe3022f32cc2b2b632c3fbb96"},
+ {file = "pydantic_core-2.27.2-cp39-cp39-win32.whl", hash = "sha256:cca63613e90d001b9f2f9a9ceb276c308bfa2a43fafb75c8031c4f66039e8c6e"},
+ {file = "pydantic_core-2.27.2-cp39-cp39-win_amd64.whl", hash = "sha256:77d1bca19b0f7021b3a982e6f903dcd5b2b06076def36a652e3907f596e29f67"},
+ {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2bf14caea37e91198329b828eae1618c068dfb8ef17bb33287a7ad4b61ac314e"},
+ {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b0cb791f5b45307caae8810c2023a184c74605ec3bcbb67d13846c28ff731ff8"},
+ {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:688d3fd9fcb71f41c4c015c023d12a79d1c4c0732ec9eb35d96e3388a120dcf3"},
+ {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d591580c34f4d731592f0e9fe40f9cc1b430d297eecc70b962e93c5c668f15f"},
+ {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:82f986faf4e644ffc189a7f1aafc86e46ef70372bb153e7001e8afccc6e54133"},
+ {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:bec317a27290e2537f922639cafd54990551725fc844249e64c523301d0822fc"},
+ {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:0296abcb83a797db256b773f45773da397da75a08f5fcaef41f2044adec05f50"},
+ {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0d75070718e369e452075a6017fbf187f788e17ed67a3abd47fa934d001863d9"},
+ {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7e17b560be3c98a8e3aa66ce828bdebb9e9ac6ad5466fba92eb74c4c95cb1151"},
+ {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c33939a82924da9ed65dab5a65d427205a73181d8098e79b6b426bdf8ad4e656"},
+ {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:00bad2484fa6bda1e216e7345a798bd37c68fb2d97558edd584942aa41b7d278"},
+ {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c817e2b40aba42bac6f457498dacabc568c3b7a986fc9ba7c8d9d260b71485fb"},
+ {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:251136cdad0cb722e93732cb45ca5299fb56e1344a833640bf93b2803f8d1bfd"},
+ {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d2088237af596f0a524d3afc39ab3b036e8adb054ee57cbb1dcf8e09da5b29cc"},
+ {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d4041c0b966a84b4ae7a09832eb691a35aec90910cd2dbe7a208de59be77965b"},
+ {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:8083d4e875ebe0b864ffef72a4304827015cff328a1be6e22cc850753bfb122b"},
+ {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f141ee28a0ad2123b6611b6ceff018039df17f32ada8b534e6aa039545a3efb2"},
+ {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7d0c8399fcc1848491f00e0314bd59fb34a9c008761bcb422a057670c3f65e35"},
+ {file = "pydantic_core-2.27.2.tar.gz", hash = "sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39"},
]
[package.dependencies]
@@ -444,13 +451,13 @@ files = [
[[package]]
name = "six"
-version = "1.16.0"
+version = "1.17.0"
description = "Python 2 and 3 compatibility utilities"
optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
files = [
- {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
- {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
+ {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"},
+ {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"},
]
[[package]]
@@ -466,24 +473,54 @@ files = [
[[package]]
name = "tomli"
-version = "2.0.2"
+version = "2.2.1"
description = "A lil' TOML parser"
optional = false
python-versions = ">=3.8"
files = [
- {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"},
- {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"},
+ {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"},
+ {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"},
+ {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a"},
+ {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee"},
+ {file = "tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e"},
+ {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4"},
+ {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106"},
+ {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8"},
+ {file = "tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff"},
+ {file = "tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b"},
+ {file = "tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea"},
+ {file = "tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8"},
+ {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192"},
+ {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222"},
+ {file = "tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77"},
+ {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6"},
+ {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd"},
+ {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e"},
+ {file = "tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98"},
+ {file = "tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4"},
+ {file = "tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7"},
+ {file = "tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c"},
+ {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13"},
+ {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281"},
+ {file = "tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272"},
+ {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140"},
+ {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2"},
+ {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744"},
+ {file = "tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec"},
+ {file = "tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69"},
+ {file = "tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc"},
+ {file = "tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff"},
]
[[package]]
name = "types-python-dateutil"
-version = "2.9.0.20241003"
+version = "2.9.0.20241206"
description = "Typing stubs for python-dateutil"
optional = false
python-versions = ">=3.8"
files = [
- {file = "types-python-dateutil-2.9.0.20241003.tar.gz", hash = "sha256:58cb85449b2a56d6684e41aeefb4c4280631246a0da1a719bdbe6f3fb0317446"},
- {file = "types_python_dateutil-2.9.0.20241003-py3-none-any.whl", hash = "sha256:250e1d8e80e7bbc3a6c99b907762711d1a1cdd00e978ad39cb5940f6f0a87f3d"},
+ {file = "types_python_dateutil-2.9.0.20241206-py3-none-any.whl", hash = "sha256:e248a4bc70a486d3e3ec84d0dc30eec3a5f979d6e7ee4123ae043eedbb987f53"},
+ {file = "types_python_dateutil-2.9.0.20241206.tar.gz", hash = "sha256:18f493414c26ffba692a72369fea7a154c502646301ebfe3d56a04b3767284cb"},
]
[[package]]
diff --git a/pyproject.toml b/pyproject.toml
index a02ff70..a560cde 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[tool.poetry]
name = "vapi_server_sdk"
-version = "0.1.0"
+version = "0.2.0"
description = ""
readme = "README.md"
authors = []
diff --git a/reference.md b/reference.md
deleted file mode 100644
index f2e7f97..0000000
--- a/reference.md
+++ /dev/null
@@ -1,3662 +0,0 @@
-# Reference
-## Calls
-client.calls.list(...)
-
--
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```python
-from vapi import Vapi
-
-client = Vapi(
- token="YOUR_TOKEN",
-)
-client.calls.list()
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**assistant_id:** `typing.Optional[str]` — This will return calls with the specified assistantId.
-
-
-
-
-
--
-
-**limit:** `typing.Optional[float]` — This is the maximum number of items to return. Defaults to 100.
-
-
-
-
-
--
-
-**created_at_gt:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is greater than the specified value.
-
-
-
-
-
--
-
-**created_at_lt:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is less than the specified value.
-
-
-
-
-
--
-
-**created_at_ge:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is greater than or equal to the specified value.
-
-
-
-
-
--
-
-**created_at_le:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is less than or equal to the specified value.
-
-
-
-
-
--
-
-**updated_at_gt:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is greater than the specified value.
-
-
-
-
-
--
-
-**updated_at_lt:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is less than the specified value.
-
-
-
-
-
--
-
-**updated_at_ge:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is greater than or equal to the specified value.
-
-
-
-
-
--
-
-**updated_at_le:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is less than or equal to the specified value.
-
-
-
-
-
--
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
-
-
-
-
-
-
-
-
-
-
-client.calls.create(...)
-
--
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```python
-from vapi import Vapi
-
-client = Vapi(
- token="YOUR_TOKEN",
-)
-client.calls.create()
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**name:** `typing.Optional[str]` — This is the name of the call. This is just for your own reference.
-
-
-
-
-
--
-
-**assistant_id:** `typing.Optional[str]` — This is the assistant that will be used for the call. To use a transient assistant, use `assistant` instead.
-
-
-
-
-
--
-
-**assistant:** `typing.Optional[CreateAssistantDto]` — This is the assistant that will be used for the call. To use an existing assistant, use `assistantId` instead.
-
-
-
-
-
--
-
-**assistant_overrides:** `typing.Optional[AssistantOverrides]` — These are the overrides for the `assistant` or `assistantId`'s settings and template variables.
-
-
-
-
-
--
-
-**squad_id:** `typing.Optional[str]` — This is the squad that will be used for the call. To use a transient squad, use `squad` instead.
-
-
-
-
-
--
-
-**squad:** `typing.Optional[CreateSquadDto]` — This is a squad that will be used for the call. To use an existing squad, use `squadId` instead.
-
-
-
-
-
--
-
-**phone_number_id:** `typing.Optional[str]`
-
-This is the phone number that will be used for the call. To use a transient number, use `phoneNumber` instead.
-
-Only relevant for `outboundPhoneCall` and `inboundPhoneCall` type.
-
-
-
-
-
--
-
-**phone_number:** `typing.Optional[ImportTwilioPhoneNumberDto]`
-
-This is the phone number that will be used for the call. To use an existing number, use `phoneNumberId` instead.
-
-Only relevant for `outboundPhoneCall` and `inboundPhoneCall` type.
-
-
-
-
-
--
-
-**customer_id:** `typing.Optional[str]`
-
-This is the customer that will be called. To call a transient customer , use `customer` instead.
-
-Only relevant for `outboundPhoneCall` and `inboundPhoneCall` type.
-
-
-
-
-
--
-
-**customer:** `typing.Optional[CreateCustomerDto]`
-
-This is the customer that will be called. To call an existing customer, use `customerId` instead.
-
-Only relevant for `outboundPhoneCall` and `inboundPhoneCall` type.
-
-
-
-
-
--
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
-
-
-
-
-
-
-
-
-
-
-client.calls.get(...)
-
--
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```python
-from vapi import Vapi
-
-client = Vapi(
- token="YOUR_TOKEN",
-)
-client.calls.get(
- id="id",
-)
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**id:** `str`
-
-
-
-
-
--
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
-
-
-
-
-
-
-
-
-
-
-client.calls.delete(...)
-
--
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```python
-from vapi import Vapi
-
-client = Vapi(
- token="YOUR_TOKEN",
-)
-client.calls.delete(
- id="id",
-)
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**id:** `str`
-
-
-
-
-
--
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
-
-
-
-
-
-
-
-
-
-
-client.calls.update(...)
-
--
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```python
-from vapi import Vapi
-
-client = Vapi(
- token="YOUR_TOKEN",
-)
-client.calls.update(
- id="id",
-)
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**id:** `str`
-
-
-
-
-
--
-
-**name:** `typing.Optional[str]` — This is the name of the call. This is just for your own reference.
-
-
-
-
-
--
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
-
-
-
-
-
-
-
-
-
-
-## Assistants
-client.assistants.list(...)
-
--
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```python
-from vapi import Vapi
-
-client = Vapi(
- token="YOUR_TOKEN",
-)
-client.assistants.list()
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**limit:** `typing.Optional[float]` — This is the maximum number of items to return. Defaults to 100.
-
-
-
-
-
--
-
-**created_at_gt:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is greater than the specified value.
-
-
-
-
-
--
-
-**created_at_lt:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is less than the specified value.
-
-
-
-
-
--
-
-**created_at_ge:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is greater than or equal to the specified value.
-
-
-
-
-
--
-
-**created_at_le:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is less than or equal to the specified value.
-
-
-
-
-
--
-
-**updated_at_gt:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is greater than the specified value.
-
-
-
-
-
--
-
-**updated_at_lt:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is less than the specified value.
-
-
-
-
-
--
-
-**updated_at_ge:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is greater than or equal to the specified value.
-
-
-
-
-
--
-
-**updated_at_le:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is less than or equal to the specified value.
-
-
-
-
-
--
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
-
-
-
-
-
-
-
-
-
-
-client.assistants.create(...)
-
--
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```python
-from vapi import Vapi
-
-client = Vapi(
- token="YOUR_TOKEN",
-)
-client.assistants.create()
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**transcriber:** `typing.Optional[CreateAssistantDtoTranscriber]` — These are the options for the assistant's transcriber.
-
-
-
-
-
--
-
-**model:** `typing.Optional[CreateAssistantDtoModel]` — These are the options for the assistant's LLM.
-
-
-
-
-
--
-
-**voice:** `typing.Optional[CreateAssistantDtoVoice]` — These are the options for the assistant's voice.
-
-
-
-
-
--
-
-**first_message_mode:** `typing.Optional[CreateAssistantDtoFirstMessageMode]`
-
-This is the mode for the first message. Default is 'assistant-speaks-first'.
-
-Use:
-
-- 'assistant-speaks-first' to have the assistant speak first.
-- 'assistant-waits-for-user' to have the assistant wait for the user to speak first.
-- 'assistant-speaks-first-with-model-generated-message' to have the assistant speak first with a message generated by the model based on the conversation state. (`assistant.model.messages` at call start, `call.messages` at squad transfer points).
-
-@default 'assistant-speaks-first'
-
-
-
-
-
--
-
-**hipaa_enabled:** `typing.Optional[bool]` — When this is enabled, no logs, recordings, or transcriptions will be stored. At the end of the call, you will still receive an end-of-call-report message to store on your server. Defaults to false.
-
-
-
-
-
--
-
-**client_messages:** `typing.Optional[typing.Sequence[CreateAssistantDtoClientMessagesItem]]` — These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transcript,tool-calls,user-interrupted,voice-input. You can check the shape of the messages in ClientMessage schema.
-
-
-
-
-
--
-
-**server_messages:** `typing.Optional[typing.Sequence[CreateAssistantDtoServerMessagesItem]]` — These are the messages that will be sent to your Server URL. Default is conversation-update,end-of-call-report,function-call,hang,speech-update,status-update,tool-calls,transfer-destination-request,user-interrupted. You can check the shape of the messages in ServerMessage schema.
-
-
-
-
-
--
-
-**silence_timeout_seconds:** `typing.Optional[float]`
-
-How many seconds of silence to wait before ending the call. Defaults to 30.
-
-@default 30
-
-
-
-
-
--
-
-**max_duration_seconds:** `typing.Optional[float]`
-
-This is the maximum number of seconds that the call will last. When the call reaches this duration, it will be ended.
-
-@default 600 (10 minutes)
-
-
-
-
-
--
-
-**background_sound:** `typing.Optional[CreateAssistantDtoBackgroundSound]` — This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'.
-
-
-
-
-
--
-
-**backchanneling_enabled:** `typing.Optional[bool]`
-
-This determines whether the model says 'mhmm', 'ahem' etc. while user is speaking.
-
-Default `false` while in beta.
-
-@default false
-
-
-
-
-
--
-
-**background_denoising_enabled:** `typing.Optional[bool]`
-
-This enables filtering of noise and background speech while the user is talking.
-
-Default `false` while in beta.
-
-@default false
-
-
-
-
-
--
-
-**model_output_in_messages_enabled:** `typing.Optional[bool]`
-
-This determines whether the model's output is used in conversation history rather than the transcription of assistant's speech.
-
-Default `false` while in beta.
-
-@default false
-
-
-
-
-
--
-
-**transport_configurations:** `typing.Optional[typing.Sequence[TransportConfigurationTwilio]]` — These are the configurations to be passed to the transport providers of assistant's calls, like Twilio. You can store multiple configurations for different transport providers. For a call, only the configuration matching the call transport provider is used.
-
-
-
-
-
--
-
-**name:** `typing.Optional[str]`
-
-This is the name of the assistant.
-
-This is required when you want to transfer between assistants in a call.
-
-
-
-
-
--
-
-**first_message:** `typing.Optional[str]`
-
-This is the first message that the assistant will say. This can also be a URL to a containerized audio file (mp3, wav, etc.).
-
-If unspecified, assistant will wait for user to speak and use the model to respond once they speak.
-
-
-
-
-
--
-
-**voicemail_detection:** `typing.Optional[TwilioVoicemailDetection]`
-
-These are the settings to configure or disable voicemail detection. Alternatively, voicemail detection can be configured using the model.tools=[VoicemailTool].
-This uses Twilio's built-in detection while the VoicemailTool relies on the model to detect if a voicemail was reached.
-You can use neither of them, one of them, or both of them. By default, Twilio built-in detection is enabled while VoicemailTool is not.
-
-
-
-
-
--
-
-**voicemail_message:** `typing.Optional[str]`
-
-This is the message that the assistant will say if the call is forwarded to voicemail.
-
-If unspecified, it will hang up.
-
-
-
-
-
--
-
-**end_call_message:** `typing.Optional[str]`
-
-This is the message that the assistant will say if it ends the call.
-
-If unspecified, it will hang up without saying anything.
-
-
-
-
-
--
-
-**end_call_phrases:** `typing.Optional[typing.Sequence[str]]` — This list contains phrases that, if spoken by the assistant, will trigger the call to be hung up. Case insensitive.
-
-
-
-
-
--
-
-**metadata:** `typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]` — This is for metadata you want to store on the assistant.
-
-
-
-
-
--
-
-**server_url:** `typing.Optional[str]`
-
-This is the URL Vapi will communicate with via HTTP GET and POST Requests. This is used for retrieving context, function calling, and end-of-call reports.
-
-All requests will be sent with the call object among other things relevant to that message. You can find more details in the Server URL documentation.
-
-This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: tool.server.url > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl
-
-
-
-
-
--
-
-**server_url_secret:** `typing.Optional[str]`
-
-This is the secret you can set that Vapi will send with every request to your server. Will be sent as a header called x-vapi-secret.
-
-Same precedence logic as serverUrl.
-
-
-
-
-
--
-
-**analysis_plan:** `typing.Optional[AnalysisPlan]` — This is the plan for analysis of assistant's calls. Stored in `call.analysis`.
-
-
-
-
-
--
-
-**artifact_plan:** `typing.Optional[ArtifactPlan]`
-
-This is the plan for artifacts generated during assistant's calls. Stored in `call.artifact`.
-
-Note: `recordingEnabled` is currently at the root level. It will be moved to `artifactPlan` in the future, but will remain backwards compatible.
-
-
-
-
-
--
-
-**message_plan:** `typing.Optional[MessagePlan]`
-
-This is the plan for static predefined messages that can be spoken by the assistant during the call, like `idleMessages`.
-
-Note: `firstMessage`, `voicemailMessage`, and `endCallMessage` are currently at the root level. They will be moved to `messagePlan` in the future, but will remain backwards compatible.
-
-
-
-
-
--
-
-**start_speaking_plan:** `typing.Optional[StartSpeakingPlan]`
-
-This is the plan for when the assistant should start talking.
-
-You should configure this if you're running into these issues:
-
-- The assistant is too slow to start talking after the customer is done speaking.
-- The assistant is too fast to start talking after the customer is done speaking.
-- The assistant is so fast that it's actually interrupting the customer.
-
-
-
-
-
--
-
-**stop_speaking_plan:** `typing.Optional[StopSpeakingPlan]`
-
-This is the plan for when assistant should stop talking on customer interruption.
-
-You should configure this if you're running into these issues:
-
-- The assistant is too slow to recognize customer's interruption.
-- The assistant is too fast to recognize customer's interruption.
-- The assistant is getting interrupted by phrases that are just acknowledgments.
-- The assistant is getting interrupted by background noises.
-- The assistant is not properly stopping -- it starts talking right after getting interrupted.
-
-
-
-
-
--
-
-**monitor_plan:** `typing.Optional[MonitorPlan]`
-
-This is the plan for real-time monitoring of the assistant's calls.
-
-Usage:
-
-- To enable live listening of the assistant's calls, set `monitorPlan.listenEnabled` to `true`.
-- To enable live control of the assistant's calls, set `monitorPlan.controlEnabled` to `true`.
-
-Note, `serverMessages`, `clientMessages`, `serverUrl` and `serverUrlSecret` are currently at the root level but will be moved to `monitorPlan` in the future. Will remain backwards compatible
-
-
-
-
-
--
-
-**credential_ids:** `typing.Optional[typing.Sequence[str]]` — These are the credentials that will be used for the assistant calls. By default, all the credentials are available for use in the call but you can provide a subset using this.
-
-
-
-
-
--
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
-
-
-
-
-
-
-
-
-
-
-client.assistants.get(...)
-
--
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```python
-from vapi import Vapi
-
-client = Vapi(
- token="YOUR_TOKEN",
-)
-client.assistants.get(
- id="id",
-)
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**id:** `str`
-
-
-
-
-
--
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
-
-
-
-
-
-
-
-
-
-
-client.assistants.delete(...)
-
--
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```python
-from vapi import Vapi
-
-client = Vapi(
- token="YOUR_TOKEN",
-)
-client.assistants.delete(
- id="id",
-)
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**id:** `str`
-
-
-
-
-
--
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
-
-
-
-
-
-
-
-
-
-
-client.assistants.update(...)
-
--
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```python
-from vapi import Vapi
-
-client = Vapi(
- token="YOUR_TOKEN",
-)
-client.assistants.update(
- id="id",
-)
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**id:** `str`
-
-
-
-
-
--
-
-**transcriber:** `typing.Optional[UpdateAssistantDtoTranscriber]` — These are the options for the assistant's transcriber.
-
-
-
-
-
--
-
-**model:** `typing.Optional[UpdateAssistantDtoModel]` — These are the options for the assistant's LLM.
-
-
-
-
-
--
-
-**voice:** `typing.Optional[UpdateAssistantDtoVoice]` — These are the options for the assistant's voice.
-
-
-
-
-
--
-
-**first_message_mode:** `typing.Optional[UpdateAssistantDtoFirstMessageMode]`
-
-This is the mode for the first message. Default is 'assistant-speaks-first'.
-
-Use:
-- 'assistant-speaks-first' to have the assistant speak first.
-- 'assistant-waits-for-user' to have the assistant wait for the user to speak first.
-- 'assistant-speaks-first-with-model-generated-message' to have the assistant speak first with a message generated by the model based on the conversation state. (`assistant.model.messages` at call start, `call.messages` at squad transfer points).
-
-@default 'assistant-speaks-first'
-
-
-
-
-
--
-
-**hipaa_enabled:** `typing.Optional[bool]` — When this is enabled, no logs, recordings, or transcriptions will be stored. At the end of the call, you will still receive an end-of-call-report message to store on your server. Defaults to false.
-
-
-
-
-
--
-
-**client_messages:** `typing.Optional[typing.Sequence[UpdateAssistantDtoClientMessagesItem]]` — These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transcript,tool-calls,user-interrupted,voice-input. You can check the shape of the messages in ClientMessage schema.
-
-
-
-
-
--
-
-**server_messages:** `typing.Optional[typing.Sequence[UpdateAssistantDtoServerMessagesItem]]` — These are the messages that will be sent to your Server URL. Default is conversation-update,end-of-call-report,function-call,hang,speech-update,status-update,tool-calls,transfer-destination-request,user-interrupted. You can check the shape of the messages in ServerMessage schema.
-
-
-
-
-
--
-
-**silence_timeout_seconds:** `typing.Optional[float]`
-
-How many seconds of silence to wait before ending the call. Defaults to 30.
-
-@default 30
-
-
-
-
-
--
-
-**max_duration_seconds:** `typing.Optional[float]`
-
-This is the maximum number of seconds that the call will last. When the call reaches this duration, it will be ended.
-
-@default 600 (10 minutes)
-
-
-
-
-
--
-
-**background_sound:** `typing.Optional[UpdateAssistantDtoBackgroundSound]` — This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'.
-
-
-
-
-
--
-
-**backchanneling_enabled:** `typing.Optional[bool]`
-
-This determines whether the model says 'mhmm', 'ahem' etc. while user is speaking.
-
-Default `false` while in beta.
-
-@default false
-
-
-
-
-
--
-
-**background_denoising_enabled:** `typing.Optional[bool]`
-
-This enables filtering of noise and background speech while the user is talking.
-
-Default `false` while in beta.
-
-@default false
-
-
-
-
-
--
-
-**model_output_in_messages_enabled:** `typing.Optional[bool]`
-
-This determines whether the model's output is used in conversation history rather than the transcription of assistant's speech.
-
-Default `false` while in beta.
-
-@default false
-
-
-
-
-
--
-
-**transport_configurations:** `typing.Optional[typing.Sequence[TransportConfigurationTwilio]]` — These are the configurations to be passed to the transport providers of assistant's calls, like Twilio. You can store multiple configurations for different transport providers. For a call, only the configuration matching the call transport provider is used.
-
-
-
-
-
--
-
-**name:** `typing.Optional[str]`
-
-This is the name of the assistant.
-
-This is required when you want to transfer between assistants in a call.
-
-
-
-
-
--
-
-**first_message:** `typing.Optional[str]`
-
-This is the first message that the assistant will say. This can also be a URL to a containerized audio file (mp3, wav, etc.).
-
-If unspecified, assistant will wait for user to speak and use the model to respond once they speak.
-
-
-
-
-
--
-
-**voicemail_detection:** `typing.Optional[TwilioVoicemailDetection]`
-
-These are the settings to configure or disable voicemail detection. Alternatively, voicemail detection can be configured using the model.tools=[VoicemailTool].
-This uses Twilio's built-in detection while the VoicemailTool relies on the model to detect if a voicemail was reached.
-You can use neither of them, one of them, or both of them. By default, Twilio built-in detection is enabled while VoicemailTool is not.
-
-
-
-
-
--
-
-**voicemail_message:** `typing.Optional[str]`
-
-This is the message that the assistant will say if the call is forwarded to voicemail.
-
-If unspecified, it will hang up.
-
-
-
-
-
--
-
-**end_call_message:** `typing.Optional[str]`
-
-This is the message that the assistant will say if it ends the call.
-
-If unspecified, it will hang up without saying anything.
-
-
-
-
-
--
-
-**end_call_phrases:** `typing.Optional[typing.Sequence[str]]` — This list contains phrases that, if spoken by the assistant, will trigger the call to be hung up. Case insensitive.
-
-
-
-
-
--
-
-**metadata:** `typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]` — This is for metadata you want to store on the assistant.
-
-
-
-
-
--
-
-**server_url:** `typing.Optional[str]`
-
-This is the URL Vapi will communicate with via HTTP GET and POST Requests. This is used for retrieving context, function calling, and end-of-call reports.
-
-All requests will be sent with the call object among other things relevant to that message. You can find more details in the Server URL documentation.
-
-This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: tool.server.url > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl
-
-
-
-
-
--
-
-**server_url_secret:** `typing.Optional[str]`
-
-This is the secret you can set that Vapi will send with every request to your server. Will be sent as a header called x-vapi-secret.
-
-Same precedence logic as serverUrl.
-
-
-
-
-
--
-
-**analysis_plan:** `typing.Optional[AnalysisPlan]` — This is the plan for analysis of assistant's calls. Stored in `call.analysis`.
-
-
-
-
-
--
-
-**artifact_plan:** `typing.Optional[ArtifactPlan]`
-
-This is the plan for artifacts generated during assistant's calls. Stored in `call.artifact`.
-
-Note: `recordingEnabled` is currently at the root level. It will be moved to `artifactPlan` in the future, but will remain backwards compatible.
-
-
-
-
-
--
-
-**message_plan:** `typing.Optional[MessagePlan]`
-
-This is the plan for static predefined messages that can be spoken by the assistant during the call, like `idleMessages`.
-
-Note: `firstMessage`, `voicemailMessage`, and `endCallMessage` are currently at the root level. They will be moved to `messagePlan` in the future, but will remain backwards compatible.
-
-
-
-
-
--
-
-**start_speaking_plan:** `typing.Optional[StartSpeakingPlan]`
-
-This is the plan for when the assistant should start talking.
-
-You should configure this if you're running into these issues:
-- The assistant is too slow to start talking after the customer is done speaking.
-- The assistant is too fast to start talking after the customer is done speaking.
-- The assistant is so fast that it's actually interrupting the customer.
-
-
-
-
-
--
-
-**stop_speaking_plan:** `typing.Optional[StopSpeakingPlan]`
-
-This is the plan for when assistant should stop talking on customer interruption.
-
-You should configure this if you're running into these issues:
-- The assistant is too slow to recognize customer's interruption.
-- The assistant is too fast to recognize customer's interruption.
-- The assistant is getting interrupted by phrases that are just acknowledgments.
-- The assistant is getting interrupted by background noises.
-- The assistant is not properly stopping -- it starts talking right after getting interrupted.
-
-
-
-
-
--
-
-**monitor_plan:** `typing.Optional[MonitorPlan]`
-
-This is the plan for real-time monitoring of the assistant's calls.
-
-Usage:
-- To enable live listening of the assistant's calls, set `monitorPlan.listenEnabled` to `true`.
-- To enable live control of the assistant's calls, set `monitorPlan.controlEnabled` to `true`.
-
-Note, `serverMessages`, `clientMessages`, `serverUrl` and `serverUrlSecret` are currently at the root level but will be moved to `monitorPlan` in the future. Will remain backwards compatible
-
-
-
-
-
--
-
-**credential_ids:** `typing.Optional[typing.Sequence[str]]` — These are the credentials that will be used for the assistant calls. By default, all the credentials are available for use in the call but you can provide a subset using this.
-
-
-
-
-
--
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
-
-
-
-
-
-
-
-
-
-
-## PhoneNumbers
-client.phone_numbers.list(...)
-
--
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```python
-from vapi import Vapi
-
-client = Vapi(
- token="YOUR_TOKEN",
-)
-client.phone_numbers.list()
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**limit:** `typing.Optional[float]` — This is the maximum number of items to return. Defaults to 100.
-
-
-
-
-
--
-
-**created_at_gt:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is greater than the specified value.
-
-
-
-
-
--
-
-**created_at_lt:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is less than the specified value.
-
-
-
-
-
--
-
-**created_at_ge:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is greater than or equal to the specified value.
-
-
-
-
-
--
-
-**created_at_le:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is less than or equal to the specified value.
-
-
-
-
-
--
-
-**updated_at_gt:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is greater than the specified value.
-
-
-
-
-
--
-
-**updated_at_lt:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is less than the specified value.
-
-
-
-
-
--
-
-**updated_at_ge:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is greater than or equal to the specified value.
-
-
-
-
-
--
-
-**updated_at_le:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is less than or equal to the specified value.
-
-
-
-
-
--
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
-
-
-
-
-
-
-
-
-
-
-client.phone_numbers.create(...)
-
--
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```python
-from vapi import CreateByoPhoneNumberDto, Vapi
-
-client = Vapi(
- token="YOUR_TOKEN",
-)
-client.phone_numbers.create(
- request=CreateByoPhoneNumberDto(
- credential_id="credentialId",
- ),
-)
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**request:** `PhoneNumbersCreateRequest`
-
-
-
-
-
--
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
-
-
-
-
-
-
-
-
-
-
-client.phone_numbers.get(...)
-
--
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```python
-from vapi import Vapi
-
-client = Vapi(
- token="YOUR_TOKEN",
-)
-client.phone_numbers.get(
- id="id",
-)
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**id:** `str`
-
-
-
-
-
--
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
-
-
-
-
-
-
-
-
-
-
-client.phone_numbers.delete(...)
-
--
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```python
-from vapi import Vapi
-
-client = Vapi(
- token="YOUR_TOKEN",
-)
-client.phone_numbers.delete(
- id="id",
-)
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**id:** `str`
-
-
-
-
-
--
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
-
-
-
-
-
-
-
-
-
-
-client.phone_numbers.update(...)
-
--
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```python
-from vapi import Vapi
-
-client = Vapi(
- token="YOUR_TOKEN",
-)
-client.phone_numbers.update(
- id="id",
-)
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**id:** `str`
-
-
-
-
-
--
-
-**fallback_destination:** `typing.Optional[UpdatePhoneNumberDtoFallbackDestination]`
-
-This is the fallback destination an inbound call will be transferred to if:
-1. `assistantId` is not set
-2. `squadId` is not set
-3. and, `assistant-request` message to the `serverUrl` fails
-
-If this is not set and above conditions are met, the inbound call is hung up with an error message.
-
-
-
-
-
--
-
-**name:** `typing.Optional[str]` — This is the name of the phone number. This is just for your own reference.
-
-
-
-
-
--
-
-**assistant_id:** `typing.Optional[str]`
-
-This is the assistant that will be used for incoming calls to this phone number.
-
-If neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
-
-
-
-
-
--
-
-**squad_id:** `typing.Optional[str]`
-
-This is the squad that will be used for incoming calls to this phone number.
-
-If neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
-
-
-
-
-
--
-
-**server_url:** `typing.Optional[str]`
-
-This is the server URL where messages will be sent for calls on this number. This includes the `assistant-request` message.
-
-You can see the shape of the messages sent in `ServerMessage`.
-
-This overrides the `org.serverUrl`. Order of precedence: tool.server.url > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl.
-
-
-
-
-
--
-
-**server_url_secret:** `typing.Optional[str]`
-
-This is the secret Vapi will send with every message to your server. It's sent as a header called x-vapi-secret.
-
-Same precedence logic as serverUrl.
-
-
-
-
-
--
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
-
-
-
-
-
-
-
-
-
-
-## Squads
-client.squads.list(...)
-
--
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```python
-from vapi import Vapi
-
-client = Vapi(
- token="YOUR_TOKEN",
-)
-client.squads.list()
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**limit:** `typing.Optional[float]` — This is the maximum number of items to return. Defaults to 100.
-
-
-
-
-
--
-
-**created_at_gt:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is greater than the specified value.
-
-
-
-
-
--
-
-**created_at_lt:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is less than the specified value.
-
-
-
-
-
--
-
-**created_at_ge:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is greater than or equal to the specified value.
-
-
-
-
-
--
-
-**created_at_le:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is less than or equal to the specified value.
-
-
-
-
-
--
-
-**updated_at_gt:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is greater than the specified value.
-
-
-
-
-
--
-
-**updated_at_lt:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is less than the specified value.
-
-
-
-
-
--
-
-**updated_at_ge:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is greater than or equal to the specified value.
-
-
-
-
-
--
-
-**updated_at_le:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is less than or equal to the specified value.
-
-
-
-
-
--
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
-
-
-
-
-
-
-
-
-
-
-client.squads.create(...)
-
--
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```python
-from vapi import SquadMemberDto, Vapi
-
-client = Vapi(
- token="YOUR_TOKEN",
-)
-client.squads.create(
- members=[SquadMemberDto()],
-)
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**members:** `typing.Sequence[SquadMemberDto]`
-
-This is the list of assistants that make up the squad.
-
-The call will start with the first assistant in the list.
-
-
-
-
-
--
-
-**name:** `typing.Optional[str]` — This is the name of the squad.
-
-
-
-
-
--
-
-**members_overrides:** `typing.Optional[AssistantOverrides]`
-
-This can be used to override all the assistants' settings and provide values for their template variables.
-
-Both `membersOverrides` and `members[n].assistantOverrides` can be used together. First, `members[n].assistantOverrides` is applied. Then, `membersOverrides` is applied as a global override.
-
-
-
-
-
--
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
-
-
-
-
-
-
-
-
-
-
-client.squads.get(...)
-
--
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```python
-from vapi import Vapi
-
-client = Vapi(
- token="YOUR_TOKEN",
-)
-client.squads.get(
- id="id",
-)
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**id:** `str`
-
-
-
-
-
--
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
-
-
-
-
-
-
-
-
-
-
-client.squads.delete(...)
-
--
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```python
-from vapi import Vapi
-
-client = Vapi(
- token="YOUR_TOKEN",
-)
-client.squads.delete(
- id="id",
-)
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**id:** `str`
-
-
-
-
-
--
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
-
-
-
-
-
-
-
-
-
-
-client.squads.update(...)
-
--
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```python
-from vapi import SquadMemberDto, Vapi
-
-client = Vapi(
- token="YOUR_TOKEN",
-)
-client.squads.update(
- id="id",
- members=[SquadMemberDto()],
-)
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**id:** `str`
-
-
-
-
-
--
-
-**members:** `typing.Sequence[SquadMemberDto]`
-
-This is the list of assistants that make up the squad.
-
-The call will start with the first assistant in the list.
-
-
-
-
-
--
-
-**name:** `typing.Optional[str]` — This is the name of the squad.
-
-
-
-
-
--
-
-**members_overrides:** `typing.Optional[AssistantOverrides]`
-
-This can be used to override all the assistants' settings and provide values for their template variables.
-
-Both `membersOverrides` and `members[n].assistantOverrides` can be used together. First, `members[n].assistantOverrides` is applied. Then, `membersOverrides` is applied as a global override.
-
-
-
-
-
--
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
-
-
-
-
-
-
-
-
-
-
-## Blocks
-client.blocks.list(...)
-
--
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```python
-from vapi import Vapi
-
-client = Vapi(
- token="YOUR_TOKEN",
-)
-client.blocks.list()
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**limit:** `typing.Optional[float]` — This is the maximum number of items to return. Defaults to 100.
-
-
-
-
-
--
-
-**created_at_gt:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is greater than the specified value.
-
-
-
-
-
--
-
-**created_at_lt:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is less than the specified value.
-
-
-
-
-
--
-
-**created_at_ge:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is greater than or equal to the specified value.
-
-
-
-
-
--
-
-**created_at_le:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is less than or equal to the specified value.
-
-
-
-
-
--
-
-**updated_at_gt:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is greater than the specified value.
-
-
-
-
-
--
-
-**updated_at_lt:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is less than the specified value.
-
-
-
-
-
--
-
-**updated_at_ge:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is greater than or equal to the specified value.
-
-
-
-
-
--
-
-**updated_at_le:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is less than or equal to the specified value.
-
-
-
-
-
--
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
-
-
-
-
-
-
-
-
-
-
-client.blocks.create(...)
-
--
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```python
-from vapi import CreateConversationBlockDto, Vapi
-
-client = Vapi(
- token="YOUR_TOKEN",
-)
-client.blocks.create(
- request=CreateConversationBlockDto(
- instruction="instruction",
- ),
-)
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**request:** `BlocksCreateRequest`
-
-
-
-
-
--
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
-
-
-
-
-
-
-
-
-
-
-client.blocks.get(...)
-
--
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```python
-from vapi import Vapi
-
-client = Vapi(
- token="YOUR_TOKEN",
-)
-client.blocks.get(
- id="id",
-)
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**id:** `str`
-
-
-
-
-
--
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
-
-
-
-
-
-
-
-
-
-
-client.blocks.delete(...)
-
--
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```python
-from vapi import Vapi
-
-client = Vapi(
- token="YOUR_TOKEN",
-)
-client.blocks.delete(
- id="id",
-)
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**id:** `str`
-
-
-
-
-
--
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
-
-
-
-
-
-
-
-
-
-
-client.blocks.update(...)
-
--
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```python
-from vapi import Vapi
-
-client = Vapi(
- token="YOUR_TOKEN",
-)
-client.blocks.update(
- id="id",
-)
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**id:** `str`
-
-
-
-
-
--
-
-**messages:** `typing.Optional[typing.Sequence[UpdateBlockDtoMessagesItem]]` — These are the pre-configured messages that will be spoken to the user while the block is running.
-
-
-
-
-
--
-
-**input_schema:** `typing.Optional[JsonSchema]`
-
-This is the input schema for the block. This is the input the block needs to run. It's given to the block as `steps[0].input`
-
-These are accessible as variables:
-- ({{input.propertyName}}) in context of the block execution (step)
-- ({{stepName.input.propertyName}}) in context of the workflow
-
-
-
-
-
--
-
-**output_schema:** `typing.Optional[JsonSchema]`
-
-This is the output schema for the block. This is the output the block will return to the workflow (`{{stepName.output}}`).
-
-These are accessible as variables:
-- ({{output.propertyName}}) in context of the block execution (step)
-- ({{stepName.output.propertyName}}) in context of the workflow (read caveat #1)
-- ({{blockName.output.propertyName}}) in context of the workflow (read caveat #2)
-
-Caveats:
-1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.output.propertyName}} will reference the latest usage of the step.
-2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.output.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow with steps.
-
-
-
-
-
--
-
-**tool:** `typing.Optional[UpdateBlockDtoTool]` — This is the tool that the block will call. To use an existing tool, use `toolId`.
-
-
-
-
-
--
-
-**steps:** `typing.Optional[typing.Sequence[UpdateBlockDtoStepsItem]]` — These are the steps in the workflow.
-
-
-
-
-
--
-
-**name:** `typing.Optional[str]` — This is the name of the block. This is just for your reference.
-
-
-
-
-
--
-
-**instruction:** `typing.Optional[str]`
-
-This is the instruction to the model.
-
-You can reference any variable in the context of the current block execution (step):
-- "{{input.your-property-name}}" for the current step's input
-- "{{your-step-name.output.your-property-name}}" for another step's output (in the same workflow; read caveat #1)
-- "{{your-step-name.input.your-property-name}}" for another step's input (in the same workflow; read caveat #1)
-- "{{your-block-name.output.your-property-name}}" for another block's output (in the same workflow; read caveat #2)
-- "{{your-block-name.input.your-property-name}}" for another block's input (in the same workflow; read caveat #2)
-- "{{workflow.input.your-property-name}}" for the current workflow's input
-- "{{global.your-property-name}}" for the global context
-
-This can be as simple or as complex as you want it to be.
-- "say hello and ask the user about their day!"
-- "collect the user's first and last name"
-- "user is {{input.firstName}} {{input.lastName}}. their age is {{input.age}}. ask them about their salary and if they might be interested in buying a house. we offer {{input.offer}}"
-
-Caveats:
-1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.output/input.propertyName}} will reference the latest usage of the step.
-2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.output/input.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow with steps.
-
-
-
-
-
--
-
-**tool_id:** `typing.Optional[str]` — This is the id of the tool that the block will call. To use a transient tool, use `tool`.
-
-
-
-
-
--
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
-
-
-
-
-
-
-
-
-
-
-## Tools
-client.tools.list(...)
-
--
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```python
-from vapi import Vapi
-
-client = Vapi(
- token="YOUR_TOKEN",
-)
-client.tools.list()
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**limit:** `typing.Optional[float]` — This is the maximum number of items to return. Defaults to 100.
-
-
-
-
-
--
-
-**created_at_gt:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is greater than the specified value.
-
-
-
-
-
--
-
-**created_at_lt:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is less than the specified value.
-
-
-
-
-
--
-
-**created_at_ge:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is greater than or equal to the specified value.
-
-
-
-
-
--
-
-**created_at_le:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is less than or equal to the specified value.
-
-
-
-
-
--
-
-**updated_at_gt:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is greater than the specified value.
-
-
-
-
-
--
-
-**updated_at_lt:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is less than the specified value.
-
-
-
-
-
--
-
-**updated_at_ge:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is greater than or equal to the specified value.
-
-
-
-
-
--
-
-**updated_at_le:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is less than or equal to the specified value.
-
-
-
-
-
--
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
-
-
-
-
-
-
-
-
-
-
-client.tools.create(...)
-
--
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```python
-from vapi import CreateDtmfToolDto, Vapi
-
-client = Vapi(
- token="YOUR_TOKEN",
-)
-client.tools.create(
- request=CreateDtmfToolDto(),
-)
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**request:** `ToolsCreateRequest`
-
-
-
-
-
--
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
-
-
-
-
-
-
-
-
-
-
-client.tools.get(...)
-
--
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```python
-from vapi import Vapi
-
-client = Vapi(
- token="YOUR_TOKEN",
-)
-client.tools.get(
- id="id",
-)
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**id:** `str`
-
-
-
-
-
--
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
-
-
-
-
-
-
-
-
-
-
-client.tools.delete(...)
-
--
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```python
-from vapi import Vapi
-
-client = Vapi(
- token="YOUR_TOKEN",
-)
-client.tools.delete(
- id="id",
-)
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**id:** `str`
-
-
-
-
-
--
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
-
-
-
-
-
-
-
-
-
-
-client.tools.update(...)
-
--
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```python
-from vapi import Vapi
-
-client = Vapi(
- token="YOUR_TOKEN",
-)
-client.tools.update(
- id="id",
-)
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**id:** `str`
-
-
-
-
-
--
-
-**async_:** `typing.Optional[bool]`
-
-This determines if the tool is async.
-
-If async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.
-
-If sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.
-
-Defaults to synchronous (`false`).
-
-
-
-
-
--
-
-**messages:** `typing.Optional[typing.Sequence[UpdateToolDtoMessagesItem]]`
-
-These are the messages that will be spoken to the user as the tool is running.
-
-For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
-
-
-
-
-
--
-
-**function:** `typing.Optional[OpenAiFunction]`
-
-This is the function definition of the tool.
-
-For `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.
-
-An example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument "reason". Then, in `messages` array, you can have many "request-complete" messages. One of these messages will be triggered if the `messages[].conditions` matches the "reason" argument.
-
-
-
-
-
--
-
-**server:** `typing.Optional[Server]`
-
-This is the server that will be hit when this tool is requested by the model.
-
-All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
-
-This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
-
-
-
-
-
--
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
-
-
-
-
-
-
-
-
-
-
-## Files
-client.files.list()
-
--
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```python
-from vapi import Vapi
-
-client = Vapi(
- token="YOUR_TOKEN",
-)
-client.files.list()
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
-
-
-
-
-
-
-
-
-
-
-client.files.create(...)
-
--
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```python
-from vapi import Vapi
-
-client = Vapi(
- token="YOUR_TOKEN",
-)
-client.files.create()
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**file:** `from __future__ import annotations
-
-core.File` — See core.File for more documentation
-
-
-
-
-
--
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
-
-
-
-
-
-
-
-
-
-
-client.files.get(...)
-
--
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```python
-from vapi import Vapi
-
-client = Vapi(
- token="YOUR_TOKEN",
-)
-client.files.get(
- id="id",
-)
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**id:** `str`
-
-
-
-
-
--
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
-
-
-
-
-
-
-
-
-
-
-client.files.delete(...)
-
--
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```python
-from vapi import Vapi
-
-client = Vapi(
- token="YOUR_TOKEN",
-)
-client.files.delete(
- id="id",
-)
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**id:** `str`
-
-
-
-
-
--
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
-
-
-
-
-
-
-
-
-
-
-client.files.update(...)
-
--
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```python
-from vapi import Vapi
-
-client = Vapi(
- token="YOUR_TOKEN",
-)
-client.files.update(
- id="id",
-)
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**id:** `str`
-
-
-
-
-
--
-
-**name:** `typing.Optional[str]` — This is the name of the file. This is just for your own reference.
-
-
-
-
-
--
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
-
-
-
-
-
-
-
-
-
-
-## Analytics
-client.analytics.get(...)
-
--
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```python
-from vapi import AnalyticsOperation, AnalyticsQuery, Vapi
-
-client = Vapi(
- token="YOUR_TOKEN",
-)
-client.analytics.get(
- queries=[
- AnalyticsQuery(
- name="name",
- operations=[
- AnalyticsOperation(
- operation="sum",
- column="id",
- )
- ],
- )
- ],
-)
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**queries:** `typing.Sequence[AnalyticsQuery]` — This is the list of metric queries you want to perform.
-
-
-
-
-
--
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
-
-
-
-
-
-
-
-
-
-
-## Logs
-client.logs.get(...)
-
--
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```python
-from vapi import Vapi
-
-client = Vapi(
- token="YOUR_TOKEN",
-)
-response = client.logs.get()
-for item in response:
- yield item
-# alternatively, you can paginate page-by-page
-for page in response.iter_pages():
- yield page
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**org_id:** `typing.Optional[str]` — This is the unique identifier for the org that this log belongs to.
-
-
-
-
-
--
-
-**type:** `typing.Optional[LogsGetRequestType]` — This is the type of the log.
-
-
-
-
-
--
-
-**assistant_id:** `typing.Optional[str]` — This is the ID of the assistant.
-
-
-
-
-
--
-
-**phone_number_id:** `typing.Optional[str]` — This is the ID of the phone number.
-
-
-
-
-
--
-
-**customer_id:** `typing.Optional[str]` — This is the ID of the customer.
-
-
-
-
-
--
-
-**squad_id:** `typing.Optional[str]` — This is the ID of the squad.
-
-
-
-
-
--
-
-**call_id:** `typing.Optional[str]` — This is the ID of the call.
-
-
-
-
-
--
-
-**page:** `typing.Optional[int]` — This is the page number to return. Defaults to 1.
-
-
-
-
-
--
-
-**sort_order:** `typing.Optional[LogsGetRequestSortOrder]` — This is the sort order for pagination. Defaults to 'ASC'.
-
-
-
-
-
--
-
-**limit:** `typing.Optional[float]` — This is the maximum number of items to return. Defaults to 100.
-
-
-
-
-
--
-
-**created_at_gt:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is greater than the specified value.
-
-
-
-
-
--
-
-**created_at_lt:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is less than the specified value.
-
-
-
-
-
--
-
-**created_at_ge:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is greater than or equal to the specified value.
-
-
-
-
-
--
-
-**created_at_le:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is less than or equal to the specified value.
-
-
-
-
-
--
-
-**updated_at_gt:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is greater than the specified value.
-
-
-
-
-
--
-
-**updated_at_lt:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is less than the specified value.
-
-
-
-
-
--
-
-**updated_at_ge:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is greater than or equal to the specified value.
-
-
-
-
-
--
-
-**updated_at_le:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is less than or equal to the specified value.
-
-
-
-
-
--
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/vapi/__init__.py b/src/vapi/__init__.py
index 2c79eda..4641a95 100644
--- a/src/vapi/__init__.py
+++ b/src/vapi/__init__.py
@@ -11,6 +11,7 @@
AnalyticsOperationColumn,
AnalyticsOperationOperation,
AnalyticsQuery,
+ AnalyticsQueryDto,
AnalyticsQueryGroupByItem,
AnalyticsQueryResult,
AnthropicCredential,
@@ -23,11 +24,14 @@
Artifact,
ArtifactMessagesItem,
ArtifactPlan,
+ AssemblyAiCredential,
+ AssemblyAiTranscriber,
AssignmentMutation,
AssignmentMutationConditionsItem,
Assistant,
AssistantBackgroundSound,
AssistantClientMessagesItem,
+ AssistantCustomEndpointingRule,
AssistantFirstMessageMode,
AssistantModel,
AssistantOverrides,
@@ -41,17 +45,24 @@
AssistantServerMessagesItem,
AssistantTranscriber,
AssistantVoice,
+ AutoReloadPlan,
+ AutoReloadPlanDto,
+ AzureCredential,
+ AzureCredentialRegion,
AzureOpenAiCredential,
AzureOpenAiCredentialModelsItem,
AzureOpenAiCredentialRegion,
AzureVoice,
AzureVoiceId,
AzureVoiceIdEnum,
+ BashTool,
+ BashToolMessagesItem,
BlockCompleteMessage,
BlockCompleteMessageConditionsItem,
BlockStartMessage,
BlockStartMessageConditionsItem,
BotMessage,
+ BothCustomEndpointingRule,
BucketPlan,
BuyPhoneNumberDto,
BuyPhoneNumberDtoFallbackDestination,
@@ -62,6 +73,9 @@
CallCostsItem,
CallDestination,
CallEndedReason,
+ CallLogPrivileged,
+ CallLogPrivilegedLevel,
+ CallLogsPaginatedResponse,
CallMessagesItem,
CallPaginatedResponse,
CallPhoneCallProvider,
@@ -81,11 +95,13 @@
ClientInboundMessageControlControl,
ClientInboundMessageMessage,
ClientInboundMessageSay,
+ ClientInboundMessageTransfer,
+ ClientInboundMessageTransferDestination,
ClientMessage,
ClientMessageConversationUpdate,
ClientMessageConversationUpdateMessagesItem,
ClientMessageHang,
- ClientMessageLanguageChanged,
+ ClientMessageLanguageChangeDetected,
ClientMessageMessage,
ClientMessageMetadata,
ClientMessageModelOutput,
@@ -98,9 +114,13 @@
ClientMessageTranscript,
ClientMessageTranscriptRole,
ClientMessageTranscriptTranscriptType,
+ ClientMessageTransferUpdate,
+ ClientMessageTransferUpdateDestination,
ClientMessageUserInterrupted,
ClientMessageVoiceInput,
CloneVoiceDto,
+ ComputerTool,
+ ComputerToolMessagesItem,
Condition,
ConditionOperator,
ConversationBlock,
@@ -108,6 +128,7 @@
CostBreakdown,
CreateAnthropicCredentialDto,
CreateAnyscaleCredentialDto,
+ CreateAssemblyAiCredentialDto,
CreateAssistantDto,
CreateAssistantDtoBackgroundSound,
CreateAssistantDtoClientMessagesItem,
@@ -116,15 +137,22 @@
CreateAssistantDtoServerMessagesItem,
CreateAssistantDtoTranscriber,
CreateAssistantDtoVoice,
+ CreateAzureCredentialDto,
+ CreateAzureCredentialDtoRegion,
CreateAzureOpenAiCredentialDto,
CreateAzureOpenAiCredentialDtoModelsItem,
CreateAzureOpenAiCredentialDtoRegion,
+ CreateBashToolDto,
+ CreateBashToolDtoMessagesItem,
CreateByoPhoneNumberDto,
CreateByoPhoneNumberDtoFallbackDestination,
CreateByoSipTrunkCredentialDto,
CreateCartesiaCredentialDto,
+ CreateComputerToolDto,
+ CreateComputerToolDtoMessagesItem,
CreateConversationBlockDto,
CreateConversationBlockDtoMessagesItem,
+ CreateCustomKnowledgeBaseDto,
CreateCustomLlmCredentialDto,
CreateCustomerDto,
CreateDeepInfraCredentialDto,
@@ -141,7 +169,10 @@
CreateGhlToolDtoMessagesItem,
CreateGladiaCredentialDto,
CreateGoHighLevelCredentialDto,
+ CreateGoogleCredentialDto,
CreateGroqCredentialDto,
+ CreateInflectionAiCredentialDto,
+ CreateLangfuseCredentialDto,
CreateLmntCredentialDto,
CreateMakeCredentialDto,
CreateMakeToolDto,
@@ -149,6 +180,7 @@
CreateOpenAiCredentialDto,
CreateOpenRouterCredentialDto,
CreateOrgDto,
+ CreateOrgDtoChannel,
CreateOutboundCallDto,
CreateOutputToolDto,
CreateOutputToolDtoMessagesItem,
@@ -158,6 +190,9 @@
CreateRunpodCredentialDto,
CreateS3CredentialDto,
CreateSquadDto,
+ CreateTavusCredentialDto,
+ CreateTextEditorToolDto,
+ CreateTextEditorToolDtoMessagesItem,
CreateTogetherAiCredentialDto,
CreateTokenDto,
CreateTokenDtoTag,
@@ -172,6 +207,7 @@
CreateTransferCallToolDto,
CreateTransferCallToolDtoDestinationsItem,
CreateTransferCallToolDtoMessagesItem,
+ CreateTrieveKnowledgeBaseDto,
CreateTwilioCredentialDto,
CreateTwilioPhoneNumberDto,
CreateTwilioPhoneNumberDtoFallbackDestination,
@@ -183,13 +219,21 @@
CreateVonagePhoneNumberDto,
CreateVonagePhoneNumberDtoFallbackDestination,
CreateWebCallDto,
+ CreateWebhookCredentialDto,
CreateWorkflowBlockDto,
CreateWorkflowBlockDtoMessagesItem,
CreateWorkflowBlockDtoStepsItem,
+ CreateXAiCredentialDto,
+ CreditsBuyDto,
+ CustomKnowledgeBase,
CustomLlmCredential,
CustomLlmModel,
CustomLlmModelMetadataSendMode,
CustomLlmModelToolsItem,
+ CustomMessage,
+ CustomTranscriber,
+ CustomVoice,
+ CustomerCustomEndpointingRule,
DeepInfraCredential,
DeepInfraModel,
DeepInfraModelToolsItem,
@@ -211,6 +255,42 @@
EndCallToolMessagesItem,
Error,
ExactReplacement,
+ FallbackAzureVoice,
+ FallbackAzureVoiceId,
+ FallbackAzureVoiceVoiceId,
+ FallbackCartesiaVoice,
+ FallbackCartesiaVoiceLanguage,
+ FallbackCartesiaVoiceModel,
+ FallbackCustomVoice,
+ FallbackDeepgramVoice,
+ FallbackDeepgramVoiceId,
+ FallbackDeepgramVoiceIdEnum,
+ FallbackElevenLabsVoice,
+ FallbackElevenLabsVoiceId,
+ FallbackElevenLabsVoiceIdEnum,
+ FallbackElevenLabsVoiceModel,
+ FallbackLmntVoice,
+ FallbackLmntVoiceId,
+ FallbackLmntVoiceIdEnum,
+ FallbackNeetsVoice,
+ FallbackNeetsVoiceId,
+ FallbackNeetsVoiceIdEnum,
+ FallbackOpenAiVoice,
+ FallbackOpenAiVoiceId,
+ FallbackPlan,
+ FallbackPlanVoicesItem,
+ FallbackPlayHtVoice,
+ FallbackPlayHtVoiceEmotion,
+ FallbackPlayHtVoiceId,
+ FallbackPlayHtVoiceIdEnum,
+ FallbackPlayHtVoiceLanguage,
+ FallbackPlayHtVoiceModel,
+ FallbackRimeAiVoice,
+ FallbackRimeAiVoiceId,
+ FallbackRimeAiVoiceIdEnum,
+ FallbackRimeAiVoiceModel,
+ FallbackTavusVoice,
+ FallbackTavusVoiceVoiceId,
File,
FileStatus,
FormatPlan,
@@ -234,21 +314,30 @@
GladiaTranscriberLanguageBehaviour,
GladiaTranscriberModel,
GoHighLevelCredential,
+ GoogleCredential,
+ GoogleModel,
+ GoogleModelModel,
+ GoogleModelToolsItem,
GroqCredential,
GroqModel,
GroqModelModel,
GroqModelToolsItem,
HandoffStep,
HandoffStepBlock,
+ HipaaBuyDto,
ImportTwilioPhoneNumberDto,
ImportTwilioPhoneNumberDtoFallbackDestination,
ImportVonagePhoneNumberDto,
ImportVonagePhoneNumberDtoFallbackDestination,
+ InflectionAiCredential,
+ InflectionAiModel,
+ InflectionAiModelToolsItem,
InviteUserDto,
InviteUserDtoRole,
JsonSchema,
JsonSchemaType,
- KnowledgeBase,
+ KnowledgeBaseResponseDocument,
+ LangfuseCredential,
LmntCredential,
LmntVoice,
LmntVoiceId,
@@ -274,6 +363,8 @@
NeetsVoice,
NeetsVoiceId,
NeetsVoiceIdEnum,
+ OAuth2AuthenticationPlan,
+ Oauth2AuthenticationSession,
OpenAiCredential,
OpenAiFunction,
OpenAiFunctionParameters,
@@ -289,18 +380,30 @@
OpenRouterModel,
OpenRouterModelToolsItem,
Org,
+ OrgChannel,
OrgPlan,
+ OrgWithOrgUser,
+ OrgWithOrgUserChannel,
+ OrgWithOrgUserRole,
OutputTool,
OutputToolMessagesItem,
PaginationMeta,
+ Payment,
+ PaymentRetryDto,
+ PaymentStatus,
+ PaymentsPaginatedResponse,
PerplexityAiCredential,
PerplexityAiModel,
PerplexityAiModelToolsItem,
+ PhoneNumberPaginatedResponse,
+ PhoneNumberPaginatedResponseResultsItem,
PlayHtCredential,
PlayHtVoice,
PlayHtVoiceEmotion,
PlayHtVoiceId,
PlayHtVoiceIdEnum,
+ PlayHtVoiceLanguage,
+ PlayHtVoiceModel,
PunctuationBoundary,
RegexOption,
RegexOptionType,
@@ -328,8 +431,11 @@
ServerMessageEndOfCallReportPhoneNumber,
ServerMessageHang,
ServerMessageHangPhoneNumber,
- ServerMessageLanguageChanged,
- ServerMessageLanguageChangedPhoneNumber,
+ ServerMessageKnowledgeBaseRequest,
+ ServerMessageKnowledgeBaseRequestMessagesItem,
+ ServerMessageKnowledgeBaseRequestPhoneNumber,
+ ServerMessageLanguageChangeDetected,
+ ServerMessageLanguageChangeDetectedPhoneNumber,
ServerMessageMessage,
ServerMessageModelOutput,
ServerMessageModelOutputPhoneNumber,
@@ -340,6 +446,7 @@
ServerMessageResponse,
ServerMessageResponseAssistantRequest,
ServerMessageResponseAssistantRequestDestination,
+ ServerMessageResponseKnowledgeBaseRequest,
ServerMessageResponseMessageResponse,
ServerMessageResponseToolCalls,
ServerMessageResponseTransferDestinationRequest,
@@ -373,6 +480,7 @@
ServerMessageVoiceInputPhoneNumber,
ServerMessageVoiceRequest,
ServerMessageVoiceRequestPhoneNumber,
+ SipAuthentication,
SipTrunkGateway,
SipTrunkGatewayOutboundProtocol,
SipTrunkOutboundAuthenticationPlan,
@@ -380,10 +488,18 @@
Squad,
SquadMemberDto,
StartSpeakingPlan,
+ StartSpeakingPlanCustomEndpointingRulesItem,
StepDestination,
StepDestinationConditionsItem,
StopSpeakingPlan,
StructuredDataPlan,
+ Subscription,
+ SubscriptionConcurrencyLineBuyDto,
+ SubscriptionConcurrencyLineRemoveDto,
+ SubscriptionCouponAddDto,
+ SubscriptionMonthlyCharge,
+ SubscriptionStatus,
+ SubscriptionType,
SuccessEvaluationPlan,
SuccessEvaluationPlanRubric,
SummaryPlan,
@@ -392,11 +508,19 @@
SystemMessage,
TalkscriberTranscriber,
TalkscriberTranscriberLanguage,
+ TavusConversationProperties,
+ TavusCredential,
+ TavusVoice,
+ TavusVoiceVoiceId,
Template,
TemplateDetails,
TemplateProvider,
TemplateProviderDetails,
TemplateVisibility,
+ TextContent,
+ TextContentLanguage,
+ TextEditorTool,
+ TextEditorToolMessagesItem,
TimeRange,
TimeRangeStep,
TogetherAiCredential,
@@ -428,13 +552,27 @@
TransferCallToolDestinationsItem,
TransferCallToolMessagesItem,
TransferDestinationAssistant,
+ TransferDestinationAssistantMessage,
TransferDestinationNumber,
+ TransferDestinationNumberMessage,
TransferDestinationSip,
+ TransferDestinationSipMessage,
TransferDestinationStep,
+ TransferDestinationStepMessage,
TransferMode,
+ TransferPlan,
+ TransferPlanMessage,
+ TransferPlanMode,
+ Transport,
TransportConfigurationTwilio,
TransportConfigurationTwilioRecordingChannels,
TransportCost,
+ TransportCostProvider,
+ TransportProvider,
+ TrieveKnowledgeBase,
+ TrieveKnowledgeBaseVectorStoreCreatePlan,
+ TrieveKnowledgeBaseVectorStoreSearchPlan,
+ TrieveKnowledgeBaseVectorStoreSearchPlanSearchType,
TwilioCredential,
TwilioPhoneNumber,
TwilioPhoneNumberFallbackDestination,
@@ -442,6 +580,9 @@
TwilioVoicemailDetectionVoicemailDetectionTypesItem,
UpdateAnthropicCredentialDto,
UpdateAnyscaleCredentialDto,
+ UpdateAssemblyAiCredentialDto,
+ UpdateAzureCredentialDto,
+ UpdateAzureCredentialDtoRegion,
UpdateAzureOpenAiCredentialDto,
UpdateAzureOpenAiCredentialDtoModelsItem,
UpdateAzureOpenAiCredentialDtoRegion,
@@ -454,17 +595,22 @@
UpdateGcpCredentialDto,
UpdateGladiaCredentialDto,
UpdateGoHighLevelCredentialDto,
+ UpdateGoogleCredentialDto,
UpdateGroqCredentialDto,
+ UpdateInflectionAiCredentialDto,
+ UpdateLangfuseCredentialDto,
UpdateLmntCredentialDto,
UpdateMakeCredentialDto,
UpdateOpenAiCredentialDto,
UpdateOpenRouterCredentialDto,
UpdateOrgDto,
+ UpdateOrgDtoChannel,
UpdatePerplexityAiCredentialDto,
UpdatePlayHtCredentialDto,
UpdateRimeAiCredentialDto,
UpdateRunpodCredentialDto,
UpdateS3CredentialDto,
+ UpdateTavusCredentialDto,
UpdateTogetherAiCredentialDto,
UpdateToolTemplateDto,
UpdateToolTemplateDtoDetails,
@@ -475,9 +621,11 @@
UpdateUserRoleDto,
UpdateUserRoleDtoRole,
UpdateVonageCredentialDto,
+ UpdateXAiCredentialDto,
User,
UserMessage,
VapiCost,
+ VapiCostSubType,
VapiModel,
VapiModelStepsItem,
VapiModelToolsItem,
@@ -490,12 +638,16 @@
VonageCredential,
VonagePhoneNumber,
VonagePhoneNumberFallbackDestination,
+ WebhookCredential,
WorkflowBlock,
WorkflowBlockMessagesItem,
WorkflowBlockStepsItem,
+ XAiCredential,
+ XaiModel,
+ XaiModelToolsItem,
)
from .errors import BadRequestError
-from . import analytics, assistants, blocks, calls, files, logs, phone_numbers, squads, tools
+from . import analytics, assistants, blocks, calls, files, knowledge_bases, logs, phone_numbers, squads, tools
from .assistants import (
UpdateAssistantDtoBackgroundSound,
UpdateAssistantDtoClientMessagesItem,
@@ -518,6 +670,14 @@
)
from .client import AsyncVapi, Vapi
from .environment import VapiEnvironment
+from .knowledge_bases import (
+ KnowledgeBasesCreateRequest,
+ KnowledgeBasesCreateResponse,
+ KnowledgeBasesDeleteResponse,
+ KnowledgeBasesGetResponse,
+ KnowledgeBasesListResponseItem,
+ KnowledgeBasesUpdateResponse,
+)
from .logs import LogsGetRequestSortOrder, LogsGetRequestType
from .phone_numbers import (
PhoneNumbersCreateRequest,
@@ -550,6 +710,7 @@
"AnalyticsOperationColumn",
"AnalyticsOperationOperation",
"AnalyticsQuery",
+ "AnalyticsQueryDto",
"AnalyticsQueryGroupByItem",
"AnalyticsQueryResult",
"AnthropicCredential",
@@ -562,11 +723,14 @@
"Artifact",
"ArtifactMessagesItem",
"ArtifactPlan",
+ "AssemblyAiCredential",
+ "AssemblyAiTranscriber",
"AssignmentMutation",
"AssignmentMutationConditionsItem",
"Assistant",
"AssistantBackgroundSound",
"AssistantClientMessagesItem",
+ "AssistantCustomEndpointingRule",
"AssistantFirstMessageMode",
"AssistantModel",
"AssistantOverrides",
@@ -581,6 +745,10 @@
"AssistantTranscriber",
"AssistantVoice",
"AsyncVapi",
+ "AutoReloadPlan",
+ "AutoReloadPlanDto",
+ "AzureCredential",
+ "AzureCredentialRegion",
"AzureOpenAiCredential",
"AzureOpenAiCredentialModelsItem",
"AzureOpenAiCredentialRegion",
@@ -588,6 +756,8 @@
"AzureVoiceId",
"AzureVoiceIdEnum",
"BadRequestError",
+ "BashTool",
+ "BashToolMessagesItem",
"BlockCompleteMessage",
"BlockCompleteMessageConditionsItem",
"BlockStartMessage",
@@ -599,6 +769,7 @@
"BlocksListResponseItem",
"BlocksUpdateResponse",
"BotMessage",
+ "BothCustomEndpointingRule",
"BucketPlan",
"BuyPhoneNumberDto",
"BuyPhoneNumberDtoFallbackDestination",
@@ -609,6 +780,9 @@
"CallCostsItem",
"CallDestination",
"CallEndedReason",
+ "CallLogPrivileged",
+ "CallLogPrivilegedLevel",
+ "CallLogsPaginatedResponse",
"CallMessagesItem",
"CallPaginatedResponse",
"CallPhoneCallProvider",
@@ -628,11 +802,13 @@
"ClientInboundMessageControlControl",
"ClientInboundMessageMessage",
"ClientInboundMessageSay",
+ "ClientInboundMessageTransfer",
+ "ClientInboundMessageTransferDestination",
"ClientMessage",
"ClientMessageConversationUpdate",
"ClientMessageConversationUpdateMessagesItem",
"ClientMessageHang",
- "ClientMessageLanguageChanged",
+ "ClientMessageLanguageChangeDetected",
"ClientMessageMessage",
"ClientMessageMetadata",
"ClientMessageModelOutput",
@@ -645,9 +821,13 @@
"ClientMessageTranscript",
"ClientMessageTranscriptRole",
"ClientMessageTranscriptTranscriptType",
+ "ClientMessageTransferUpdate",
+ "ClientMessageTransferUpdateDestination",
"ClientMessageUserInterrupted",
"ClientMessageVoiceInput",
"CloneVoiceDto",
+ "ComputerTool",
+ "ComputerToolMessagesItem",
"Condition",
"ConditionOperator",
"ConversationBlock",
@@ -655,6 +835,7 @@
"CostBreakdown",
"CreateAnthropicCredentialDto",
"CreateAnyscaleCredentialDto",
+ "CreateAssemblyAiCredentialDto",
"CreateAssistantDto",
"CreateAssistantDtoBackgroundSound",
"CreateAssistantDtoClientMessagesItem",
@@ -663,15 +844,22 @@
"CreateAssistantDtoServerMessagesItem",
"CreateAssistantDtoTranscriber",
"CreateAssistantDtoVoice",
+ "CreateAzureCredentialDto",
+ "CreateAzureCredentialDtoRegion",
"CreateAzureOpenAiCredentialDto",
"CreateAzureOpenAiCredentialDtoModelsItem",
"CreateAzureOpenAiCredentialDtoRegion",
+ "CreateBashToolDto",
+ "CreateBashToolDtoMessagesItem",
"CreateByoPhoneNumberDto",
"CreateByoPhoneNumberDtoFallbackDestination",
"CreateByoSipTrunkCredentialDto",
"CreateCartesiaCredentialDto",
+ "CreateComputerToolDto",
+ "CreateComputerToolDtoMessagesItem",
"CreateConversationBlockDto",
"CreateConversationBlockDtoMessagesItem",
+ "CreateCustomKnowledgeBaseDto",
"CreateCustomLlmCredentialDto",
"CreateCustomerDto",
"CreateDeepInfraCredentialDto",
@@ -688,7 +876,10 @@
"CreateGhlToolDtoMessagesItem",
"CreateGladiaCredentialDto",
"CreateGoHighLevelCredentialDto",
+ "CreateGoogleCredentialDto",
"CreateGroqCredentialDto",
+ "CreateInflectionAiCredentialDto",
+ "CreateLangfuseCredentialDto",
"CreateLmntCredentialDto",
"CreateMakeCredentialDto",
"CreateMakeToolDto",
@@ -696,6 +887,7 @@
"CreateOpenAiCredentialDto",
"CreateOpenRouterCredentialDto",
"CreateOrgDto",
+ "CreateOrgDtoChannel",
"CreateOutboundCallDto",
"CreateOutputToolDto",
"CreateOutputToolDtoMessagesItem",
@@ -705,6 +897,9 @@
"CreateRunpodCredentialDto",
"CreateS3CredentialDto",
"CreateSquadDto",
+ "CreateTavusCredentialDto",
+ "CreateTextEditorToolDto",
+ "CreateTextEditorToolDtoMessagesItem",
"CreateTogetherAiCredentialDto",
"CreateTokenDto",
"CreateTokenDtoTag",
@@ -719,6 +914,7 @@
"CreateTransferCallToolDto",
"CreateTransferCallToolDtoDestinationsItem",
"CreateTransferCallToolDtoMessagesItem",
+ "CreateTrieveKnowledgeBaseDto",
"CreateTwilioCredentialDto",
"CreateTwilioPhoneNumberDto",
"CreateTwilioPhoneNumberDtoFallbackDestination",
@@ -730,13 +926,21 @@
"CreateVonagePhoneNumberDto",
"CreateVonagePhoneNumberDtoFallbackDestination",
"CreateWebCallDto",
+ "CreateWebhookCredentialDto",
"CreateWorkflowBlockDto",
"CreateWorkflowBlockDtoMessagesItem",
"CreateWorkflowBlockDtoStepsItem",
+ "CreateXAiCredentialDto",
+ "CreditsBuyDto",
+ "CustomKnowledgeBase",
"CustomLlmCredential",
"CustomLlmModel",
"CustomLlmModelMetadataSendMode",
"CustomLlmModelToolsItem",
+ "CustomMessage",
+ "CustomTranscriber",
+ "CustomVoice",
+ "CustomerCustomEndpointingRule",
"DeepInfraCredential",
"DeepInfraModel",
"DeepInfraModelToolsItem",
@@ -758,6 +962,42 @@
"EndCallToolMessagesItem",
"Error",
"ExactReplacement",
+ "FallbackAzureVoice",
+ "FallbackAzureVoiceId",
+ "FallbackAzureVoiceVoiceId",
+ "FallbackCartesiaVoice",
+ "FallbackCartesiaVoiceLanguage",
+ "FallbackCartesiaVoiceModel",
+ "FallbackCustomVoice",
+ "FallbackDeepgramVoice",
+ "FallbackDeepgramVoiceId",
+ "FallbackDeepgramVoiceIdEnum",
+ "FallbackElevenLabsVoice",
+ "FallbackElevenLabsVoiceId",
+ "FallbackElevenLabsVoiceIdEnum",
+ "FallbackElevenLabsVoiceModel",
+ "FallbackLmntVoice",
+ "FallbackLmntVoiceId",
+ "FallbackLmntVoiceIdEnum",
+ "FallbackNeetsVoice",
+ "FallbackNeetsVoiceId",
+ "FallbackNeetsVoiceIdEnum",
+ "FallbackOpenAiVoice",
+ "FallbackOpenAiVoiceId",
+ "FallbackPlan",
+ "FallbackPlanVoicesItem",
+ "FallbackPlayHtVoice",
+ "FallbackPlayHtVoiceEmotion",
+ "FallbackPlayHtVoiceId",
+ "FallbackPlayHtVoiceIdEnum",
+ "FallbackPlayHtVoiceLanguage",
+ "FallbackPlayHtVoiceModel",
+ "FallbackRimeAiVoice",
+ "FallbackRimeAiVoiceId",
+ "FallbackRimeAiVoiceIdEnum",
+ "FallbackRimeAiVoiceModel",
+ "FallbackTavusVoice",
+ "FallbackTavusVoiceVoiceId",
"File",
"FileStatus",
"FormatPlan",
@@ -781,21 +1021,36 @@
"GladiaTranscriberLanguageBehaviour",
"GladiaTranscriberModel",
"GoHighLevelCredential",
+ "GoogleCredential",
+ "GoogleModel",
+ "GoogleModelModel",
+ "GoogleModelToolsItem",
"GroqCredential",
"GroqModel",
"GroqModelModel",
"GroqModelToolsItem",
"HandoffStep",
"HandoffStepBlock",
+ "HipaaBuyDto",
"ImportTwilioPhoneNumberDto",
"ImportTwilioPhoneNumberDtoFallbackDestination",
"ImportVonagePhoneNumberDto",
"ImportVonagePhoneNumberDtoFallbackDestination",
+ "InflectionAiCredential",
+ "InflectionAiModel",
+ "InflectionAiModelToolsItem",
"InviteUserDto",
"InviteUserDtoRole",
"JsonSchema",
"JsonSchemaType",
- "KnowledgeBase",
+ "KnowledgeBaseResponseDocument",
+ "KnowledgeBasesCreateRequest",
+ "KnowledgeBasesCreateResponse",
+ "KnowledgeBasesDeleteResponse",
+ "KnowledgeBasesGetResponse",
+ "KnowledgeBasesListResponseItem",
+ "KnowledgeBasesUpdateResponse",
+ "LangfuseCredential",
"LmntCredential",
"LmntVoice",
"LmntVoiceId",
@@ -823,6 +1078,8 @@
"NeetsVoice",
"NeetsVoiceId",
"NeetsVoiceIdEnum",
+ "OAuth2AuthenticationPlan",
+ "Oauth2AuthenticationSession",
"OpenAiCredential",
"OpenAiFunction",
"OpenAiFunctionParameters",
@@ -838,13 +1095,23 @@
"OpenRouterModel",
"OpenRouterModelToolsItem",
"Org",
+ "OrgChannel",
"OrgPlan",
+ "OrgWithOrgUser",
+ "OrgWithOrgUserChannel",
+ "OrgWithOrgUserRole",
"OutputTool",
"OutputToolMessagesItem",
"PaginationMeta",
+ "Payment",
+ "PaymentRetryDto",
+ "PaymentStatus",
+ "PaymentsPaginatedResponse",
"PerplexityAiCredential",
"PerplexityAiModel",
"PerplexityAiModelToolsItem",
+ "PhoneNumberPaginatedResponse",
+ "PhoneNumberPaginatedResponseResultsItem",
"PhoneNumbersCreateRequest",
"PhoneNumbersCreateResponse",
"PhoneNumbersDeleteResponse",
@@ -856,6 +1123,8 @@
"PlayHtVoiceEmotion",
"PlayHtVoiceId",
"PlayHtVoiceIdEnum",
+ "PlayHtVoiceLanguage",
+ "PlayHtVoiceModel",
"PunctuationBoundary",
"RegexOption",
"RegexOptionType",
@@ -883,8 +1152,11 @@
"ServerMessageEndOfCallReportPhoneNumber",
"ServerMessageHang",
"ServerMessageHangPhoneNumber",
- "ServerMessageLanguageChanged",
- "ServerMessageLanguageChangedPhoneNumber",
+ "ServerMessageKnowledgeBaseRequest",
+ "ServerMessageKnowledgeBaseRequestMessagesItem",
+ "ServerMessageKnowledgeBaseRequestPhoneNumber",
+ "ServerMessageLanguageChangeDetected",
+ "ServerMessageLanguageChangeDetectedPhoneNumber",
"ServerMessageMessage",
"ServerMessageModelOutput",
"ServerMessageModelOutputPhoneNumber",
@@ -895,6 +1167,7 @@
"ServerMessageResponse",
"ServerMessageResponseAssistantRequest",
"ServerMessageResponseAssistantRequestDestination",
+ "ServerMessageResponseKnowledgeBaseRequest",
"ServerMessageResponseMessageResponse",
"ServerMessageResponseToolCalls",
"ServerMessageResponseTransferDestinationRequest",
@@ -928,6 +1201,7 @@
"ServerMessageVoiceInputPhoneNumber",
"ServerMessageVoiceRequest",
"ServerMessageVoiceRequestPhoneNumber",
+ "SipAuthentication",
"SipTrunkGateway",
"SipTrunkGatewayOutboundProtocol",
"SipTrunkOutboundAuthenticationPlan",
@@ -935,10 +1209,18 @@
"Squad",
"SquadMemberDto",
"StartSpeakingPlan",
+ "StartSpeakingPlanCustomEndpointingRulesItem",
"StepDestination",
"StepDestinationConditionsItem",
"StopSpeakingPlan",
"StructuredDataPlan",
+ "Subscription",
+ "SubscriptionConcurrencyLineBuyDto",
+ "SubscriptionConcurrencyLineRemoveDto",
+ "SubscriptionCouponAddDto",
+ "SubscriptionMonthlyCharge",
+ "SubscriptionStatus",
+ "SubscriptionType",
"SuccessEvaluationPlan",
"SuccessEvaluationPlanRubric",
"SummaryPlan",
@@ -947,11 +1229,19 @@
"SystemMessage",
"TalkscriberTranscriber",
"TalkscriberTranscriberLanguage",
+ "TavusConversationProperties",
+ "TavusCredential",
+ "TavusVoice",
+ "TavusVoiceVoiceId",
"Template",
"TemplateDetails",
"TemplateProvider",
"TemplateProviderDetails",
"TemplateVisibility",
+ "TextContent",
+ "TextContentLanguage",
+ "TextEditorTool",
+ "TextEditorToolMessagesItem",
"TimeRange",
"TimeRangeStep",
"TogetherAiCredential",
@@ -989,13 +1279,27 @@
"TransferCallToolDestinationsItem",
"TransferCallToolMessagesItem",
"TransferDestinationAssistant",
+ "TransferDestinationAssistantMessage",
"TransferDestinationNumber",
+ "TransferDestinationNumberMessage",
"TransferDestinationSip",
+ "TransferDestinationSipMessage",
"TransferDestinationStep",
+ "TransferDestinationStepMessage",
"TransferMode",
+ "TransferPlan",
+ "TransferPlanMessage",
+ "TransferPlanMode",
+ "Transport",
"TransportConfigurationTwilio",
"TransportConfigurationTwilioRecordingChannels",
"TransportCost",
+ "TransportCostProvider",
+ "TransportProvider",
+ "TrieveKnowledgeBase",
+ "TrieveKnowledgeBaseVectorStoreCreatePlan",
+ "TrieveKnowledgeBaseVectorStoreSearchPlan",
+ "TrieveKnowledgeBaseVectorStoreSearchPlanSearchType",
"TwilioCredential",
"TwilioPhoneNumber",
"TwilioPhoneNumberFallbackDestination",
@@ -1003,6 +1307,7 @@
"TwilioVoicemailDetectionVoicemailDetectionTypesItem",
"UpdateAnthropicCredentialDto",
"UpdateAnyscaleCredentialDto",
+ "UpdateAssemblyAiCredentialDto",
"UpdateAssistantDtoBackgroundSound",
"UpdateAssistantDtoClientMessagesItem",
"UpdateAssistantDtoFirstMessageMode",
@@ -1010,6 +1315,8 @@
"UpdateAssistantDtoServerMessagesItem",
"UpdateAssistantDtoTranscriber",
"UpdateAssistantDtoVoice",
+ "UpdateAzureCredentialDto",
+ "UpdateAzureCredentialDtoRegion",
"UpdateAzureOpenAiCredentialDto",
"UpdateAzureOpenAiCredentialDtoModelsItem",
"UpdateAzureOpenAiCredentialDtoRegion",
@@ -1025,18 +1332,23 @@
"UpdateGcpCredentialDto",
"UpdateGladiaCredentialDto",
"UpdateGoHighLevelCredentialDto",
+ "UpdateGoogleCredentialDto",
"UpdateGroqCredentialDto",
+ "UpdateInflectionAiCredentialDto",
+ "UpdateLangfuseCredentialDto",
"UpdateLmntCredentialDto",
"UpdateMakeCredentialDto",
"UpdateOpenAiCredentialDto",
"UpdateOpenRouterCredentialDto",
"UpdateOrgDto",
+ "UpdateOrgDtoChannel",
"UpdatePerplexityAiCredentialDto",
"UpdatePhoneNumberDtoFallbackDestination",
"UpdatePlayHtCredentialDto",
"UpdateRimeAiCredentialDto",
"UpdateRunpodCredentialDto",
"UpdateS3CredentialDto",
+ "UpdateTavusCredentialDto",
"UpdateTogetherAiCredentialDto",
"UpdateToolDtoMessagesItem",
"UpdateToolTemplateDto",
@@ -1048,10 +1360,12 @@
"UpdateUserRoleDto",
"UpdateUserRoleDtoRole",
"UpdateVonageCredentialDto",
+ "UpdateXAiCredentialDto",
"User",
"UserMessage",
"Vapi",
"VapiCost",
+ "VapiCostSubType",
"VapiEnvironment",
"VapiModel",
"VapiModelStepsItem",
@@ -1065,15 +1379,20 @@
"VonageCredential",
"VonagePhoneNumber",
"VonagePhoneNumberFallbackDestination",
+ "WebhookCredential",
"WorkflowBlock",
"WorkflowBlockMessagesItem",
"WorkflowBlockStepsItem",
+ "XAiCredential",
+ "XaiModel",
+ "XaiModelToolsItem",
"__version__",
"analytics",
"assistants",
"blocks",
"calls",
"files",
+ "knowledge_bases",
"logs",
"phone_numbers",
"squads",
diff --git a/src/vapi/analytics/client.py b/src/vapi/analytics/client.py
index 8f7a9e7..65bc681 100644
--- a/src/vapi/analytics/client.py
+++ b/src/vapi/analytics/client.py
@@ -1,82 +1,36 @@
# This file was auto-generated by Fern from our API Definition.
-import typing
from ..core.client_wrapper import SyncClientWrapper
-from ..types.analytics_query import AnalyticsQuery
+import typing
from ..core.request_options import RequestOptions
-from ..types.analytics_query_result import AnalyticsQueryResult
-from ..core.serialization import convert_and_respect_annotation_metadata
-from ..core.pydantic_utilities import parse_obj_as
from json.decoder import JSONDecodeError
from ..core.api_error import ApiError
from ..core.client_wrapper import AsyncClientWrapper
-# this is used as the default value for optional parameters
-OMIT = typing.cast(typing.Any, ...)
-
class AnalyticsClient:
def __init__(self, *, client_wrapper: SyncClientWrapper):
self._client_wrapper = client_wrapper
- def get(
- self, *, queries: typing.Sequence[AnalyticsQuery], request_options: typing.Optional[RequestOptions] = None
- ) -> typing.List[AnalyticsQueryResult]:
+ def get(self, *, request_options: typing.Optional[RequestOptions] = None) -> None:
"""
Parameters
----------
- queries : typing.Sequence[AnalyticsQuery]
- This is the list of metric queries you want to perform.
-
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
Returns
-------
- typing.List[AnalyticsQueryResult]
-
-
- Examples
- --------
- from vapi import AnalyticsOperation, AnalyticsQuery, Vapi
-
- client = Vapi(
- token="YOUR_TOKEN",
- )
- client.analytics.get(
- queries=[
- AnalyticsQuery(
- name="name",
- operations=[
- AnalyticsOperation(
- operation="sum",
- column="id",
- )
- ],
- )
- ],
- )
+ None
"""
_response = self._client_wrapper.httpx_client.request(
"analytics",
method="POST",
- json={
- "queries": convert_and_respect_annotation_metadata(
- object_=queries, annotation=typing.Sequence[AnalyticsQuery], direction="write"
- ),
- },
request_options=request_options,
- omit=OMIT,
)
try:
if 200 <= _response.status_code < 300:
- return typing.cast(
- typing.List[AnalyticsQueryResult],
- parse_obj_as(
- type_=typing.List[AnalyticsQueryResult], # type: ignore
- object_=_response.json(),
- ),
- )
+ return
_response_json = _response.json()
except JSONDecodeError:
raise ApiError(status_code=_response.status_code, body=_response.text)
@@ -87,72 +41,25 @@ class AsyncAnalyticsClient:
def __init__(self, *, client_wrapper: AsyncClientWrapper):
self._client_wrapper = client_wrapper
- async def get(
- self, *, queries: typing.Sequence[AnalyticsQuery], request_options: typing.Optional[RequestOptions] = None
- ) -> typing.List[AnalyticsQueryResult]:
+ async def get(self, *, request_options: typing.Optional[RequestOptions] = None) -> None:
"""
Parameters
----------
- queries : typing.Sequence[AnalyticsQuery]
- This is the list of metric queries you want to perform.
-
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
Returns
-------
- typing.List[AnalyticsQueryResult]
-
-
- Examples
- --------
- import asyncio
-
- from vapi import AnalyticsOperation, AnalyticsQuery, AsyncVapi
-
- client = AsyncVapi(
- token="YOUR_TOKEN",
- )
-
-
- async def main() -> None:
- await client.analytics.get(
- queries=[
- AnalyticsQuery(
- name="name",
- operations=[
- AnalyticsOperation(
- operation="sum",
- column="id",
- )
- ],
- )
- ],
- )
-
-
- asyncio.run(main())
+ None
"""
_response = await self._client_wrapper.httpx_client.request(
"analytics",
method="POST",
- json={
- "queries": convert_and_respect_annotation_metadata(
- object_=queries, annotation=typing.Sequence[AnalyticsQuery], direction="write"
- ),
- },
request_options=request_options,
- omit=OMIT,
)
try:
if 200 <= _response.status_code < 300:
- return typing.cast(
- typing.List[AnalyticsQueryResult],
- parse_obj_as(
- type_=typing.List[AnalyticsQueryResult], # type: ignore
- object_=_response.json(),
- ),
- )
+ return
_response_json = _response.json()
except JSONDecodeError:
raise ApiError(status_code=_response.status_code, body=_response.text)
diff --git a/src/vapi/assistants/client.py b/src/vapi/assistants/client.py
index d654956..f04d473 100644
--- a/src/vapi/assistants/client.py
+++ b/src/vapi/assistants/client.py
@@ -24,6 +24,7 @@
from ..types.start_speaking_plan import StartSpeakingPlan
from ..types.stop_speaking_plan import StopSpeakingPlan
from ..types.monitor_plan import MonitorPlan
+from ..types.server import Server
from ..core.serialization import convert_and_respect_annotation_metadata
from ..core.jsonable_encoder import jsonable_encoder
from .types.update_assistant_dto_transcriber import UpdateAssistantDtoTranscriber
@@ -94,15 +95,6 @@ def list(
-------
typing.List[Assistant]
-
- Examples
- --------
- from vapi import Vapi
-
- client = Vapi(
- token="YOUR_TOKEN",
- )
- client.assistants.list()
"""
_response = self._client_wrapper.httpx_client.request(
"assistant",
@@ -140,6 +132,7 @@ def create(
transcriber: typing.Optional[CreateAssistantDtoTranscriber] = OMIT,
model: typing.Optional[CreateAssistantDtoModel] = OMIT,
voice: typing.Optional[CreateAssistantDtoVoice] = OMIT,
+ first_message: typing.Optional[str] = OMIT,
first_message_mode: typing.Optional[CreateAssistantDtoFirstMessageMode] = OMIT,
hipaa_enabled: typing.Optional[bool] = OMIT,
client_messages: typing.Optional[typing.Sequence[CreateAssistantDtoClientMessagesItem]] = OMIT,
@@ -147,19 +140,15 @@ def create(
silence_timeout_seconds: typing.Optional[float] = OMIT,
max_duration_seconds: typing.Optional[float] = OMIT,
background_sound: typing.Optional[CreateAssistantDtoBackgroundSound] = OMIT,
- backchanneling_enabled: typing.Optional[bool] = OMIT,
background_denoising_enabled: typing.Optional[bool] = OMIT,
model_output_in_messages_enabled: typing.Optional[bool] = OMIT,
transport_configurations: typing.Optional[typing.Sequence[TransportConfigurationTwilio]] = OMIT,
name: typing.Optional[str] = OMIT,
- first_message: typing.Optional[str] = OMIT,
voicemail_detection: typing.Optional[TwilioVoicemailDetection] = OMIT,
voicemail_message: typing.Optional[str] = OMIT,
end_call_message: typing.Optional[str] = OMIT,
end_call_phrases: typing.Optional[typing.Sequence[str]] = OMIT,
metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
- server_url: typing.Optional[str] = OMIT,
- server_url_secret: typing.Optional[str] = OMIT,
analysis_plan: typing.Optional[AnalysisPlan] = OMIT,
artifact_plan: typing.Optional[ArtifactPlan] = OMIT,
message_plan: typing.Optional[MessagePlan] = OMIT,
@@ -167,6 +156,7 @@ def create(
stop_speaking_plan: typing.Optional[StopSpeakingPlan] = OMIT,
monitor_plan: typing.Optional[MonitorPlan] = OMIT,
credential_ids: typing.Optional[typing.Sequence[str]] = OMIT,
+ server: typing.Optional[Server] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> Assistant:
"""
@@ -181,11 +171,15 @@ def create(
voice : typing.Optional[CreateAssistantDtoVoice]
These are the options for the assistant's voice.
+ first_message : typing.Optional[str]
+ This is the first message that the assistant will say. This can also be a URL to a containerized audio file (mp3, wav, etc.).
+
+ If unspecified, assistant will wait for user to speak and use the model to respond once they speak.
+
first_message_mode : typing.Optional[CreateAssistantDtoFirstMessageMode]
This is the mode for the first message. Default is 'assistant-speaks-first'.
Use:
-
- 'assistant-speaks-first' to have the assistant speak first.
- 'assistant-waits-for-user' to have the assistant wait for the user to speak first.
- 'assistant-speaks-first-with-model-generated-message' to have the assistant speak first with a message generated by the model based on the conversation state. (`assistant.model.messages` at call start, `call.messages` at squad transfer points).
@@ -196,7 +190,7 @@ def create(
When this is enabled, no logs, recordings, or transcriptions will be stored. At the end of the call, you will still receive an end-of-call-report message to store on your server. Defaults to false.
client_messages : typing.Optional[typing.Sequence[CreateAssistantDtoClientMessagesItem]]
- These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transcript,tool-calls,user-interrupted,voice-input. You can check the shape of the messages in ClientMessage schema.
+ These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transfer-update,transcript,tool-calls,user-interrupted,voice-input. You can check the shape of the messages in ClientMessage schema.
server_messages : typing.Optional[typing.Sequence[CreateAssistantDtoServerMessagesItem]]
These are the messages that will be sent to your Server URL. Default is conversation-update,end-of-call-report,function-call,hang,speech-update,status-update,tool-calls,transfer-destination-request,user-interrupted. You can check the shape of the messages in ServerMessage schema.
@@ -214,13 +208,6 @@ def create(
background_sound : typing.Optional[CreateAssistantDtoBackgroundSound]
This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'.
- backchanneling_enabled : typing.Optional[bool]
- This determines whether the model says 'mhmm', 'ahem' etc. while user is speaking.
-
- Default `false` while in beta.
-
- @default false
-
background_denoising_enabled : typing.Optional[bool]
This enables filtering of noise and background speech while the user is talking.
@@ -243,11 +230,6 @@ def create(
This is required when you want to transfer between assistants in a call.
- first_message : typing.Optional[str]
- This is the first message that the assistant will say. This can also be a URL to a containerized audio file (mp3, wav, etc.).
-
- If unspecified, assistant will wait for user to speak and use the model to respond once they speak.
-
voicemail_detection : typing.Optional[TwilioVoicemailDetection]
These are the settings to configure or disable voicemail detection. Alternatively, voicemail detection can be configured using the model.tools=[VoicemailTool].
This uses Twilio's built-in detection while the VoicemailTool relies on the model to detect if a voicemail was reached.
@@ -269,18 +251,6 @@ def create(
metadata : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
This is for metadata you want to store on the assistant.
- server_url : typing.Optional[str]
- This is the URL Vapi will communicate with via HTTP GET and POST Requests. This is used for retrieving context, function calling, and end-of-call reports.
-
- All requests will be sent with the call object among other things relevant to that message. You can find more details in the Server URL documentation.
-
- This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: tool.server.url > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl
-
- server_url_secret : typing.Optional[str]
- This is the secret you can set that Vapi will send with every request to your server. Will be sent as a header called x-vapi-secret.
-
- Same precedence logic as serverUrl.
-
analysis_plan : typing.Optional[AnalysisPlan]
This is the plan for analysis of assistant's calls. Stored in `call.analysis`.
@@ -298,7 +268,6 @@ def create(
This is the plan for when the assistant should start talking.
You should configure this if you're running into these issues:
-
- The assistant is too slow to start talking after the customer is done speaking.
- The assistant is too fast to start talking after the customer is done speaking.
- The assistant is so fast that it's actually interrupting the customer.
@@ -307,7 +276,6 @@ def create(
This is the plan for when assistant should stop talking on customer interruption.
You should configure this if you're running into these issues:
-
- The assistant is too slow to recognize customer's interruption.
- The assistant is too fast to recognize customer's interruption.
- The assistant is getting interrupted by phrases that are just acknowledgments.
@@ -318,7 +286,6 @@ def create(
This is the plan for real-time monitoring of the assistant's calls.
Usage:
-
- To enable live listening of the assistant's calls, set `monitorPlan.listenEnabled` to `true`.
- To enable live control of the assistant's calls, set `monitorPlan.controlEnabled` to `true`.
@@ -327,6 +294,15 @@ def create(
credential_ids : typing.Optional[typing.Sequence[str]]
These are the credentials that will be used for the assistant calls. By default, all the credentials are available for use in the call but you can provide a subset using this.
+ server : typing.Optional[Server]
+ This is where Vapi will send webhooks. You can find all webhooks available along with their shape in ServerMessage schema.
+
+ The order of precedence is:
+
+ 1. assistant.server.url
+ 2. phoneNumber.serverUrl
+ 3. org.serverUrl
+
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -334,15 +310,6 @@ def create(
-------
Assistant
-
- Examples
- --------
- from vapi import Vapi
-
- client = Vapi(
- token="YOUR_TOKEN",
- )
- client.assistants.create()
"""
_response = self._client_wrapper.httpx_client.request(
"assistant",
@@ -357,6 +324,7 @@ def create(
"voice": convert_and_respect_annotation_metadata(
object_=voice, annotation=CreateAssistantDtoVoice, direction="write"
),
+ "firstMessage": first_message,
"firstMessageMode": first_message_mode,
"hipaaEnabled": hipaa_enabled,
"clientMessages": client_messages,
@@ -364,7 +332,6 @@ def create(
"silenceTimeoutSeconds": silence_timeout_seconds,
"maxDurationSeconds": max_duration_seconds,
"backgroundSound": background_sound,
- "backchannelingEnabled": backchanneling_enabled,
"backgroundDenoisingEnabled": background_denoising_enabled,
"modelOutputInMessagesEnabled": model_output_in_messages_enabled,
"transportConfigurations": convert_and_respect_annotation_metadata(
@@ -373,7 +340,6 @@ def create(
direction="write",
),
"name": name,
- "firstMessage": first_message,
"voicemailDetection": convert_and_respect_annotation_metadata(
object_=voicemail_detection, annotation=TwilioVoicemailDetection, direction="write"
),
@@ -381,8 +347,6 @@ def create(
"endCallMessage": end_call_message,
"endCallPhrases": end_call_phrases,
"metadata": metadata,
- "serverUrl": server_url,
- "serverUrlSecret": server_url_secret,
"analysisPlan": convert_and_respect_annotation_metadata(
object_=analysis_plan, annotation=AnalysisPlan, direction="write"
),
@@ -402,6 +366,7 @@ def create(
object_=monitor_plan, annotation=MonitorPlan, direction="write"
),
"credentialIds": credential_ids,
+ "server": convert_and_respect_annotation_metadata(object_=server, annotation=Server, direction="write"),
},
request_options=request_options,
omit=OMIT,
@@ -433,17 +398,6 @@ def get(self, id: str, *, request_options: typing.Optional[RequestOptions] = Non
-------
Assistant
-
- Examples
- --------
- from vapi import Vapi
-
- client = Vapi(
- token="YOUR_TOKEN",
- )
- client.assistants.get(
- id="id",
- )
"""
_response = self._client_wrapper.httpx_client.request(
f"assistant/{jsonable_encoder(id)}",
@@ -477,17 +431,6 @@ def delete(self, id: str, *, request_options: typing.Optional[RequestOptions] =
-------
Assistant
-
- Examples
- --------
- from vapi import Vapi
-
- client = Vapi(
- token="YOUR_TOKEN",
- )
- client.assistants.delete(
- id="id",
- )
"""
_response = self._client_wrapper.httpx_client.request(
f"assistant/{jsonable_encoder(id)}",
@@ -515,6 +458,7 @@ def update(
transcriber: typing.Optional[UpdateAssistantDtoTranscriber] = OMIT,
model: typing.Optional[UpdateAssistantDtoModel] = OMIT,
voice: typing.Optional[UpdateAssistantDtoVoice] = OMIT,
+ first_message: typing.Optional[str] = OMIT,
first_message_mode: typing.Optional[UpdateAssistantDtoFirstMessageMode] = OMIT,
hipaa_enabled: typing.Optional[bool] = OMIT,
client_messages: typing.Optional[typing.Sequence[UpdateAssistantDtoClientMessagesItem]] = OMIT,
@@ -522,19 +466,15 @@ def update(
silence_timeout_seconds: typing.Optional[float] = OMIT,
max_duration_seconds: typing.Optional[float] = OMIT,
background_sound: typing.Optional[UpdateAssistantDtoBackgroundSound] = OMIT,
- backchanneling_enabled: typing.Optional[bool] = OMIT,
background_denoising_enabled: typing.Optional[bool] = OMIT,
model_output_in_messages_enabled: typing.Optional[bool] = OMIT,
transport_configurations: typing.Optional[typing.Sequence[TransportConfigurationTwilio]] = OMIT,
name: typing.Optional[str] = OMIT,
- first_message: typing.Optional[str] = OMIT,
voicemail_detection: typing.Optional[TwilioVoicemailDetection] = OMIT,
voicemail_message: typing.Optional[str] = OMIT,
end_call_message: typing.Optional[str] = OMIT,
end_call_phrases: typing.Optional[typing.Sequence[str]] = OMIT,
metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
- server_url: typing.Optional[str] = OMIT,
- server_url_secret: typing.Optional[str] = OMIT,
analysis_plan: typing.Optional[AnalysisPlan] = OMIT,
artifact_plan: typing.Optional[ArtifactPlan] = OMIT,
message_plan: typing.Optional[MessagePlan] = OMIT,
@@ -542,6 +482,7 @@ def update(
stop_speaking_plan: typing.Optional[StopSpeakingPlan] = OMIT,
monitor_plan: typing.Optional[MonitorPlan] = OMIT,
credential_ids: typing.Optional[typing.Sequence[str]] = OMIT,
+ server: typing.Optional[Server] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> Assistant:
"""
@@ -558,6 +499,11 @@ def update(
voice : typing.Optional[UpdateAssistantDtoVoice]
These are the options for the assistant's voice.
+ first_message : typing.Optional[str]
+ This is the first message that the assistant will say. This can also be a URL to a containerized audio file (mp3, wav, etc.).
+
+ If unspecified, assistant will wait for user to speak and use the model to respond once they speak.
+
first_message_mode : typing.Optional[UpdateAssistantDtoFirstMessageMode]
This is the mode for the first message. Default is 'assistant-speaks-first'.
@@ -572,7 +518,7 @@ def update(
When this is enabled, no logs, recordings, or transcriptions will be stored. At the end of the call, you will still receive an end-of-call-report message to store on your server. Defaults to false.
client_messages : typing.Optional[typing.Sequence[UpdateAssistantDtoClientMessagesItem]]
- These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transcript,tool-calls,user-interrupted,voice-input. You can check the shape of the messages in ClientMessage schema.
+ These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transfer-update,transcript,tool-calls,user-interrupted,voice-input. You can check the shape of the messages in ClientMessage schema.
server_messages : typing.Optional[typing.Sequence[UpdateAssistantDtoServerMessagesItem]]
These are the messages that will be sent to your Server URL. Default is conversation-update,end-of-call-report,function-call,hang,speech-update,status-update,tool-calls,transfer-destination-request,user-interrupted. You can check the shape of the messages in ServerMessage schema.
@@ -590,13 +536,6 @@ def update(
background_sound : typing.Optional[UpdateAssistantDtoBackgroundSound]
This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'.
- backchanneling_enabled : typing.Optional[bool]
- This determines whether the model says 'mhmm', 'ahem' etc. while user is speaking.
-
- Default `false` while in beta.
-
- @default false
-
background_denoising_enabled : typing.Optional[bool]
This enables filtering of noise and background speech while the user is talking.
@@ -619,11 +558,6 @@ def update(
This is required when you want to transfer between assistants in a call.
- first_message : typing.Optional[str]
- This is the first message that the assistant will say. This can also be a URL to a containerized audio file (mp3, wav, etc.).
-
- If unspecified, assistant will wait for user to speak and use the model to respond once they speak.
-
voicemail_detection : typing.Optional[TwilioVoicemailDetection]
These are the settings to configure or disable voicemail detection. Alternatively, voicemail detection can be configured using the model.tools=[VoicemailTool].
This uses Twilio's built-in detection while the VoicemailTool relies on the model to detect if a voicemail was reached.
@@ -645,18 +579,6 @@ def update(
metadata : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
This is for metadata you want to store on the assistant.
- server_url : typing.Optional[str]
- This is the URL Vapi will communicate with via HTTP GET and POST Requests. This is used for retrieving context, function calling, and end-of-call reports.
-
- All requests will be sent with the call object among other things relevant to that message. You can find more details in the Server URL documentation.
-
- This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: tool.server.url > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl
-
- server_url_secret : typing.Optional[str]
- This is the secret you can set that Vapi will send with every request to your server. Will be sent as a header called x-vapi-secret.
-
- Same precedence logic as serverUrl.
-
analysis_plan : typing.Optional[AnalysisPlan]
This is the plan for analysis of assistant's calls. Stored in `call.analysis`.
@@ -700,6 +622,15 @@ def update(
credential_ids : typing.Optional[typing.Sequence[str]]
These are the credentials that will be used for the assistant calls. By default, all the credentials are available for use in the call but you can provide a subset using this.
+ server : typing.Optional[Server]
+ This is where Vapi will send webhooks. You can find all webhooks available along with their shape in ServerMessage schema.
+
+ The order of precedence is:
+
+ 1. assistant.server.url
+ 2. phoneNumber.serverUrl
+ 3. org.serverUrl
+
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -707,17 +638,6 @@ def update(
-------
Assistant
-
- Examples
- --------
- from vapi import Vapi
-
- client = Vapi(
- token="YOUR_TOKEN",
- )
- client.assistants.update(
- id="id",
- )
"""
_response = self._client_wrapper.httpx_client.request(
f"assistant/{jsonable_encoder(id)}",
@@ -732,6 +652,7 @@ def update(
"voice": convert_and_respect_annotation_metadata(
object_=voice, annotation=UpdateAssistantDtoVoice, direction="write"
),
+ "firstMessage": first_message,
"firstMessageMode": first_message_mode,
"hipaaEnabled": hipaa_enabled,
"clientMessages": client_messages,
@@ -739,7 +660,6 @@ def update(
"silenceTimeoutSeconds": silence_timeout_seconds,
"maxDurationSeconds": max_duration_seconds,
"backgroundSound": background_sound,
- "backchannelingEnabled": backchanneling_enabled,
"backgroundDenoisingEnabled": background_denoising_enabled,
"modelOutputInMessagesEnabled": model_output_in_messages_enabled,
"transportConfigurations": convert_and_respect_annotation_metadata(
@@ -748,7 +668,6 @@ def update(
direction="write",
),
"name": name,
- "firstMessage": first_message,
"voicemailDetection": convert_and_respect_annotation_metadata(
object_=voicemail_detection, annotation=TwilioVoicemailDetection, direction="write"
),
@@ -756,8 +675,6 @@ def update(
"endCallMessage": end_call_message,
"endCallPhrases": end_call_phrases,
"metadata": metadata,
- "serverUrl": server_url,
- "serverUrlSecret": server_url_secret,
"analysisPlan": convert_and_respect_annotation_metadata(
object_=analysis_plan, annotation=AnalysisPlan, direction="write"
),
@@ -777,6 +694,10 @@ def update(
object_=monitor_plan, annotation=MonitorPlan, direction="write"
),
"credentialIds": credential_ids,
+ "server": convert_and_respect_annotation_metadata(object_=server, annotation=Server, direction="write"),
+ },
+ headers={
+ "content-type": "application/json",
},
request_options=request_options,
omit=OMIT,
@@ -851,23 +772,6 @@ async def list(
-------
typing.List[Assistant]
-
- Examples
- --------
- import asyncio
-
- from vapi import AsyncVapi
-
- client = AsyncVapi(
- token="YOUR_TOKEN",
- )
-
-
- async def main() -> None:
- await client.assistants.list()
-
-
- asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
"assistant",
@@ -905,6 +809,7 @@ async def create(
transcriber: typing.Optional[CreateAssistantDtoTranscriber] = OMIT,
model: typing.Optional[CreateAssistantDtoModel] = OMIT,
voice: typing.Optional[CreateAssistantDtoVoice] = OMIT,
+ first_message: typing.Optional[str] = OMIT,
first_message_mode: typing.Optional[CreateAssistantDtoFirstMessageMode] = OMIT,
hipaa_enabled: typing.Optional[bool] = OMIT,
client_messages: typing.Optional[typing.Sequence[CreateAssistantDtoClientMessagesItem]] = OMIT,
@@ -912,19 +817,15 @@ async def create(
silence_timeout_seconds: typing.Optional[float] = OMIT,
max_duration_seconds: typing.Optional[float] = OMIT,
background_sound: typing.Optional[CreateAssistantDtoBackgroundSound] = OMIT,
- backchanneling_enabled: typing.Optional[bool] = OMIT,
background_denoising_enabled: typing.Optional[bool] = OMIT,
model_output_in_messages_enabled: typing.Optional[bool] = OMIT,
transport_configurations: typing.Optional[typing.Sequence[TransportConfigurationTwilio]] = OMIT,
name: typing.Optional[str] = OMIT,
- first_message: typing.Optional[str] = OMIT,
voicemail_detection: typing.Optional[TwilioVoicemailDetection] = OMIT,
voicemail_message: typing.Optional[str] = OMIT,
end_call_message: typing.Optional[str] = OMIT,
end_call_phrases: typing.Optional[typing.Sequence[str]] = OMIT,
metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
- server_url: typing.Optional[str] = OMIT,
- server_url_secret: typing.Optional[str] = OMIT,
analysis_plan: typing.Optional[AnalysisPlan] = OMIT,
artifact_plan: typing.Optional[ArtifactPlan] = OMIT,
message_plan: typing.Optional[MessagePlan] = OMIT,
@@ -932,6 +833,7 @@ async def create(
stop_speaking_plan: typing.Optional[StopSpeakingPlan] = OMIT,
monitor_plan: typing.Optional[MonitorPlan] = OMIT,
credential_ids: typing.Optional[typing.Sequence[str]] = OMIT,
+ server: typing.Optional[Server] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> Assistant:
"""
@@ -946,11 +848,15 @@ async def create(
voice : typing.Optional[CreateAssistantDtoVoice]
These are the options for the assistant's voice.
+ first_message : typing.Optional[str]
+ This is the first message that the assistant will say. This can also be a URL to a containerized audio file (mp3, wav, etc.).
+
+ If unspecified, assistant will wait for user to speak and use the model to respond once they speak.
+
first_message_mode : typing.Optional[CreateAssistantDtoFirstMessageMode]
This is the mode for the first message. Default is 'assistant-speaks-first'.
Use:
-
- 'assistant-speaks-first' to have the assistant speak first.
- 'assistant-waits-for-user' to have the assistant wait for the user to speak first.
- 'assistant-speaks-first-with-model-generated-message' to have the assistant speak first with a message generated by the model based on the conversation state. (`assistant.model.messages` at call start, `call.messages` at squad transfer points).
@@ -961,7 +867,7 @@ async def create(
When this is enabled, no logs, recordings, or transcriptions will be stored. At the end of the call, you will still receive an end-of-call-report message to store on your server. Defaults to false.
client_messages : typing.Optional[typing.Sequence[CreateAssistantDtoClientMessagesItem]]
- These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transcript,tool-calls,user-interrupted,voice-input. You can check the shape of the messages in ClientMessage schema.
+ These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transfer-update,transcript,tool-calls,user-interrupted,voice-input. You can check the shape of the messages in ClientMessage schema.
server_messages : typing.Optional[typing.Sequence[CreateAssistantDtoServerMessagesItem]]
These are the messages that will be sent to your Server URL. Default is conversation-update,end-of-call-report,function-call,hang,speech-update,status-update,tool-calls,transfer-destination-request,user-interrupted. You can check the shape of the messages in ServerMessage schema.
@@ -979,13 +885,6 @@ async def create(
background_sound : typing.Optional[CreateAssistantDtoBackgroundSound]
This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'.
- backchanneling_enabled : typing.Optional[bool]
- This determines whether the model says 'mhmm', 'ahem' etc. while user is speaking.
-
- Default `false` while in beta.
-
- @default false
-
background_denoising_enabled : typing.Optional[bool]
This enables filtering of noise and background speech while the user is talking.
@@ -1008,11 +907,6 @@ async def create(
This is required when you want to transfer between assistants in a call.
- first_message : typing.Optional[str]
- This is the first message that the assistant will say. This can also be a URL to a containerized audio file (mp3, wav, etc.).
-
- If unspecified, assistant will wait for user to speak and use the model to respond once they speak.
-
voicemail_detection : typing.Optional[TwilioVoicemailDetection]
These are the settings to configure or disable voicemail detection. Alternatively, voicemail detection can be configured using the model.tools=[VoicemailTool].
This uses Twilio's built-in detection while the VoicemailTool relies on the model to detect if a voicemail was reached.
@@ -1034,18 +928,6 @@ async def create(
metadata : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
This is for metadata you want to store on the assistant.
- server_url : typing.Optional[str]
- This is the URL Vapi will communicate with via HTTP GET and POST Requests. This is used for retrieving context, function calling, and end-of-call reports.
-
- All requests will be sent with the call object among other things relevant to that message. You can find more details in the Server URL documentation.
-
- This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: tool.server.url > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl
-
- server_url_secret : typing.Optional[str]
- This is the secret you can set that Vapi will send with every request to your server. Will be sent as a header called x-vapi-secret.
-
- Same precedence logic as serverUrl.
-
analysis_plan : typing.Optional[AnalysisPlan]
This is the plan for analysis of assistant's calls. Stored in `call.analysis`.
@@ -1063,7 +945,6 @@ async def create(
This is the plan for when the assistant should start talking.
You should configure this if you're running into these issues:
-
- The assistant is too slow to start talking after the customer is done speaking.
- The assistant is too fast to start talking after the customer is done speaking.
- The assistant is so fast that it's actually interrupting the customer.
@@ -1072,7 +953,6 @@ async def create(
This is the plan for when assistant should stop talking on customer interruption.
You should configure this if you're running into these issues:
-
- The assistant is too slow to recognize customer's interruption.
- The assistant is too fast to recognize customer's interruption.
- The assistant is getting interrupted by phrases that are just acknowledgments.
@@ -1083,7 +963,6 @@ async def create(
This is the plan for real-time monitoring of the assistant's calls.
Usage:
-
- To enable live listening of the assistant's calls, set `monitorPlan.listenEnabled` to `true`.
- To enable live control of the assistant's calls, set `monitorPlan.controlEnabled` to `true`.
@@ -1092,6 +971,15 @@ async def create(
credential_ids : typing.Optional[typing.Sequence[str]]
These are the credentials that will be used for the assistant calls. By default, all the credentials are available for use in the call but you can provide a subset using this.
+ server : typing.Optional[Server]
+ This is where Vapi will send webhooks. You can find all webhooks available along with their shape in ServerMessage schema.
+
+ The order of precedence is:
+
+ 1. assistant.server.url
+ 2. phoneNumber.serverUrl
+ 3. org.serverUrl
+
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -1099,23 +987,6 @@ async def create(
-------
Assistant
-
- Examples
- --------
- import asyncio
-
- from vapi import AsyncVapi
-
- client = AsyncVapi(
- token="YOUR_TOKEN",
- )
-
-
- async def main() -> None:
- await client.assistants.create()
-
-
- asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
"assistant",
@@ -1130,6 +1001,7 @@ async def main() -> None:
"voice": convert_and_respect_annotation_metadata(
object_=voice, annotation=CreateAssistantDtoVoice, direction="write"
),
+ "firstMessage": first_message,
"firstMessageMode": first_message_mode,
"hipaaEnabled": hipaa_enabled,
"clientMessages": client_messages,
@@ -1137,7 +1009,6 @@ async def main() -> None:
"silenceTimeoutSeconds": silence_timeout_seconds,
"maxDurationSeconds": max_duration_seconds,
"backgroundSound": background_sound,
- "backchannelingEnabled": backchanneling_enabled,
"backgroundDenoisingEnabled": background_denoising_enabled,
"modelOutputInMessagesEnabled": model_output_in_messages_enabled,
"transportConfigurations": convert_and_respect_annotation_metadata(
@@ -1146,7 +1017,6 @@ async def main() -> None:
direction="write",
),
"name": name,
- "firstMessage": first_message,
"voicemailDetection": convert_and_respect_annotation_metadata(
object_=voicemail_detection, annotation=TwilioVoicemailDetection, direction="write"
),
@@ -1154,8 +1024,6 @@ async def main() -> None:
"endCallMessage": end_call_message,
"endCallPhrases": end_call_phrases,
"metadata": metadata,
- "serverUrl": server_url,
- "serverUrlSecret": server_url_secret,
"analysisPlan": convert_and_respect_annotation_metadata(
object_=analysis_plan, annotation=AnalysisPlan, direction="write"
),
@@ -1175,6 +1043,7 @@ async def main() -> None:
object_=monitor_plan, annotation=MonitorPlan, direction="write"
),
"credentialIds": credential_ids,
+ "server": convert_and_respect_annotation_metadata(object_=server, annotation=Server, direction="write"),
},
request_options=request_options,
omit=OMIT,
@@ -1206,25 +1075,6 @@ async def get(self, id: str, *, request_options: typing.Optional[RequestOptions]
-------
Assistant
-
- Examples
- --------
- import asyncio
-
- from vapi import AsyncVapi
-
- client = AsyncVapi(
- token="YOUR_TOKEN",
- )
-
-
- async def main() -> None:
- await client.assistants.get(
- id="id",
- )
-
-
- asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"assistant/{jsonable_encoder(id)}",
@@ -1258,25 +1108,6 @@ async def delete(self, id: str, *, request_options: typing.Optional[RequestOptio
-------
Assistant
-
- Examples
- --------
- import asyncio
-
- from vapi import AsyncVapi
-
- client = AsyncVapi(
- token="YOUR_TOKEN",
- )
-
-
- async def main() -> None:
- await client.assistants.delete(
- id="id",
- )
-
-
- asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"assistant/{jsonable_encoder(id)}",
@@ -1304,6 +1135,7 @@ async def update(
transcriber: typing.Optional[UpdateAssistantDtoTranscriber] = OMIT,
model: typing.Optional[UpdateAssistantDtoModel] = OMIT,
voice: typing.Optional[UpdateAssistantDtoVoice] = OMIT,
+ first_message: typing.Optional[str] = OMIT,
first_message_mode: typing.Optional[UpdateAssistantDtoFirstMessageMode] = OMIT,
hipaa_enabled: typing.Optional[bool] = OMIT,
client_messages: typing.Optional[typing.Sequence[UpdateAssistantDtoClientMessagesItem]] = OMIT,
@@ -1311,19 +1143,15 @@ async def update(
silence_timeout_seconds: typing.Optional[float] = OMIT,
max_duration_seconds: typing.Optional[float] = OMIT,
background_sound: typing.Optional[UpdateAssistantDtoBackgroundSound] = OMIT,
- backchanneling_enabled: typing.Optional[bool] = OMIT,
background_denoising_enabled: typing.Optional[bool] = OMIT,
model_output_in_messages_enabled: typing.Optional[bool] = OMIT,
transport_configurations: typing.Optional[typing.Sequence[TransportConfigurationTwilio]] = OMIT,
name: typing.Optional[str] = OMIT,
- first_message: typing.Optional[str] = OMIT,
voicemail_detection: typing.Optional[TwilioVoicemailDetection] = OMIT,
voicemail_message: typing.Optional[str] = OMIT,
end_call_message: typing.Optional[str] = OMIT,
end_call_phrases: typing.Optional[typing.Sequence[str]] = OMIT,
metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
- server_url: typing.Optional[str] = OMIT,
- server_url_secret: typing.Optional[str] = OMIT,
analysis_plan: typing.Optional[AnalysisPlan] = OMIT,
artifact_plan: typing.Optional[ArtifactPlan] = OMIT,
message_plan: typing.Optional[MessagePlan] = OMIT,
@@ -1331,6 +1159,7 @@ async def update(
stop_speaking_plan: typing.Optional[StopSpeakingPlan] = OMIT,
monitor_plan: typing.Optional[MonitorPlan] = OMIT,
credential_ids: typing.Optional[typing.Sequence[str]] = OMIT,
+ server: typing.Optional[Server] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> Assistant:
"""
@@ -1347,6 +1176,11 @@ async def update(
voice : typing.Optional[UpdateAssistantDtoVoice]
These are the options for the assistant's voice.
+ first_message : typing.Optional[str]
+ This is the first message that the assistant will say. This can also be a URL to a containerized audio file (mp3, wav, etc.).
+
+ If unspecified, assistant will wait for user to speak and use the model to respond once they speak.
+
first_message_mode : typing.Optional[UpdateAssistantDtoFirstMessageMode]
This is the mode for the first message. Default is 'assistant-speaks-first'.
@@ -1361,7 +1195,7 @@ async def update(
When this is enabled, no logs, recordings, or transcriptions will be stored. At the end of the call, you will still receive an end-of-call-report message to store on your server. Defaults to false.
client_messages : typing.Optional[typing.Sequence[UpdateAssistantDtoClientMessagesItem]]
- These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transcript,tool-calls,user-interrupted,voice-input. You can check the shape of the messages in ClientMessage schema.
+ These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transfer-update,transcript,tool-calls,user-interrupted,voice-input. You can check the shape of the messages in ClientMessage schema.
server_messages : typing.Optional[typing.Sequence[UpdateAssistantDtoServerMessagesItem]]
These are the messages that will be sent to your Server URL. Default is conversation-update,end-of-call-report,function-call,hang,speech-update,status-update,tool-calls,transfer-destination-request,user-interrupted. You can check the shape of the messages in ServerMessage schema.
@@ -1379,13 +1213,6 @@ async def update(
background_sound : typing.Optional[UpdateAssistantDtoBackgroundSound]
This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'.
- backchanneling_enabled : typing.Optional[bool]
- This determines whether the model says 'mhmm', 'ahem' etc. while user is speaking.
-
- Default `false` while in beta.
-
- @default false
-
background_denoising_enabled : typing.Optional[bool]
This enables filtering of noise and background speech while the user is talking.
@@ -1408,11 +1235,6 @@ async def update(
This is required when you want to transfer between assistants in a call.
- first_message : typing.Optional[str]
- This is the first message that the assistant will say. This can also be a URL to a containerized audio file (mp3, wav, etc.).
-
- If unspecified, assistant will wait for user to speak and use the model to respond once they speak.
-
voicemail_detection : typing.Optional[TwilioVoicemailDetection]
These are the settings to configure or disable voicemail detection. Alternatively, voicemail detection can be configured using the model.tools=[VoicemailTool].
This uses Twilio's built-in detection while the VoicemailTool relies on the model to detect if a voicemail was reached.
@@ -1434,18 +1256,6 @@ async def update(
metadata : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
This is for metadata you want to store on the assistant.
- server_url : typing.Optional[str]
- This is the URL Vapi will communicate with via HTTP GET and POST Requests. This is used for retrieving context, function calling, and end-of-call reports.
-
- All requests will be sent with the call object among other things relevant to that message. You can find more details in the Server URL documentation.
-
- This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: tool.server.url > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl
-
- server_url_secret : typing.Optional[str]
- This is the secret you can set that Vapi will send with every request to your server. Will be sent as a header called x-vapi-secret.
-
- Same precedence logic as serverUrl.
-
analysis_plan : typing.Optional[AnalysisPlan]
This is the plan for analysis of assistant's calls. Stored in `call.analysis`.
@@ -1489,6 +1299,15 @@ async def update(
credential_ids : typing.Optional[typing.Sequence[str]]
These are the credentials that will be used for the assistant calls. By default, all the credentials are available for use in the call but you can provide a subset using this.
+ server : typing.Optional[Server]
+ This is where Vapi will send webhooks. You can find all webhooks available along with their shape in ServerMessage schema.
+
+ The order of precedence is:
+
+ 1. assistant.server.url
+ 2. phoneNumber.serverUrl
+ 3. org.serverUrl
+
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -1496,25 +1315,6 @@ async def update(
-------
Assistant
-
- Examples
- --------
- import asyncio
-
- from vapi import AsyncVapi
-
- client = AsyncVapi(
- token="YOUR_TOKEN",
- )
-
-
- async def main() -> None:
- await client.assistants.update(
- id="id",
- )
-
-
- asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"assistant/{jsonable_encoder(id)}",
@@ -1529,6 +1329,7 @@ async def main() -> None:
"voice": convert_and_respect_annotation_metadata(
object_=voice, annotation=UpdateAssistantDtoVoice, direction="write"
),
+ "firstMessage": first_message,
"firstMessageMode": first_message_mode,
"hipaaEnabled": hipaa_enabled,
"clientMessages": client_messages,
@@ -1536,7 +1337,6 @@ async def main() -> None:
"silenceTimeoutSeconds": silence_timeout_seconds,
"maxDurationSeconds": max_duration_seconds,
"backgroundSound": background_sound,
- "backchannelingEnabled": backchanneling_enabled,
"backgroundDenoisingEnabled": background_denoising_enabled,
"modelOutputInMessagesEnabled": model_output_in_messages_enabled,
"transportConfigurations": convert_and_respect_annotation_metadata(
@@ -1545,7 +1345,6 @@ async def main() -> None:
direction="write",
),
"name": name,
- "firstMessage": first_message,
"voicemailDetection": convert_and_respect_annotation_metadata(
object_=voicemail_detection, annotation=TwilioVoicemailDetection, direction="write"
),
@@ -1553,8 +1352,6 @@ async def main() -> None:
"endCallMessage": end_call_message,
"endCallPhrases": end_call_phrases,
"metadata": metadata,
- "serverUrl": server_url,
- "serverUrlSecret": server_url_secret,
"analysisPlan": convert_and_respect_annotation_metadata(
object_=analysis_plan, annotation=AnalysisPlan, direction="write"
),
@@ -1574,6 +1371,10 @@ async def main() -> None:
object_=monitor_plan, annotation=MonitorPlan, direction="write"
),
"credentialIds": credential_ids,
+ "server": convert_and_respect_annotation_metadata(object_=server, annotation=Server, direction="write"),
+ },
+ headers={
+ "content-type": "application/json",
},
request_options=request_options,
omit=OMIT,
diff --git a/src/vapi/assistants/types/update_assistant_dto_client_messages_item.py b/src/vapi/assistants/types/update_assistant_dto_client_messages_item.py
index 543bf4d..47a42fe 100644
--- a/src/vapi/assistants/types/update_assistant_dto_client_messages_item.py
+++ b/src/vapi/assistants/types/update_assistant_dto_client_messages_item.py
@@ -16,6 +16,7 @@
"transcript",
"tool-calls",
"tool-calls-result",
+ "transfer-update",
"user-interrupted",
"voice-input",
],
diff --git a/src/vapi/assistants/types/update_assistant_dto_model.py b/src/vapi/assistants/types/update_assistant_dto_model.py
index 7b31ca9..4e7169d 100644
--- a/src/vapi/assistants/types/update_assistant_dto_model.py
+++ b/src/vapi/assistants/types/update_assistant_dto_model.py
@@ -5,22 +5,28 @@
from ...types.anthropic_model import AnthropicModel
from ...types.custom_llm_model import CustomLlmModel
from ...types.deep_infra_model import DeepInfraModel
+from ...types.google_model import GoogleModel
from ...types.groq_model import GroqModel
+from ...types.inflection_ai_model import InflectionAiModel
from ...types.open_ai_model import OpenAiModel
from ...types.open_router_model import OpenRouterModel
from ...types.perplexity_ai_model import PerplexityAiModel
from ...types.together_ai_model import TogetherAiModel
from ...types.vapi_model import VapiModel
+from ...types.xai_model import XaiModel
UpdateAssistantDtoModel = typing.Union[
AnyscaleModel,
AnthropicModel,
CustomLlmModel,
DeepInfraModel,
+ GoogleModel,
GroqModel,
+ InflectionAiModel,
OpenAiModel,
OpenRouterModel,
PerplexityAiModel,
TogetherAiModel,
VapiModel,
+ XaiModel,
]
diff --git a/src/vapi/assistants/types/update_assistant_dto_server_messages_item.py b/src/vapi/assistants/types/update_assistant_dto_server_messages_item.py
index f903250..83615e8 100644
--- a/src/vapi/assistants/types/update_assistant_dto_server_messages_item.py
+++ b/src/vapi/assistants/types/update_assistant_dto_server_messages_item.py
@@ -9,6 +9,7 @@
"function-call",
"hang",
"language-changed",
+ "language-change-detected",
"model-output",
"phone-call-control",
"speech-update",
diff --git a/src/vapi/assistants/types/update_assistant_dto_transcriber.py b/src/vapi/assistants/types/update_assistant_dto_transcriber.py
index 994d53d..a9e3270 100644
--- a/src/vapi/assistants/types/update_assistant_dto_transcriber.py
+++ b/src/vapi/assistants/types/update_assistant_dto_transcriber.py
@@ -1,8 +1,12 @@
# This file was auto-generated by Fern from our API Definition.
import typing
+from ...types.assembly_ai_transcriber import AssemblyAiTranscriber
+from ...types.custom_transcriber import CustomTranscriber
from ...types.deepgram_transcriber import DeepgramTranscriber
from ...types.gladia_transcriber import GladiaTranscriber
from ...types.talkscriber_transcriber import TalkscriberTranscriber
-UpdateAssistantDtoTranscriber = typing.Union[DeepgramTranscriber, GladiaTranscriber, TalkscriberTranscriber]
+UpdateAssistantDtoTranscriber = typing.Union[
+ AssemblyAiTranscriber, CustomTranscriber, DeepgramTranscriber, GladiaTranscriber, TalkscriberTranscriber
+]
diff --git a/src/vapi/assistants/types/update_assistant_dto_voice.py b/src/vapi/assistants/types/update_assistant_dto_voice.py
index 04e5fe7..729a9fd 100644
--- a/src/vapi/assistants/types/update_assistant_dto_voice.py
+++ b/src/vapi/assistants/types/update_assistant_dto_voice.py
@@ -3,6 +3,7 @@
import typing
from ...types.azure_voice import AzureVoice
from ...types.cartesia_voice import CartesiaVoice
+from ...types.custom_voice import CustomVoice
from ...types.deepgram_voice import DeepgramVoice
from ...types.eleven_labs_voice import ElevenLabsVoice
from ...types.lmnt_voice import LmntVoice
@@ -10,10 +11,12 @@
from ...types.open_ai_voice import OpenAiVoice
from ...types.play_ht_voice import PlayHtVoice
from ...types.rime_ai_voice import RimeAiVoice
+from ...types.tavus_voice import TavusVoice
UpdateAssistantDtoVoice = typing.Union[
AzureVoice,
CartesiaVoice,
+ CustomVoice,
DeepgramVoice,
ElevenLabsVoice,
LmntVoice,
@@ -21,4 +24,5 @@
OpenAiVoice,
PlayHtVoice,
RimeAiVoice,
+ TavusVoice,
]
diff --git a/src/vapi/blocks/client.py b/src/vapi/blocks/client.py
index 7071f64..e526005 100644
--- a/src/vapi/blocks/client.py
+++ b/src/vapi/blocks/client.py
@@ -81,15 +81,6 @@ def list(
-------
typing.List[BlocksListResponseItem]
-
- Examples
- --------
- from vapi import Vapi
-
- client = Vapi(
- token="YOUR_TOKEN",
- )
- client.blocks.list()
"""
_response = self._client_wrapper.httpx_client.request(
"block",
@@ -136,19 +127,6 @@ def create(
-------
BlocksCreateResponse
-
- Examples
- --------
- from vapi import CreateConversationBlockDto, Vapi
-
- client = Vapi(
- token="YOUR_TOKEN",
- )
- client.blocks.create(
- request=CreateConversationBlockDto(
- instruction="instruction",
- ),
- )
"""
_response = self._client_wrapper.httpx_client.request(
"block",
@@ -186,17 +164,6 @@ def get(self, id: str, *, request_options: typing.Optional[RequestOptions] = Non
-------
BlocksGetResponse
-
- Examples
- --------
- from vapi import Vapi
-
- client = Vapi(
- token="YOUR_TOKEN",
- )
- client.blocks.get(
- id="id",
- )
"""
_response = self._client_wrapper.httpx_client.request(
f"block/{jsonable_encoder(id)}",
@@ -230,17 +197,6 @@ def delete(self, id: str, *, request_options: typing.Optional[RequestOptions] =
-------
BlocksDeleteResponse
-
- Examples
- --------
- from vapi import Vapi
-
- client = Vapi(
- token="YOUR_TOKEN",
- )
- client.blocks.delete(
- id="id",
- )
"""
_response = self._client_wrapper.httpx_client.request(
f"block/{jsonable_encoder(id)}",
@@ -342,17 +298,6 @@ def update(
-------
BlocksUpdateResponse
-
- Examples
- --------
- from vapi import Vapi
-
- client = Vapi(
- token="YOUR_TOKEN",
- )
- client.blocks.update(
- id="id",
- )
"""
_response = self._client_wrapper.httpx_client.request(
f"block/{jsonable_encoder(id)}",
@@ -377,6 +322,9 @@ def update(
"instruction": instruction,
"toolId": tool_id,
},
+ headers={
+ "content-type": "application/json",
+ },
request_options=request_options,
omit=OMIT,
)
@@ -450,23 +398,6 @@ async def list(
-------
typing.List[BlocksListResponseItem]
-
- Examples
- --------
- import asyncio
-
- from vapi import AsyncVapi
-
- client = AsyncVapi(
- token="YOUR_TOKEN",
- )
-
-
- async def main() -> None:
- await client.blocks.list()
-
-
- asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
"block",
@@ -513,27 +444,6 @@ async def create(
-------
BlocksCreateResponse
-
- Examples
- --------
- import asyncio
-
- from vapi import AsyncVapi, CreateConversationBlockDto
-
- client = AsyncVapi(
- token="YOUR_TOKEN",
- )
-
-
- async def main() -> None:
- await client.blocks.create(
- request=CreateConversationBlockDto(
- instruction="instruction",
- ),
- )
-
-
- asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
"block",
@@ -571,25 +481,6 @@ async def get(self, id: str, *, request_options: typing.Optional[RequestOptions]
-------
BlocksGetResponse
-
- Examples
- --------
- import asyncio
-
- from vapi import AsyncVapi
-
- client = AsyncVapi(
- token="YOUR_TOKEN",
- )
-
-
- async def main() -> None:
- await client.blocks.get(
- id="id",
- )
-
-
- asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"block/{jsonable_encoder(id)}",
@@ -623,25 +514,6 @@ async def delete(self, id: str, *, request_options: typing.Optional[RequestOptio
-------
BlocksDeleteResponse
-
- Examples
- --------
- import asyncio
-
- from vapi import AsyncVapi
-
- client = AsyncVapi(
- token="YOUR_TOKEN",
- )
-
-
- async def main() -> None:
- await client.blocks.delete(
- id="id",
- )
-
-
- asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"block/{jsonable_encoder(id)}",
@@ -743,25 +615,6 @@ async def update(
-------
BlocksUpdateResponse
-
- Examples
- --------
- import asyncio
-
- from vapi import AsyncVapi
-
- client = AsyncVapi(
- token="YOUR_TOKEN",
- )
-
-
- async def main() -> None:
- await client.blocks.update(
- id="id",
- )
-
-
- asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"block/{jsonable_encoder(id)}",
@@ -786,6 +639,9 @@ async def main() -> None:
"instruction": instruction,
"toolId": tool_id,
},
+ headers={
+ "content-type": "application/json",
+ },
request_options=request_options,
omit=OMIT,
)
diff --git a/src/vapi/calls/client.py b/src/vapi/calls/client.py
index 5328d82..4c57203 100644
--- a/src/vapi/calls/client.py
+++ b/src/vapi/calls/client.py
@@ -29,7 +29,9 @@ def __init__(self, *, client_wrapper: SyncClientWrapper):
def list(
self,
*,
+ id: typing.Optional[str] = None,
assistant_id: typing.Optional[str] = None,
+ phone_number_id: typing.Optional[str] = None,
limit: typing.Optional[float] = None,
created_at_gt: typing.Optional[dt.datetime] = None,
created_at_lt: typing.Optional[dt.datetime] = None,
@@ -44,9 +46,17 @@ def list(
"""
Parameters
----------
+ id : typing.Optional[str]
+ This is the unique identifier for the call.
+
assistant_id : typing.Optional[str]
This will return calls with the specified assistantId.
+ phone_number_id : typing.Optional[str]
+ This is the phone number that will be used for the call. To use a transient number, use `phoneNumber` instead.
+
+ Only relevant for `outboundPhoneCall` and `inboundPhoneCall` type.
+
limit : typing.Optional[float]
This is the maximum number of items to return. Defaults to 100.
@@ -81,21 +91,14 @@ def list(
-------
typing.List[Call]
-
- Examples
- --------
- from vapi import Vapi
-
- client = Vapi(
- token="YOUR_TOKEN",
- )
- client.calls.list()
"""
_response = self._client_wrapper.httpx_client.request(
"call",
method="GET",
params={
+ "id": id,
"assistantId": assistant_id,
+ "phoneNumberId": phone_number_id,
"limit": limit,
"createdAtGt": serialize_datetime(created_at_gt) if created_at_gt is not None else None,
"createdAtLt": serialize_datetime(created_at_lt) if created_at_lt is not None else None,
@@ -185,15 +188,6 @@ def create(
-------
Call
-
- Examples
- --------
- from vapi import Vapi
-
- client = Vapi(
- token="YOUR_TOKEN",
- )
- client.calls.create()
"""
_response = self._client_wrapper.httpx_client.request(
"call",
@@ -220,6 +214,9 @@ def create(
object_=customer, annotation=CreateCustomerDto, direction="write"
),
},
+ headers={
+ "content-type": "application/json",
+ },
request_options=request_options,
omit=OMIT,
)
@@ -250,17 +247,6 @@ def get(self, id: str, *, request_options: typing.Optional[RequestOptions] = Non
-------
Call
-
- Examples
- --------
- from vapi import Vapi
-
- client = Vapi(
- token="YOUR_TOKEN",
- )
- client.calls.get(
- id="id",
- )
"""
_response = self._client_wrapper.httpx_client.request(
f"call/{jsonable_encoder(id)}",
@@ -294,17 +280,6 @@ def delete(self, id: str, *, request_options: typing.Optional[RequestOptions] =
-------
Call
-
- Examples
- --------
- from vapi import Vapi
-
- client = Vapi(
- token="YOUR_TOKEN",
- )
- client.calls.delete(
- id="id",
- )
"""
_response = self._client_wrapper.httpx_client.request(
f"call/{jsonable_encoder(id)}",
@@ -343,17 +318,6 @@ def update(
-------
Call
-
- Examples
- --------
- from vapi import Vapi
-
- client = Vapi(
- token="YOUR_TOKEN",
- )
- client.calls.update(
- id="id",
- )
"""
_response = self._client_wrapper.httpx_client.request(
f"call/{jsonable_encoder(id)}",
@@ -361,6 +325,9 @@ def update(
json={
"name": name,
},
+ headers={
+ "content-type": "application/json",
+ },
request_options=request_options,
omit=OMIT,
)
@@ -386,7 +353,9 @@ def __init__(self, *, client_wrapper: AsyncClientWrapper):
async def list(
self,
*,
+ id: typing.Optional[str] = None,
assistant_id: typing.Optional[str] = None,
+ phone_number_id: typing.Optional[str] = None,
limit: typing.Optional[float] = None,
created_at_gt: typing.Optional[dt.datetime] = None,
created_at_lt: typing.Optional[dt.datetime] = None,
@@ -401,9 +370,17 @@ async def list(
"""
Parameters
----------
+ id : typing.Optional[str]
+ This is the unique identifier for the call.
+
assistant_id : typing.Optional[str]
This will return calls with the specified assistantId.
+ phone_number_id : typing.Optional[str]
+ This is the phone number that will be used for the call. To use a transient number, use `phoneNumber` instead.
+
+ Only relevant for `outboundPhoneCall` and `inboundPhoneCall` type.
+
limit : typing.Optional[float]
This is the maximum number of items to return. Defaults to 100.
@@ -438,29 +415,14 @@ async def list(
-------
typing.List[Call]
-
- Examples
- --------
- import asyncio
-
- from vapi import AsyncVapi
-
- client = AsyncVapi(
- token="YOUR_TOKEN",
- )
-
-
- async def main() -> None:
- await client.calls.list()
-
-
- asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
"call",
method="GET",
params={
+ "id": id,
"assistantId": assistant_id,
+ "phoneNumberId": phone_number_id,
"limit": limit,
"createdAtGt": serialize_datetime(created_at_gt) if created_at_gt is not None else None,
"createdAtLt": serialize_datetime(created_at_lt) if created_at_lt is not None else None,
@@ -550,23 +512,6 @@ async def create(
-------
Call
-
- Examples
- --------
- import asyncio
-
- from vapi import AsyncVapi
-
- client = AsyncVapi(
- token="YOUR_TOKEN",
- )
-
-
- async def main() -> None:
- await client.calls.create()
-
-
- asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
"call",
@@ -593,6 +538,9 @@ async def main() -> None:
object_=customer, annotation=CreateCustomerDto, direction="write"
),
},
+ headers={
+ "content-type": "application/json",
+ },
request_options=request_options,
omit=OMIT,
)
@@ -623,25 +571,6 @@ async def get(self, id: str, *, request_options: typing.Optional[RequestOptions]
-------
Call
-
- Examples
- --------
- import asyncio
-
- from vapi import AsyncVapi
-
- client = AsyncVapi(
- token="YOUR_TOKEN",
- )
-
-
- async def main() -> None:
- await client.calls.get(
- id="id",
- )
-
-
- asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"call/{jsonable_encoder(id)}",
@@ -675,25 +604,6 @@ async def delete(self, id: str, *, request_options: typing.Optional[RequestOptio
-------
Call
-
- Examples
- --------
- import asyncio
-
- from vapi import AsyncVapi
-
- client = AsyncVapi(
- token="YOUR_TOKEN",
- )
-
-
- async def main() -> None:
- await client.calls.delete(
- id="id",
- )
-
-
- asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"call/{jsonable_encoder(id)}",
@@ -732,25 +642,6 @@ async def update(
-------
Call
-
- Examples
- --------
- import asyncio
-
- from vapi import AsyncVapi
-
- client = AsyncVapi(
- token="YOUR_TOKEN",
- )
-
-
- async def main() -> None:
- await client.calls.update(
- id="id",
- )
-
-
- asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"call/{jsonable_encoder(id)}",
@@ -758,6 +649,9 @@ async def main() -> None:
json={
"name": name,
},
+ headers={
+ "content-type": "application/json",
+ },
request_options=request_options,
omit=OMIT,
)
diff --git a/src/vapi/client.py b/src/vapi/client.py
index 3c805ba..babb10d 100644
--- a/src/vapi/client.py
+++ b/src/vapi/client.py
@@ -8,6 +8,7 @@
from .assistants.client import AssistantsClient
from .phone_numbers.client import PhoneNumbersClient
from .squads.client import SquadsClient
+from .knowledge_bases.client import KnowledgeBasesClient
from .blocks.client import BlocksClient
from .tools.client import ToolsClient
from .files.client import FilesClient
@@ -18,6 +19,7 @@
from .assistants.client import AsyncAssistantsClient
from .phone_numbers.client import AsyncPhoneNumbersClient
from .squads.client import AsyncSquadsClient
+from .knowledge_bases.client import AsyncKnowledgeBasesClient
from .blocks.client import AsyncBlocksClient
from .tools.client import AsyncToolsClient
from .files.client import AsyncFilesClient
@@ -43,7 +45,7 @@ class Vapi:
- token : typing.Union[str, typing.Callable[[], str]]
+ token : typing.Optional[typing.Union[str, typing.Callable[[], str]]]
timeout : typing.Optional[float]
The timeout to be used, in seconds, for requests. By default the timeout is 60 seconds, unless a custom httpx client is used, in which case this default is not enforced.
@@ -67,7 +69,7 @@ def __init__(
*,
base_url: typing.Optional[str] = None,
environment: VapiEnvironment = VapiEnvironment.DEFAULT,
- token: typing.Union[str, typing.Callable[[], str]],
+ token: typing.Optional[typing.Union[str, typing.Callable[[], str]]] = None,
timeout: typing.Optional[float] = None,
follow_redirects: typing.Optional[bool] = True,
httpx_client: typing.Optional[httpx.Client] = None,
@@ -87,6 +89,7 @@ def __init__(
self.assistants = AssistantsClient(client_wrapper=self._client_wrapper)
self.phone_numbers = PhoneNumbersClient(client_wrapper=self._client_wrapper)
self.squads = SquadsClient(client_wrapper=self._client_wrapper)
+ self.knowledge_bases = KnowledgeBasesClient(client_wrapper=self._client_wrapper)
self.blocks = BlocksClient(client_wrapper=self._client_wrapper)
self.tools = ToolsClient(client_wrapper=self._client_wrapper)
self.files = FilesClient(client_wrapper=self._client_wrapper)
@@ -112,7 +115,7 @@ class AsyncVapi:
- token : typing.Union[str, typing.Callable[[], str]]
+ token : typing.Optional[typing.Union[str, typing.Callable[[], str]]]
timeout : typing.Optional[float]
The timeout to be used, in seconds, for requests. By default the timeout is 60 seconds, unless a custom httpx client is used, in which case this default is not enforced.
@@ -136,7 +139,7 @@ def __init__(
*,
base_url: typing.Optional[str] = None,
environment: VapiEnvironment = VapiEnvironment.DEFAULT,
- token: typing.Union[str, typing.Callable[[], str]],
+ token: typing.Optional[typing.Union[str, typing.Callable[[], str]]] = None,
timeout: typing.Optional[float] = None,
follow_redirects: typing.Optional[bool] = True,
httpx_client: typing.Optional[httpx.AsyncClient] = None,
@@ -156,6 +159,7 @@ def __init__(
self.assistants = AsyncAssistantsClient(client_wrapper=self._client_wrapper)
self.phone_numbers = AsyncPhoneNumbersClient(client_wrapper=self._client_wrapper)
self.squads = AsyncSquadsClient(client_wrapper=self._client_wrapper)
+ self.knowledge_bases = AsyncKnowledgeBasesClient(client_wrapper=self._client_wrapper)
self.blocks = AsyncBlocksClient(client_wrapper=self._client_wrapper)
self.tools = AsyncToolsClient(client_wrapper=self._client_wrapper)
self.files = AsyncFilesClient(client_wrapper=self._client_wrapper)
diff --git a/src/vapi/core/client_wrapper.py b/src/vapi/core/client_wrapper.py
index 0d1d097..dbe522e 100644
--- a/src/vapi/core/client_wrapper.py
+++ b/src/vapi/core/client_wrapper.py
@@ -10,7 +10,7 @@ class BaseClientWrapper:
def __init__(
self,
*,
- token: typing.Union[str, typing.Callable[[], str]],
+ token: typing.Optional[typing.Union[str, typing.Callable[[], str]]] = None,
base_url: str,
timeout: typing.Optional[float] = None,
):
@@ -22,13 +22,15 @@ def get_headers(self) -> typing.Dict[str, str]:
headers: typing.Dict[str, str] = {
"X-Fern-Language": "Python",
"X-Fern-SDK-Name": "vapi_server_sdk",
- "X-Fern-SDK-Version": "0.1.0",
+ "X-Fern-SDK-Version": "0.2.0",
}
- headers["Authorization"] = f"Bearer {self._get_token()}"
+ token = self._get_token()
+ if token is not None:
+ headers["Authorization"] = f"Bearer {token}"
return headers
- def _get_token(self) -> str:
- if isinstance(self._token, str):
+ def _get_token(self) -> typing.Optional[str]:
+ if isinstance(self._token, str) or self._token is None:
return self._token
else:
return self._token()
@@ -44,7 +46,7 @@ class SyncClientWrapper(BaseClientWrapper):
def __init__(
self,
*,
- token: typing.Union[str, typing.Callable[[], str]],
+ token: typing.Optional[typing.Union[str, typing.Callable[[], str]]] = None,
base_url: str,
timeout: typing.Optional[float] = None,
httpx_client: httpx.Client,
@@ -62,7 +64,7 @@ class AsyncClientWrapper(BaseClientWrapper):
def __init__(
self,
*,
- token: typing.Union[str, typing.Callable[[], str]],
+ token: typing.Optional[typing.Union[str, typing.Callable[[], str]]] = None,
base_url: str,
timeout: typing.Optional[float] = None,
httpx_client: httpx.AsyncClient,
diff --git a/src/vapi/core/file.py b/src/vapi/core/file.py
index b4cbba3..44b0d27 100644
--- a/src/vapi/core/file.py
+++ b/src/vapi/core/file.py
@@ -43,20 +43,25 @@ def convert_file_dict_to_httpx_tuples(
return httpx_tuples
-def with_content_type(*, file: File, content_type: str) -> File:
- """ """
+def with_content_type(*, file: File, default_content_type: str) -> File:
+ """
+ This function resolves to the file's content type, if provided, and defaults
+ to the default_content_type value if not.
+ """
if isinstance(file, tuple):
if len(file) == 2:
filename, content = cast(Tuple[Optional[str], FileContent], file) # type: ignore
- return (filename, content, content_type)
+ return (filename, content, default_content_type)
elif len(file) == 3:
- filename, content, _ = cast(Tuple[Optional[str], FileContent, Optional[str]], file) # type: ignore
- return (filename, content, content_type)
+ filename, content, file_content_type = cast(Tuple[Optional[str], FileContent, Optional[str]], file) # type: ignore
+ out_content_type = file_content_type or default_content_type
+ return (filename, content, out_content_type)
elif len(file) == 4:
- filename, content, _, headers = cast( # type: ignore
+ filename, content, file_content_type, headers = cast( # type: ignore
Tuple[Optional[str], FileContent, Optional[str], Mapping[str, str]], file
)
- return (filename, content, content_type, headers)
+ out_content_type = file_content_type or default_content_type
+ return (filename, content, out_content_type, headers)
else:
raise ValueError(f"Unexpected tuple length: {len(file)}")
- return (None, file, content_type)
+ return (None, file, default_content_type)
diff --git a/src/vapi/core/http_client.py b/src/vapi/core/http_client.py
index eb4e894..1a1a131 100644
--- a/src/vapi/core/http_client.py
+++ b/src/vapi/core/http_client.py
@@ -227,9 +227,11 @@ def request(
json=json_body,
data=data_body,
content=content,
- files=convert_file_dict_to_httpx_tuples(remove_none_from_dict(files))
- if (files is not None and files is not omit)
- else None,
+ files=(
+ convert_file_dict_to_httpx_tuples(remove_omit_from_dict(remove_none_from_dict(files), omit))
+ if (files is not None and files is not omit)
+ else None
+ ),
timeout=timeout,
)
@@ -311,9 +313,11 @@ def stream(
json=json_body,
data=data_body,
content=content,
- files=convert_file_dict_to_httpx_tuples(remove_none_from_dict(files))
- if (files is not None and files is not omit)
- else None,
+ files=(
+ convert_file_dict_to_httpx_tuples(remove_omit_from_dict(remove_none_from_dict(files), omit))
+ if (files is not None and files is not omit)
+ else None
+ ),
timeout=timeout,
) as stream:
yield stream
@@ -400,7 +404,11 @@ async def request(
json=json_body,
data=data_body,
content=content,
- files=convert_file_dict_to_httpx_tuples(remove_none_from_dict(files)) if files is not None else None,
+ files=(
+ convert_file_dict_to_httpx_tuples(remove_omit_from_dict(remove_none_from_dict(files), omit))
+ if files is not None
+ else None
+ ),
timeout=timeout,
)
@@ -481,7 +489,11 @@ async def stream(
json=json_body,
data=data_body,
content=content,
- files=convert_file_dict_to_httpx_tuples(remove_none_from_dict(files)) if files is not None else None,
+ files=(
+ convert_file_dict_to_httpx_tuples(remove_omit_from_dict(remove_none_from_dict(files), omit))
+ if files is not None
+ else None
+ ),
timeout=timeout,
) as stream:
yield stream
diff --git a/src/vapi/core/request_options.py b/src/vapi/core/request_options.py
index d0bf0db..1b38804 100644
--- a/src/vapi/core/request_options.py
+++ b/src/vapi/core/request_options.py
@@ -23,6 +23,8 @@ class RequestOptions(typing.TypedDict, total=False):
- additional_query_parameters: typing.Dict[str, typing.Any]. A dictionary containing additional parameters to spread into the request's query parameters dict
- additional_body_parameters: typing.Dict[str, typing.Any]. A dictionary containing additional parameters to spread into the request's body parameters dict
+
+ - chunk_size: int. The size, in bytes, to process each chunk of data being streamed back within the response. This equates to leveraging `chunk_size` within `requests` or `httpx`, and is only leveraged for file downloads.
"""
timeout_in_seconds: NotRequired[int]
@@ -30,3 +32,4 @@ class RequestOptions(typing.TypedDict, total=False):
additional_headers: NotRequired[typing.Dict[str, typing.Any]]
additional_query_parameters: NotRequired[typing.Dict[str, typing.Any]]
additional_body_parameters: NotRequired[typing.Dict[str, typing.Any]]
+ chunk_size: NotRequired[int]
diff --git a/src/vapi/files/client.py b/src/vapi/files/client.py
index 12af218..4adcb04 100644
--- a/src/vapi/files/client.py
+++ b/src/vapi/files/client.py
@@ -31,15 +31,6 @@ def list(self, *, request_options: typing.Optional[RequestOptions] = None) -> ty
-------
typing.List[File]
-
- Examples
- --------
- from vapi import Vapi
-
- client = Vapi(
- token="YOUR_TOKEN",
- )
- client.files.list()
"""
_response = self._client_wrapper.httpx_client.request(
"file",
@@ -74,15 +65,6 @@ def create(self, *, file: core.File, request_options: typing.Optional[RequestOpt
-------
File
File uploaded successfully
-
- Examples
- --------
- from vapi import Vapi
-
- client = Vapi(
- token="YOUR_TOKEN",
- )
- client.files.create()
"""
_response = self._client_wrapper.httpx_client.request(
"file",
@@ -131,17 +113,6 @@ def get(self, id: str, *, request_options: typing.Optional[RequestOptions] = Non
-------
File
-
- Examples
- --------
- from vapi import Vapi
-
- client = Vapi(
- token="YOUR_TOKEN",
- )
- client.files.get(
- id="id",
- )
"""
_response = self._client_wrapper.httpx_client.request(
f"file/{jsonable_encoder(id)}",
@@ -175,17 +146,6 @@ def delete(self, id: str, *, request_options: typing.Optional[RequestOptions] =
-------
File
-
- Examples
- --------
- from vapi import Vapi
-
- client = Vapi(
- token="YOUR_TOKEN",
- )
- client.files.delete(
- id="id",
- )
"""
_response = self._client_wrapper.httpx_client.request(
f"file/{jsonable_encoder(id)}",
@@ -224,17 +184,6 @@ def update(
-------
File
-
- Examples
- --------
- from vapi import Vapi
-
- client = Vapi(
- token="YOUR_TOKEN",
- )
- client.files.update(
- id="id",
- )
"""
_response = self._client_wrapper.httpx_client.request(
f"file/{jsonable_encoder(id)}",
@@ -242,6 +191,9 @@ def update(
json={
"name": name,
},
+ headers={
+ "content-type": "application/json",
+ },
request_options=request_options,
omit=OMIT,
)
@@ -275,23 +227,6 @@ async def list(self, *, request_options: typing.Optional[RequestOptions] = None)
-------
typing.List[File]
-
- Examples
- --------
- import asyncio
-
- from vapi import AsyncVapi
-
- client = AsyncVapi(
- token="YOUR_TOKEN",
- )
-
-
- async def main() -> None:
- await client.files.list()
-
-
- asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
"file",
@@ -326,23 +261,6 @@ async def create(self, *, file: core.File, request_options: typing.Optional[Requ
-------
File
File uploaded successfully
-
- Examples
- --------
- import asyncio
-
- from vapi import AsyncVapi
-
- client = AsyncVapi(
- token="YOUR_TOKEN",
- )
-
-
- async def main() -> None:
- await client.files.create()
-
-
- asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
"file",
@@ -391,25 +309,6 @@ async def get(self, id: str, *, request_options: typing.Optional[RequestOptions]
-------
File
-
- Examples
- --------
- import asyncio
-
- from vapi import AsyncVapi
-
- client = AsyncVapi(
- token="YOUR_TOKEN",
- )
-
-
- async def main() -> None:
- await client.files.get(
- id="id",
- )
-
-
- asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"file/{jsonable_encoder(id)}",
@@ -443,25 +342,6 @@ async def delete(self, id: str, *, request_options: typing.Optional[RequestOptio
-------
File
-
- Examples
- --------
- import asyncio
-
- from vapi import AsyncVapi
-
- client = AsyncVapi(
- token="YOUR_TOKEN",
- )
-
-
- async def main() -> None:
- await client.files.delete(
- id="id",
- )
-
-
- asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"file/{jsonable_encoder(id)}",
@@ -500,25 +380,6 @@ async def update(
-------
File
-
- Examples
- --------
- import asyncio
-
- from vapi import AsyncVapi
-
- client = AsyncVapi(
- token="YOUR_TOKEN",
- )
-
-
- async def main() -> None:
- await client.files.update(
- id="id",
- )
-
-
- asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"file/{jsonable_encoder(id)}",
@@ -526,6 +387,9 @@ async def main() -> None:
json={
"name": name,
},
+ headers={
+ "content-type": "application/json",
+ },
request_options=request_options,
omit=OMIT,
)
diff --git a/src/vapi/knowledge_bases/__init__.py b/src/vapi/knowledge_bases/__init__.py
new file mode 100644
index 0000000..47e76a7
--- /dev/null
+++ b/src/vapi/knowledge_bases/__init__.py
@@ -0,0 +1,19 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from .types import (
+ KnowledgeBasesCreateRequest,
+ KnowledgeBasesCreateResponse,
+ KnowledgeBasesDeleteResponse,
+ KnowledgeBasesGetResponse,
+ KnowledgeBasesListResponseItem,
+ KnowledgeBasesUpdateResponse,
+)
+
+__all__ = [
+ "KnowledgeBasesCreateRequest",
+ "KnowledgeBasesCreateResponse",
+ "KnowledgeBasesDeleteResponse",
+ "KnowledgeBasesGetResponse",
+ "KnowledgeBasesListResponseItem",
+ "KnowledgeBasesUpdateResponse",
+]
diff --git a/src/vapi/knowledge_bases/client.py b/src/vapi/knowledge_bases/client.py
new file mode 100644
index 0000000..50aa394
--- /dev/null
+++ b/src/vapi/knowledge_bases/client.py
@@ -0,0 +1,482 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+from ..core.client_wrapper import SyncClientWrapper
+import datetime as dt
+from ..core.request_options import RequestOptions
+from .types.knowledge_bases_list_response_item import KnowledgeBasesListResponseItem
+from ..core.datetime_utils import serialize_datetime
+from ..core.pydantic_utilities import parse_obj_as
+from json.decoder import JSONDecodeError
+from ..core.api_error import ApiError
+from .types.knowledge_bases_create_request import KnowledgeBasesCreateRequest
+from .types.knowledge_bases_create_response import KnowledgeBasesCreateResponse
+from ..core.serialization import convert_and_respect_annotation_metadata
+from .types.knowledge_bases_get_response import KnowledgeBasesGetResponse
+from ..core.jsonable_encoder import jsonable_encoder
+from .types.knowledge_bases_delete_response import KnowledgeBasesDeleteResponse
+from .types.knowledge_bases_update_response import KnowledgeBasesUpdateResponse
+from ..core.client_wrapper import AsyncClientWrapper
+
+# this is used as the default value for optional parameters
+OMIT = typing.cast(typing.Any, ...)
+
+
+class KnowledgeBasesClient:
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
+ self._client_wrapper = client_wrapper
+
+ def list(
+ self,
+ *,
+ limit: typing.Optional[float] = None,
+ created_at_gt: typing.Optional[dt.datetime] = None,
+ created_at_lt: typing.Optional[dt.datetime] = None,
+ created_at_ge: typing.Optional[dt.datetime] = None,
+ created_at_le: typing.Optional[dt.datetime] = None,
+ updated_at_gt: typing.Optional[dt.datetime] = None,
+ updated_at_lt: typing.Optional[dt.datetime] = None,
+ updated_at_ge: typing.Optional[dt.datetime] = None,
+ updated_at_le: typing.Optional[dt.datetime] = None,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> typing.List[KnowledgeBasesListResponseItem]:
+ """
+ Parameters
+ ----------
+ limit : typing.Optional[float]
+ This is the maximum number of items to return. Defaults to 100.
+
+ created_at_gt : typing.Optional[dt.datetime]
+ This will return items where the createdAt is greater than the specified value.
+
+ created_at_lt : typing.Optional[dt.datetime]
+ This will return items where the createdAt is less than the specified value.
+
+ created_at_ge : typing.Optional[dt.datetime]
+ This will return items where the createdAt is greater than or equal to the specified value.
+
+ created_at_le : typing.Optional[dt.datetime]
+ This will return items where the createdAt is less than or equal to the specified value.
+
+ updated_at_gt : typing.Optional[dt.datetime]
+ This will return items where the updatedAt is greater than the specified value.
+
+ updated_at_lt : typing.Optional[dt.datetime]
+ This will return items where the updatedAt is less than the specified value.
+
+ updated_at_ge : typing.Optional[dt.datetime]
+ This will return items where the updatedAt is greater than or equal to the specified value.
+
+ updated_at_le : typing.Optional[dt.datetime]
+ This will return items where the updatedAt is less than or equal to the specified value.
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ typing.List[KnowledgeBasesListResponseItem]
+
+ """
+ _response = self._client_wrapper.httpx_client.request(
+ "knowledge-base",
+ method="GET",
+ params={
+ "limit": limit,
+ "createdAtGt": serialize_datetime(created_at_gt) if created_at_gt is not None else None,
+ "createdAtLt": serialize_datetime(created_at_lt) if created_at_lt is not None else None,
+ "createdAtGe": serialize_datetime(created_at_ge) if created_at_ge is not None else None,
+ "createdAtLe": serialize_datetime(created_at_le) if created_at_le is not None else None,
+ "updatedAtGt": serialize_datetime(updated_at_gt) if updated_at_gt is not None else None,
+ "updatedAtLt": serialize_datetime(updated_at_lt) if updated_at_lt is not None else None,
+ "updatedAtGe": serialize_datetime(updated_at_ge) if updated_at_ge is not None else None,
+ "updatedAtLe": serialize_datetime(updated_at_le) if updated_at_le is not None else None,
+ },
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ return typing.cast(
+ typing.List[KnowledgeBasesListResponseItem],
+ parse_obj_as(
+ type_=typing.List[KnowledgeBasesListResponseItem], # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(status_code=_response.status_code, body=_response.text)
+ raise ApiError(status_code=_response.status_code, body=_response_json)
+
+ def create(
+ self, *, request: KnowledgeBasesCreateRequest, request_options: typing.Optional[RequestOptions] = None
+ ) -> KnowledgeBasesCreateResponse:
+ """
+ Parameters
+ ----------
+ request : KnowledgeBasesCreateRequest
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ KnowledgeBasesCreateResponse
+
+ """
+ _response = self._client_wrapper.httpx_client.request(
+ "knowledge-base",
+ method="POST",
+ json=convert_and_respect_annotation_metadata(
+ object_=request, annotation=KnowledgeBasesCreateRequest, direction="write"
+ ),
+ request_options=request_options,
+ omit=OMIT,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ return typing.cast(
+ KnowledgeBasesCreateResponse,
+ parse_obj_as(
+ type_=KnowledgeBasesCreateResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(status_code=_response.status_code, body=_response.text)
+ raise ApiError(status_code=_response.status_code, body=_response_json)
+
+ def get(self, id: str, *, request_options: typing.Optional[RequestOptions] = None) -> KnowledgeBasesGetResponse:
+ """
+ Parameters
+ ----------
+ id : str
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ KnowledgeBasesGetResponse
+
+ """
+ _response = self._client_wrapper.httpx_client.request(
+ f"knowledge-base/{jsonable_encoder(id)}",
+ method="GET",
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ return typing.cast(
+ KnowledgeBasesGetResponse,
+ parse_obj_as(
+ type_=KnowledgeBasesGetResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(status_code=_response.status_code, body=_response.text)
+ raise ApiError(status_code=_response.status_code, body=_response_json)
+
+ def delete(
+ self, id: str, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> KnowledgeBasesDeleteResponse:
+ """
+ Parameters
+ ----------
+ id : str
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ KnowledgeBasesDeleteResponse
+
+ """
+ _response = self._client_wrapper.httpx_client.request(
+ f"knowledge-base/{jsonable_encoder(id)}",
+ method="DELETE",
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ return typing.cast(
+ KnowledgeBasesDeleteResponse,
+ parse_obj_as(
+ type_=KnowledgeBasesDeleteResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(status_code=_response.status_code, body=_response.text)
+ raise ApiError(status_code=_response.status_code, body=_response_json)
+
+ def update(
+ self, id: str, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> KnowledgeBasesUpdateResponse:
+ """
+ Parameters
+ ----------
+ id : str
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ KnowledgeBasesUpdateResponse
+
+ """
+ _response = self._client_wrapper.httpx_client.request(
+ f"knowledge-base/{jsonable_encoder(id)}",
+ method="PATCH",
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ return typing.cast(
+ KnowledgeBasesUpdateResponse,
+ parse_obj_as(
+ type_=KnowledgeBasesUpdateResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(status_code=_response.status_code, body=_response.text)
+ raise ApiError(status_code=_response.status_code, body=_response_json)
+
+
+class AsyncKnowledgeBasesClient:
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
+ self._client_wrapper = client_wrapper
+
+ async def list(
+ self,
+ *,
+ limit: typing.Optional[float] = None,
+ created_at_gt: typing.Optional[dt.datetime] = None,
+ created_at_lt: typing.Optional[dt.datetime] = None,
+ created_at_ge: typing.Optional[dt.datetime] = None,
+ created_at_le: typing.Optional[dt.datetime] = None,
+ updated_at_gt: typing.Optional[dt.datetime] = None,
+ updated_at_lt: typing.Optional[dt.datetime] = None,
+ updated_at_ge: typing.Optional[dt.datetime] = None,
+ updated_at_le: typing.Optional[dt.datetime] = None,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> typing.List[KnowledgeBasesListResponseItem]:
+ """
+ Parameters
+ ----------
+ limit : typing.Optional[float]
+ This is the maximum number of items to return. Defaults to 100.
+
+ created_at_gt : typing.Optional[dt.datetime]
+ This will return items where the createdAt is greater than the specified value.
+
+ created_at_lt : typing.Optional[dt.datetime]
+ This will return items where the createdAt is less than the specified value.
+
+ created_at_ge : typing.Optional[dt.datetime]
+ This will return items where the createdAt is greater than or equal to the specified value.
+
+ created_at_le : typing.Optional[dt.datetime]
+ This will return items where the createdAt is less than or equal to the specified value.
+
+ updated_at_gt : typing.Optional[dt.datetime]
+ This will return items where the updatedAt is greater than the specified value.
+
+ updated_at_lt : typing.Optional[dt.datetime]
+ This will return items where the updatedAt is less than the specified value.
+
+ updated_at_ge : typing.Optional[dt.datetime]
+ This will return items where the updatedAt is greater than or equal to the specified value.
+
+ updated_at_le : typing.Optional[dt.datetime]
+ This will return items where the updatedAt is less than or equal to the specified value.
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ typing.List[KnowledgeBasesListResponseItem]
+
+ """
+ _response = await self._client_wrapper.httpx_client.request(
+ "knowledge-base",
+ method="GET",
+ params={
+ "limit": limit,
+ "createdAtGt": serialize_datetime(created_at_gt) if created_at_gt is not None else None,
+ "createdAtLt": serialize_datetime(created_at_lt) if created_at_lt is not None else None,
+ "createdAtGe": serialize_datetime(created_at_ge) if created_at_ge is not None else None,
+ "createdAtLe": serialize_datetime(created_at_le) if created_at_le is not None else None,
+ "updatedAtGt": serialize_datetime(updated_at_gt) if updated_at_gt is not None else None,
+ "updatedAtLt": serialize_datetime(updated_at_lt) if updated_at_lt is not None else None,
+ "updatedAtGe": serialize_datetime(updated_at_ge) if updated_at_ge is not None else None,
+ "updatedAtLe": serialize_datetime(updated_at_le) if updated_at_le is not None else None,
+ },
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ return typing.cast(
+ typing.List[KnowledgeBasesListResponseItem],
+ parse_obj_as(
+ type_=typing.List[KnowledgeBasesListResponseItem], # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(status_code=_response.status_code, body=_response.text)
+ raise ApiError(status_code=_response.status_code, body=_response_json)
+
+ async def create(
+ self, *, request: KnowledgeBasesCreateRequest, request_options: typing.Optional[RequestOptions] = None
+ ) -> KnowledgeBasesCreateResponse:
+ """
+ Parameters
+ ----------
+ request : KnowledgeBasesCreateRequest
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ KnowledgeBasesCreateResponse
+
+ """
+ _response = await self._client_wrapper.httpx_client.request(
+ "knowledge-base",
+ method="POST",
+ json=convert_and_respect_annotation_metadata(
+ object_=request, annotation=KnowledgeBasesCreateRequest, direction="write"
+ ),
+ request_options=request_options,
+ omit=OMIT,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ return typing.cast(
+ KnowledgeBasesCreateResponse,
+ parse_obj_as(
+ type_=KnowledgeBasesCreateResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(status_code=_response.status_code, body=_response.text)
+ raise ApiError(status_code=_response.status_code, body=_response_json)
+
+ async def get(
+ self, id: str, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> KnowledgeBasesGetResponse:
+ """
+ Parameters
+ ----------
+ id : str
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ KnowledgeBasesGetResponse
+
+ """
+ _response = await self._client_wrapper.httpx_client.request(
+ f"knowledge-base/{jsonable_encoder(id)}",
+ method="GET",
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ return typing.cast(
+ KnowledgeBasesGetResponse,
+ parse_obj_as(
+ type_=KnowledgeBasesGetResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(status_code=_response.status_code, body=_response.text)
+ raise ApiError(status_code=_response.status_code, body=_response_json)
+
+ async def delete(
+ self, id: str, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> KnowledgeBasesDeleteResponse:
+ """
+ Parameters
+ ----------
+ id : str
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ KnowledgeBasesDeleteResponse
+
+ """
+ _response = await self._client_wrapper.httpx_client.request(
+ f"knowledge-base/{jsonable_encoder(id)}",
+ method="DELETE",
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ return typing.cast(
+ KnowledgeBasesDeleteResponse,
+ parse_obj_as(
+ type_=KnowledgeBasesDeleteResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(status_code=_response.status_code, body=_response.text)
+ raise ApiError(status_code=_response.status_code, body=_response_json)
+
+ async def update(
+ self, id: str, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> KnowledgeBasesUpdateResponse:
+ """
+ Parameters
+ ----------
+ id : str
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ KnowledgeBasesUpdateResponse
+
+ """
+ _response = await self._client_wrapper.httpx_client.request(
+ f"knowledge-base/{jsonable_encoder(id)}",
+ method="PATCH",
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ return typing.cast(
+ KnowledgeBasesUpdateResponse,
+ parse_obj_as(
+ type_=KnowledgeBasesUpdateResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(status_code=_response.status_code, body=_response.text)
+ raise ApiError(status_code=_response.status_code, body=_response_json)
diff --git a/src/vapi/knowledge_bases/types/__init__.py b/src/vapi/knowledge_bases/types/__init__.py
new file mode 100644
index 0000000..2f0916e
--- /dev/null
+++ b/src/vapi/knowledge_bases/types/__init__.py
@@ -0,0 +1,17 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from .knowledge_bases_create_request import KnowledgeBasesCreateRequest
+from .knowledge_bases_create_response import KnowledgeBasesCreateResponse
+from .knowledge_bases_delete_response import KnowledgeBasesDeleteResponse
+from .knowledge_bases_get_response import KnowledgeBasesGetResponse
+from .knowledge_bases_list_response_item import KnowledgeBasesListResponseItem
+from .knowledge_bases_update_response import KnowledgeBasesUpdateResponse
+
+__all__ = [
+ "KnowledgeBasesCreateRequest",
+ "KnowledgeBasesCreateResponse",
+ "KnowledgeBasesDeleteResponse",
+ "KnowledgeBasesGetResponse",
+ "KnowledgeBasesListResponseItem",
+ "KnowledgeBasesUpdateResponse",
+]
diff --git a/src/vapi/knowledge_bases/types/knowledge_bases_create_request.py b/src/vapi/knowledge_bases/types/knowledge_bases_create_request.py
new file mode 100644
index 0000000..36d4aab
--- /dev/null
+++ b/src/vapi/knowledge_bases/types/knowledge_bases_create_request.py
@@ -0,0 +1,7 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+from ...types.create_trieve_knowledge_base_dto import CreateTrieveKnowledgeBaseDto
+from ...types.create_custom_knowledge_base_dto import CreateCustomKnowledgeBaseDto
+
+KnowledgeBasesCreateRequest = typing.Union[CreateTrieveKnowledgeBaseDto, CreateCustomKnowledgeBaseDto]
diff --git a/src/vapi/knowledge_bases/types/knowledge_bases_create_response.py b/src/vapi/knowledge_bases/types/knowledge_bases_create_response.py
new file mode 100644
index 0000000..db0c110
--- /dev/null
+++ b/src/vapi/knowledge_bases/types/knowledge_bases_create_response.py
@@ -0,0 +1,7 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+from ...types.trieve_knowledge_base import TrieveKnowledgeBase
+from ...types.custom_knowledge_base import CustomKnowledgeBase
+
+KnowledgeBasesCreateResponse = typing.Union[TrieveKnowledgeBase, CustomKnowledgeBase]
diff --git a/src/vapi/knowledge_bases/types/knowledge_bases_delete_response.py b/src/vapi/knowledge_bases/types/knowledge_bases_delete_response.py
new file mode 100644
index 0000000..492bb90
--- /dev/null
+++ b/src/vapi/knowledge_bases/types/knowledge_bases_delete_response.py
@@ -0,0 +1,7 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+from ...types.trieve_knowledge_base import TrieveKnowledgeBase
+from ...types.custom_knowledge_base import CustomKnowledgeBase
+
+KnowledgeBasesDeleteResponse = typing.Union[TrieveKnowledgeBase, CustomKnowledgeBase]
diff --git a/src/vapi/knowledge_bases/types/knowledge_bases_get_response.py b/src/vapi/knowledge_bases/types/knowledge_bases_get_response.py
new file mode 100644
index 0000000..49c1d36
--- /dev/null
+++ b/src/vapi/knowledge_bases/types/knowledge_bases_get_response.py
@@ -0,0 +1,7 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+from ...types.trieve_knowledge_base import TrieveKnowledgeBase
+from ...types.custom_knowledge_base import CustomKnowledgeBase
+
+KnowledgeBasesGetResponse = typing.Union[TrieveKnowledgeBase, CustomKnowledgeBase]
diff --git a/src/vapi/knowledge_bases/types/knowledge_bases_list_response_item.py b/src/vapi/knowledge_bases/types/knowledge_bases_list_response_item.py
new file mode 100644
index 0000000..6698a06
--- /dev/null
+++ b/src/vapi/knowledge_bases/types/knowledge_bases_list_response_item.py
@@ -0,0 +1,7 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+from ...types.trieve_knowledge_base import TrieveKnowledgeBase
+from ...types.custom_knowledge_base import CustomKnowledgeBase
+
+KnowledgeBasesListResponseItem = typing.Union[TrieveKnowledgeBase, CustomKnowledgeBase]
diff --git a/src/vapi/knowledge_bases/types/knowledge_bases_update_response.py b/src/vapi/knowledge_bases/types/knowledge_bases_update_response.py
new file mode 100644
index 0000000..a7d955a
--- /dev/null
+++ b/src/vapi/knowledge_bases/types/knowledge_bases_update_response.py
@@ -0,0 +1,7 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+from ...types.trieve_knowledge_base import TrieveKnowledgeBase
+from ...types.custom_knowledge_base import CustomKnowledgeBase
+
+KnowledgeBasesUpdateResponse = typing.Union[TrieveKnowledgeBase, CustomKnowledgeBase]
diff --git a/src/vapi/logs/client.py b/src/vapi/logs/client.py
index e51acec..cc5faaf 100644
--- a/src/vapi/logs/client.py
+++ b/src/vapi/logs/client.py
@@ -26,12 +26,13 @@ def get(
*,
org_id: typing.Optional[str] = None,
type: typing.Optional[LogsGetRequestType] = None,
+ webhook_type: typing.Optional[str] = None,
assistant_id: typing.Optional[str] = None,
phone_number_id: typing.Optional[str] = None,
customer_id: typing.Optional[str] = None,
squad_id: typing.Optional[str] = None,
call_id: typing.Optional[str] = None,
- page: typing.Optional[int] = None,
+ page: typing.Optional[float] = None,
sort_order: typing.Optional[LogsGetRequestSortOrder] = None,
limit: typing.Optional[float] = None,
created_at_gt: typing.Optional[dt.datetime] = None,
@@ -53,6 +54,9 @@ def get(
type : typing.Optional[LogsGetRequestType]
This is the type of the log.
+ webhook_type : typing.Optional[str]
+ This is the type of the webhook, given the log is from a webhook.
+
assistant_id : typing.Optional[str]
This is the ID of the assistant.
@@ -68,7 +72,7 @@ def get(
call_id : typing.Optional[str]
This is the ID of the call.
- page : typing.Optional[int]
+ page : typing.Optional[float]
This is the page number to return. Defaults to 1.
sort_order : typing.Optional[LogsGetRequestSortOrder]
@@ -108,20 +112,6 @@ def get(
-------
SyncPager[Log]
-
- Examples
- --------
- from vapi import Vapi
-
- client = Vapi(
- token="YOUR_TOKEN",
- )
- response = client.logs.get()
- for item in response:
- yield item
- # alternatively, you can paginate page-by-page
- for page in response.iter_pages():
- yield page
"""
page = page if page is not None else 1
_response = self._client_wrapper.httpx_client.request(
@@ -130,6 +120,7 @@ def get(
params={
"orgId": org_id,
"type": type,
+ "webhookType": webhook_type,
"assistantId": assistant_id,
"phoneNumberId": phone_number_id,
"customerId": customer_id,
@@ -162,6 +153,7 @@ def get(
_get_next = lambda: self.get(
org_id=org_id,
type=type,
+ webhook_type=webhook_type,
assistant_id=assistant_id,
phone_number_id=phone_number_id,
customer_id=customer_id,
@@ -197,12 +189,13 @@ async def get(
*,
org_id: typing.Optional[str] = None,
type: typing.Optional[LogsGetRequestType] = None,
+ webhook_type: typing.Optional[str] = None,
assistant_id: typing.Optional[str] = None,
phone_number_id: typing.Optional[str] = None,
customer_id: typing.Optional[str] = None,
squad_id: typing.Optional[str] = None,
call_id: typing.Optional[str] = None,
- page: typing.Optional[int] = None,
+ page: typing.Optional[float] = None,
sort_order: typing.Optional[LogsGetRequestSortOrder] = None,
limit: typing.Optional[float] = None,
created_at_gt: typing.Optional[dt.datetime] = None,
@@ -224,6 +217,9 @@ async def get(
type : typing.Optional[LogsGetRequestType]
This is the type of the log.
+ webhook_type : typing.Optional[str]
+ This is the type of the webhook, given the log is from a webhook.
+
assistant_id : typing.Optional[str]
This is the ID of the assistant.
@@ -239,7 +235,7 @@ async def get(
call_id : typing.Optional[str]
This is the ID of the call.
- page : typing.Optional[int]
+ page : typing.Optional[float]
This is the page number to return. Defaults to 1.
sort_order : typing.Optional[LogsGetRequestSortOrder]
@@ -279,28 +275,6 @@ async def get(
-------
AsyncPager[Log]
-
- Examples
- --------
- import asyncio
-
- from vapi import AsyncVapi
-
- client = AsyncVapi(
- token="YOUR_TOKEN",
- )
-
-
- async def main() -> None:
- response = await client.logs.get()
- async for item in response:
- yield item
- # alternatively, you can paginate page-by-page
- async for page in response.iter_pages():
- yield page
-
-
- asyncio.run(main())
"""
page = page if page is not None else 1
_response = await self._client_wrapper.httpx_client.request(
@@ -309,6 +283,7 @@ async def main() -> None:
params={
"orgId": org_id,
"type": type,
+ "webhookType": webhook_type,
"assistantId": assistant_id,
"phoneNumberId": phone_number_id,
"customerId": customer_id,
@@ -341,6 +316,7 @@ async def main() -> None:
_get_next = lambda: self.get(
org_id=org_id,
type=type,
+ webhook_type=webhook_type,
assistant_id=assistant_id,
phone_number_id=phone_number_id,
customer_id=customer_id,
diff --git a/src/vapi/phone_numbers/client.py b/src/vapi/phone_numbers/client.py
index c1250c0..6060416 100644
--- a/src/vapi/phone_numbers/client.py
+++ b/src/vapi/phone_numbers/client.py
@@ -78,15 +78,6 @@ def list(
-------
typing.List[PhoneNumbersListResponseItem]
-
- Examples
- --------
- from vapi import Vapi
-
- client = Vapi(
- token="YOUR_TOKEN",
- )
- client.phone_numbers.list()
"""
_response = self._client_wrapper.httpx_client.request(
"phone-number",
@@ -133,19 +124,6 @@ def create(
-------
PhoneNumbersCreateResponse
-
- Examples
- --------
- from vapi import CreateByoPhoneNumberDto, Vapi
-
- client = Vapi(
- token="YOUR_TOKEN",
- )
- client.phone_numbers.create(
- request=CreateByoPhoneNumberDto(
- credential_id="credentialId",
- ),
- )
"""
_response = self._client_wrapper.httpx_client.request(
"phone-number",
@@ -183,17 +161,6 @@ def get(self, id: str, *, request_options: typing.Optional[RequestOptions] = Non
-------
PhoneNumbersGetResponse
-
- Examples
- --------
- from vapi import Vapi
-
- client = Vapi(
- token="YOUR_TOKEN",
- )
- client.phone_numbers.get(
- id="id",
- )
"""
_response = self._client_wrapper.httpx_client.request(
f"phone-number/{jsonable_encoder(id)}",
@@ -227,17 +194,6 @@ def delete(self, id: str, *, request_options: typing.Optional[RequestOptions] =
-------
PhoneNumbersDeleteResponse
-
- Examples
- --------
- from vapi import Vapi
-
- client = Vapi(
- token="YOUR_TOKEN",
- )
- client.phone_numbers.delete(
- id="id",
- )
"""
_response = self._client_wrapper.httpx_client.request(
f"phone-number/{jsonable_encoder(id)}",
@@ -315,17 +271,6 @@ def update(
-------
PhoneNumbersUpdateResponse
-
- Examples
- --------
- from vapi import Vapi
-
- client = Vapi(
- token="YOUR_TOKEN",
- )
- client.phone_numbers.update(
- id="id",
- )
"""
_response = self._client_wrapper.httpx_client.request(
f"phone-number/{jsonable_encoder(id)}",
@@ -340,6 +285,9 @@ def update(
"serverUrl": server_url,
"serverUrlSecret": server_url_secret,
},
+ headers={
+ "content-type": "application/json",
+ },
request_options=request_options,
omit=OMIT,
)
@@ -413,23 +361,6 @@ async def list(
-------
typing.List[PhoneNumbersListResponseItem]
-
- Examples
- --------
- import asyncio
-
- from vapi import AsyncVapi
-
- client = AsyncVapi(
- token="YOUR_TOKEN",
- )
-
-
- async def main() -> None:
- await client.phone_numbers.list()
-
-
- asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
"phone-number",
@@ -476,27 +407,6 @@ async def create(
-------
PhoneNumbersCreateResponse
-
- Examples
- --------
- import asyncio
-
- from vapi import AsyncVapi, CreateByoPhoneNumberDto
-
- client = AsyncVapi(
- token="YOUR_TOKEN",
- )
-
-
- async def main() -> None:
- await client.phone_numbers.create(
- request=CreateByoPhoneNumberDto(
- credential_id="credentialId",
- ),
- )
-
-
- asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
"phone-number",
@@ -534,25 +444,6 @@ async def get(self, id: str, *, request_options: typing.Optional[RequestOptions]
-------
PhoneNumbersGetResponse
-
- Examples
- --------
- import asyncio
-
- from vapi import AsyncVapi
-
- client = AsyncVapi(
- token="YOUR_TOKEN",
- )
-
-
- async def main() -> None:
- await client.phone_numbers.get(
- id="id",
- )
-
-
- asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"phone-number/{jsonable_encoder(id)}",
@@ -588,25 +479,6 @@ async def delete(
-------
PhoneNumbersDeleteResponse
-
- Examples
- --------
- import asyncio
-
- from vapi import AsyncVapi
-
- client = AsyncVapi(
- token="YOUR_TOKEN",
- )
-
-
- async def main() -> None:
- await client.phone_numbers.delete(
- id="id",
- )
-
-
- asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"phone-number/{jsonable_encoder(id)}",
@@ -684,25 +556,6 @@ async def update(
-------
PhoneNumbersUpdateResponse
-
- Examples
- --------
- import asyncio
-
- from vapi import AsyncVapi
-
- client = AsyncVapi(
- token="YOUR_TOKEN",
- )
-
-
- async def main() -> None:
- await client.phone_numbers.update(
- id="id",
- )
-
-
- asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"phone-number/{jsonable_encoder(id)}",
@@ -717,6 +570,9 @@ async def main() -> None:
"serverUrl": server_url,
"serverUrlSecret": server_url_secret,
},
+ headers={
+ "content-type": "application/json",
+ },
request_options=request_options,
omit=OMIT,
)
diff --git a/src/vapi/squads/client.py b/src/vapi/squads/client.py
index 6908413..2624dbc 100644
--- a/src/vapi/squads/client.py
+++ b/src/vapi/squads/client.py
@@ -74,15 +74,6 @@ def list(
-------
typing.List[Squad]
-
- Examples
- --------
- from vapi import Vapi
-
- client = Vapi(
- token="YOUR_TOKEN",
- )
- client.squads.list()
"""
_response = self._client_wrapper.httpx_client.request(
"squad",
@@ -145,17 +136,6 @@ def create(
-------
Squad
-
- Examples
- --------
- from vapi import SquadMemberDto, Vapi
-
- client = Vapi(
- token="YOUR_TOKEN",
- )
- client.squads.create(
- members=[SquadMemberDto()],
- )
"""
_response = self._client_wrapper.httpx_client.request(
"squad",
@@ -199,17 +179,6 @@ def get(self, id: str, *, request_options: typing.Optional[RequestOptions] = Non
-------
Squad
-
- Examples
- --------
- from vapi import Vapi
-
- client = Vapi(
- token="YOUR_TOKEN",
- )
- client.squads.get(
- id="id",
- )
"""
_response = self._client_wrapper.httpx_client.request(
f"squad/{jsonable_encoder(id)}",
@@ -243,17 +212,6 @@ def delete(self, id: str, *, request_options: typing.Optional[RequestOptions] =
-------
Squad
-
- Examples
- --------
- from vapi import Vapi
-
- client = Vapi(
- token="YOUR_TOKEN",
- )
- client.squads.delete(
- id="id",
- )
"""
_response = self._client_wrapper.httpx_client.request(
f"squad/{jsonable_encoder(id)}",
@@ -308,18 +266,6 @@ def update(
-------
Squad
-
- Examples
- --------
- from vapi import SquadMemberDto, Vapi
-
- client = Vapi(
- token="YOUR_TOKEN",
- )
- client.squads.update(
- id="id",
- members=[SquadMemberDto()],
- )
"""
_response = self._client_wrapper.httpx_client.request(
f"squad/{jsonable_encoder(id)}",
@@ -333,6 +279,9 @@ def update(
object_=members_overrides, annotation=AssistantOverrides, direction="write"
),
},
+ headers={
+ "content-type": "application/json",
+ },
request_options=request_options,
omit=OMIT,
)
@@ -406,23 +355,6 @@ async def list(
-------
typing.List[Squad]
-
- Examples
- --------
- import asyncio
-
- from vapi import AsyncVapi
-
- client = AsyncVapi(
- token="YOUR_TOKEN",
- )
-
-
- async def main() -> None:
- await client.squads.list()
-
-
- asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
"squad",
@@ -485,25 +417,6 @@ async def create(
-------
Squad
-
- Examples
- --------
- import asyncio
-
- from vapi import AsyncVapi, SquadMemberDto
-
- client = AsyncVapi(
- token="YOUR_TOKEN",
- )
-
-
- async def main() -> None:
- await client.squads.create(
- members=[SquadMemberDto()],
- )
-
-
- asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
"squad",
@@ -547,25 +460,6 @@ async def get(self, id: str, *, request_options: typing.Optional[RequestOptions]
-------
Squad
-
- Examples
- --------
- import asyncio
-
- from vapi import AsyncVapi
-
- client = AsyncVapi(
- token="YOUR_TOKEN",
- )
-
-
- async def main() -> None:
- await client.squads.get(
- id="id",
- )
-
-
- asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"squad/{jsonable_encoder(id)}",
@@ -599,25 +493,6 @@ async def delete(self, id: str, *, request_options: typing.Optional[RequestOptio
-------
Squad
-
- Examples
- --------
- import asyncio
-
- from vapi import AsyncVapi
-
- client = AsyncVapi(
- token="YOUR_TOKEN",
- )
-
-
- async def main() -> None:
- await client.squads.delete(
- id="id",
- )
-
-
- asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"squad/{jsonable_encoder(id)}",
@@ -672,26 +547,6 @@ async def update(
-------
Squad
-
- Examples
- --------
- import asyncio
-
- from vapi import AsyncVapi, SquadMemberDto
-
- client = AsyncVapi(
- token="YOUR_TOKEN",
- )
-
-
- async def main() -> None:
- await client.squads.update(
- id="id",
- members=[SquadMemberDto()],
- )
-
-
- asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"squad/{jsonable_encoder(id)}",
@@ -705,6 +560,9 @@ async def main() -> None:
object_=members_overrides, annotation=AssistantOverrides, direction="write"
),
},
+ headers={
+ "content-type": "application/json",
+ },
request_options=request_options,
omit=OMIT,
)
diff --git a/src/vapi/tools/client.py b/src/vapi/tools/client.py
index e83f794..829b678 100644
--- a/src/vapi/tools/client.py
+++ b/src/vapi/tools/client.py
@@ -80,15 +80,6 @@ def list(
-------
typing.List[ToolsListResponseItem]
-
- Examples
- --------
- from vapi import Vapi
-
- client = Vapi(
- token="YOUR_TOKEN",
- )
- client.tools.list()
"""
_response = self._client_wrapper.httpx_client.request(
"tool",
@@ -135,17 +126,6 @@ def create(
-------
ToolsCreateResponse
-
- Examples
- --------
- from vapi import CreateDtmfToolDto, Vapi
-
- client = Vapi(
- token="YOUR_TOKEN",
- )
- client.tools.create(
- request=CreateDtmfToolDto(),
- )
"""
_response = self._client_wrapper.httpx_client.request(
"tool",
@@ -183,17 +163,6 @@ def get(self, id: str, *, request_options: typing.Optional[RequestOptions] = Non
-------
ToolsGetResponse
-
- Examples
- --------
- from vapi import Vapi
-
- client = Vapi(
- token="YOUR_TOKEN",
- )
- client.tools.get(
- id="id",
- )
"""
_response = self._client_wrapper.httpx_client.request(
f"tool/{jsonable_encoder(id)}",
@@ -227,17 +196,6 @@ def delete(self, id: str, *, request_options: typing.Optional[RequestOptions] =
-------
ToolsDeleteResponse
-
- Examples
- --------
- from vapi import Vapi
-
- client = Vapi(
- token="YOUR_TOKEN",
- )
- client.tools.delete(
- id="id",
- )
"""
_response = self._client_wrapper.httpx_client.request(
f"tool/{jsonable_encoder(id)}",
@@ -308,17 +266,6 @@ def update(
-------
ToolsUpdateResponse
-
- Examples
- --------
- from vapi import Vapi
-
- client = Vapi(
- token="YOUR_TOKEN",
- )
- client.tools.update(
- id="id",
- )
"""
_response = self._client_wrapper.httpx_client.request(
f"tool/{jsonable_encoder(id)}",
@@ -333,6 +280,9 @@ def update(
),
"server": convert_and_respect_annotation_metadata(object_=server, annotation=Server, direction="write"),
},
+ headers={
+ "content-type": "application/json",
+ },
request_options=request_options,
omit=OMIT,
)
@@ -406,23 +356,6 @@ async def list(
-------
typing.List[ToolsListResponseItem]
-
- Examples
- --------
- import asyncio
-
- from vapi import AsyncVapi
-
- client = AsyncVapi(
- token="YOUR_TOKEN",
- )
-
-
- async def main() -> None:
- await client.tools.list()
-
-
- asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
"tool",
@@ -469,25 +402,6 @@ async def create(
-------
ToolsCreateResponse
-
- Examples
- --------
- import asyncio
-
- from vapi import AsyncVapi, CreateDtmfToolDto
-
- client = AsyncVapi(
- token="YOUR_TOKEN",
- )
-
-
- async def main() -> None:
- await client.tools.create(
- request=CreateDtmfToolDto(),
- )
-
-
- asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
"tool",
@@ -525,25 +439,6 @@ async def get(self, id: str, *, request_options: typing.Optional[RequestOptions]
-------
ToolsGetResponse
-
- Examples
- --------
- import asyncio
-
- from vapi import AsyncVapi
-
- client = AsyncVapi(
- token="YOUR_TOKEN",
- )
-
-
- async def main() -> None:
- await client.tools.get(
- id="id",
- )
-
-
- asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"tool/{jsonable_encoder(id)}",
@@ -577,25 +472,6 @@ async def delete(self, id: str, *, request_options: typing.Optional[RequestOptio
-------
ToolsDeleteResponse
-
- Examples
- --------
- import asyncio
-
- from vapi import AsyncVapi
-
- client = AsyncVapi(
- token="YOUR_TOKEN",
- )
-
-
- async def main() -> None:
- await client.tools.delete(
- id="id",
- )
-
-
- asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"tool/{jsonable_encoder(id)}",
@@ -666,25 +542,6 @@ async def update(
-------
ToolsUpdateResponse
-
- Examples
- --------
- import asyncio
-
- from vapi import AsyncVapi
-
- client = AsyncVapi(
- token="YOUR_TOKEN",
- )
-
-
- async def main() -> None:
- await client.tools.update(
- id="id",
- )
-
-
- asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"tool/{jsonable_encoder(id)}",
@@ -699,6 +556,9 @@ async def main() -> None:
),
"server": convert_and_respect_annotation_metadata(object_=server, annotation=Server, direction="write"),
},
+ headers={
+ "content-type": "application/json",
+ },
request_options=request_options,
omit=OMIT,
)
diff --git a/src/vapi/tools/types/tools_create_request.py b/src/vapi/tools/types/tools_create_request.py
index e3a0d9e..44b3e2d 100644
--- a/src/vapi/tools/types/tools_create_request.py
+++ b/src/vapi/tools/types/tools_create_request.py
@@ -8,6 +8,9 @@
from ...types.create_make_tool_dto import CreateMakeToolDto
from ...types.create_transfer_call_tool_dto import CreateTransferCallToolDto
from ...types.create_output_tool_dto import CreateOutputToolDto
+from ...types.create_bash_tool_dto import CreateBashToolDto
+from ...types.create_computer_tool_dto import CreateComputerToolDto
+from ...types.create_text_editor_tool_dto import CreateTextEditorToolDto
ToolsCreateRequest = typing.Union[
CreateDtmfToolDto,
@@ -17,4 +20,7 @@
CreateMakeToolDto,
CreateTransferCallToolDto,
CreateOutputToolDto,
+ CreateBashToolDto,
+ CreateComputerToolDto,
+ CreateTextEditorToolDto,
]
diff --git a/src/vapi/tools/types/tools_create_response.py b/src/vapi/tools/types/tools_create_response.py
index ecbe21d..e0af4a1 100644
--- a/src/vapi/tools/types/tools_create_response.py
+++ b/src/vapi/tools/types/tools_create_response.py
@@ -8,5 +8,19 @@
from ...types.make_tool import MakeTool
from ...types.transfer_call_tool import TransferCallTool
from ...types.output_tool import OutputTool
+from ...types.bash_tool import BashTool
+from ...types.computer_tool import ComputerTool
+from ...types.text_editor_tool import TextEditorTool
-ToolsCreateResponse = typing.Union[DtmfTool, EndCallTool, FunctionTool, GhlTool, MakeTool, TransferCallTool, OutputTool]
+ToolsCreateResponse = typing.Union[
+ DtmfTool,
+ EndCallTool,
+ FunctionTool,
+ GhlTool,
+ MakeTool,
+ TransferCallTool,
+ OutputTool,
+ BashTool,
+ ComputerTool,
+ TextEditorTool,
+]
diff --git a/src/vapi/tools/types/tools_delete_response.py b/src/vapi/tools/types/tools_delete_response.py
index 4fa7d73..e6f6853 100644
--- a/src/vapi/tools/types/tools_delete_response.py
+++ b/src/vapi/tools/types/tools_delete_response.py
@@ -8,5 +8,19 @@
from ...types.make_tool import MakeTool
from ...types.transfer_call_tool import TransferCallTool
from ...types.output_tool import OutputTool
+from ...types.bash_tool import BashTool
+from ...types.computer_tool import ComputerTool
+from ...types.text_editor_tool import TextEditorTool
-ToolsDeleteResponse = typing.Union[DtmfTool, EndCallTool, FunctionTool, GhlTool, MakeTool, TransferCallTool, OutputTool]
+ToolsDeleteResponse = typing.Union[
+ DtmfTool,
+ EndCallTool,
+ FunctionTool,
+ GhlTool,
+ MakeTool,
+ TransferCallTool,
+ OutputTool,
+ BashTool,
+ ComputerTool,
+ TextEditorTool,
+]
diff --git a/src/vapi/tools/types/tools_get_response.py b/src/vapi/tools/types/tools_get_response.py
index 5ae89fb..5a36b63 100644
--- a/src/vapi/tools/types/tools_get_response.py
+++ b/src/vapi/tools/types/tools_get_response.py
@@ -8,5 +8,19 @@
from ...types.make_tool import MakeTool
from ...types.transfer_call_tool import TransferCallTool
from ...types.output_tool import OutputTool
+from ...types.bash_tool import BashTool
+from ...types.computer_tool import ComputerTool
+from ...types.text_editor_tool import TextEditorTool
-ToolsGetResponse = typing.Union[DtmfTool, EndCallTool, FunctionTool, GhlTool, MakeTool, TransferCallTool, OutputTool]
+ToolsGetResponse = typing.Union[
+ DtmfTool,
+ EndCallTool,
+ FunctionTool,
+ GhlTool,
+ MakeTool,
+ TransferCallTool,
+ OutputTool,
+ BashTool,
+ ComputerTool,
+ TextEditorTool,
+]
diff --git a/src/vapi/tools/types/tools_list_response_item.py b/src/vapi/tools/types/tools_list_response_item.py
index 787807a..69cee78 100644
--- a/src/vapi/tools/types/tools_list_response_item.py
+++ b/src/vapi/tools/types/tools_list_response_item.py
@@ -8,7 +8,19 @@
from ...types.make_tool import MakeTool
from ...types.transfer_call_tool import TransferCallTool
from ...types.output_tool import OutputTool
+from ...types.bash_tool import BashTool
+from ...types.computer_tool import ComputerTool
+from ...types.text_editor_tool import TextEditorTool
ToolsListResponseItem = typing.Union[
- DtmfTool, EndCallTool, FunctionTool, GhlTool, MakeTool, TransferCallTool, OutputTool
+ DtmfTool,
+ EndCallTool,
+ FunctionTool,
+ GhlTool,
+ MakeTool,
+ TransferCallTool,
+ OutputTool,
+ BashTool,
+ ComputerTool,
+ TextEditorTool,
]
diff --git a/src/vapi/tools/types/tools_update_response.py b/src/vapi/tools/types/tools_update_response.py
index 6183866..0f17dd6 100644
--- a/src/vapi/tools/types/tools_update_response.py
+++ b/src/vapi/tools/types/tools_update_response.py
@@ -8,5 +8,19 @@
from ...types.make_tool import MakeTool
from ...types.transfer_call_tool import TransferCallTool
from ...types.output_tool import OutputTool
+from ...types.bash_tool import BashTool
+from ...types.computer_tool import ComputerTool
+from ...types.text_editor_tool import TextEditorTool
-ToolsUpdateResponse = typing.Union[DtmfTool, EndCallTool, FunctionTool, GhlTool, MakeTool, TransferCallTool, OutputTool]
+ToolsUpdateResponse = typing.Union[
+ DtmfTool,
+ EndCallTool,
+ FunctionTool,
+ GhlTool,
+ MakeTool,
+ TransferCallTool,
+ OutputTool,
+ BashTool,
+ ComputerTool,
+ TextEditorTool,
+]
diff --git a/src/vapi/types/__init__.py b/src/vapi/types/__init__.py
index 65f41cd..190771d 100644
--- a/src/vapi/types/__init__.py
+++ b/src/vapi/types/__init__.py
@@ -10,6 +10,7 @@
from .analytics_operation_column import AnalyticsOperationColumn
from .analytics_operation_operation import AnalyticsOperationOperation
from .analytics_query import AnalyticsQuery
+from .analytics_query_dto import AnalyticsQueryDto
from .analytics_query_group_by_item import AnalyticsQueryGroupByItem
from .analytics_query_result import AnalyticsQueryResult
from .anthropic_credential import AnthropicCredential
@@ -22,11 +23,14 @@
from .artifact import Artifact
from .artifact_messages_item import ArtifactMessagesItem
from .artifact_plan import ArtifactPlan
+from .assembly_ai_credential import AssemblyAiCredential
+from .assembly_ai_transcriber import AssemblyAiTranscriber
from .assignment_mutation import AssignmentMutation
from .assignment_mutation_conditions_item import AssignmentMutationConditionsItem
from .assistant import Assistant
from .assistant_background_sound import AssistantBackgroundSound
from .assistant_client_messages_item import AssistantClientMessagesItem
+from .assistant_custom_endpointing_rule import AssistantCustomEndpointingRule
from .assistant_first_message_mode import AssistantFirstMessageMode
from .assistant_model import AssistantModel
from .assistant_overrides import AssistantOverrides
@@ -40,17 +44,24 @@
from .assistant_server_messages_item import AssistantServerMessagesItem
from .assistant_transcriber import AssistantTranscriber
from .assistant_voice import AssistantVoice
+from .auto_reload_plan import AutoReloadPlan
+from .auto_reload_plan_dto import AutoReloadPlanDto
+from .azure_credential import AzureCredential
+from .azure_credential_region import AzureCredentialRegion
from .azure_open_ai_credential import AzureOpenAiCredential
from .azure_open_ai_credential_models_item import AzureOpenAiCredentialModelsItem
from .azure_open_ai_credential_region import AzureOpenAiCredentialRegion
from .azure_voice import AzureVoice
from .azure_voice_id import AzureVoiceId
from .azure_voice_id_enum import AzureVoiceIdEnum
+from .bash_tool import BashTool
+from .bash_tool_messages_item import BashToolMessagesItem
from .block_complete_message import BlockCompleteMessage
from .block_complete_message_conditions_item import BlockCompleteMessageConditionsItem
from .block_start_message import BlockStartMessage
from .block_start_message_conditions_item import BlockStartMessageConditionsItem
from .bot_message import BotMessage
+from .both_custom_endpointing_rule import BothCustomEndpointingRule
from .bucket_plan import BucketPlan
from .buy_phone_number_dto import BuyPhoneNumberDto
from .buy_phone_number_dto_fallback_destination import BuyPhoneNumberDtoFallbackDestination
@@ -61,6 +72,9 @@
from .call_costs_item import CallCostsItem
from .call_destination import CallDestination
from .call_ended_reason import CallEndedReason
+from .call_log_privileged import CallLogPrivileged
+from .call_log_privileged_level import CallLogPrivilegedLevel
+from .call_logs_paginated_response import CallLogsPaginatedResponse
from .call_messages_item import CallMessagesItem
from .call_paginated_response import CallPaginatedResponse
from .call_phone_call_provider import CallPhoneCallProvider
@@ -80,11 +94,13 @@
from .client_inbound_message_control_control import ClientInboundMessageControlControl
from .client_inbound_message_message import ClientInboundMessageMessage
from .client_inbound_message_say import ClientInboundMessageSay
+from .client_inbound_message_transfer import ClientInboundMessageTransfer
+from .client_inbound_message_transfer_destination import ClientInboundMessageTransferDestination
from .client_message import ClientMessage
from .client_message_conversation_update import ClientMessageConversationUpdate
from .client_message_conversation_update_messages_item import ClientMessageConversationUpdateMessagesItem
from .client_message_hang import ClientMessageHang
-from .client_message_language_changed import ClientMessageLanguageChanged
+from .client_message_language_change_detected import ClientMessageLanguageChangeDetected
from .client_message_message import ClientMessageMessage
from .client_message_metadata import ClientMessageMetadata
from .client_message_model_output import ClientMessageModelOutput
@@ -97,9 +113,13 @@
from .client_message_transcript import ClientMessageTranscript
from .client_message_transcript_role import ClientMessageTranscriptRole
from .client_message_transcript_transcript_type import ClientMessageTranscriptTranscriptType
+from .client_message_transfer_update import ClientMessageTransferUpdate
+from .client_message_transfer_update_destination import ClientMessageTransferUpdateDestination
from .client_message_user_interrupted import ClientMessageUserInterrupted
from .client_message_voice_input import ClientMessageVoiceInput
from .clone_voice_dto import CloneVoiceDto
+from .computer_tool import ComputerTool
+from .computer_tool_messages_item import ComputerToolMessagesItem
from .condition import Condition
from .condition_operator import ConditionOperator
from .conversation_block import ConversationBlock
@@ -107,6 +127,7 @@
from .cost_breakdown import CostBreakdown
from .create_anthropic_credential_dto import CreateAnthropicCredentialDto
from .create_anyscale_credential_dto import CreateAnyscaleCredentialDto
+from .create_assembly_ai_credential_dto import CreateAssemblyAiCredentialDto
from .create_assistant_dto import CreateAssistantDto
from .create_assistant_dto_background_sound import CreateAssistantDtoBackgroundSound
from .create_assistant_dto_client_messages_item import CreateAssistantDtoClientMessagesItem
@@ -115,15 +136,22 @@
from .create_assistant_dto_server_messages_item import CreateAssistantDtoServerMessagesItem
from .create_assistant_dto_transcriber import CreateAssistantDtoTranscriber
from .create_assistant_dto_voice import CreateAssistantDtoVoice
+from .create_azure_credential_dto import CreateAzureCredentialDto
+from .create_azure_credential_dto_region import CreateAzureCredentialDtoRegion
from .create_azure_open_ai_credential_dto import CreateAzureOpenAiCredentialDto
from .create_azure_open_ai_credential_dto_models_item import CreateAzureOpenAiCredentialDtoModelsItem
from .create_azure_open_ai_credential_dto_region import CreateAzureOpenAiCredentialDtoRegion
+from .create_bash_tool_dto import CreateBashToolDto
+from .create_bash_tool_dto_messages_item import CreateBashToolDtoMessagesItem
from .create_byo_phone_number_dto import CreateByoPhoneNumberDto
from .create_byo_phone_number_dto_fallback_destination import CreateByoPhoneNumberDtoFallbackDestination
from .create_byo_sip_trunk_credential_dto import CreateByoSipTrunkCredentialDto
from .create_cartesia_credential_dto import CreateCartesiaCredentialDto
+from .create_computer_tool_dto import CreateComputerToolDto
+from .create_computer_tool_dto_messages_item import CreateComputerToolDtoMessagesItem
from .create_conversation_block_dto import CreateConversationBlockDto
from .create_conversation_block_dto_messages_item import CreateConversationBlockDtoMessagesItem
+from .create_custom_knowledge_base_dto import CreateCustomKnowledgeBaseDto
from .create_custom_llm_credential_dto import CreateCustomLlmCredentialDto
from .create_customer_dto import CreateCustomerDto
from .create_deep_infra_credential_dto import CreateDeepInfraCredentialDto
@@ -140,7 +168,10 @@
from .create_ghl_tool_dto_messages_item import CreateGhlToolDtoMessagesItem
from .create_gladia_credential_dto import CreateGladiaCredentialDto
from .create_go_high_level_credential_dto import CreateGoHighLevelCredentialDto
+from .create_google_credential_dto import CreateGoogleCredentialDto
from .create_groq_credential_dto import CreateGroqCredentialDto
+from .create_inflection_ai_credential_dto import CreateInflectionAiCredentialDto
+from .create_langfuse_credential_dto import CreateLangfuseCredentialDto
from .create_lmnt_credential_dto import CreateLmntCredentialDto
from .create_make_credential_dto import CreateMakeCredentialDto
from .create_make_tool_dto import CreateMakeToolDto
@@ -148,6 +179,7 @@
from .create_open_ai_credential_dto import CreateOpenAiCredentialDto
from .create_open_router_credential_dto import CreateOpenRouterCredentialDto
from .create_org_dto import CreateOrgDto
+from .create_org_dto_channel import CreateOrgDtoChannel
from .create_outbound_call_dto import CreateOutboundCallDto
from .create_output_tool_dto import CreateOutputToolDto
from .create_output_tool_dto_messages_item import CreateOutputToolDtoMessagesItem
@@ -157,6 +189,9 @@
from .create_runpod_credential_dto import CreateRunpodCredentialDto
from .create_s_3_credential_dto import CreateS3CredentialDto
from .create_squad_dto import CreateSquadDto
+from .create_tavus_credential_dto import CreateTavusCredentialDto
+from .create_text_editor_tool_dto import CreateTextEditorToolDto
+from .create_text_editor_tool_dto_messages_item import CreateTextEditorToolDtoMessagesItem
from .create_together_ai_credential_dto import CreateTogetherAiCredentialDto
from .create_token_dto import CreateTokenDto
from .create_token_dto_tag import CreateTokenDtoTag
@@ -171,6 +206,7 @@
from .create_transfer_call_tool_dto import CreateTransferCallToolDto
from .create_transfer_call_tool_dto_destinations_item import CreateTransferCallToolDtoDestinationsItem
from .create_transfer_call_tool_dto_messages_item import CreateTransferCallToolDtoMessagesItem
+from .create_trieve_knowledge_base_dto import CreateTrieveKnowledgeBaseDto
from .create_twilio_credential_dto import CreateTwilioCredentialDto
from .create_twilio_phone_number_dto import CreateTwilioPhoneNumberDto
from .create_twilio_phone_number_dto_fallback_destination import CreateTwilioPhoneNumberDtoFallbackDestination
@@ -182,13 +218,21 @@
from .create_vonage_phone_number_dto import CreateVonagePhoneNumberDto
from .create_vonage_phone_number_dto_fallback_destination import CreateVonagePhoneNumberDtoFallbackDestination
from .create_web_call_dto import CreateWebCallDto
+from .create_webhook_credential_dto import CreateWebhookCredentialDto
from .create_workflow_block_dto import CreateWorkflowBlockDto
from .create_workflow_block_dto_messages_item import CreateWorkflowBlockDtoMessagesItem
from .create_workflow_block_dto_steps_item import CreateWorkflowBlockDtoStepsItem
+from .create_x_ai_credential_dto import CreateXAiCredentialDto
+from .credits_buy_dto import CreditsBuyDto
+from .custom_knowledge_base import CustomKnowledgeBase
from .custom_llm_credential import CustomLlmCredential
from .custom_llm_model import CustomLlmModel
from .custom_llm_model_metadata_send_mode import CustomLlmModelMetadataSendMode
from .custom_llm_model_tools_item import CustomLlmModelToolsItem
+from .custom_message import CustomMessage
+from .custom_transcriber import CustomTranscriber
+from .custom_voice import CustomVoice
+from .customer_custom_endpointing_rule import CustomerCustomEndpointingRule
from .deep_infra_credential import DeepInfraCredential
from .deep_infra_model import DeepInfraModel
from .deep_infra_model_tools_item import DeepInfraModelToolsItem
@@ -210,6 +254,42 @@
from .end_call_tool_messages_item import EndCallToolMessagesItem
from .error import Error
from .exact_replacement import ExactReplacement
+from .fallback_azure_voice import FallbackAzureVoice
+from .fallback_azure_voice_id import FallbackAzureVoiceId
+from .fallback_azure_voice_voice_id import FallbackAzureVoiceVoiceId
+from .fallback_cartesia_voice import FallbackCartesiaVoice
+from .fallback_cartesia_voice_language import FallbackCartesiaVoiceLanguage
+from .fallback_cartesia_voice_model import FallbackCartesiaVoiceModel
+from .fallback_custom_voice import FallbackCustomVoice
+from .fallback_deepgram_voice import FallbackDeepgramVoice
+from .fallback_deepgram_voice_id import FallbackDeepgramVoiceId
+from .fallback_deepgram_voice_id_enum import FallbackDeepgramVoiceIdEnum
+from .fallback_eleven_labs_voice import FallbackElevenLabsVoice
+from .fallback_eleven_labs_voice_id import FallbackElevenLabsVoiceId
+from .fallback_eleven_labs_voice_id_enum import FallbackElevenLabsVoiceIdEnum
+from .fallback_eleven_labs_voice_model import FallbackElevenLabsVoiceModel
+from .fallback_lmnt_voice import FallbackLmntVoice
+from .fallback_lmnt_voice_id import FallbackLmntVoiceId
+from .fallback_lmnt_voice_id_enum import FallbackLmntVoiceIdEnum
+from .fallback_neets_voice import FallbackNeetsVoice
+from .fallback_neets_voice_id import FallbackNeetsVoiceId
+from .fallback_neets_voice_id_enum import FallbackNeetsVoiceIdEnum
+from .fallback_open_ai_voice import FallbackOpenAiVoice
+from .fallback_open_ai_voice_id import FallbackOpenAiVoiceId
+from .fallback_plan import FallbackPlan
+from .fallback_plan_voices_item import FallbackPlanVoicesItem
+from .fallback_play_ht_voice import FallbackPlayHtVoice
+from .fallback_play_ht_voice_emotion import FallbackPlayHtVoiceEmotion
+from .fallback_play_ht_voice_id import FallbackPlayHtVoiceId
+from .fallback_play_ht_voice_id_enum import FallbackPlayHtVoiceIdEnum
+from .fallback_play_ht_voice_language import FallbackPlayHtVoiceLanguage
+from .fallback_play_ht_voice_model import FallbackPlayHtVoiceModel
+from .fallback_rime_ai_voice import FallbackRimeAiVoice
+from .fallback_rime_ai_voice_id import FallbackRimeAiVoiceId
+from .fallback_rime_ai_voice_id_enum import FallbackRimeAiVoiceIdEnum
+from .fallback_rime_ai_voice_model import FallbackRimeAiVoiceModel
+from .fallback_tavus_voice import FallbackTavusVoice
+from .fallback_tavus_voice_voice_id import FallbackTavusVoiceVoiceId
from .file import File
from .file_status import FileStatus
from .format_plan import FormatPlan
@@ -233,21 +313,30 @@
from .gladia_transcriber_language_behaviour import GladiaTranscriberLanguageBehaviour
from .gladia_transcriber_model import GladiaTranscriberModel
from .go_high_level_credential import GoHighLevelCredential
+from .google_credential import GoogleCredential
+from .google_model import GoogleModel
+from .google_model_model import GoogleModelModel
+from .google_model_tools_item import GoogleModelToolsItem
from .groq_credential import GroqCredential
from .groq_model import GroqModel
from .groq_model_model import GroqModelModel
from .groq_model_tools_item import GroqModelToolsItem
from .handoff_step import HandoffStep
from .handoff_step_block import HandoffStepBlock
+from .hipaa_buy_dto import HipaaBuyDto
from .import_twilio_phone_number_dto import ImportTwilioPhoneNumberDto
from .import_twilio_phone_number_dto_fallback_destination import ImportTwilioPhoneNumberDtoFallbackDestination
from .import_vonage_phone_number_dto import ImportVonagePhoneNumberDto
from .import_vonage_phone_number_dto_fallback_destination import ImportVonagePhoneNumberDtoFallbackDestination
+from .inflection_ai_credential import InflectionAiCredential
+from .inflection_ai_model import InflectionAiModel
+from .inflection_ai_model_tools_item import InflectionAiModelToolsItem
from .invite_user_dto import InviteUserDto
from .invite_user_dto_role import InviteUserDtoRole
from .json_schema import JsonSchema
from .json_schema_type import JsonSchemaType
-from .knowledge_base import KnowledgeBase
+from .knowledge_base_response_document import KnowledgeBaseResponseDocument
+from .langfuse_credential import LangfuseCredential
from .lmnt_credential import LmntCredential
from .lmnt_voice import LmntVoice
from .lmnt_voice_id import LmntVoiceId
@@ -273,6 +362,8 @@
from .neets_voice import NeetsVoice
from .neets_voice_id import NeetsVoiceId
from .neets_voice_id_enum import NeetsVoiceIdEnum
+from .o_auth_2_authentication_plan import OAuth2AuthenticationPlan
+from .oauth_2_authentication_session import Oauth2AuthenticationSession
from .open_ai_credential import OpenAiCredential
from .open_ai_function import OpenAiFunction
from .open_ai_function_parameters import OpenAiFunctionParameters
@@ -288,18 +379,30 @@
from .open_router_model import OpenRouterModel
from .open_router_model_tools_item import OpenRouterModelToolsItem
from .org import Org
+from .org_channel import OrgChannel
from .org_plan import OrgPlan
+from .org_with_org_user import OrgWithOrgUser
+from .org_with_org_user_channel import OrgWithOrgUserChannel
+from .org_with_org_user_role import OrgWithOrgUserRole
from .output_tool import OutputTool
from .output_tool_messages_item import OutputToolMessagesItem
from .pagination_meta import PaginationMeta
+from .payment import Payment
+from .payment_retry_dto import PaymentRetryDto
+from .payment_status import PaymentStatus
+from .payments_paginated_response import PaymentsPaginatedResponse
from .perplexity_ai_credential import PerplexityAiCredential
from .perplexity_ai_model import PerplexityAiModel
from .perplexity_ai_model_tools_item import PerplexityAiModelToolsItem
+from .phone_number_paginated_response import PhoneNumberPaginatedResponse
+from .phone_number_paginated_response_results_item import PhoneNumberPaginatedResponseResultsItem
from .play_ht_credential import PlayHtCredential
from .play_ht_voice import PlayHtVoice
from .play_ht_voice_emotion import PlayHtVoiceEmotion
from .play_ht_voice_id import PlayHtVoiceId
from .play_ht_voice_id_enum import PlayHtVoiceIdEnum
+from .play_ht_voice_language import PlayHtVoiceLanguage
+from .play_ht_voice_model import PlayHtVoiceModel
from .punctuation_boundary import PunctuationBoundary
from .regex_option import RegexOption
from .regex_option_type import RegexOptionType
@@ -327,8 +430,11 @@
from .server_message_end_of_call_report_phone_number import ServerMessageEndOfCallReportPhoneNumber
from .server_message_hang import ServerMessageHang
from .server_message_hang_phone_number import ServerMessageHangPhoneNumber
-from .server_message_language_changed import ServerMessageLanguageChanged
-from .server_message_language_changed_phone_number import ServerMessageLanguageChangedPhoneNumber
+from .server_message_knowledge_base_request import ServerMessageKnowledgeBaseRequest
+from .server_message_knowledge_base_request_messages_item import ServerMessageKnowledgeBaseRequestMessagesItem
+from .server_message_knowledge_base_request_phone_number import ServerMessageKnowledgeBaseRequestPhoneNumber
+from .server_message_language_change_detected import ServerMessageLanguageChangeDetected
+from .server_message_language_change_detected_phone_number import ServerMessageLanguageChangeDetectedPhoneNumber
from .server_message_message import ServerMessageMessage
from .server_message_model_output import ServerMessageModelOutput
from .server_message_model_output_phone_number import ServerMessageModelOutputPhoneNumber
@@ -339,6 +445,7 @@
from .server_message_response import ServerMessageResponse
from .server_message_response_assistant_request import ServerMessageResponseAssistantRequest
from .server_message_response_assistant_request_destination import ServerMessageResponseAssistantRequestDestination
+from .server_message_response_knowledge_base_request import ServerMessageResponseKnowledgeBaseRequest
from .server_message_response_message_response import ServerMessageResponseMessageResponse
from .server_message_response_tool_calls import ServerMessageResponseToolCalls
from .server_message_response_transfer_destination_request import ServerMessageResponseTransferDestinationRequest
@@ -374,6 +481,7 @@
from .server_message_voice_input_phone_number import ServerMessageVoiceInputPhoneNumber
from .server_message_voice_request import ServerMessageVoiceRequest
from .server_message_voice_request_phone_number import ServerMessageVoiceRequestPhoneNumber
+from .sip_authentication import SipAuthentication
from .sip_trunk_gateway import SipTrunkGateway
from .sip_trunk_gateway_outbound_protocol import SipTrunkGatewayOutboundProtocol
from .sip_trunk_outbound_authentication_plan import SipTrunkOutboundAuthenticationPlan
@@ -381,10 +489,18 @@
from .squad import Squad
from .squad_member_dto import SquadMemberDto
from .start_speaking_plan import StartSpeakingPlan
+from .start_speaking_plan_custom_endpointing_rules_item import StartSpeakingPlanCustomEndpointingRulesItem
from .step_destination import StepDestination
from .step_destination_conditions_item import StepDestinationConditionsItem
from .stop_speaking_plan import StopSpeakingPlan
from .structured_data_plan import StructuredDataPlan
+from .subscription import Subscription
+from .subscription_concurrency_line_buy_dto import SubscriptionConcurrencyLineBuyDto
+from .subscription_concurrency_line_remove_dto import SubscriptionConcurrencyLineRemoveDto
+from .subscription_coupon_add_dto import SubscriptionCouponAddDto
+from .subscription_monthly_charge import SubscriptionMonthlyCharge
+from .subscription_status import SubscriptionStatus
+from .subscription_type import SubscriptionType
from .success_evaluation_plan import SuccessEvaluationPlan
from .success_evaluation_plan_rubric import SuccessEvaluationPlanRubric
from .summary_plan import SummaryPlan
@@ -393,11 +509,19 @@
from .system_message import SystemMessage
from .talkscriber_transcriber import TalkscriberTranscriber
from .talkscriber_transcriber_language import TalkscriberTranscriberLanguage
+from .tavus_conversation_properties import TavusConversationProperties
+from .tavus_credential import TavusCredential
+from .tavus_voice import TavusVoice
+from .tavus_voice_voice_id import TavusVoiceVoiceId
from .template import Template
from .template_details import TemplateDetails
from .template_provider import TemplateProvider
from .template_provider_details import TemplateProviderDetails
from .template_visibility import TemplateVisibility
+from .text_content import TextContent
+from .text_content_language import TextContentLanguage
+from .text_editor_tool import TextEditorTool
+from .text_editor_tool_messages_item import TextEditorToolMessagesItem
from .time_range import TimeRange
from .time_range_step import TimeRangeStep
from .together_ai_credential import TogetherAiCredential
@@ -429,13 +553,29 @@
from .transfer_call_tool_destinations_item import TransferCallToolDestinationsItem
from .transfer_call_tool_messages_item import TransferCallToolMessagesItem
from .transfer_destination_assistant import TransferDestinationAssistant
+from .transfer_destination_assistant_message import TransferDestinationAssistantMessage
from .transfer_destination_number import TransferDestinationNumber
+from .transfer_destination_number_message import TransferDestinationNumberMessage
from .transfer_destination_sip import TransferDestinationSip
+from .transfer_destination_sip_message import TransferDestinationSipMessage
from .transfer_destination_step import TransferDestinationStep
+from .transfer_destination_step_message import TransferDestinationStepMessage
from .transfer_mode import TransferMode
+from .transfer_plan import TransferPlan
+from .transfer_plan_message import TransferPlanMessage
+from .transfer_plan_mode import TransferPlanMode
+from .transport import Transport
from .transport_configuration_twilio import TransportConfigurationTwilio
from .transport_configuration_twilio_recording_channels import TransportConfigurationTwilioRecordingChannels
from .transport_cost import TransportCost
+from .transport_cost_provider import TransportCostProvider
+from .transport_provider import TransportProvider
+from .trieve_knowledge_base import TrieveKnowledgeBase
+from .trieve_knowledge_base_vector_store_create_plan import TrieveKnowledgeBaseVectorStoreCreatePlan
+from .trieve_knowledge_base_vector_store_search_plan import TrieveKnowledgeBaseVectorStoreSearchPlan
+from .trieve_knowledge_base_vector_store_search_plan_search_type import (
+ TrieveKnowledgeBaseVectorStoreSearchPlanSearchType,
+)
from .twilio_credential import TwilioCredential
from .twilio_phone_number import TwilioPhoneNumber
from .twilio_phone_number_fallback_destination import TwilioPhoneNumberFallbackDestination
@@ -445,6 +585,9 @@
)
from .update_anthropic_credential_dto import UpdateAnthropicCredentialDto
from .update_anyscale_credential_dto import UpdateAnyscaleCredentialDto
+from .update_assembly_ai_credential_dto import UpdateAssemblyAiCredentialDto
+from .update_azure_credential_dto import UpdateAzureCredentialDto
+from .update_azure_credential_dto_region import UpdateAzureCredentialDtoRegion
from .update_azure_open_ai_credential_dto import UpdateAzureOpenAiCredentialDto
from .update_azure_open_ai_credential_dto_models_item import UpdateAzureOpenAiCredentialDtoModelsItem
from .update_azure_open_ai_credential_dto_region import UpdateAzureOpenAiCredentialDtoRegion
@@ -457,17 +600,22 @@
from .update_gcp_credential_dto import UpdateGcpCredentialDto
from .update_gladia_credential_dto import UpdateGladiaCredentialDto
from .update_go_high_level_credential_dto import UpdateGoHighLevelCredentialDto
+from .update_google_credential_dto import UpdateGoogleCredentialDto
from .update_groq_credential_dto import UpdateGroqCredentialDto
+from .update_inflection_ai_credential_dto import UpdateInflectionAiCredentialDto
+from .update_langfuse_credential_dto import UpdateLangfuseCredentialDto
from .update_lmnt_credential_dto import UpdateLmntCredentialDto
from .update_make_credential_dto import UpdateMakeCredentialDto
from .update_open_ai_credential_dto import UpdateOpenAiCredentialDto
from .update_open_router_credential_dto import UpdateOpenRouterCredentialDto
from .update_org_dto import UpdateOrgDto
+from .update_org_dto_channel import UpdateOrgDtoChannel
from .update_perplexity_ai_credential_dto import UpdatePerplexityAiCredentialDto
from .update_play_ht_credential_dto import UpdatePlayHtCredentialDto
from .update_rime_ai_credential_dto import UpdateRimeAiCredentialDto
from .update_runpod_credential_dto import UpdateRunpodCredentialDto
from .update_s_3_credential_dto import UpdateS3CredentialDto
+from .update_tavus_credential_dto import UpdateTavusCredentialDto
from .update_together_ai_credential_dto import UpdateTogetherAiCredentialDto
from .update_tool_template_dto import UpdateToolTemplateDto
from .update_tool_template_dto_details import UpdateToolTemplateDtoDetails
@@ -478,9 +626,11 @@
from .update_user_role_dto import UpdateUserRoleDto
from .update_user_role_dto_role import UpdateUserRoleDtoRole
from .update_vonage_credential_dto import UpdateVonageCredentialDto
+from .update_x_ai_credential_dto import UpdateXAiCredentialDto
from .user import User
from .user_message import UserMessage
from .vapi_cost import VapiCost
+from .vapi_cost_sub_type import VapiCostSubType
from .vapi_model import VapiModel
from .vapi_model_steps_item import VapiModelStepsItem
from .vapi_model_tools_item import VapiModelToolsItem
@@ -493,9 +643,13 @@
from .vonage_credential import VonageCredential
from .vonage_phone_number import VonagePhoneNumber
from .vonage_phone_number_fallback_destination import VonagePhoneNumberFallbackDestination
+from .webhook_credential import WebhookCredential
from .workflow_block import WorkflowBlock
from .workflow_block_messages_item import WorkflowBlockMessagesItem
from .workflow_block_steps_item import WorkflowBlockStepsItem
+from .x_ai_credential import XAiCredential
+from .xai_model import XaiModel
+from .xai_model_tools_item import XaiModelToolsItem
__all__ = [
"AddVoiceToProviderDto",
@@ -508,6 +662,7 @@
"AnalyticsOperationColumn",
"AnalyticsOperationOperation",
"AnalyticsQuery",
+ "AnalyticsQueryDto",
"AnalyticsQueryGroupByItem",
"AnalyticsQueryResult",
"AnthropicCredential",
@@ -520,11 +675,14 @@
"Artifact",
"ArtifactMessagesItem",
"ArtifactPlan",
+ "AssemblyAiCredential",
+ "AssemblyAiTranscriber",
"AssignmentMutation",
"AssignmentMutationConditionsItem",
"Assistant",
"AssistantBackgroundSound",
"AssistantClientMessagesItem",
+ "AssistantCustomEndpointingRule",
"AssistantFirstMessageMode",
"AssistantModel",
"AssistantOverrides",
@@ -538,17 +696,24 @@
"AssistantServerMessagesItem",
"AssistantTranscriber",
"AssistantVoice",
+ "AutoReloadPlan",
+ "AutoReloadPlanDto",
+ "AzureCredential",
+ "AzureCredentialRegion",
"AzureOpenAiCredential",
"AzureOpenAiCredentialModelsItem",
"AzureOpenAiCredentialRegion",
"AzureVoice",
"AzureVoiceId",
"AzureVoiceIdEnum",
+ "BashTool",
+ "BashToolMessagesItem",
"BlockCompleteMessage",
"BlockCompleteMessageConditionsItem",
"BlockStartMessage",
"BlockStartMessageConditionsItem",
"BotMessage",
+ "BothCustomEndpointingRule",
"BucketPlan",
"BuyPhoneNumberDto",
"BuyPhoneNumberDtoFallbackDestination",
@@ -559,6 +724,9 @@
"CallCostsItem",
"CallDestination",
"CallEndedReason",
+ "CallLogPrivileged",
+ "CallLogPrivilegedLevel",
+ "CallLogsPaginatedResponse",
"CallMessagesItem",
"CallPaginatedResponse",
"CallPhoneCallProvider",
@@ -578,11 +746,13 @@
"ClientInboundMessageControlControl",
"ClientInboundMessageMessage",
"ClientInboundMessageSay",
+ "ClientInboundMessageTransfer",
+ "ClientInboundMessageTransferDestination",
"ClientMessage",
"ClientMessageConversationUpdate",
"ClientMessageConversationUpdateMessagesItem",
"ClientMessageHang",
- "ClientMessageLanguageChanged",
+ "ClientMessageLanguageChangeDetected",
"ClientMessageMessage",
"ClientMessageMetadata",
"ClientMessageModelOutput",
@@ -595,9 +765,13 @@
"ClientMessageTranscript",
"ClientMessageTranscriptRole",
"ClientMessageTranscriptTranscriptType",
+ "ClientMessageTransferUpdate",
+ "ClientMessageTransferUpdateDestination",
"ClientMessageUserInterrupted",
"ClientMessageVoiceInput",
"CloneVoiceDto",
+ "ComputerTool",
+ "ComputerToolMessagesItem",
"Condition",
"ConditionOperator",
"ConversationBlock",
@@ -605,6 +779,7 @@
"CostBreakdown",
"CreateAnthropicCredentialDto",
"CreateAnyscaleCredentialDto",
+ "CreateAssemblyAiCredentialDto",
"CreateAssistantDto",
"CreateAssistantDtoBackgroundSound",
"CreateAssistantDtoClientMessagesItem",
@@ -613,15 +788,22 @@
"CreateAssistantDtoServerMessagesItem",
"CreateAssistantDtoTranscriber",
"CreateAssistantDtoVoice",
+ "CreateAzureCredentialDto",
+ "CreateAzureCredentialDtoRegion",
"CreateAzureOpenAiCredentialDto",
"CreateAzureOpenAiCredentialDtoModelsItem",
"CreateAzureOpenAiCredentialDtoRegion",
+ "CreateBashToolDto",
+ "CreateBashToolDtoMessagesItem",
"CreateByoPhoneNumberDto",
"CreateByoPhoneNumberDtoFallbackDestination",
"CreateByoSipTrunkCredentialDto",
"CreateCartesiaCredentialDto",
+ "CreateComputerToolDto",
+ "CreateComputerToolDtoMessagesItem",
"CreateConversationBlockDto",
"CreateConversationBlockDtoMessagesItem",
+ "CreateCustomKnowledgeBaseDto",
"CreateCustomLlmCredentialDto",
"CreateCustomerDto",
"CreateDeepInfraCredentialDto",
@@ -638,7 +820,10 @@
"CreateGhlToolDtoMessagesItem",
"CreateGladiaCredentialDto",
"CreateGoHighLevelCredentialDto",
+ "CreateGoogleCredentialDto",
"CreateGroqCredentialDto",
+ "CreateInflectionAiCredentialDto",
+ "CreateLangfuseCredentialDto",
"CreateLmntCredentialDto",
"CreateMakeCredentialDto",
"CreateMakeToolDto",
@@ -646,6 +831,7 @@
"CreateOpenAiCredentialDto",
"CreateOpenRouterCredentialDto",
"CreateOrgDto",
+ "CreateOrgDtoChannel",
"CreateOutboundCallDto",
"CreateOutputToolDto",
"CreateOutputToolDtoMessagesItem",
@@ -655,6 +841,9 @@
"CreateRunpodCredentialDto",
"CreateS3CredentialDto",
"CreateSquadDto",
+ "CreateTavusCredentialDto",
+ "CreateTextEditorToolDto",
+ "CreateTextEditorToolDtoMessagesItem",
"CreateTogetherAiCredentialDto",
"CreateTokenDto",
"CreateTokenDtoTag",
@@ -669,6 +858,7 @@
"CreateTransferCallToolDto",
"CreateTransferCallToolDtoDestinationsItem",
"CreateTransferCallToolDtoMessagesItem",
+ "CreateTrieveKnowledgeBaseDto",
"CreateTwilioCredentialDto",
"CreateTwilioPhoneNumberDto",
"CreateTwilioPhoneNumberDtoFallbackDestination",
@@ -680,13 +870,21 @@
"CreateVonagePhoneNumberDto",
"CreateVonagePhoneNumberDtoFallbackDestination",
"CreateWebCallDto",
+ "CreateWebhookCredentialDto",
"CreateWorkflowBlockDto",
"CreateWorkflowBlockDtoMessagesItem",
"CreateWorkflowBlockDtoStepsItem",
+ "CreateXAiCredentialDto",
+ "CreditsBuyDto",
+ "CustomKnowledgeBase",
"CustomLlmCredential",
"CustomLlmModel",
"CustomLlmModelMetadataSendMode",
"CustomLlmModelToolsItem",
+ "CustomMessage",
+ "CustomTranscriber",
+ "CustomVoice",
+ "CustomerCustomEndpointingRule",
"DeepInfraCredential",
"DeepInfraModel",
"DeepInfraModelToolsItem",
@@ -708,6 +906,42 @@
"EndCallToolMessagesItem",
"Error",
"ExactReplacement",
+ "FallbackAzureVoice",
+ "FallbackAzureVoiceId",
+ "FallbackAzureVoiceVoiceId",
+ "FallbackCartesiaVoice",
+ "FallbackCartesiaVoiceLanguage",
+ "FallbackCartesiaVoiceModel",
+ "FallbackCustomVoice",
+ "FallbackDeepgramVoice",
+ "FallbackDeepgramVoiceId",
+ "FallbackDeepgramVoiceIdEnum",
+ "FallbackElevenLabsVoice",
+ "FallbackElevenLabsVoiceId",
+ "FallbackElevenLabsVoiceIdEnum",
+ "FallbackElevenLabsVoiceModel",
+ "FallbackLmntVoice",
+ "FallbackLmntVoiceId",
+ "FallbackLmntVoiceIdEnum",
+ "FallbackNeetsVoice",
+ "FallbackNeetsVoiceId",
+ "FallbackNeetsVoiceIdEnum",
+ "FallbackOpenAiVoice",
+ "FallbackOpenAiVoiceId",
+ "FallbackPlan",
+ "FallbackPlanVoicesItem",
+ "FallbackPlayHtVoice",
+ "FallbackPlayHtVoiceEmotion",
+ "FallbackPlayHtVoiceId",
+ "FallbackPlayHtVoiceIdEnum",
+ "FallbackPlayHtVoiceLanguage",
+ "FallbackPlayHtVoiceModel",
+ "FallbackRimeAiVoice",
+ "FallbackRimeAiVoiceId",
+ "FallbackRimeAiVoiceIdEnum",
+ "FallbackRimeAiVoiceModel",
+ "FallbackTavusVoice",
+ "FallbackTavusVoiceVoiceId",
"File",
"FileStatus",
"FormatPlan",
@@ -731,21 +965,30 @@
"GladiaTranscriberLanguageBehaviour",
"GladiaTranscriberModel",
"GoHighLevelCredential",
+ "GoogleCredential",
+ "GoogleModel",
+ "GoogleModelModel",
+ "GoogleModelToolsItem",
"GroqCredential",
"GroqModel",
"GroqModelModel",
"GroqModelToolsItem",
"HandoffStep",
"HandoffStepBlock",
+ "HipaaBuyDto",
"ImportTwilioPhoneNumberDto",
"ImportTwilioPhoneNumberDtoFallbackDestination",
"ImportVonagePhoneNumberDto",
"ImportVonagePhoneNumberDtoFallbackDestination",
+ "InflectionAiCredential",
+ "InflectionAiModel",
+ "InflectionAiModelToolsItem",
"InviteUserDto",
"InviteUserDtoRole",
"JsonSchema",
"JsonSchemaType",
- "KnowledgeBase",
+ "KnowledgeBaseResponseDocument",
+ "LangfuseCredential",
"LmntCredential",
"LmntVoice",
"LmntVoiceId",
@@ -771,6 +1014,8 @@
"NeetsVoice",
"NeetsVoiceId",
"NeetsVoiceIdEnum",
+ "OAuth2AuthenticationPlan",
+ "Oauth2AuthenticationSession",
"OpenAiCredential",
"OpenAiFunction",
"OpenAiFunctionParameters",
@@ -786,18 +1031,30 @@
"OpenRouterModel",
"OpenRouterModelToolsItem",
"Org",
+ "OrgChannel",
"OrgPlan",
+ "OrgWithOrgUser",
+ "OrgWithOrgUserChannel",
+ "OrgWithOrgUserRole",
"OutputTool",
"OutputToolMessagesItem",
"PaginationMeta",
+ "Payment",
+ "PaymentRetryDto",
+ "PaymentStatus",
+ "PaymentsPaginatedResponse",
"PerplexityAiCredential",
"PerplexityAiModel",
"PerplexityAiModelToolsItem",
+ "PhoneNumberPaginatedResponse",
+ "PhoneNumberPaginatedResponseResultsItem",
"PlayHtCredential",
"PlayHtVoice",
"PlayHtVoiceEmotion",
"PlayHtVoiceId",
"PlayHtVoiceIdEnum",
+ "PlayHtVoiceLanguage",
+ "PlayHtVoiceModel",
"PunctuationBoundary",
"RegexOption",
"RegexOptionType",
@@ -825,8 +1082,11 @@
"ServerMessageEndOfCallReportPhoneNumber",
"ServerMessageHang",
"ServerMessageHangPhoneNumber",
- "ServerMessageLanguageChanged",
- "ServerMessageLanguageChangedPhoneNumber",
+ "ServerMessageKnowledgeBaseRequest",
+ "ServerMessageKnowledgeBaseRequestMessagesItem",
+ "ServerMessageKnowledgeBaseRequestPhoneNumber",
+ "ServerMessageLanguageChangeDetected",
+ "ServerMessageLanguageChangeDetectedPhoneNumber",
"ServerMessageMessage",
"ServerMessageModelOutput",
"ServerMessageModelOutputPhoneNumber",
@@ -837,6 +1097,7 @@
"ServerMessageResponse",
"ServerMessageResponseAssistantRequest",
"ServerMessageResponseAssistantRequestDestination",
+ "ServerMessageResponseKnowledgeBaseRequest",
"ServerMessageResponseMessageResponse",
"ServerMessageResponseToolCalls",
"ServerMessageResponseTransferDestinationRequest",
@@ -870,6 +1131,7 @@
"ServerMessageVoiceInputPhoneNumber",
"ServerMessageVoiceRequest",
"ServerMessageVoiceRequestPhoneNumber",
+ "SipAuthentication",
"SipTrunkGateway",
"SipTrunkGatewayOutboundProtocol",
"SipTrunkOutboundAuthenticationPlan",
@@ -877,10 +1139,18 @@
"Squad",
"SquadMemberDto",
"StartSpeakingPlan",
+ "StartSpeakingPlanCustomEndpointingRulesItem",
"StepDestination",
"StepDestinationConditionsItem",
"StopSpeakingPlan",
"StructuredDataPlan",
+ "Subscription",
+ "SubscriptionConcurrencyLineBuyDto",
+ "SubscriptionConcurrencyLineRemoveDto",
+ "SubscriptionCouponAddDto",
+ "SubscriptionMonthlyCharge",
+ "SubscriptionStatus",
+ "SubscriptionType",
"SuccessEvaluationPlan",
"SuccessEvaluationPlanRubric",
"SummaryPlan",
@@ -889,11 +1159,19 @@
"SystemMessage",
"TalkscriberTranscriber",
"TalkscriberTranscriberLanguage",
+ "TavusConversationProperties",
+ "TavusCredential",
+ "TavusVoice",
+ "TavusVoiceVoiceId",
"Template",
"TemplateDetails",
"TemplateProvider",
"TemplateProviderDetails",
"TemplateVisibility",
+ "TextContent",
+ "TextContentLanguage",
+ "TextEditorTool",
+ "TextEditorToolMessagesItem",
"TimeRange",
"TimeRangeStep",
"TogetherAiCredential",
@@ -925,13 +1203,27 @@
"TransferCallToolDestinationsItem",
"TransferCallToolMessagesItem",
"TransferDestinationAssistant",
+ "TransferDestinationAssistantMessage",
"TransferDestinationNumber",
+ "TransferDestinationNumberMessage",
"TransferDestinationSip",
+ "TransferDestinationSipMessage",
"TransferDestinationStep",
+ "TransferDestinationStepMessage",
"TransferMode",
+ "TransferPlan",
+ "TransferPlanMessage",
+ "TransferPlanMode",
+ "Transport",
"TransportConfigurationTwilio",
"TransportConfigurationTwilioRecordingChannels",
"TransportCost",
+ "TransportCostProvider",
+ "TransportProvider",
+ "TrieveKnowledgeBase",
+ "TrieveKnowledgeBaseVectorStoreCreatePlan",
+ "TrieveKnowledgeBaseVectorStoreSearchPlan",
+ "TrieveKnowledgeBaseVectorStoreSearchPlanSearchType",
"TwilioCredential",
"TwilioPhoneNumber",
"TwilioPhoneNumberFallbackDestination",
@@ -939,6 +1231,9 @@
"TwilioVoicemailDetectionVoicemailDetectionTypesItem",
"UpdateAnthropicCredentialDto",
"UpdateAnyscaleCredentialDto",
+ "UpdateAssemblyAiCredentialDto",
+ "UpdateAzureCredentialDto",
+ "UpdateAzureCredentialDtoRegion",
"UpdateAzureOpenAiCredentialDto",
"UpdateAzureOpenAiCredentialDtoModelsItem",
"UpdateAzureOpenAiCredentialDtoRegion",
@@ -951,17 +1246,22 @@
"UpdateGcpCredentialDto",
"UpdateGladiaCredentialDto",
"UpdateGoHighLevelCredentialDto",
+ "UpdateGoogleCredentialDto",
"UpdateGroqCredentialDto",
+ "UpdateInflectionAiCredentialDto",
+ "UpdateLangfuseCredentialDto",
"UpdateLmntCredentialDto",
"UpdateMakeCredentialDto",
"UpdateOpenAiCredentialDto",
"UpdateOpenRouterCredentialDto",
"UpdateOrgDto",
+ "UpdateOrgDtoChannel",
"UpdatePerplexityAiCredentialDto",
"UpdatePlayHtCredentialDto",
"UpdateRimeAiCredentialDto",
"UpdateRunpodCredentialDto",
"UpdateS3CredentialDto",
+ "UpdateTavusCredentialDto",
"UpdateTogetherAiCredentialDto",
"UpdateToolTemplateDto",
"UpdateToolTemplateDtoDetails",
@@ -972,9 +1272,11 @@
"UpdateUserRoleDto",
"UpdateUserRoleDtoRole",
"UpdateVonageCredentialDto",
+ "UpdateXAiCredentialDto",
"User",
"UserMessage",
"VapiCost",
+ "VapiCostSubType",
"VapiModel",
"VapiModelStepsItem",
"VapiModelToolsItem",
@@ -987,7 +1289,11 @@
"VonageCredential",
"VonagePhoneNumber",
"VonagePhoneNumberFallbackDestination",
+ "WebhookCredential",
"WorkflowBlock",
"WorkflowBlockMessagesItem",
"WorkflowBlockStepsItem",
+ "XAiCredential",
+ "XaiModel",
+ "XaiModelToolsItem",
]
diff --git a/src/vapi/types/analytics_query_dto.py b/src/vapi/types/analytics_query_dto.py
new file mode 100644
index 0000000..ef24d48
--- /dev/null
+++ b/src/vapi/types/analytics_query_dto.py
@@ -0,0 +1,23 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+from .analytics_query import AnalyticsQuery
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class AnalyticsQueryDto(UniversalBaseModel):
+ queries: typing.List[AnalyticsQuery] = pydantic.Field()
+ """
+ This is the list of metric queries you want to perform.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/analytics_query_result.py b/src/vapi/types/analytics_query_result.py
index 5e91cf9..6ab44a1 100644
--- a/src/vapi/types/analytics_query_result.py
+++ b/src/vapi/types/analytics_query_result.py
@@ -26,9 +26,9 @@ class AnalyticsQueryResult(UniversalBaseModel):
Example:
"result": [
- { "date": "2023-01-01", "assistantId": "123", "endedReason": "customer-ended-call", "sumDuration": 120, "avgCost": 10.5 },
- { "date": "2023-01-02", "assistantId": "123", "endedReason": "customer-did-not-give-microphone-permission", "sumDuration": 0, "avgCost": 0 },
- // Additional results
+ { "date": "2023-01-01", "assistantId": "123", "endedReason": "customer-ended-call", "sumDuration": 120, "avgCost": 10.5 },
+ { "date": "2023-01-02", "assistantId": "123", "endedReason": "customer-did-not-give-microphone-permission", "sumDuration": 0, "avgCost": 0 },
+ // Additional results
]
"""
diff --git a/src/vapi/types/anthropic_credential.py b/src/vapi/types/anthropic_credential.py
index e36cc37..67f8295 100644
--- a/src/vapi/types/anthropic_credential.py
+++ b/src/vapi/types/anthropic_credential.py
@@ -36,6 +36,11 @@ class AnthropicCredential(UniversalBaseModel):
This is the ISO 8601 date-time string of when the assistant was last updated.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/anthropic_model.py b/src/vapi/types/anthropic_model.py
index 9265cab..fc94df5 100644
--- a/src/vapi/types/anthropic_model.py
+++ b/src/vapi/types/anthropic_model.py
@@ -7,8 +7,8 @@
from .anthropic_model_tools_item import AnthropicModelToolsItem
import typing_extensions
from ..core.serialization import FieldMetadata
+from .create_custom_knowledge_base_dto import CreateCustomKnowledgeBaseDto
from .anthropic_model_model import AnthropicModelModel
-from .knowledge_base import KnowledgeBase
from ..core.pydantic_utilities import IS_PYDANTIC_V2
@@ -34,6 +34,20 @@ class AnthropicModel(UniversalBaseModel):
Both `tools` and `toolIds` can be used together.
"""
+ knowledge_base: typing_extensions.Annotated[
+ typing.Optional[CreateCustomKnowledgeBaseDto], FieldMetadata(alias="knowledgeBase")
+ ] = pydantic.Field(default=None)
+ """
+ These are the options for the knowledge base.
+ """
+
+ knowledge_base_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="knowledgeBaseId")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the ID of the knowledge base the model will use.
+ """
+
model: AnthropicModelModel = pydantic.Field()
"""
This is the Anthropic/Claude models that will be used.
@@ -45,13 +59,6 @@ class AnthropicModel(UniversalBaseModel):
This is the temperature that will be used for calls. Default is 0 to leverage caching for lower latency.
"""
- knowledge_base: typing_extensions.Annotated[
- typing.Optional[KnowledgeBase], FieldMetadata(alias="knowledgeBase")
- ] = pydantic.Field(default=None)
- """
- These are the options for the knowledge base.
- """
-
max_tokens: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="maxTokens")] = pydantic.Field(
default=None
)
diff --git a/src/vapi/types/anthropic_model_model.py b/src/vapi/types/anthropic_model_model.py
index 671ff39..b58b366 100644
--- a/src/vapi/types/anthropic_model_model.py
+++ b/src/vapi/types/anthropic_model_model.py
@@ -4,7 +4,12 @@
AnthropicModelModel = typing.Union[
typing.Literal[
- "claude-3-opus-20240229", "claude-3-sonnet-20240229", "claude-3-haiku-20240307", "claude-3-5-sonnet-20240620"
+ "claude-3-opus-20240229",
+ "claude-3-sonnet-20240229",
+ "claude-3-haiku-20240307",
+ "claude-3-5-sonnet-20240620",
+ "claude-3-5-sonnet-20241022",
+ "claude-3-5-haiku-20241022",
],
typing.Any,
]
diff --git a/src/vapi/types/anyscale_credential.py b/src/vapi/types/anyscale_credential.py
index 2983f0a..9afe0b2 100644
--- a/src/vapi/types/anyscale_credential.py
+++ b/src/vapi/types/anyscale_credential.py
@@ -36,6 +36,11 @@ class AnyscaleCredential(UniversalBaseModel):
This is the ISO 8601 date-time string of when the assistant was last updated.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/anyscale_model.py b/src/vapi/types/anyscale_model.py
index d390970..0b899c5 100644
--- a/src/vapi/types/anyscale_model.py
+++ b/src/vapi/types/anyscale_model.py
@@ -7,7 +7,7 @@
from .anyscale_model_tools_item import AnyscaleModelToolsItem
import typing_extensions
from ..core.serialization import FieldMetadata
-from .knowledge_base import KnowledgeBase
+from .create_custom_knowledge_base_dto import CreateCustomKnowledgeBaseDto
from ..core.pydantic_utilities import IS_PYDANTIC_V2
@@ -33,6 +33,20 @@ class AnyscaleModel(UniversalBaseModel):
Both `tools` and `toolIds` can be used together.
"""
+ knowledge_base: typing_extensions.Annotated[
+ typing.Optional[CreateCustomKnowledgeBaseDto], FieldMetadata(alias="knowledgeBase")
+ ] = pydantic.Field(default=None)
+ """
+ These are the options for the knowledge base.
+ """
+
+ knowledge_base_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="knowledgeBaseId")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the ID of the knowledge base the model will use.
+ """
+
provider: typing.Literal["anyscale"] = "anyscale"
model: str = pydantic.Field()
"""
@@ -44,13 +58,6 @@ class AnyscaleModel(UniversalBaseModel):
This is the temperature that will be used for calls. Default is 0 to leverage caching for lower latency.
"""
- knowledge_base: typing_extensions.Annotated[
- typing.Optional[KnowledgeBase], FieldMetadata(alias="knowledgeBase")
- ] = pydantic.Field(default=None)
- """
- These are the options for the knowledge base.
- """
-
max_tokens: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="maxTokens")] = pydantic.Field(
default=None
)
diff --git a/src/vapi/types/artifact_plan.py b/src/vapi/types/artifact_plan.py
index 24da574..ad1754d 100644
--- a/src/vapi/types/artifact_plan.py
+++ b/src/vapi/types/artifact_plan.py
@@ -17,7 +17,6 @@ class ArtifactPlan(UniversalBaseModel):
This determines whether assistant's calls are recorded. Defaults to true.
Usage:
-
- If you don't want to record the calls, set this to false.
- If you want to record the calls when `assistant.hipaaEnabled`, explicity set this to true and make sure to provide S3 or GCP credentials on the Provider Credentials page in the Dashboard.
@@ -53,7 +52,6 @@ class ArtifactPlan(UniversalBaseModel):
If credential.s3PathPrefix or credential.bucketPlan.path is set, this will append to it.
Usage:
-
- If you want to upload the recording to a specific path, set this to the path. Example: `/my-assistant-recordings`.
- If you want to upload the recording to the root of the bucket, set this to `/`.
diff --git a/src/vapi/types/assembly_ai_credential.py b/src/vapi/types/assembly_ai_credential.py
new file mode 100644
index 0000000..753f22d
--- /dev/null
+++ b/src/vapi/types/assembly_ai_credential.py
@@ -0,0 +1,51 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import typing_extensions
+from ..core.serialization import FieldMetadata
+import pydantic
+import datetime as dt
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class AssemblyAiCredential(UniversalBaseModel):
+ provider: typing.Literal["assembly-ai"] = "assembly-ai"
+ api_key: typing_extensions.Annotated[str, FieldMetadata(alias="apiKey")] = pydantic.Field()
+ """
+ This is not returned in the API.
+ """
+
+ id: str = pydantic.Field()
+ """
+ This is the unique identifier for the credential.
+ """
+
+ org_id: typing_extensions.Annotated[str, FieldMetadata(alias="orgId")] = pydantic.Field()
+ """
+ This is the unique identifier for the org that this credential belongs to.
+ """
+
+ created_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="createdAt")] = pydantic.Field()
+ """
+ This is the ISO 8601 date-time string of when the credential was created.
+ """
+
+ updated_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="updatedAt")] = pydantic.Field()
+ """
+ This is the ISO 8601 date-time string of when the assistant was last updated.
+ """
+
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/assembly_ai_transcriber.py b/src/vapi/types/assembly_ai_transcriber.py
new file mode 100644
index 0000000..0d6ad06
--- /dev/null
+++ b/src/vapi/types/assembly_ai_transcriber.py
@@ -0,0 +1,58 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import pydantic
+import typing_extensions
+from ..core.serialization import FieldMetadata
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class AssemblyAiTranscriber(UniversalBaseModel):
+ provider: typing.Literal["assembly-ai"] = pydantic.Field(default="assembly-ai")
+ """
+ This is the transcription provider that will be used.
+ """
+
+ language: typing.Optional[typing.Literal["en"]] = pydantic.Field(default=None)
+ """
+ This is the language that will be set for the transcription.
+ """
+
+ realtime_url: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="realtimeUrl")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ The WebSocket URL that the transcriber connects to.
+ """
+
+ word_boost: typing_extensions.Annotated[typing.Optional[typing.List[str]], FieldMetadata(alias="wordBoost")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ Add up to 2500 characters of custom vocabulary.
+ """
+
+ end_utterance_silence_threshold: typing_extensions.Annotated[
+ typing.Optional[float], FieldMetadata(alias="endUtteranceSilenceThreshold")
+ ] = pydantic.Field(default=None)
+ """
+ The duration of the end utterance silence threshold in milliseconds.
+ """
+
+ disable_partial_transcripts: typing_extensions.Annotated[
+ typing.Optional[bool], FieldMetadata(alias="disablePartialTranscripts")
+ ] = pydantic.Field(default=None)
+ """
+ Disable partial transcripts.
+ Set to `true` to not receive partial transcripts. Defaults to `false`.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/assignment_mutation.py b/src/vapi/types/assignment_mutation.py
index fc7656e..747d624 100644
--- a/src/vapi/types/assignment_mutation.py
+++ b/src/vapi/types/assignment_mutation.py
@@ -23,26 +23,21 @@ class AssignmentMutation(UniversalBaseModel):
This is the variable to assign a new value to.
You can reference any variable in the context of the current block execution (step):
-
- "output.your-property-name" for current step's output
- "your-step-name.output.your-property-name" for another step's output (in the same workflow; read caveat #1)
- "your-block-name.output.your-property-name" for another block's output (in the same workflow; read caveat #2)
- "global.your-property-name" for the global context
This needs to be the key path of the variable. If you use {{}}, it'll dereference that to the value of the variable before assignment. This can be useful if the path is dynamic. Example:
-
- "global.{{my-tool-call-step.output.my-key-name}}"
You can also string interpolate multiple variables to get the key name:
-
- "global.{{my-tool-call-step.output.my-key-name-suffix}}-{{my-tool-call-step.output.my-key-name}}"
The path to the new variable is created if it doesn't exist. Example:
-
- "global.this-does-not-exist.neither-does-this" will create `this-does-not-exist` object with `neither-does-this` as a key
Caveats:
-
1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.output.propertyName}} will reference the latest usage of the step.
2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.output.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow.
"""
@@ -52,25 +47,21 @@ class AssignmentMutation(UniversalBaseModel):
The value to assign to the variable.
You can reference any variable in the context of the current block execution (step):
-
- "{{output.your-property-name}}" for current step's output
- "{{your-step-name.output.your-property-name}}" for another step's output (in the same workflow; read caveat #1)
- "{{your-block-name.output.your-property-name}}" for another block's output (in the same workflow; read caveat #2)
- "{{global.your-property-name}}" for the global context
Or, you can use a constant:
-
- "1"
- "text"
- "true"
- "false"
Or, you can mix and match with string interpolation:
-
- "{{your-property-name}}-{{input.your-property-name-2}}-1"
Caveats:
-
1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.output.propertyName}} will reference the latest usage of the step.
2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.output.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow.
"""
diff --git a/src/vapi/types/assistant.py b/src/vapi/types/assistant.py
index c2c7fb9..2c1177d 100644
--- a/src/vapi/types/assistant.py
+++ b/src/vapi/types/assistant.py
@@ -11,8 +11,8 @@
from .assistant_model import AssistantModel
from .assistant_voice import AssistantVoice
import typing_extensions
-from .assistant_first_message_mode import AssistantFirstMessageMode
from ..core.serialization import FieldMetadata
+from .assistant_first_message_mode import AssistantFirstMessageMode
from .assistant_client_messages_item import AssistantClientMessagesItem
from .assistant_server_messages_item import AssistantServerMessagesItem
from .assistant_background_sound import AssistantBackgroundSound
@@ -24,6 +24,7 @@
from .start_speaking_plan import StartSpeakingPlan
from .stop_speaking_plan import StopSpeakingPlan
from .monitor_plan import MonitorPlan
+from .server import Server
import datetime as dt
from ..core.pydantic_utilities import IS_PYDANTIC_V2
from ..core.pydantic_utilities import update_forward_refs
@@ -45,6 +46,15 @@ class Assistant(UniversalBaseModel):
These are the options for the assistant's voice.
"""
+ first_message: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="firstMessage")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the first message that the assistant will say. This can also be a URL to a containerized audio file (mp3, wav, etc.).
+
+ If unspecified, assistant will wait for user to speak and use the model to respond once they speak.
+ """
+
first_message_mode: typing_extensions.Annotated[
typing.Optional[AssistantFirstMessageMode], FieldMetadata(alias="firstMessageMode")
] = pydantic.Field(default=None)
@@ -52,7 +62,6 @@ class Assistant(UniversalBaseModel):
This is the mode for the first message. Default is 'assistant-speaks-first'.
Use:
-
- 'assistant-speaks-first' to have the assistant speak first.
- 'assistant-waits-for-user' to have the assistant wait for the user to speak first.
- 'assistant-speaks-first-with-model-generated-message' to have the assistant speak first with a message generated by the model based on the conversation state. (`assistant.model.messages` at call start, `call.messages` at squad transfer points).
@@ -71,7 +80,7 @@ class Assistant(UniversalBaseModel):
typing.Optional[typing.List[AssistantClientMessagesItem]], FieldMetadata(alias="clientMessages")
] = pydantic.Field(default=None)
"""
- These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transcript,tool-calls,user-interrupted,voice-input. You can check the shape of the messages in ClientMessage schema.
+ These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transfer-update,transcript,tool-calls,user-interrupted,voice-input. You can check the shape of the messages in ClientMessage schema.
"""
server_messages: typing_extensions.Annotated[
@@ -106,17 +115,6 @@ class Assistant(UniversalBaseModel):
This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'.
"""
- backchanneling_enabled: typing_extensions.Annotated[
- typing.Optional[bool], FieldMetadata(alias="backchannelingEnabled")
- ] = pydantic.Field(default=None)
- """
- This determines whether the model says 'mhmm', 'ahem' etc. while user is speaking.
-
- Default `false` while in beta.
-
- @default false
- """
-
background_denoising_enabled: typing_extensions.Annotated[
typing.Optional[bool], FieldMetadata(alias="backgroundDenoisingEnabled")
] = pydantic.Field(default=None)
@@ -153,15 +151,6 @@ class Assistant(UniversalBaseModel):
This is required when you want to transfer between assistants in a call.
"""
- first_message: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="firstMessage")] = (
- pydantic.Field(default=None)
- )
- """
- This is the first message that the assistant will say. This can also be a URL to a containerized audio file (mp3, wav, etc.).
-
- If unspecified, assistant will wait for user to speak and use the model to respond once they speak.
- """
-
voicemail_detection: typing_extensions.Annotated[
typing.Optional[TwilioVoicemailDetection], FieldMetadata(alias="voicemailDetection")
] = pydantic.Field(default=None)
@@ -201,26 +190,6 @@ class Assistant(UniversalBaseModel):
This is for metadata you want to store on the assistant.
"""
- server_url: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="serverUrl")] = pydantic.Field(
- default=None
- )
- """
- This is the URL Vapi will communicate with via HTTP GET and POST Requests. This is used for retrieving context, function calling, and end-of-call reports.
-
- All requests will be sent with the call object among other things relevant to that message. You can find more details in the Server URL documentation.
-
- This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: tool.server.url > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl
- """
-
- server_url_secret: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="serverUrlSecret")] = (
- pydantic.Field(default=None)
- )
- """
- This is the secret you can set that Vapi will send with every request to your server. Will be sent as a header called x-vapi-secret.
-
- Same precedence logic as serverUrl.
- """
-
analysis_plan: typing_extensions.Annotated[typing.Optional[AnalysisPlan], FieldMetadata(alias="analysisPlan")] = (
pydantic.Field(default=None)
)
@@ -253,7 +222,6 @@ class Assistant(UniversalBaseModel):
This is the plan for when the assistant should start talking.
You should configure this if you're running into these issues:
-
- The assistant is too slow to start talking after the customer is done speaking.
- The assistant is too fast to start talking after the customer is done speaking.
- The assistant is so fast that it's actually interrupting the customer.
@@ -266,7 +234,6 @@ class Assistant(UniversalBaseModel):
This is the plan for when assistant should stop talking on customer interruption.
You should configure this if you're running into these issues:
-
- The assistant is too slow to recognize customer's interruption.
- The assistant is too fast to recognize customer's interruption.
- The assistant is getting interrupted by phrases that are just acknowledgments.
@@ -281,7 +248,6 @@ class Assistant(UniversalBaseModel):
This is the plan for real-time monitoring of the assistant's calls.
Usage:
-
- To enable live listening of the assistant's calls, set `monitorPlan.listenEnabled` to `true`.
- To enable live control of the assistant's calls, set `monitorPlan.controlEnabled` to `true`.
@@ -295,6 +261,17 @@ class Assistant(UniversalBaseModel):
These are the credentials that will be used for the assistant calls. By default, all the credentials are available for use in the call but you can provide a subset using this.
"""
+ server: typing.Optional[Server] = pydantic.Field(default=None)
+ """
+ This is where Vapi will send webhooks. You can find all webhooks available along with their shape in ServerMessage schema.
+
+ The order of precedence is:
+
+ 1. assistant.server.url
+ 2. phoneNumber.serverUrl
+ 3. org.serverUrl
+ """
+
id: str = pydantic.Field()
"""
This is the unique identifier for the assistant.
diff --git a/src/vapi/types/assistant_client_messages_item.py b/src/vapi/types/assistant_client_messages_item.py
index c76465b..92a9e6c 100644
--- a/src/vapi/types/assistant_client_messages_item.py
+++ b/src/vapi/types/assistant_client_messages_item.py
@@ -16,6 +16,7 @@
"transcript",
"tool-calls",
"tool-calls-result",
+ "transfer-update",
"user-interrupted",
"voice-input",
],
diff --git a/src/vapi/types/assistant_custom_endpointing_rule.py b/src/vapi/types/assistant_custom_endpointing_rule.py
new file mode 100644
index 0000000..085f68c
--- /dev/null
+++ b/src/vapi/types/assistant_custom_endpointing_rule.py
@@ -0,0 +1,62 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import pydantic
+import typing_extensions
+from .regex_option import RegexOption
+from ..core.serialization import FieldMetadata
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class AssistantCustomEndpointingRule(UniversalBaseModel):
+ type: typing.Literal["assistant"] = pydantic.Field(default="assistant")
+ """
+ This endpointing rule is based on the last assistant message before customer started speaking.
+
+ Flow:
+ - Assistant speaks
+ - Customer starts speaking
+ - Customer transcription comes in
+ - This rule is evaluated on the last assistant message
+ - If a match is found based on `regex`, the endpointing timeout is set to `timeoutSeconds`
+
+ Usage:
+ - If you have yes/no questions in your use case like "are you interested in a loan?", you can set a shorter timeout.
+ - If you have questions where the customer may pause to look up information like "what's my account number?", you can set a longer timeout.
+ """
+
+ regex: str = pydantic.Field()
+ """
+ This is the regex pattern to match.
+
+ Note:
+ - This works by using the `RegExp.test` method in Node.JS. Eg. `/hello/.test("hello there")` will return `true`.
+
+ Hot tip:
+ - In JavaScript, escape `\` when sending the regex pattern. Eg. `"hello\sthere"` will be sent over the wire as `"hellosthere"`. Send `"hello\\sthere"` instead.
+ - `RegExp.test` does substring matching, so `/cat/.test("I love cats")` will return `true`. To do full string matching, send "^cat$".
+ """
+
+ regex_options: typing_extensions.Annotated[
+ typing.Optional[typing.List[RegexOption]], FieldMetadata(alias="regexOptions")
+ ] = pydantic.Field(default=None)
+ """
+ These are the options for the regex match. Defaults to all disabled.
+
+ @default []
+ """
+
+ timeout_seconds: typing_extensions.Annotated[float, FieldMetadata(alias="timeoutSeconds")] = pydantic.Field()
+ """
+ This is the endpointing timeout in seconds, if the rule is matched.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/assistant_model.py b/src/vapi/types/assistant_model.py
index 09f3d4c..ccd001a 100644
--- a/src/vapi/types/assistant_model.py
+++ b/src/vapi/types/assistant_model.py
@@ -5,22 +5,28 @@
from .anthropic_model import AnthropicModel
from .custom_llm_model import CustomLlmModel
from .deep_infra_model import DeepInfraModel
+from .google_model import GoogleModel
from .groq_model import GroqModel
+from .inflection_ai_model import InflectionAiModel
from .open_ai_model import OpenAiModel
from .open_router_model import OpenRouterModel
from .perplexity_ai_model import PerplexityAiModel
from .together_ai_model import TogetherAiModel
from .vapi_model import VapiModel
+from .xai_model import XaiModel
AssistantModel = typing.Union[
AnyscaleModel,
AnthropicModel,
CustomLlmModel,
DeepInfraModel,
+ GoogleModel,
GroqModel,
+ InflectionAiModel,
OpenAiModel,
OpenRouterModel,
PerplexityAiModel,
TogetherAiModel,
VapiModel,
+ XaiModel,
]
diff --git a/src/vapi/types/assistant_overrides.py b/src/vapi/types/assistant_overrides.py
index 5970d00..6d2be92 100644
--- a/src/vapi/types/assistant_overrides.py
+++ b/src/vapi/types/assistant_overrides.py
@@ -11,8 +11,8 @@
from .assistant_overrides_model import AssistantOverridesModel
from .assistant_overrides_voice import AssistantOverridesVoice
import typing_extensions
-from .assistant_overrides_first_message_mode import AssistantOverridesFirstMessageMode
from ..core.serialization import FieldMetadata
+from .assistant_overrides_first_message_mode import AssistantOverridesFirstMessageMode
from .assistant_overrides_client_messages_item import AssistantOverridesClientMessagesItem
from .assistant_overrides_server_messages_item import AssistantOverridesServerMessagesItem
from .assistant_overrides_background_sound import AssistantOverridesBackgroundSound
@@ -24,6 +24,7 @@
from .start_speaking_plan import StartSpeakingPlan
from .stop_speaking_plan import StopSpeakingPlan
from .monitor_plan import MonitorPlan
+from .server import Server
from ..core.pydantic_utilities import IS_PYDANTIC_V2
from ..core.pydantic_utilities import update_forward_refs
@@ -44,6 +45,15 @@ class AssistantOverrides(UniversalBaseModel):
These are the options for the assistant's voice.
"""
+ first_message: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="firstMessage")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the first message that the assistant will say. This can also be a URL to a containerized audio file (mp3, wav, etc.).
+
+ If unspecified, assistant will wait for user to speak and use the model to respond once they speak.
+ """
+
first_message_mode: typing_extensions.Annotated[
typing.Optional[AssistantOverridesFirstMessageMode], FieldMetadata(alias="firstMessageMode")
] = pydantic.Field(default=None)
@@ -51,7 +61,6 @@ class AssistantOverrides(UniversalBaseModel):
This is the mode for the first message. Default is 'assistant-speaks-first'.
Use:
-
- 'assistant-speaks-first' to have the assistant speak first.
- 'assistant-waits-for-user' to have the assistant wait for the user to speak first.
- 'assistant-speaks-first-with-model-generated-message' to have the assistant speak first with a message generated by the model based on the conversation state. (`assistant.model.messages` at call start, `call.messages` at squad transfer points).
@@ -70,7 +79,7 @@ class AssistantOverrides(UniversalBaseModel):
typing.Optional[typing.List[AssistantOverridesClientMessagesItem]], FieldMetadata(alias="clientMessages")
] = pydantic.Field(default=None)
"""
- These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transcript,tool-calls,user-interrupted,voice-input. You can check the shape of the messages in ClientMessage schema.
+ These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transfer-update,transcript,tool-calls,user-interrupted,voice-input. You can check the shape of the messages in ClientMessage schema.
"""
server_messages: typing_extensions.Annotated[
@@ -105,17 +114,6 @@ class AssistantOverrides(UniversalBaseModel):
This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'.
"""
- backchanneling_enabled: typing_extensions.Annotated[
- typing.Optional[bool], FieldMetadata(alias="backchannelingEnabled")
- ] = pydantic.Field(default=None)
- """
- This determines whether the model says 'mhmm', 'ahem' etc. while user is speaking.
-
- Default `false` while in beta.
-
- @default false
- """
-
background_denoising_enabled: typing_extensions.Annotated[
typing.Optional[bool], FieldMetadata(alias="backgroundDenoisingEnabled")
] = pydantic.Field(default=None)
@@ -150,6 +148,12 @@ class AssistantOverrides(UniversalBaseModel):
] = pydantic.Field(default=None)
"""
These are values that will be used to replace the template variables in the assistant messages and other text-based fields.
+ This uses LiquidJS syntax. https://liquidjs.com/tutorials/intro-to-liquid.html
+
+ So for example, `{{ name }}` will be replaced with the value of `name` in `variableValues`.
+ `{{"now" | date: "%b %d, %Y, %I:%M %p", "America/New_York"}}` will be replaced with the current date and time in New York.
+ Some VAPI reserved defaults:
+ - *customer* - the customer object
"""
name: typing.Optional[str] = pydantic.Field(default=None)
@@ -159,15 +163,6 @@ class AssistantOverrides(UniversalBaseModel):
This is required when you want to transfer between assistants in a call.
"""
- first_message: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="firstMessage")] = (
- pydantic.Field(default=None)
- )
- """
- This is the first message that the assistant will say. This can also be a URL to a containerized audio file (mp3, wav, etc.).
-
- If unspecified, assistant will wait for user to speak and use the model to respond once they speak.
- """
-
voicemail_detection: typing_extensions.Annotated[
typing.Optional[TwilioVoicemailDetection], FieldMetadata(alias="voicemailDetection")
] = pydantic.Field(default=None)
@@ -207,26 +202,6 @@ class AssistantOverrides(UniversalBaseModel):
This is for metadata you want to store on the assistant.
"""
- server_url: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="serverUrl")] = pydantic.Field(
- default=None
- )
- """
- This is the URL Vapi will communicate with via HTTP GET and POST Requests. This is used for retrieving context, function calling, and end-of-call reports.
-
- All requests will be sent with the call object among other things relevant to that message. You can find more details in the Server URL documentation.
-
- This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: tool.server.url > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl
- """
-
- server_url_secret: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="serverUrlSecret")] = (
- pydantic.Field(default=None)
- )
- """
- This is the secret you can set that Vapi will send with every request to your server. Will be sent as a header called x-vapi-secret.
-
- Same precedence logic as serverUrl.
- """
-
analysis_plan: typing_extensions.Annotated[typing.Optional[AnalysisPlan], FieldMetadata(alias="analysisPlan")] = (
pydantic.Field(default=None)
)
@@ -259,7 +234,6 @@ class AssistantOverrides(UniversalBaseModel):
This is the plan for when the assistant should start talking.
You should configure this if you're running into these issues:
-
- The assistant is too slow to start talking after the customer is done speaking.
- The assistant is too fast to start talking after the customer is done speaking.
- The assistant is so fast that it's actually interrupting the customer.
@@ -272,7 +246,6 @@ class AssistantOverrides(UniversalBaseModel):
This is the plan for when assistant should stop talking on customer interruption.
You should configure this if you're running into these issues:
-
- The assistant is too slow to recognize customer's interruption.
- The assistant is too fast to recognize customer's interruption.
- The assistant is getting interrupted by phrases that are just acknowledgments.
@@ -287,7 +260,6 @@ class AssistantOverrides(UniversalBaseModel):
This is the plan for real-time monitoring of the assistant's calls.
Usage:
-
- To enable live listening of the assistant's calls, set `monitorPlan.listenEnabled` to `true`.
- To enable live control of the assistant's calls, set `monitorPlan.controlEnabled` to `true`.
@@ -301,6 +273,17 @@ class AssistantOverrides(UniversalBaseModel):
These are the credentials that will be used for the assistant calls. By default, all the credentials are available for use in the call but you can provide a subset using this.
"""
+ server: typing.Optional[Server] = pydantic.Field(default=None)
+ """
+ This is where Vapi will send webhooks. You can find all webhooks available along with their shape in ServerMessage schema.
+
+ The order of precedence is:
+
+ 1. assistant.server.url
+ 2. phoneNumber.serverUrl
+ 3. org.serverUrl
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/assistant_overrides_client_messages_item.py b/src/vapi/types/assistant_overrides_client_messages_item.py
index 81a3df5..c86b959 100644
--- a/src/vapi/types/assistant_overrides_client_messages_item.py
+++ b/src/vapi/types/assistant_overrides_client_messages_item.py
@@ -16,6 +16,7 @@
"transcript",
"tool-calls",
"tool-calls-result",
+ "transfer-update",
"user-interrupted",
"voice-input",
],
diff --git a/src/vapi/types/assistant_overrides_model.py b/src/vapi/types/assistant_overrides_model.py
index ec4c319..3c7b70b 100644
--- a/src/vapi/types/assistant_overrides_model.py
+++ b/src/vapi/types/assistant_overrides_model.py
@@ -5,22 +5,28 @@
from .anthropic_model import AnthropicModel
from .custom_llm_model import CustomLlmModel
from .deep_infra_model import DeepInfraModel
+from .google_model import GoogleModel
from .groq_model import GroqModel
+from .inflection_ai_model import InflectionAiModel
from .open_ai_model import OpenAiModel
from .open_router_model import OpenRouterModel
from .perplexity_ai_model import PerplexityAiModel
from .together_ai_model import TogetherAiModel
from .vapi_model import VapiModel
+from .xai_model import XaiModel
AssistantOverridesModel = typing.Union[
AnyscaleModel,
AnthropicModel,
CustomLlmModel,
DeepInfraModel,
+ GoogleModel,
GroqModel,
+ InflectionAiModel,
OpenAiModel,
OpenRouterModel,
PerplexityAiModel,
TogetherAiModel,
VapiModel,
+ XaiModel,
]
diff --git a/src/vapi/types/assistant_overrides_server_messages_item.py b/src/vapi/types/assistant_overrides_server_messages_item.py
index 63dc531..9673f66 100644
--- a/src/vapi/types/assistant_overrides_server_messages_item.py
+++ b/src/vapi/types/assistant_overrides_server_messages_item.py
@@ -9,6 +9,7 @@
"function-call",
"hang",
"language-changed",
+ "language-change-detected",
"model-output",
"phone-call-control",
"speech-update",
diff --git a/src/vapi/types/assistant_overrides_transcriber.py b/src/vapi/types/assistant_overrides_transcriber.py
index 9f2168e..65a2be9 100644
--- a/src/vapi/types/assistant_overrides_transcriber.py
+++ b/src/vapi/types/assistant_overrides_transcriber.py
@@ -1,8 +1,12 @@
# This file was auto-generated by Fern from our API Definition.
import typing
+from .assembly_ai_transcriber import AssemblyAiTranscriber
+from .custom_transcriber import CustomTranscriber
from .deepgram_transcriber import DeepgramTranscriber
from .gladia_transcriber import GladiaTranscriber
from .talkscriber_transcriber import TalkscriberTranscriber
-AssistantOverridesTranscriber = typing.Union[DeepgramTranscriber, GladiaTranscriber, TalkscriberTranscriber]
+AssistantOverridesTranscriber = typing.Union[
+ AssemblyAiTranscriber, CustomTranscriber, DeepgramTranscriber, GladiaTranscriber, TalkscriberTranscriber
+]
diff --git a/src/vapi/types/assistant_overrides_voice.py b/src/vapi/types/assistant_overrides_voice.py
index 9c7edb4..ae76a17 100644
--- a/src/vapi/types/assistant_overrides_voice.py
+++ b/src/vapi/types/assistant_overrides_voice.py
@@ -3,6 +3,7 @@
import typing
from .azure_voice import AzureVoice
from .cartesia_voice import CartesiaVoice
+from .custom_voice import CustomVoice
from .deepgram_voice import DeepgramVoice
from .eleven_labs_voice import ElevenLabsVoice
from .lmnt_voice import LmntVoice
@@ -10,10 +11,12 @@
from .open_ai_voice import OpenAiVoice
from .play_ht_voice import PlayHtVoice
from .rime_ai_voice import RimeAiVoice
+from .tavus_voice import TavusVoice
AssistantOverridesVoice = typing.Union[
AzureVoice,
CartesiaVoice,
+ CustomVoice,
DeepgramVoice,
ElevenLabsVoice,
LmntVoice,
@@ -21,4 +24,5 @@
OpenAiVoice,
PlayHtVoice,
RimeAiVoice,
+ TavusVoice,
]
diff --git a/src/vapi/types/assistant_server_messages_item.py b/src/vapi/types/assistant_server_messages_item.py
index 94e5545..1bb1240 100644
--- a/src/vapi/types/assistant_server_messages_item.py
+++ b/src/vapi/types/assistant_server_messages_item.py
@@ -9,6 +9,7 @@
"function-call",
"hang",
"language-changed",
+ "language-change-detected",
"model-output",
"phone-call-control",
"speech-update",
diff --git a/src/vapi/types/assistant_transcriber.py b/src/vapi/types/assistant_transcriber.py
index 5549c7c..d1f9412 100644
--- a/src/vapi/types/assistant_transcriber.py
+++ b/src/vapi/types/assistant_transcriber.py
@@ -1,8 +1,12 @@
# This file was auto-generated by Fern from our API Definition.
import typing
+from .assembly_ai_transcriber import AssemblyAiTranscriber
+from .custom_transcriber import CustomTranscriber
from .deepgram_transcriber import DeepgramTranscriber
from .gladia_transcriber import GladiaTranscriber
from .talkscriber_transcriber import TalkscriberTranscriber
-AssistantTranscriber = typing.Union[DeepgramTranscriber, GladiaTranscriber, TalkscriberTranscriber]
+AssistantTranscriber = typing.Union[
+ AssemblyAiTranscriber, CustomTranscriber, DeepgramTranscriber, GladiaTranscriber, TalkscriberTranscriber
+]
diff --git a/src/vapi/types/assistant_voice.py b/src/vapi/types/assistant_voice.py
index 84c90b7..dbab58b 100644
--- a/src/vapi/types/assistant_voice.py
+++ b/src/vapi/types/assistant_voice.py
@@ -3,6 +3,7 @@
import typing
from .azure_voice import AzureVoice
from .cartesia_voice import CartesiaVoice
+from .custom_voice import CustomVoice
from .deepgram_voice import DeepgramVoice
from .eleven_labs_voice import ElevenLabsVoice
from .lmnt_voice import LmntVoice
@@ -10,10 +11,12 @@
from .open_ai_voice import OpenAiVoice
from .play_ht_voice import PlayHtVoice
from .rime_ai_voice import RimeAiVoice
+from .tavus_voice import TavusVoice
AssistantVoice = typing.Union[
AzureVoice,
CartesiaVoice,
+ CustomVoice,
DeepgramVoice,
ElevenLabsVoice,
LmntVoice,
@@ -21,4 +24,5 @@
OpenAiVoice,
PlayHtVoice,
RimeAiVoice,
+ TavusVoice,
]
diff --git a/src/vapi/types/auto_reload_plan.py b/src/vapi/types/auto_reload_plan.py
new file mode 100644
index 0000000..72071d4
--- /dev/null
+++ b/src/vapi/types/auto_reload_plan.py
@@ -0,0 +1,27 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+import typing
+
+
+class AutoReloadPlan(UniversalBaseModel):
+ credits: float = pydantic.Field()
+ """
+ This the amount of credits to reload.
+ """
+
+ threshold: float = pydantic.Field()
+ """
+ This is the limit at which the reload is triggered.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/auto_reload_plan_dto.py b/src/vapi/types/auto_reload_plan_dto.py
new file mode 100644
index 0000000..4431afb
--- /dev/null
+++ b/src/vapi/types/auto_reload_plan_dto.py
@@ -0,0 +1,28 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing_extensions
+import typing
+from .auto_reload_plan import AutoReloadPlan
+from ..core.serialization import FieldMetadata
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class AutoReloadPlanDto(UniversalBaseModel):
+ auto_reload_plan: typing_extensions.Annotated[
+ typing.Optional[AutoReloadPlan], FieldMetadata(alias="autoReloadPlan")
+ ] = pydantic.Field(default=None)
+ """
+ This is the auto reload plan to be configured for the subscription.
+ It can be null if no auto reload plan is set.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/azure_credential.py b/src/vapi/types/azure_credential.py
new file mode 100644
index 0000000..fc0b5c1
--- /dev/null
+++ b/src/vapi/types/azure_credential.py
@@ -0,0 +1,64 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import pydantic
+from .azure_credential_region import AzureCredentialRegion
+import typing_extensions
+from ..core.serialization import FieldMetadata
+import datetime as dt
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class AzureCredential(UniversalBaseModel):
+ provider: typing.Literal["azure"] = "azure"
+ service: typing.Literal["speech"] = pydantic.Field(default="speech")
+ """
+ This is the service being used in Azure.
+ """
+
+ region: typing.Optional[AzureCredentialRegion] = pydantic.Field(default=None)
+ """
+ This is the region of the Azure resource.
+ """
+
+ api_key: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="apiKey")] = pydantic.Field(
+ default=None
+ )
+ """
+ This is not returned in the API.
+ """
+
+ id: str = pydantic.Field()
+ """
+ This is the unique identifier for the credential.
+ """
+
+ org_id: typing_extensions.Annotated[str, FieldMetadata(alias="orgId")] = pydantic.Field()
+ """
+ This is the unique identifier for the org that this credential belongs to.
+ """
+
+ created_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="createdAt")] = pydantic.Field()
+ """
+ This is the ISO 8601 date-time string of when the credential was created.
+ """
+
+ updated_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="updatedAt")] = pydantic.Field()
+ """
+ This is the ISO 8601 date-time string of when the assistant was last updated.
+ """
+
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/azure_credential_region.py b/src/vapi/types/azure_credential_region.py
new file mode 100644
index 0000000..cbd9038
--- /dev/null
+++ b/src/vapi/types/azure_credential_region.py
@@ -0,0 +1,25 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+AzureCredentialRegion = typing.Union[
+ typing.Literal[
+ "australia",
+ "canada",
+ "eastus2",
+ "eastus",
+ "france",
+ "india",
+ "japan",
+ "uaenorth",
+ "northcentralus",
+ "norway",
+ "southcentralus",
+ "sweden",
+ "switzerland",
+ "uk",
+ "westus",
+ "westus3",
+ ],
+ typing.Any,
+]
diff --git a/src/vapi/types/azure_open_ai_credential.py b/src/vapi/types/azure_open_ai_credential.py
index 86a52b5..01533b4 100644
--- a/src/vapi/types/azure_open_ai_credential.py
+++ b/src/vapi/types/azure_open_ai_credential.py
@@ -40,6 +40,11 @@ class AzureOpenAiCredential(UniversalBaseModel):
This is the ISO 8601 date-time string of when the assistant was last updated.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
open_ai_endpoint: typing_extensions.Annotated[str, FieldMetadata(alias="openAIEndpoint")]
if IS_PYDANTIC_V2:
diff --git a/src/vapi/types/azure_open_ai_credential_models_item.py b/src/vapi/types/azure_open_ai_credential_models_item.py
index bd6cf9d..ae62888 100644
--- a/src/vapi/types/azure_open_ai_credential_models_item.py
+++ b/src/vapi/types/azure_open_ai_credential_models_item.py
@@ -4,6 +4,7 @@
AzureOpenAiCredentialModelsItem = typing.Union[
typing.Literal[
+ "gpt-4o-2024-08-06",
"gpt-4o-mini-2024-07-18",
"gpt-4o-2024-05-13",
"gpt-4-turbo-2024-04-09",
diff --git a/src/vapi/types/azure_open_ai_credential_region.py b/src/vapi/types/azure_open_ai_credential_region.py
index a82558e..2b4fdfd 100644
--- a/src/vapi/types/azure_open_ai_credential_region.py
+++ b/src/vapi/types/azure_open_ai_credential_region.py
@@ -11,6 +11,7 @@
"france",
"india",
"japan",
+ "uaenorth",
"northcentralus",
"norway",
"southcentralus",
diff --git a/src/vapi/types/azure_voice.py b/src/vapi/types/azure_voice.py
index 56d30c4..ea87926 100644
--- a/src/vapi/types/azure_voice.py
+++ b/src/vapi/types/azure_voice.py
@@ -1,25 +1,17 @@
# This file was auto-generated by Fern from our API Definition.
from ..core.pydantic_utilities import UniversalBaseModel
-import typing_extensions
import typing
-from ..core.serialization import FieldMetadata
import pydantic
+import typing_extensions
from .azure_voice_id import AzureVoiceId
+from ..core.serialization import FieldMetadata
from .chunk_plan import ChunkPlan
+from .fallback_plan import FallbackPlan
from ..core.pydantic_utilities import IS_PYDANTIC_V2
class AzureVoice(UniversalBaseModel):
- filler_injection_enabled: typing_extensions.Annotated[
- typing.Optional[bool], FieldMetadata(alias="fillerInjectionEnabled")
- ] = pydantic.Field(default=None)
- """
- This determines whether fillers are injected into the model output before inputting it into the voice provider.
-
- Default `false` because you can achieve better results with prompting the model.
- """
-
provider: typing.Literal["azure"] = pydantic.Field(default="azure")
"""
This is the voice provider that will be used.
@@ -30,16 +22,23 @@ class AzureVoice(UniversalBaseModel):
This is the provider-specific ID that will be used.
"""
+ chunk_plan: typing_extensions.Annotated[typing.Optional[ChunkPlan], FieldMetadata(alias="chunkPlan")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the plan for chunking the model output before it is sent to the voice provider.
+ """
+
speed: typing.Optional[float] = pydantic.Field(default=None)
"""
This is the speed multiplier that will be used.
"""
- chunk_plan: typing_extensions.Annotated[typing.Optional[ChunkPlan], FieldMetadata(alias="chunkPlan")] = (
+ fallback_plan: typing_extensions.Annotated[typing.Optional[FallbackPlan], FieldMetadata(alias="fallbackPlan")] = (
pydantic.Field(default=None)
)
"""
- This is the plan for chunking the model output before it is sent to the voice provider.
+ This is the plan for voice provider fallbacks in the event that the primary voice provider fails.
"""
if IS_PYDANTIC_V2:
diff --git a/src/vapi/types/bash_tool.py b/src/vapi/types/bash_tool.py
new file mode 100644
index 0000000..ac2821a
--- /dev/null
+++ b/src/vapi/types/bash_tool.py
@@ -0,0 +1,94 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing_extensions
+import typing
+from ..core.serialization import FieldMetadata
+import pydantic
+from .bash_tool_messages_item import BashToolMessagesItem
+import datetime as dt
+from .open_ai_function import OpenAiFunction
+from .server import Server
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class BashTool(UniversalBaseModel):
+ async_: typing_extensions.Annotated[typing.Optional[bool], FieldMetadata(alias="async")] = pydantic.Field(
+ default=None
+ )
+ """
+ This determines if the tool is async.
+
+ If async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.
+
+ If sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.
+
+ Defaults to synchronous (`false`).
+ """
+
+ messages: typing.Optional[typing.List[BashToolMessagesItem]] = pydantic.Field(default=None)
+ """
+ These are the messages that will be spoken to the user as the tool is running.
+
+ For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
+ """
+
+ type: typing.Literal["bash"] = "bash"
+ sub_type: typing_extensions.Annotated[typing.Literal["bash_20241022"], FieldMetadata(alias="subType")] = (
+ pydantic.Field(default="bash_20241022")
+ )
+ """
+ The sub type of tool.
+ """
+
+ id: str = pydantic.Field()
+ """
+ This is the unique identifier for the tool.
+ """
+
+ org_id: typing_extensions.Annotated[str, FieldMetadata(alias="orgId")] = pydantic.Field()
+ """
+ This is the unique identifier for the organization that this tool belongs to.
+ """
+
+ created_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="createdAt")] = pydantic.Field()
+ """
+ This is the ISO 8601 date-time string of when the tool was created.
+ """
+
+ updated_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="updatedAt")] = pydantic.Field()
+ """
+ This is the ISO 8601 date-time string of when the tool was last updated.
+ """
+
+ function: typing.Optional[OpenAiFunction] = pydantic.Field(default=None)
+ """
+ This is the function definition of the tool.
+
+ For `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.
+
+ An example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument "reason". Then, in `messages` array, you can have many "request-complete" messages. One of these messages will be triggered if the `messages[].conditions` matches the "reason" argument.
+ """
+
+ server: typing.Optional[Server] = pydantic.Field(default=None)
+ """
+ This is the server that will be hit when this tool is requested by the model.
+
+ All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
+
+ This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
+ """
+
+ name: typing.Literal["bash"] = pydantic.Field(default="bash")
+ """
+ The name of the tool, fixed to 'bash'
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/bash_tool_messages_item.py b/src/vapi/types/bash_tool_messages_item.py
new file mode 100644
index 0000000..0b7f9ad
--- /dev/null
+++ b/src/vapi/types/bash_tool_messages_item.py
@@ -0,0 +1,9 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+from .tool_message_start import ToolMessageStart
+from .tool_message_complete import ToolMessageComplete
+from .tool_message_failed import ToolMessageFailed
+from .tool_message_delayed import ToolMessageDelayed
+
+BashToolMessagesItem = typing.Union[ToolMessageStart, ToolMessageComplete, ToolMessageFailed, ToolMessageDelayed]
diff --git a/src/vapi/types/block_complete_message.py b/src/vapi/types/block_complete_message.py
index c4d33f9..8235233 100644
--- a/src/vapi/types/block_complete_message.py
+++ b/src/vapi/types/block_complete_message.py
@@ -2,12 +2,24 @@
from ..core.pydantic_utilities import UniversalBaseModel
import typing
-from .block_complete_message_conditions_item import BlockCompleteMessageConditionsItem
+from .text_content import TextContent
import pydantic
+from .block_complete_message_conditions_item import BlockCompleteMessageConditionsItem
from ..core.pydantic_utilities import IS_PYDANTIC_V2
class BlockCompleteMessage(UniversalBaseModel):
+ contents: typing.Optional[typing.List[TextContent]] = pydantic.Field(default=None)
+ """
+ This is an alternative to the `content` property. It allows to specify variants of the same content, one per language.
+
+ Usage:
+ - If your assistants are multilingual, you can provide content for each language.
+ - If you don't provide content for a language, the first item in the array will be automatically translated to the active language at that moment.
+
+ This will override the `content` property.
+ """
+
conditions: typing.Optional[typing.List[BlockCompleteMessageConditionsItem]] = pydantic.Field(default=None)
"""
This is an optional array of conditions that must be met for this message to be triggered.
@@ -18,7 +30,7 @@ class BlockCompleteMessage(UniversalBaseModel):
This is the message type that is triggered when the block completes.
"""
- content: str = pydantic.Field()
+ content: typing.Optional[str] = pydantic.Field(default=None)
"""
This is the content that the assistant will say when this message is triggered.
"""
diff --git a/src/vapi/types/block_start_message.py b/src/vapi/types/block_start_message.py
index 917aaf8..5283b55 100644
--- a/src/vapi/types/block_start_message.py
+++ b/src/vapi/types/block_start_message.py
@@ -2,12 +2,24 @@
from ..core.pydantic_utilities import UniversalBaseModel
import typing
-from .block_start_message_conditions_item import BlockStartMessageConditionsItem
+from .text_content import TextContent
import pydantic
+from .block_start_message_conditions_item import BlockStartMessageConditionsItem
from ..core.pydantic_utilities import IS_PYDANTIC_V2
class BlockStartMessage(UniversalBaseModel):
+ contents: typing.Optional[typing.List[TextContent]] = pydantic.Field(default=None)
+ """
+ This is an alternative to the `content` property. It allows to specify variants of the same content, one per language.
+
+ Usage:
+ - If your assistants are multilingual, you can provide content for each language.
+ - If you don't provide content for a language, the first item in the array will be automatically translated to the active language at that moment.
+
+ This will override the `content` property.
+ """
+
conditions: typing.Optional[typing.List[BlockStartMessageConditionsItem]] = pydantic.Field(default=None)
"""
This is an optional array of conditions that must be met for this message to be triggered.
@@ -18,7 +30,7 @@ class BlockStartMessage(UniversalBaseModel):
This is the message type that is triggered when the block starts.
"""
- content: str = pydantic.Field()
+ content: typing.Optional[str] = pydantic.Field(default=None)
"""
This is the content that the assistant will say when this message is triggered.
"""
diff --git a/src/vapi/types/both_custom_endpointing_rule.py b/src/vapi/types/both_custom_endpointing_rule.py
new file mode 100644
index 0000000..cec3a69
--- /dev/null
+++ b/src/vapi/types/both_custom_endpointing_rule.py
@@ -0,0 +1,71 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import pydantic
+import typing_extensions
+from ..core.serialization import FieldMetadata
+from .regex_option import RegexOption
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class BothCustomEndpointingRule(UniversalBaseModel):
+ type: typing.Literal["both"] = pydantic.Field(default="both")
+ """
+ This endpointing rule is based on both the last assistant message and the current customer message as they are speaking.
+
+ Flow:
+ - Assistant speaks
+ - Customer starts speaking
+ - Customer transcription comes in
+ - This rule is evaluated on the last assistant message and the current customer transcription
+ - If assistant message matches `assistantRegex` AND customer message matches `customerRegex`, the endpointing timeout is set to `timeoutSeconds`
+
+ Usage:
+ - If you want to wait longer while customer is speaking numbers, you can set a longer timeout.
+ """
+
+ assistant_regex: typing_extensions.Annotated[str, FieldMetadata(alias="assistantRegex")] = pydantic.Field()
+ """
+ This is the regex pattern to match the assistant's message.
+
+ Note:
+ - This works by using the `RegExp.test` method in Node.JS. Eg. `/hello/.test("hello there")` will return `true`.
+
+ Hot tip:
+ - In JavaScript, escape `\` when sending the regex pattern. Eg. `"hello\sthere"` will be sent over the wire as `"hellosthere"`. Send `"hello\\sthere"` instead.
+ - `RegExp.test` does substring matching, so `/cat/.test("I love cats")` will return `true`. To do full string matching, send "^cat$".
+ """
+
+ assistant_regex_options: typing_extensions.Annotated[
+ typing.Optional[typing.List[RegexOption]], FieldMetadata(alias="assistantRegexOptions")
+ ] = pydantic.Field(default=None)
+ """
+ These are the options for the assistant's message regex match. Defaults to all disabled.
+
+ @default []
+ """
+
+ customer_regex: typing_extensions.Annotated[str, FieldMetadata(alias="customerRegex")]
+ customer_regex_options: typing_extensions.Annotated[
+ typing.Optional[typing.List[RegexOption]], FieldMetadata(alias="customerRegexOptions")
+ ] = pydantic.Field(default=None)
+ """
+ These are the options for the customer's message regex match. Defaults to all disabled.
+
+ @default []
+ """
+
+ timeout_seconds: typing_extensions.Annotated[float, FieldMetadata(alias="timeoutSeconds")] = pydantic.Field()
+ """
+ This is the endpointing timeout in seconds, if the rule is matched.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/bucket_plan.py b/src/vapi/types/bucket_plan.py
index cb1820f..551aebb 100644
--- a/src/vapi/types/bucket_plan.py
+++ b/src/vapi/types/bucket_plan.py
@@ -19,7 +19,6 @@ class BucketPlan(UniversalBaseModel):
This is the region of the bucket.
Usage:
-
- If `credential.type` is `aws`, then this is required.
- If `credential.type` is `gcp`, then this is optional since GCP allows buckets to be accessed without a region but region is required for data residency requirements. Read here: https://cloud.google.com/storage/docs/request-endpoints
"""
@@ -29,7 +28,6 @@ class BucketPlan(UniversalBaseModel):
This is the path where call artifacts will be stored.
Usage:
-
- To store call artifacts in a specific folder, set this to the full path. Eg. "/folder-name1/folder-name2".
- To store call artifacts in the root of the bucket, leave this blank.
@@ -43,7 +41,6 @@ class BucketPlan(UniversalBaseModel):
This is the HMAC access key offered by GCP for interoperability with S3 clients. Here is the guide on how to create: https://cloud.google.com/storage/docs/authentication/managing-hmackeys#console
Usage:
-
- If `credential.type` is `gcp`, then this is required.
- If `credential.type` is `aws`, then this is not required since credential.awsAccessKeyId is used instead.
"""
@@ -55,7 +52,6 @@ class BucketPlan(UniversalBaseModel):
This is the secret for the HMAC access key. Here is the guide on how to create: https://cloud.google.com/storage/docs/authentication/managing-hmackeys#console
Usage:
-
- If `credential.type` is `gcp`, then this is required.
- If `credential.type` is `aws`, then this is not required since credential.awsSecretAccessKey is used instead.
diff --git a/src/vapi/types/buy_phone_number_dto.py b/src/vapi/types/buy_phone_number_dto.py
index a9dd764..228732c 100644
--- a/src/vapi/types/buy_phone_number_dto.py
+++ b/src/vapi/types/buy_phone_number_dto.py
@@ -15,7 +15,6 @@ class BuyPhoneNumberDto(UniversalBaseModel):
] = pydantic.Field(default=None)
"""
This is the fallback destination an inbound call will be transferred to if:
-
1. `assistantId` is not set
2. `squadId` is not set
3. and, `assistant-request` message to the `serverUrl` fails
diff --git a/src/vapi/types/byo_phone_number.py b/src/vapi/types/byo_phone_number.py
index 1ee72d3..afc8fd7 100644
--- a/src/vapi/types/byo_phone_number.py
+++ b/src/vapi/types/byo_phone_number.py
@@ -16,7 +16,6 @@ class ByoPhoneNumber(UniversalBaseModel):
] = pydantic.Field(default=None)
"""
This is the fallback destination an inbound call will be transferred to if:
-
1. `assistantId` is not set
2. `squadId` is not set
3. and, `assistant-request` message to the `serverUrl` fails
@@ -32,7 +31,6 @@ class ByoPhoneNumber(UniversalBaseModel):
This is the flag to toggle the E164 check for the `number` field. This is an advanced property which should be used if you know your use case requires it.
Use cases:
-
- `false`: To allow non-E164 numbers like `+001234567890`, `1234`, or `abc`. This is useful for dialing out to non-E164 numbers on your SIP trunks.
- `true` (default): To allow only E164 numbers like `+14155551234`. This is standard for PSTN calls.
diff --git a/src/vapi/types/byo_sip_trunk_credential.py b/src/vapi/types/byo_sip_trunk_credential.py
index 29bd130..9865e0a 100644
--- a/src/vapi/types/byo_sip_trunk_credential.py
+++ b/src/vapi/types/byo_sip_trunk_credential.py
@@ -38,14 +38,14 @@ class ByoSipTrunkCredential(UniversalBaseModel):
This is the ISO 8601 date-time string of when the assistant was last updated.
"""
- gateways: typing.List[SipTrunkGateway] = pydantic.Field()
+ name: typing.Optional[str] = pydantic.Field(default=None)
"""
- This is the list of SIP trunk's gateways.
+ This is the name of credential. This is just for your reference.
"""
- name: typing.Optional[str] = pydantic.Field(default=None)
+ gateways: typing.List[SipTrunkGateway] = pydantic.Field()
"""
- This is the name of the SIP trunk. This is just for your reference.
+ This is the list of SIP trunk's gateways.
"""
outbound_authentication_plan: typing_extensions.Annotated[
@@ -62,12 +62,25 @@ class ByoSipTrunkCredential(UniversalBaseModel):
This ensures the outbound origination attempts have a leading plus. Defaults to false to match conventional telecom behavior.
Usage:
-
- Vonage/Twilio requires leading plus for all outbound calls. Set this to true.
@default false
"""
+ tech_prefix: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="techPrefix")] = pydantic.Field(
+ default=None
+ )
+ """
+ This can be used to configure the tech prefix on outbound calls. This is an advanced property.
+ """
+
+ sip_diversion_header: typing_extensions.Annotated[
+ typing.Optional[str], FieldMetadata(alias="sipDiversionHeader")
+ ] = pydantic.Field(default=None)
+ """
+ This can be used to enable the SIP diversion header for authenticating the calling number if the SIP trunk supports it. This is an advanced property.
+ """
+
sbc_configuration: typing_extensions.Annotated[
typing.Optional[SbcConfiguration], FieldMetadata(alias="sbcConfiguration")
] = pydantic.Field(default=None)
diff --git a/src/vapi/types/call.py b/src/vapi/types/call.py
index 47582e5..b3c4ce5 100644
--- a/src/vapi/types/call.py
+++ b/src/vapi/types/call.py
@@ -23,6 +23,7 @@
from .analysis import Analysis
from .monitor import Monitor
from .artifact import Artifact
+from .transport import Transport
from .create_assistant_dto import CreateAssistantDto
from .assistant_overrides import AssistantOverrides
from .create_squad_dto import CreateSquadDto
@@ -147,6 +148,11 @@ class Call(UniversalBaseModel):
These are the artifacts created from the call. Configure in `assistant.artifactPlan`.
"""
+ transport: typing.Optional[Transport] = pydantic.Field(default=None)
+ """
+ This is the transport used for the call.
+ """
+
phone_call_provider_id: typing_extensions.Annotated[
typing.Optional[str], FieldMetadata(alias="phoneCallProviderId")
] = pydantic.Field(default=None)
diff --git a/src/vapi/types/call_ended_reason.py b/src/vapi/types/call_ended_reason.py
index eb300f3..573b308 100644
--- a/src/vapi/types/call_ended_reason.py
+++ b/src/vapi/types/call_ended_reason.py
@@ -4,32 +4,24 @@
CallEndedReason = typing.Union[
typing.Literal[
- "assistant-error",
- "assistant-not-found",
- "db-error",
- "no-server-available",
- "license-check-failed",
- "pipeline-error-openai-llm-failed",
- "pipeline-error-azure-openai-llm-failed",
- "pipeline-error-groq-llm-failed",
- "pipeline-error-anthropic-llm-failed",
- "pipeline-error-vapi-llm-failed",
- "pipeline-error-vapi-400-bad-request-validation-failed",
- "pipeline-error-vapi-401-unauthorized",
- "pipeline-error-vapi-403-model-access-denied",
- "pipeline-error-vapi-429-exceeded-quota",
- "pipeline-error-vapi-500-server-error",
"pipeline-error-openai-voice-failed",
"pipeline-error-cartesia-voice-failed",
- "pipeline-error-deepgram-transcriber-failed",
"pipeline-error-deepgram-voice-failed",
- "pipeline-error-gladia-transcriber-failed",
"pipeline-error-eleven-labs-voice-failed",
"pipeline-error-playht-voice-failed",
"pipeline-error-lmnt-voice-failed",
"pipeline-error-azure-voice-failed",
"pipeline-error-rime-ai-voice-failed",
"pipeline-error-neets-voice-failed",
+ "db-error",
+ "assistant-not-found",
+ "license-check-failed",
+ "pipeline-error-vapi-llm-failed",
+ "pipeline-error-vapi-400-bad-request-validation-failed",
+ "pipeline-error-vapi-401-unauthorized",
+ "pipeline-error-vapi-403-model-access-denied",
+ "pipeline-error-vapi-429-exceeded-quota",
+ "pipeline-error-vapi-500-server-error",
"pipeline-no-available-model",
"worker-shutdown",
"unknown-error",
@@ -42,6 +34,16 @@
"vapifault-transport-never-connected",
"vapifault-web-call-worker-setup-failed",
"vapifault-transport-connected-but-call-not-active",
+ "vapifault-call-started-but-connection-to-transport-missing",
+ "pipeline-error-deepgram-transcriber-failed",
+ "pipeline-error-gladia-transcriber-failed",
+ "pipeline-error-assembly-ai-transcriber-failed",
+ "pipeline-error-openai-llm-failed",
+ "pipeline-error-azure-openai-llm-failed",
+ "pipeline-error-groq-llm-failed",
+ "pipeline-error-google-llm-failed",
+ "pipeline-error-xai-llm-failed",
+ "pipeline-error-inflection-ai-llm-failed",
"assistant-not-invalid",
"assistant-not-provided",
"call-start-error-neither-assistant-nor-server-set",
@@ -68,6 +70,21 @@
"pipeline-error-openai-403-model-access-denied",
"pipeline-error-openai-429-exceeded-quota",
"pipeline-error-openai-500-server-error",
+ "pipeline-error-google-400-bad-request-validation-failed",
+ "pipeline-error-google-401-unauthorized",
+ "pipeline-error-google-403-model-access-denied",
+ "pipeline-error-google-429-exceeded-quota",
+ "pipeline-error-google-500-server-error",
+ "pipeline-error-xai-400-bad-request-validation-failed",
+ "pipeline-error-xai-401-unauthorized",
+ "pipeline-error-xai-403-model-access-denied",
+ "pipeline-error-xai-429-exceeded-quota",
+ "pipeline-error-xai-500-server-error",
+ "pipeline-error-inflection-ai-400-bad-request-validation-failed",
+ "pipeline-error-inflection-ai-401-unauthorized",
+ "pipeline-error-inflection-ai-403-model-access-denied",
+ "pipeline-error-inflection-ai-429-exceeded-quota",
+ "pipeline-error-inflection-ai-500-server-error",
"pipeline-error-azure-openai-400-bad-request-validation-failed",
"pipeline-error-azure-openai-401-unauthorized",
"pipeline-error-azure-openai-403-model-access-denied",
@@ -83,6 +100,7 @@
"pipeline-error-anthropic-403-model-access-denied",
"pipeline-error-anthropic-429-exceeded-quota",
"pipeline-error-anthropic-500-server-error",
+ "pipeline-error-anthropic-llm-failed",
"pipeline-error-together-ai-400-bad-request-validation-failed",
"pipeline-error-together-ai-401-unauthorized",
"pipeline-error-together-ai-403-model-access-denied",
@@ -125,12 +143,12 @@
"pipeline-error-custom-llm-429-exceeded-quota",
"pipeline-error-custom-llm-500-server-error",
"pipeline-error-custom-llm-llm-failed",
+ "pipeline-error-custom-voice-failed",
"pipeline-error-cartesia-socket-hang-up",
"pipeline-error-cartesia-requested-payment",
"pipeline-error-cartesia-500-server-error",
"pipeline-error-cartesia-503-server-error",
"pipeline-error-cartesia-522-server-error",
- "pipeline-error-custom-voice-failed",
"pipeline-error-eleven-labs-voice-not-found",
"pipeline-error-eleven-labs-quota-exceeded",
"pipeline-error-eleven-labs-unauthorized-access",
@@ -151,10 +169,12 @@
"pipeline-error-eleven-labs-voice-not-allowed-for-free-users",
"pipeline-error-eleven-labs-500-server-error",
"pipeline-error-eleven-labs-max-character-limit-exceeded",
+ "pipeline-error-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification",
"pipeline-error-playht-request-timed-out",
"pipeline-error-playht-invalid-voice",
"pipeline-error-playht-unexpected-error",
"pipeline-error-playht-out-of-credits",
+ "pipeline-error-playht-invalid-emotion",
"pipeline-error-playht-voice-must-be-a-valid-voice-manifest-uri",
"pipeline-error-playht-401-unauthorized",
"pipeline-error-playht-403-forbidden-out-of-characters",
@@ -162,16 +182,21 @@
"pipeline-error-playht-429-exceeded-quota",
"pipeline-error-playht-502-gateway-error",
"pipeline-error-playht-504-gateway-error",
- "pipeline-error-deepgram-403-model-access-denied",
- "pipeline-error-deepgram-404-not-found",
- "pipeline-error-deepgram-400-no-such-model-language-tier-combination",
- "pipeline-error-deepgram-500-returning-invalid-json",
- "sip-gateway-failed-to-connect-call",
+ "pipeline-error-deepgram-returning-403-model-access-denied",
+ "pipeline-error-deepgram-returning-401-invalid-credentials",
+ "pipeline-error-deepgram-returning-404-not-found",
+ "pipeline-error-deepgram-returning-400-no-such-model-language-tier-combination",
+ "pipeline-error-deepgram-returning-500-invalid-json",
+ "pipeline-error-deepgram-returning-502-network-error",
+ "pipeline-error-deepgram-returning-502-bad-gateway-ehostunreach",
+ "pipeline-error-tavus-video-failed",
+ "pipeline-error-custom-transcriber-failed",
"silence-timed-out",
+ "sip-gateway-failed-to-connect-call",
"twilio-failed-to-connect-call",
"twilio-reported-customer-misdialed",
- "voicemail",
"vonage-rejected",
+ "voicemail",
],
typing.Any,
]
diff --git a/src/vapi/types/call_log_privileged.py b/src/vapi/types/call_log_privileged.py
new file mode 100644
index 0000000..7efd25d
--- /dev/null
+++ b/src/vapi/types/call_log_privileged.py
@@ -0,0 +1,46 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing_extensions
+from ..core.serialization import FieldMetadata
+import pydantic
+from .call_log_privileged_level import CallLogPrivilegedLevel
+import datetime as dt
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+import typing
+
+
+class CallLogPrivileged(UniversalBaseModel):
+ call_id: typing_extensions.Annotated[str, FieldMetadata(alias="callId")] = pydantic.Field()
+ """
+ This is the unique identifier for the call.
+ """
+
+ org_id: typing_extensions.Annotated[str, FieldMetadata(alias="orgId")] = pydantic.Field()
+ """
+ This is the unique identifier for the org that this call log belongs to.
+ """
+
+ log: str = pydantic.Field()
+ """
+ This is the log message associated with the call.
+ """
+
+ level: CallLogPrivilegedLevel = pydantic.Field()
+ """
+ This is the level of the log message.
+ """
+
+ time: dt.datetime = pydantic.Field()
+ """
+ This is the ISO 8601 date-time string of when the log was created.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/call_log_privileged_level.py b/src/vapi/types/call_log_privileged_level.py
new file mode 100644
index 0000000..5826106
--- /dev/null
+++ b/src/vapi/types/call_log_privileged_level.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+CallLogPrivilegedLevel = typing.Union[typing.Literal["INFO", "LOG", "WARN", "ERROR", "CHECKPOINT"], typing.Any]
diff --git a/src/vapi/types/call_logs_paginated_response.py b/src/vapi/types/call_logs_paginated_response.py
new file mode 100644
index 0000000..d0b1b20
--- /dev/null
+++ b/src/vapi/types/call_logs_paginated_response.py
@@ -0,0 +1,22 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+from .call_log_privileged import CallLogPrivileged
+from .pagination_meta import PaginationMeta
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+import pydantic
+
+
+class CallLogsPaginatedResponse(UniversalBaseModel):
+ results: typing.List[CallLogPrivileged]
+ metadata: PaginationMeta
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/callback_step.py b/src/vapi/types/callback_step.py
index 87f4fdc..1847c33 100644
--- a/src/vapi/types/callback_step.py
+++ b/src/vapi/types/callback_step.py
@@ -22,7 +22,6 @@ class CallbackStep(UniversalBaseModel):
This is a step that calls back to the previous step after it's done. This effectively means we're spawning a new conversation thread. The previous conversation thread will resume where it left off once this step is done.
Use case:
-
- You are collecting a customer's order and while they were on one item, they start a new item or try to modify a previous one. You would make a OrderUpdate block which calls the same block repeatedly when a new update starts.
"""
@@ -49,12 +48,11 @@ class CallbackStep(UniversalBaseModel):
Example:
{
- "name": "John Doe",
- "age": 20
+ "name": "John Doe",
+ "age": 20
}
You can reference any variable in the context of the current block:
-
- "{{your-step-name.output.your-property-name}}" for another step's output (in the same workflow; read caveat #1)
- "{{your-step-name.input.your-property-name}}" for another step's input (in the same workflow; read caveat #1)
- "{{your-block-name.output.your-property-name}}" for another block's output (in the same workflow; read caveat #2)
@@ -64,35 +62,34 @@ class CallbackStep(UniversalBaseModel):
Example:
{
- "name": "{{my-tool-call-step.output.name}}",
- "age": "{{my-tool-call-step.input.age}}",
- "date": "{{workflow.input.date}}"
+ "name": "{{my-tool-call-step.output.name}}",
+ "age": "{{my-tool-call-step.input.age}}",
+ "date": "{{workflow.input.date}}"
}
You can dynamically change the key name.
Example:
{
- "{{my-tool-call-step.output.key-name-for-name}}": "{{name}}",
- "{{my-tool-call-step.input.key-name-for-age}}": "{{age}}",
- "{{workflow.input.key-name-for-date}}": "{{date}}"
+ "{{my-tool-call-step.output.key-name-for-name}}": "{{name}}",
+ "{{my-tool-call-step.input.key-name-for-age}}": "{{age}}",
+ "{{workflow.input.key-name-for-date}}": "{{date}}"
}
You can represent the value as a string, number, boolean, array, or object.
Example:
{
- "name": "john",
- "age": 20,
- "date": "2021-01-01",
- "metadata": {
- "unique-key": "{{my-tool-call-step.output.unique-key}}"
- },
- "array": ["A", "B", "C"],
+ "name": "john",
+ "age": 20,
+ "date": "2021-01-01",
+ "metadata": {
+ "unique-key": "{{my-tool-call-step.output.unique-key}}"
+ },
+ "array": ["A", "B", "C"],
}
Caveats:
-
1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.input/output.propertyName}} will reference the latest usage of the step.
2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.input/output.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow.
"""
diff --git a/src/vapi/types/cartesia_credential.py b/src/vapi/types/cartesia_credential.py
index 2fbf720..6808332 100644
--- a/src/vapi/types/cartesia_credential.py
+++ b/src/vapi/types/cartesia_credential.py
@@ -36,6 +36,11 @@ class CartesiaCredential(UniversalBaseModel):
This is the ISO 8601 date-time string of when the assistant was last updated.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/cartesia_voice.py b/src/vapi/types/cartesia_voice.py
index 9ce6446..42de083 100644
--- a/src/vapi/types/cartesia_voice.py
+++ b/src/vapi/types/cartesia_voice.py
@@ -1,26 +1,18 @@
# This file was auto-generated by Fern from our API Definition.
from ..core.pydantic_utilities import UniversalBaseModel
-import typing_extensions
import typing
-from ..core.serialization import FieldMetadata
import pydantic
from .cartesia_voice_model import CartesiaVoiceModel
from .cartesia_voice_language import CartesiaVoiceLanguage
+import typing_extensions
from .chunk_plan import ChunkPlan
+from ..core.serialization import FieldMetadata
+from .fallback_plan import FallbackPlan
from ..core.pydantic_utilities import IS_PYDANTIC_V2
class CartesiaVoice(UniversalBaseModel):
- filler_injection_enabled: typing_extensions.Annotated[
- typing.Optional[bool], FieldMetadata(alias="fillerInjectionEnabled")
- ] = pydantic.Field(default=None)
- """
- This determines whether fillers are injected into the model output before inputting it into the voice provider.
-
- Default `false` because you can achieve better results with prompting the model.
- """
-
provider: typing.Literal["cartesia"] = pydantic.Field(default="cartesia")
"""
This is the voice provider that will be used.
@@ -36,16 +28,23 @@ class CartesiaVoice(UniversalBaseModel):
This is the language that will be used. This is optional and will default to the correct language for the voiceId.
"""
+ chunk_plan: typing_extensions.Annotated[typing.Optional[ChunkPlan], FieldMetadata(alias="chunkPlan")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the plan for chunking the model output before it is sent to the voice provider.
+ """
+
voice_id: typing_extensions.Annotated[str, FieldMetadata(alias="voiceId")] = pydantic.Field()
"""
This is the provider-specific ID that will be used.
"""
- chunk_plan: typing_extensions.Annotated[typing.Optional[ChunkPlan], FieldMetadata(alias="chunkPlan")] = (
+ fallback_plan: typing_extensions.Annotated[typing.Optional[FallbackPlan], FieldMetadata(alias="fallbackPlan")] = (
pydantic.Field(default=None)
)
"""
- This is the plan for chunking the model output before it is sent to the voice provider.
+ This is the plan for voice provider fallbacks in the event that the primary voice provider fails.
"""
if IS_PYDANTIC_V2:
diff --git a/src/vapi/types/cartesia_voice_language.py b/src/vapi/types/cartesia_voice_language.py
index ea8e832..244da89 100644
--- a/src/vapi/types/cartesia_voice_language.py
+++ b/src/vapi/types/cartesia_voice_language.py
@@ -2,4 +2,6 @@
import typing
-CartesiaVoiceLanguage = typing.Union[typing.Literal["de", "en", "es", "fr", "ja", "pt", "zh"], typing.Any]
+CartesiaVoiceLanguage = typing.Union[
+ typing.Literal["en", "de", "es", "fr", "ja", "pt", "zh", "hi", "it", "ko", "nl", "pl", "ru", "sv", "tr"], typing.Any
+]
diff --git a/src/vapi/types/chunk_plan.py b/src/vapi/types/chunk_plan.py
index d4ce8a8..e20928f 100644
--- a/src/vapi/types/chunk_plan.py
+++ b/src/vapi/types/chunk_plan.py
@@ -16,7 +16,6 @@ class ChunkPlan(UniversalBaseModel):
This determines whether the model output is chunked before being sent to the voice provider. Default `true`.
Usage:
-
- To rely on the voice provider's audio generation logic, set this to `false`.
- If seeing issues with quality, set this to `true`.
@@ -32,7 +31,6 @@ class ChunkPlan(UniversalBaseModel):
This is the minimum number of characters in a chunk.
Usage:
-
- To increase quality, set this to a higher value.
- To decrease latency, set this to a lower value.
@@ -46,7 +44,6 @@ class ChunkPlan(UniversalBaseModel):
These are the punctuations that are considered valid boundaries for a chunk to be created.
Usage:
-
- To increase quality, constrain to fewer boundaries.
- To decrease latency, enable all.
diff --git a/src/vapi/types/client_inbound_message_add_message.py b/src/vapi/types/client_inbound_message_add_message.py
index e731736..4868025 100644
--- a/src/vapi/types/client_inbound_message_add_message.py
+++ b/src/vapi/types/client_inbound_message_add_message.py
@@ -4,6 +4,8 @@
import typing
import pydantic
from .open_ai_message import OpenAiMessage
+import typing_extensions
+from ..core.serialization import FieldMetadata
from ..core.pydantic_utilities import IS_PYDANTIC_V2
@@ -18,6 +20,19 @@ class ClientInboundMessageAddMessage(UniversalBaseModel):
This is the message to add to the conversation.
"""
+ trigger_response_enabled: typing_extensions.Annotated[
+ typing.Optional[bool], FieldMetadata(alias="triggerResponseEnabled")
+ ] = pydantic.Field(default=None)
+ """
+ This is the flag to trigger a response, or to insert the message into the conversation history silently. Defaults to `true`.
+
+ Usage:
+ - Use `true` to trigger a response.
+ - Use `false` to insert the message into the conversation history silently.
+
+ @default true
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/client_inbound_message_control.py b/src/vapi/types/client_inbound_message_control.py
index 588c6b4..3353fd4 100644
--- a/src/vapi/types/client_inbound_message_control.py
+++ b/src/vapi/types/client_inbound_message_control.py
@@ -11,7 +11,6 @@ class ClientInboundMessageControl(UniversalBaseModel):
type: typing.Literal["control"] = pydantic.Field(default="control")
"""
This is the type of the message. Send "control" message to control the assistant. `control` options are:
-
- "mute-assistant" - mute the assistant
- "unmute-assistant" - unmute the assistant
- "say-first-message" - say the first message (this is used when video recording is enabled and the conversation is only started once the client side kicks off the recording)
diff --git a/src/vapi/types/client_inbound_message_message.py b/src/vapi/types/client_inbound_message_message.py
index 76ef8ed..8bf0f88 100644
--- a/src/vapi/types/client_inbound_message_message.py
+++ b/src/vapi/types/client_inbound_message_message.py
@@ -4,7 +4,8 @@
from .client_inbound_message_add_message import ClientInboundMessageAddMessage
from .client_inbound_message_control import ClientInboundMessageControl
from .client_inbound_message_say import ClientInboundMessageSay
+from .client_inbound_message_transfer import ClientInboundMessageTransfer
ClientInboundMessageMessage = typing.Union[
- ClientInboundMessageAddMessage, ClientInboundMessageControl, ClientInboundMessageSay
+ ClientInboundMessageAddMessage, ClientInboundMessageControl, ClientInboundMessageSay, ClientInboundMessageTransfer
]
diff --git a/src/vapi/types/client_inbound_message_transfer.py b/src/vapi/types/client_inbound_message_transfer.py
new file mode 100644
index 0000000..d2b8bab
--- /dev/null
+++ b/src/vapi/types/client_inbound_message_transfer.py
@@ -0,0 +1,28 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import pydantic
+from .client_inbound_message_transfer_destination import ClientInboundMessageTransferDestination
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class ClientInboundMessageTransfer(UniversalBaseModel):
+ type: typing.Literal["transfer"] = pydantic.Field(default="transfer")
+ """
+ This is the type of the message. Send "transfer" message to transfer the call to a destination.
+ """
+
+ destination: typing.Optional[ClientInboundMessageTransferDestination] = pydantic.Field(default=None)
+ """
+ This is the destination to transfer the call to.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/client_inbound_message_transfer_destination.py b/src/vapi/types/client_inbound_message_transfer_destination.py
new file mode 100644
index 0000000..874689b
--- /dev/null
+++ b/src/vapi/types/client_inbound_message_transfer_destination.py
@@ -0,0 +1,7 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+from .transfer_destination_number import TransferDestinationNumber
+from .transfer_destination_sip import TransferDestinationSip
+
+ClientInboundMessageTransferDestination = typing.Union[TransferDestinationNumber, TransferDestinationSip]
diff --git a/src/vapi/types/client_message.py b/src/vapi/types/client_message.py
index 55969de..5e34e92 100644
--- a/src/vapi/types/client_message.py
+++ b/src/vapi/types/client_message.py
@@ -1,10 +1,15 @@
# This file was auto-generated by Fern from our API Definition.
+from __future__ import annotations
from ..core.pydantic_utilities import UniversalBaseModel
+from .callback_step import CallbackStep
+from .create_workflow_block_dto import CreateWorkflowBlockDto
+from .handoff_step import HandoffStep
from .client_message_message import ClientMessageMessage
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2
import typing
+from ..core.pydantic_utilities import update_forward_refs
class ClientMessage(UniversalBaseModel):
@@ -21,3 +26,8 @@ class Config:
frozen = True
smart_union = True
extra = pydantic.Extra.allow
+
+
+update_forward_refs(CallbackStep, ClientMessage=ClientMessage)
+update_forward_refs(CreateWorkflowBlockDto, ClientMessage=ClientMessage)
+update_forward_refs(HandoffStep, ClientMessage=ClientMessage)
diff --git a/src/vapi/types/client_message_hang.py b/src/vapi/types/client_message_hang.py
index 5f13a17..823ad6f 100644
--- a/src/vapi/types/client_message_hang.py
+++ b/src/vapi/types/client_message_hang.py
@@ -10,7 +10,6 @@ class ClientMessageHang(UniversalBaseModel):
type: typing.Literal["hang"] = pydantic.Field(default="hang")
"""
This is the type of the message. "hang" is sent when the assistant is hanging due to a delay. The delay can be caused by many factors, such as:
-
- the model is too slow to respond
- the voice is too slow to respond
- the tool call is still waiting for a response from your server
diff --git a/src/vapi/types/client_message_language_changed.py b/src/vapi/types/client_message_language_change_detected.py
similarity index 66%
rename from src/vapi/types/client_message_language_changed.py
rename to src/vapi/types/client_message_language_change_detected.py
index bdde178..eb12b9a 100644
--- a/src/vapi/types/client_message_language_changed.py
+++ b/src/vapi/types/client_message_language_change_detected.py
@@ -6,10 +6,10 @@
from ..core.pydantic_utilities import IS_PYDANTIC_V2
-class ClientMessageLanguageChanged(UniversalBaseModel):
- type: typing.Literal["language-changed"] = pydantic.Field(default="language-changed")
+class ClientMessageLanguageChangeDetected(UniversalBaseModel):
+ type: typing.Literal["language-change-detected"] = pydantic.Field(default="language-change-detected")
"""
- This is the type of the message. "language-switched" is sent when the transcriber is automatically switched based on the detected language.
+ This is the type of the message. "language-change-detected" is sent when the transcriber is automatically switched based on the detected language.
"""
language: str = pydantic.Field()
diff --git a/src/vapi/types/client_message_message.py b/src/vapi/types/client_message_message.py
index b632c55..bbb1d3a 100644
--- a/src/vapi/types/client_message_message.py
+++ b/src/vapi/types/client_message_message.py
@@ -9,8 +9,9 @@
from .client_message_transcript import ClientMessageTranscript
from .client_message_tool_calls import ClientMessageToolCalls
from .client_message_tool_calls_result import ClientMessageToolCallsResult
+from .client_message_transfer_update import ClientMessageTransferUpdate
from .client_message_user_interrupted import ClientMessageUserInterrupted
-from .client_message_language_changed import ClientMessageLanguageChanged
+from .client_message_language_change_detected import ClientMessageLanguageChangeDetected
from .client_message_voice_input import ClientMessageVoiceInput
ClientMessageMessage = typing.Union[
@@ -22,7 +23,8 @@
ClientMessageTranscript,
ClientMessageToolCalls,
ClientMessageToolCallsResult,
+ ClientMessageTransferUpdate,
ClientMessageUserInterrupted,
- ClientMessageLanguageChanged,
+ ClientMessageLanguageChangeDetected,
ClientMessageVoiceInput,
]
diff --git a/src/vapi/types/client_message_tool_calls_tool_with_tool_call_list_item.py b/src/vapi/types/client_message_tool_calls_tool_with_tool_call_list_item.py
index a92203e..5364208 100644
--- a/src/vapi/types/client_message_tool_calls_tool_with_tool_call_list_item.py
+++ b/src/vapi/types/client_message_tool_calls_tool_with_tool_call_list_item.py
@@ -6,5 +6,10 @@
from .make_tool_with_tool_call import MakeToolWithToolCall
ClientMessageToolCallsToolWithToolCallListItem = typing.Union[
- FunctionToolWithToolCall, GhlToolWithToolCall, MakeToolWithToolCall
+ FunctionToolWithToolCall,
+ GhlToolWithToolCall,
+ MakeToolWithToolCall,
+ typing.Optional[typing.Any],
+ typing.Optional[typing.Any],
+ typing.Optional[typing.Any],
]
diff --git a/src/vapi/types/client_message_transfer_update.py b/src/vapi/types/client_message_transfer_update.py
new file mode 100644
index 0000000..63b1b46
--- /dev/null
+++ b/src/vapi/types/client_message_transfer_update.py
@@ -0,0 +1,69 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from __future__ import annotations
+from ..core.pydantic_utilities import UniversalBaseModel
+from .callback_step import CallbackStep
+from .create_workflow_block_dto import CreateWorkflowBlockDto
+from .handoff_step import HandoffStep
+import typing
+import pydantic
+from .client_message_transfer_update_destination import ClientMessageTransferUpdateDestination
+import typing_extensions
+from .create_assistant_dto import CreateAssistantDto
+from ..core.serialization import FieldMetadata
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.pydantic_utilities import update_forward_refs
+
+
+class ClientMessageTransferUpdate(UniversalBaseModel):
+ type: typing.Literal["transfer-update"] = pydantic.Field(default="transfer-update")
+ """
+ This is the type of the message. "transfer-update" is sent whenever a transfer happens.
+ """
+
+ destination: typing.Optional[ClientMessageTransferUpdateDestination] = pydantic.Field(default=None)
+ """
+ This is the destination of the transfer.
+ """
+
+ to_assistant: typing_extensions.Annotated[
+ typing.Optional[CreateAssistantDto], FieldMetadata(alias="toAssistant")
+ ] = pydantic.Field(default=None)
+ """
+ This is the assistant that the call is being transferred to. This is only sent if `destination.type` is "assistant".
+ """
+
+ from_assistant: typing_extensions.Annotated[
+ typing.Optional[CreateAssistantDto], FieldMetadata(alias="fromAssistant")
+ ] = pydantic.Field(default=None)
+ """
+ This is the assistant that the call is being transferred from. This is only sent if `destination.type` is "assistant".
+ """
+
+ to_step_record: typing_extensions.Annotated[
+ typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]], FieldMetadata(alias="toStepRecord")
+ ] = pydantic.Field(default=None)
+ """
+ This is the step that the conversation moved to.
+ """
+
+ from_step_record: typing_extensions.Annotated[
+ typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]], FieldMetadata(alias="fromStepRecord")
+ ] = pydantic.Field(default=None)
+ """
+ This is the step that the conversation moved from. =
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
+
+
+update_forward_refs(CallbackStep, ClientMessageTransferUpdate=ClientMessageTransferUpdate)
+update_forward_refs(CreateWorkflowBlockDto, ClientMessageTransferUpdate=ClientMessageTransferUpdate)
+update_forward_refs(HandoffStep, ClientMessageTransferUpdate=ClientMessageTransferUpdate)
diff --git a/src/vapi/types/client_message_transfer_update_destination.py b/src/vapi/types/client_message_transfer_update_destination.py
new file mode 100644
index 0000000..9040400
--- /dev/null
+++ b/src/vapi/types/client_message_transfer_update_destination.py
@@ -0,0 +1,11 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+from .transfer_destination_assistant import TransferDestinationAssistant
+from .transfer_destination_step import TransferDestinationStep
+from .transfer_destination_number import TransferDestinationNumber
+from .transfer_destination_sip import TransferDestinationSip
+
+ClientMessageTransferUpdateDestination = typing.Union[
+ TransferDestinationAssistant, TransferDestinationStep, TransferDestinationNumber, TransferDestinationSip
+]
diff --git a/src/vapi/types/computer_tool.py b/src/vapi/types/computer_tool.py
new file mode 100644
index 0000000..354ba7a
--- /dev/null
+++ b/src/vapi/types/computer_tool.py
@@ -0,0 +1,111 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing_extensions
+import typing
+from ..core.serialization import FieldMetadata
+import pydantic
+from .computer_tool_messages_item import ComputerToolMessagesItem
+import datetime as dt
+from .open_ai_function import OpenAiFunction
+from .server import Server
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class ComputerTool(UniversalBaseModel):
+ async_: typing_extensions.Annotated[typing.Optional[bool], FieldMetadata(alias="async")] = pydantic.Field(
+ default=None
+ )
+ """
+ This determines if the tool is async.
+
+ If async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.
+
+ If sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.
+
+ Defaults to synchronous (`false`).
+ """
+
+ messages: typing.Optional[typing.List[ComputerToolMessagesItem]] = pydantic.Field(default=None)
+ """
+ These are the messages that will be spoken to the user as the tool is running.
+
+ For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
+ """
+
+ type: typing.Literal["computer"] = "computer"
+ sub_type: typing_extensions.Annotated[typing.Literal["computer_20241022"], FieldMetadata(alias="subType")] = (
+ pydantic.Field(default="computer_20241022")
+ )
+ """
+ The sub type of tool.
+ """
+
+ id: str = pydantic.Field()
+ """
+ This is the unique identifier for the tool.
+ """
+
+ org_id: typing_extensions.Annotated[str, FieldMetadata(alias="orgId")] = pydantic.Field()
+ """
+ This is the unique identifier for the organization that this tool belongs to.
+ """
+
+ created_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="createdAt")] = pydantic.Field()
+ """
+ This is the ISO 8601 date-time string of when the tool was created.
+ """
+
+ updated_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="updatedAt")] = pydantic.Field()
+ """
+ This is the ISO 8601 date-time string of when the tool was last updated.
+ """
+
+ function: typing.Optional[OpenAiFunction] = pydantic.Field(default=None)
+ """
+ This is the function definition of the tool.
+
+ For `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.
+
+ An example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument "reason". Then, in `messages` array, you can have many "request-complete" messages. One of these messages will be triggered if the `messages[].conditions` matches the "reason" argument.
+ """
+
+ server: typing.Optional[Server] = pydantic.Field(default=None)
+ """
+ This is the server that will be hit when this tool is requested by the model.
+
+ All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
+
+ This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
+ """
+
+ name: typing.Literal["computer"] = pydantic.Field(default="computer")
+ """
+ The name of the tool, fixed to 'computer'
+ """
+
+ display_width_px: typing_extensions.Annotated[float, FieldMetadata(alias="displayWidthPx")] = pydantic.Field()
+ """
+ The display width in pixels
+ """
+
+ display_height_px: typing_extensions.Annotated[float, FieldMetadata(alias="displayHeightPx")] = pydantic.Field()
+ """
+ The display height in pixels
+ """
+
+ display_number: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="displayNumber")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ Optional display number
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/computer_tool_messages_item.py b/src/vapi/types/computer_tool_messages_item.py
new file mode 100644
index 0000000..19c211b
--- /dev/null
+++ b/src/vapi/types/computer_tool_messages_item.py
@@ -0,0 +1,9 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+from .tool_message_start import ToolMessageStart
+from .tool_message_complete import ToolMessageComplete
+from .tool_message_failed import ToolMessageFailed
+from .tool_message_delayed import ToolMessageDelayed
+
+ComputerToolMessagesItem = typing.Union[ToolMessageStart, ToolMessageComplete, ToolMessageFailed, ToolMessageDelayed]
diff --git a/src/vapi/types/condition.py b/src/vapi/types/condition.py
index dfe4389..2e16d9c 100644
--- a/src/vapi/types/condition.py
+++ b/src/vapi/types/condition.py
@@ -1,18 +1,13 @@
# This file was auto-generated by Fern from our API Definition.
from ..core.pydantic_utilities import UniversalBaseModel
-import pydantic
from .condition_operator import ConditionOperator
-from ..core.pydantic_utilities import IS_PYDANTIC_V2
+import pydantic
import typing
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
class Condition(UniversalBaseModel):
- value: str = pydantic.Field()
- """
- This is the value you want to compare against the parameter.
- """
-
operator: ConditionOperator = pydantic.Field()
"""
This is the operator you want to use to compare the parameter and value.
@@ -23,6 +18,11 @@ class Condition(UniversalBaseModel):
This is the name of the parameter that you want to check.
"""
+ value: typing.Dict[str, typing.Optional[typing.Any]] = pydantic.Field()
+ """
+ This is the value you want to compare against the parameter.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/conversation_block.py b/src/vapi/types/conversation_block.py
index 4e11f10..29df7b6 100644
--- a/src/vapi/types/conversation_block.py
+++ b/src/vapi/types/conversation_block.py
@@ -24,7 +24,6 @@ class ConversationBlock(UniversalBaseModel):
This is the input schema for the block. This is the input the block needs to run. It's given to the block as `steps[0].input`
These are accessible as variables:
-
- ({{input.propertyName}}) in context of the block execution (step)
- ({{stepName.input.propertyName}}) in context of the workflow
"""
@@ -36,13 +35,11 @@ class ConversationBlock(UniversalBaseModel):
This is the output schema for the block. This is the output the block will return to the workflow (`{{stepName.output}}`).
These are accessible as variables:
-
- ({{output.propertyName}}) in context of the block execution (step)
- ({{stepName.output.propertyName}}) in context of the workflow (read caveat #1)
- ({{blockName.output.propertyName}}) in context of the workflow (read caveat #2)
Caveats:
-
1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.output.propertyName}} will reference the latest usage of the step.
2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.output.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow with steps.
"""
@@ -78,7 +75,6 @@ class ConversationBlock(UniversalBaseModel):
This is the instruction to the model.
You can reference any variable in the context of the current block execution (step):
-
- "{{input.your-property-name}}" for the current step's input
- "{{your-step-name.output.your-property-name}}" for another step's output (in the same workflow; read caveat #1)
- "{{your-step-name.input.your-property-name}}" for another step's input (in the same workflow; read caveat #1)
@@ -88,13 +84,11 @@ class ConversationBlock(UniversalBaseModel):
- "{{global.your-property-name}}" for the global context
This can be as simple or as complex as you want it to be.
-
- "say hello and ask the user about their day!"
- "collect the user's first and last name"
- "user is {{input.firstName}} {{input.lastName}}. their age is {{input.age}}. ask them about their salary and if they might be interested in buying a house. we offer {{input.offer}}"
Caveats:
-
1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.output/input.propertyName}} will reference the latest usage of the step.
2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.output/input.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow with steps.
"""
diff --git a/src/vapi/types/create_anthropic_credential_dto.py b/src/vapi/types/create_anthropic_credential_dto.py
index 43d9dd3..3ae488a 100644
--- a/src/vapi/types/create_anthropic_credential_dto.py
+++ b/src/vapi/types/create_anthropic_credential_dto.py
@@ -15,6 +15,11 @@ class CreateAnthropicCredentialDto(UniversalBaseModel):
This is not returned in the API.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/create_anyscale_credential_dto.py b/src/vapi/types/create_anyscale_credential_dto.py
index b99dede..39ca844 100644
--- a/src/vapi/types/create_anyscale_credential_dto.py
+++ b/src/vapi/types/create_anyscale_credential_dto.py
@@ -15,6 +15,11 @@ class CreateAnyscaleCredentialDto(UniversalBaseModel):
This is not returned in the API.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/create_assembly_ai_credential_dto.py b/src/vapi/types/create_assembly_ai_credential_dto.py
new file mode 100644
index 0000000..7a64a90
--- /dev/null
+++ b/src/vapi/types/create_assembly_ai_credential_dto.py
@@ -0,0 +1,30 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import typing_extensions
+from ..core.serialization import FieldMetadata
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class CreateAssemblyAiCredentialDto(UniversalBaseModel):
+ provider: typing.Literal["assembly-ai"] = "assembly-ai"
+ api_key: typing_extensions.Annotated[str, FieldMetadata(alias="apiKey")] = pydantic.Field()
+ """
+ This is not returned in the API.
+ """
+
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/create_assistant_dto.py b/src/vapi/types/create_assistant_dto.py
index e54ec79..d484323 100644
--- a/src/vapi/types/create_assistant_dto.py
+++ b/src/vapi/types/create_assistant_dto.py
@@ -11,8 +11,8 @@
from .create_assistant_dto_model import CreateAssistantDtoModel
from .create_assistant_dto_voice import CreateAssistantDtoVoice
import typing_extensions
-from .create_assistant_dto_first_message_mode import CreateAssistantDtoFirstMessageMode
from ..core.serialization import FieldMetadata
+from .create_assistant_dto_first_message_mode import CreateAssistantDtoFirstMessageMode
from .create_assistant_dto_client_messages_item import CreateAssistantDtoClientMessagesItem
from .create_assistant_dto_server_messages_item import CreateAssistantDtoServerMessagesItem
from .create_assistant_dto_background_sound import CreateAssistantDtoBackgroundSound
@@ -24,6 +24,7 @@
from .start_speaking_plan import StartSpeakingPlan
from .stop_speaking_plan import StopSpeakingPlan
from .monitor_plan import MonitorPlan
+from .server import Server
from ..core.pydantic_utilities import IS_PYDANTIC_V2
from ..core.pydantic_utilities import update_forward_refs
@@ -44,6 +45,15 @@ class CreateAssistantDto(UniversalBaseModel):
These are the options for the assistant's voice.
"""
+ first_message: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="firstMessage")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the first message that the assistant will say. This can also be a URL to a containerized audio file (mp3, wav, etc.).
+
+ If unspecified, assistant will wait for user to speak and use the model to respond once they speak.
+ """
+
first_message_mode: typing_extensions.Annotated[
typing.Optional[CreateAssistantDtoFirstMessageMode], FieldMetadata(alias="firstMessageMode")
] = pydantic.Field(default=None)
@@ -51,7 +61,6 @@ class CreateAssistantDto(UniversalBaseModel):
This is the mode for the first message. Default is 'assistant-speaks-first'.
Use:
-
- 'assistant-speaks-first' to have the assistant speak first.
- 'assistant-waits-for-user' to have the assistant wait for the user to speak first.
- 'assistant-speaks-first-with-model-generated-message' to have the assistant speak first with a message generated by the model based on the conversation state. (`assistant.model.messages` at call start, `call.messages` at squad transfer points).
@@ -70,7 +79,7 @@ class CreateAssistantDto(UniversalBaseModel):
typing.Optional[typing.List[CreateAssistantDtoClientMessagesItem]], FieldMetadata(alias="clientMessages")
] = pydantic.Field(default=None)
"""
- These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transcript,tool-calls,user-interrupted,voice-input. You can check the shape of the messages in ClientMessage schema.
+ These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transfer-update,transcript,tool-calls,user-interrupted,voice-input. You can check the shape of the messages in ClientMessage schema.
"""
server_messages: typing_extensions.Annotated[
@@ -105,17 +114,6 @@ class CreateAssistantDto(UniversalBaseModel):
This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'.
"""
- backchanneling_enabled: typing_extensions.Annotated[
- typing.Optional[bool], FieldMetadata(alias="backchannelingEnabled")
- ] = pydantic.Field(default=None)
- """
- This determines whether the model says 'mhmm', 'ahem' etc. while user is speaking.
-
- Default `false` while in beta.
-
- @default false
- """
-
background_denoising_enabled: typing_extensions.Annotated[
typing.Optional[bool], FieldMetadata(alias="backgroundDenoisingEnabled")
] = pydantic.Field(default=None)
@@ -152,15 +150,6 @@ class CreateAssistantDto(UniversalBaseModel):
This is required when you want to transfer between assistants in a call.
"""
- first_message: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="firstMessage")] = (
- pydantic.Field(default=None)
- )
- """
- This is the first message that the assistant will say. This can also be a URL to a containerized audio file (mp3, wav, etc.).
-
- If unspecified, assistant will wait for user to speak and use the model to respond once they speak.
- """
-
voicemail_detection: typing_extensions.Annotated[
typing.Optional[TwilioVoicemailDetection], FieldMetadata(alias="voicemailDetection")
] = pydantic.Field(default=None)
@@ -200,26 +189,6 @@ class CreateAssistantDto(UniversalBaseModel):
This is for metadata you want to store on the assistant.
"""
- server_url: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="serverUrl")] = pydantic.Field(
- default=None
- )
- """
- This is the URL Vapi will communicate with via HTTP GET and POST Requests. This is used for retrieving context, function calling, and end-of-call reports.
-
- All requests will be sent with the call object among other things relevant to that message. You can find more details in the Server URL documentation.
-
- This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: tool.server.url > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl
- """
-
- server_url_secret: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="serverUrlSecret")] = (
- pydantic.Field(default=None)
- )
- """
- This is the secret you can set that Vapi will send with every request to your server. Will be sent as a header called x-vapi-secret.
-
- Same precedence logic as serverUrl.
- """
-
analysis_plan: typing_extensions.Annotated[typing.Optional[AnalysisPlan], FieldMetadata(alias="analysisPlan")] = (
pydantic.Field(default=None)
)
@@ -252,7 +221,6 @@ class CreateAssistantDto(UniversalBaseModel):
This is the plan for when the assistant should start talking.
You should configure this if you're running into these issues:
-
- The assistant is too slow to start talking after the customer is done speaking.
- The assistant is too fast to start talking after the customer is done speaking.
- The assistant is so fast that it's actually interrupting the customer.
@@ -265,7 +233,6 @@ class CreateAssistantDto(UniversalBaseModel):
This is the plan for when assistant should stop talking on customer interruption.
You should configure this if you're running into these issues:
-
- The assistant is too slow to recognize customer's interruption.
- The assistant is too fast to recognize customer's interruption.
- The assistant is getting interrupted by phrases that are just acknowledgments.
@@ -280,7 +247,6 @@ class CreateAssistantDto(UniversalBaseModel):
This is the plan for real-time monitoring of the assistant's calls.
Usage:
-
- To enable live listening of the assistant's calls, set `monitorPlan.listenEnabled` to `true`.
- To enable live control of the assistant's calls, set `monitorPlan.controlEnabled` to `true`.
@@ -294,6 +260,17 @@ class CreateAssistantDto(UniversalBaseModel):
These are the credentials that will be used for the assistant calls. By default, all the credentials are available for use in the call but you can provide a subset using this.
"""
+ server: typing.Optional[Server] = pydantic.Field(default=None)
+ """
+ This is where Vapi will send webhooks. You can find all webhooks available along with their shape in ServerMessage schema.
+
+ The order of precedence is:
+
+ 1. assistant.server.url
+ 2. phoneNumber.serverUrl
+ 3. org.serverUrl
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/create_assistant_dto_client_messages_item.py b/src/vapi/types/create_assistant_dto_client_messages_item.py
index aff9644..9da1f2b 100644
--- a/src/vapi/types/create_assistant_dto_client_messages_item.py
+++ b/src/vapi/types/create_assistant_dto_client_messages_item.py
@@ -16,6 +16,7 @@
"transcript",
"tool-calls",
"tool-calls-result",
+ "transfer-update",
"user-interrupted",
"voice-input",
],
diff --git a/src/vapi/types/create_assistant_dto_model.py b/src/vapi/types/create_assistant_dto_model.py
index 7ee059a..5a58088 100644
--- a/src/vapi/types/create_assistant_dto_model.py
+++ b/src/vapi/types/create_assistant_dto_model.py
@@ -5,22 +5,28 @@
from .anthropic_model import AnthropicModel
from .custom_llm_model import CustomLlmModel
from .deep_infra_model import DeepInfraModel
+from .google_model import GoogleModel
from .groq_model import GroqModel
+from .inflection_ai_model import InflectionAiModel
from .open_ai_model import OpenAiModel
from .open_router_model import OpenRouterModel
from .perplexity_ai_model import PerplexityAiModel
from .together_ai_model import TogetherAiModel
from .vapi_model import VapiModel
+from .xai_model import XaiModel
CreateAssistantDtoModel = typing.Union[
AnyscaleModel,
AnthropicModel,
CustomLlmModel,
DeepInfraModel,
+ GoogleModel,
GroqModel,
+ InflectionAiModel,
OpenAiModel,
OpenRouterModel,
PerplexityAiModel,
TogetherAiModel,
VapiModel,
+ XaiModel,
]
diff --git a/src/vapi/types/create_assistant_dto_server_messages_item.py b/src/vapi/types/create_assistant_dto_server_messages_item.py
index 1b33b84..5eabffd 100644
--- a/src/vapi/types/create_assistant_dto_server_messages_item.py
+++ b/src/vapi/types/create_assistant_dto_server_messages_item.py
@@ -9,6 +9,7 @@
"function-call",
"hang",
"language-changed",
+ "language-change-detected",
"model-output",
"phone-call-control",
"speech-update",
diff --git a/src/vapi/types/create_assistant_dto_transcriber.py b/src/vapi/types/create_assistant_dto_transcriber.py
index f4e52c6..6dea967 100644
--- a/src/vapi/types/create_assistant_dto_transcriber.py
+++ b/src/vapi/types/create_assistant_dto_transcriber.py
@@ -1,8 +1,12 @@
# This file was auto-generated by Fern from our API Definition.
import typing
+from .assembly_ai_transcriber import AssemblyAiTranscriber
+from .custom_transcriber import CustomTranscriber
from .deepgram_transcriber import DeepgramTranscriber
from .gladia_transcriber import GladiaTranscriber
from .talkscriber_transcriber import TalkscriberTranscriber
-CreateAssistantDtoTranscriber = typing.Union[DeepgramTranscriber, GladiaTranscriber, TalkscriberTranscriber]
+CreateAssistantDtoTranscriber = typing.Union[
+ AssemblyAiTranscriber, CustomTranscriber, DeepgramTranscriber, GladiaTranscriber, TalkscriberTranscriber
+]
diff --git a/src/vapi/types/create_assistant_dto_voice.py b/src/vapi/types/create_assistant_dto_voice.py
index 4646ebc..db25ab6 100644
--- a/src/vapi/types/create_assistant_dto_voice.py
+++ b/src/vapi/types/create_assistant_dto_voice.py
@@ -3,6 +3,7 @@
import typing
from .azure_voice import AzureVoice
from .cartesia_voice import CartesiaVoice
+from .custom_voice import CustomVoice
from .deepgram_voice import DeepgramVoice
from .eleven_labs_voice import ElevenLabsVoice
from .lmnt_voice import LmntVoice
@@ -10,10 +11,12 @@
from .open_ai_voice import OpenAiVoice
from .play_ht_voice import PlayHtVoice
from .rime_ai_voice import RimeAiVoice
+from .tavus_voice import TavusVoice
CreateAssistantDtoVoice = typing.Union[
AzureVoice,
CartesiaVoice,
+ CustomVoice,
DeepgramVoice,
ElevenLabsVoice,
LmntVoice,
@@ -21,4 +24,5 @@
OpenAiVoice,
PlayHtVoice,
RimeAiVoice,
+ TavusVoice,
]
diff --git a/src/vapi/types/create_azure_credential_dto.py b/src/vapi/types/create_azure_credential_dto.py
new file mode 100644
index 0000000..7fea10b
--- /dev/null
+++ b/src/vapi/types/create_azure_credential_dto.py
@@ -0,0 +1,43 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import pydantic
+from .create_azure_credential_dto_region import CreateAzureCredentialDtoRegion
+import typing_extensions
+from ..core.serialization import FieldMetadata
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class CreateAzureCredentialDto(UniversalBaseModel):
+ provider: typing.Literal["azure"] = "azure"
+ service: typing.Literal["speech"] = pydantic.Field(default="speech")
+ """
+ This is the service being used in Azure.
+ """
+
+ region: typing.Optional[CreateAzureCredentialDtoRegion] = pydantic.Field(default=None)
+ """
+ This is the region of the Azure resource.
+ """
+
+ api_key: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="apiKey")] = pydantic.Field(
+ default=None
+ )
+ """
+ This is not returned in the API.
+ """
+
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/create_azure_credential_dto_region.py b/src/vapi/types/create_azure_credential_dto_region.py
new file mode 100644
index 0000000..90bcfb1
--- /dev/null
+++ b/src/vapi/types/create_azure_credential_dto_region.py
@@ -0,0 +1,25 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+CreateAzureCredentialDtoRegion = typing.Union[
+ typing.Literal[
+ "australia",
+ "canada",
+ "eastus2",
+ "eastus",
+ "france",
+ "india",
+ "japan",
+ "uaenorth",
+ "northcentralus",
+ "norway",
+ "southcentralus",
+ "sweden",
+ "switzerland",
+ "uk",
+ "westus",
+ "westus3",
+ ],
+ typing.Any,
+]
diff --git a/src/vapi/types/create_azure_open_ai_credential_dto.py b/src/vapi/types/create_azure_open_ai_credential_dto.py
index 41822fa..d850450 100644
--- a/src/vapi/types/create_azure_open_ai_credential_dto.py
+++ b/src/vapi/types/create_azure_open_ai_credential_dto.py
@@ -20,6 +20,10 @@ class CreateAzureOpenAiCredentialDto(UniversalBaseModel):
"""
open_ai_endpoint: typing_extensions.Annotated[str, FieldMetadata(alias="openAIEndpoint")]
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
diff --git a/src/vapi/types/create_azure_open_ai_credential_dto_models_item.py b/src/vapi/types/create_azure_open_ai_credential_dto_models_item.py
index 97e3f64..72f0799 100644
--- a/src/vapi/types/create_azure_open_ai_credential_dto_models_item.py
+++ b/src/vapi/types/create_azure_open_ai_credential_dto_models_item.py
@@ -4,6 +4,7 @@
CreateAzureOpenAiCredentialDtoModelsItem = typing.Union[
typing.Literal[
+ "gpt-4o-2024-08-06",
"gpt-4o-mini-2024-07-18",
"gpt-4o-2024-05-13",
"gpt-4-turbo-2024-04-09",
diff --git a/src/vapi/types/create_azure_open_ai_credential_dto_region.py b/src/vapi/types/create_azure_open_ai_credential_dto_region.py
index 208ea50..4e76d0a 100644
--- a/src/vapi/types/create_azure_open_ai_credential_dto_region.py
+++ b/src/vapi/types/create_azure_open_ai_credential_dto_region.py
@@ -11,6 +11,7 @@
"france",
"india",
"japan",
+ "uaenorth",
"northcentralus",
"norway",
"southcentralus",
diff --git a/src/vapi/types/create_bash_tool_dto.py b/src/vapi/types/create_bash_tool_dto.py
new file mode 100644
index 0000000..d603d1a
--- /dev/null
+++ b/src/vapi/types/create_bash_tool_dto.py
@@ -0,0 +1,73 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing_extensions
+import typing
+from ..core.serialization import FieldMetadata
+import pydantic
+from .create_bash_tool_dto_messages_item import CreateBashToolDtoMessagesItem
+from .open_ai_function import OpenAiFunction
+from .server import Server
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class CreateBashToolDto(UniversalBaseModel):
+ async_: typing_extensions.Annotated[typing.Optional[bool], FieldMetadata(alias="async")] = pydantic.Field(
+ default=None
+ )
+ """
+ This determines if the tool is async.
+
+ If async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.
+
+ If sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.
+
+ Defaults to synchronous (`false`).
+ """
+
+ messages: typing.Optional[typing.List[CreateBashToolDtoMessagesItem]] = pydantic.Field(default=None)
+ """
+ These are the messages that will be spoken to the user as the tool is running.
+
+ For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
+ """
+
+ type: typing.Literal["bash"] = "bash"
+ sub_type: typing_extensions.Annotated[typing.Literal["bash_20241022"], FieldMetadata(alias="subType")] = (
+ pydantic.Field(default="bash_20241022")
+ )
+ """
+ The sub type of tool.
+ """
+
+ name: typing.Literal["bash"] = pydantic.Field(default="bash")
+ """
+ The name of the tool, fixed to 'bash'
+ """
+
+ function: typing.Optional[OpenAiFunction] = pydantic.Field(default=None)
+ """
+ This is the function definition of the tool.
+
+ For `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.
+
+ An example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument "reason". Then, in `messages` array, you can have many "request-complete" messages. One of these messages will be triggered if the `messages[].conditions` matches the "reason" argument.
+ """
+
+ server: typing.Optional[Server] = pydantic.Field(default=None)
+ """
+ This is the server that will be hit when this tool is requested by the model.
+
+ All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
+
+ This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/create_bash_tool_dto_messages_item.py b/src/vapi/types/create_bash_tool_dto_messages_item.py
new file mode 100644
index 0000000..73b0455
--- /dev/null
+++ b/src/vapi/types/create_bash_tool_dto_messages_item.py
@@ -0,0 +1,11 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+from .tool_message_start import ToolMessageStart
+from .tool_message_complete import ToolMessageComplete
+from .tool_message_failed import ToolMessageFailed
+from .tool_message_delayed import ToolMessageDelayed
+
+CreateBashToolDtoMessagesItem = typing.Union[
+ ToolMessageStart, ToolMessageComplete, ToolMessageFailed, ToolMessageDelayed
+]
diff --git a/src/vapi/types/create_byo_phone_number_dto.py b/src/vapi/types/create_byo_phone_number_dto.py
index adeb044..27d912d 100644
--- a/src/vapi/types/create_byo_phone_number_dto.py
+++ b/src/vapi/types/create_byo_phone_number_dto.py
@@ -15,7 +15,6 @@ class CreateByoPhoneNumberDto(UniversalBaseModel):
] = pydantic.Field(default=None)
"""
This is the fallback destination an inbound call will be transferred to if:
-
1. `assistantId` is not set
2. `squadId` is not set
3. and, `assistant-request` message to the `serverUrl` fails
@@ -31,7 +30,6 @@ class CreateByoPhoneNumberDto(UniversalBaseModel):
This is the flag to toggle the E164 check for the `number` field. This is an advanced property which should be used if you know your use case requires it.
Use cases:
-
- `false`: To allow non-E164 numbers like `+001234567890`, `1234`, or `abc`. This is useful for dialing out to non-E164 numbers on your SIP trunks.
- `true` (default): To allow only E164 numbers like `+14155551234`. This is standard for PSTN calls.
diff --git a/src/vapi/types/create_byo_sip_trunk_credential_dto.py b/src/vapi/types/create_byo_sip_trunk_credential_dto.py
index 6fd17ca..8819ece 100644
--- a/src/vapi/types/create_byo_sip_trunk_credential_dto.py
+++ b/src/vapi/types/create_byo_sip_trunk_credential_dto.py
@@ -22,11 +22,6 @@ class CreateByoSipTrunkCredentialDto(UniversalBaseModel):
This is the list of SIP trunk's gateways.
"""
- name: typing.Optional[str] = pydantic.Field(default=None)
- """
- This is the name of the SIP trunk. This is just for your reference.
- """
-
outbound_authentication_plan: typing_extensions.Annotated[
typing.Optional[SipTrunkOutboundAuthenticationPlan], FieldMetadata(alias="outboundAuthenticationPlan")
] = pydantic.Field(default=None)
@@ -41,12 +36,25 @@ class CreateByoSipTrunkCredentialDto(UniversalBaseModel):
This ensures the outbound origination attempts have a leading plus. Defaults to false to match conventional telecom behavior.
Usage:
-
- Vonage/Twilio requires leading plus for all outbound calls. Set this to true.
@default false
"""
+ tech_prefix: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="techPrefix")] = pydantic.Field(
+ default=None
+ )
+ """
+ This can be used to configure the tech prefix on outbound calls. This is an advanced property.
+ """
+
+ sip_diversion_header: typing_extensions.Annotated[
+ typing.Optional[str], FieldMetadata(alias="sipDiversionHeader")
+ ] = pydantic.Field(default=None)
+ """
+ This can be used to enable the SIP diversion header for authenticating the calling number if the SIP trunk supports it. This is an advanced property.
+ """
+
sbc_configuration: typing_extensions.Annotated[
typing.Optional[SbcConfiguration], FieldMetadata(alias="sbcConfiguration")
] = pydantic.Field(default=None)
@@ -54,6 +62,11 @@ class CreateByoSipTrunkCredentialDto(UniversalBaseModel):
This is an advanced configuration for enterprise deployments. This uses the onprem SBC to trunk into the SIP trunk's `gateways`, rather than the managed SBC provided by Vapi.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/create_cartesia_credential_dto.py b/src/vapi/types/create_cartesia_credential_dto.py
index 7c275ca..b8ee38f 100644
--- a/src/vapi/types/create_cartesia_credential_dto.py
+++ b/src/vapi/types/create_cartesia_credential_dto.py
@@ -15,6 +15,11 @@ class CreateCartesiaCredentialDto(UniversalBaseModel):
This is not returned in the API.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/create_computer_tool_dto.py b/src/vapi/types/create_computer_tool_dto.py
new file mode 100644
index 0000000..3411f6e
--- /dev/null
+++ b/src/vapi/types/create_computer_tool_dto.py
@@ -0,0 +1,90 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing_extensions
+import typing
+from ..core.serialization import FieldMetadata
+import pydantic
+from .create_computer_tool_dto_messages_item import CreateComputerToolDtoMessagesItem
+from .open_ai_function import OpenAiFunction
+from .server import Server
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class CreateComputerToolDto(UniversalBaseModel):
+ async_: typing_extensions.Annotated[typing.Optional[bool], FieldMetadata(alias="async")] = pydantic.Field(
+ default=None
+ )
+ """
+ This determines if the tool is async.
+
+ If async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.
+
+ If sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.
+
+ Defaults to synchronous (`false`).
+ """
+
+ messages: typing.Optional[typing.List[CreateComputerToolDtoMessagesItem]] = pydantic.Field(default=None)
+ """
+ These are the messages that will be spoken to the user as the tool is running.
+
+ For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
+ """
+
+ type: typing.Literal["computer"] = "computer"
+ sub_type: typing_extensions.Annotated[typing.Literal["computer_20241022"], FieldMetadata(alias="subType")] = (
+ pydantic.Field(default="computer_20241022")
+ )
+ """
+ The sub type of tool.
+ """
+
+ name: typing.Literal["computer"] = pydantic.Field(default="computer")
+ """
+ The name of the tool, fixed to 'computer'
+ """
+
+ display_width_px: typing_extensions.Annotated[float, FieldMetadata(alias="displayWidthPx")] = pydantic.Field()
+ """
+ The display width in pixels
+ """
+
+ display_height_px: typing_extensions.Annotated[float, FieldMetadata(alias="displayHeightPx")] = pydantic.Field()
+ """
+ The display height in pixels
+ """
+
+ display_number: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="displayNumber")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ Optional display number
+ """
+
+ function: typing.Optional[OpenAiFunction] = pydantic.Field(default=None)
+ """
+ This is the function definition of the tool.
+
+ For `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.
+
+ An example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument "reason". Then, in `messages` array, you can have many "request-complete" messages. One of these messages will be triggered if the `messages[].conditions` matches the "reason" argument.
+ """
+
+ server: typing.Optional[Server] = pydantic.Field(default=None)
+ """
+ This is the server that will be hit when this tool is requested by the model.
+
+ All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
+
+ This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/create_computer_tool_dto_messages_item.py b/src/vapi/types/create_computer_tool_dto_messages_item.py
new file mode 100644
index 0000000..003f396
--- /dev/null
+++ b/src/vapi/types/create_computer_tool_dto_messages_item.py
@@ -0,0 +1,11 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+from .tool_message_start import ToolMessageStart
+from .tool_message_complete import ToolMessageComplete
+from .tool_message_failed import ToolMessageFailed
+from .tool_message_delayed import ToolMessageDelayed
+
+CreateComputerToolDtoMessagesItem = typing.Union[
+ ToolMessageStart, ToolMessageComplete, ToolMessageFailed, ToolMessageDelayed
+]
diff --git a/src/vapi/types/create_conversation_block_dto.py b/src/vapi/types/create_conversation_block_dto.py
index 9964048..2a10de1 100644
--- a/src/vapi/types/create_conversation_block_dto.py
+++ b/src/vapi/types/create_conversation_block_dto.py
@@ -23,7 +23,6 @@ class CreateConversationBlockDto(UniversalBaseModel):
This is the input schema for the block. This is the input the block needs to run. It's given to the block as `steps[0].input`
These are accessible as variables:
-
- ({{input.propertyName}}) in context of the block execution (step)
- ({{stepName.input.propertyName}}) in context of the workflow
"""
@@ -35,13 +34,11 @@ class CreateConversationBlockDto(UniversalBaseModel):
This is the output schema for the block. This is the output the block will return to the workflow (`{{stepName.output}}`).
These are accessible as variables:
-
- ({{output.propertyName}}) in context of the block execution (step)
- ({{stepName.output.propertyName}}) in context of the workflow (read caveat #1)
- ({{blockName.output.propertyName}}) in context of the workflow (read caveat #2)
Caveats:
-
1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.output.propertyName}} will reference the latest usage of the step.
2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.output.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow with steps.
"""
@@ -52,7 +49,6 @@ class CreateConversationBlockDto(UniversalBaseModel):
This is the instruction to the model.
You can reference any variable in the context of the current block execution (step):
-
- "{{input.your-property-name}}" for the current step's input
- "{{your-step-name.output.your-property-name}}" for another step's output (in the same workflow; read caveat #1)
- "{{your-step-name.input.your-property-name}}" for another step's input (in the same workflow; read caveat #1)
@@ -62,13 +58,11 @@ class CreateConversationBlockDto(UniversalBaseModel):
- "{{global.your-property-name}}" for the global context
This can be as simple or as complex as you want it to be.
-
- "say hello and ask the user about their day!"
- "collect the user's first and last name"
- "user is {{input.firstName}} {{input.lastName}}. their age is {{input.age}}. ask them about their salary and if they might be interested in buying a house. we offer {{input.offer}}"
Caveats:
-
1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.output/input.propertyName}} will reference the latest usage of the step.
2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.output/input.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow with steps.
"""
diff --git a/src/vapi/types/create_custom_knowledge_base_dto.py b/src/vapi/types/create_custom_knowledge_base_dto.py
new file mode 100644
index 0000000..11e9963
--- /dev/null
+++ b/src/vapi/types/create_custom_knowledge_base_dto.py
@@ -0,0 +1,63 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+from .server import Server
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class CreateCustomKnowledgeBaseDto(UniversalBaseModel):
+ provider: typing.Literal["custom-knowledge-base"] = "custom-knowledge-base"
+ server: Server = pydantic.Field()
+ """
+ /**
+ This is where the knowledge base request will be sent.
+
+ Request Example:
+
+ POST https://{server.url}
+ Content-Type: application/json
+
+ {
+ "messsage": {
+ "type": "knowledge-base-request",
+ "messages": [
+ {
+ "role": "user",
+ "content": "Why is ocean blue?"
+ }
+ ],
+ ...other metadata about the call...
+ }
+ }
+
+ Response Expected:
+ ```
+ {
+ "message": {
+ "role": "assistant",
+ "content": "The ocean is blue because water absorbs everything but blue.",
+ }, // YOU CAN RETURN THE EXACT RESPONSE TO SPEAK
+ "documents": [
+ {
+ "content": "The ocean is blue primarily because water absorbs colors in the red part of the light spectrum and scatters the blue light, making it more visible to our eyes.",
+ "similarity": 1
+ },
+ {
+ "content": "Blue light is scattered more by the water molecules than other colors, enhancing the blue appearance of the ocean.",
+ "similarity": .5
+ }
+ ] // OR, YOU CAN RETURN AN ARRAY OF DOCUMENTS THAT WILL BE SENT TO THE MODEL
+ }
+ ```
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/create_custom_llm_credential_dto.py b/src/vapi/types/create_custom_llm_credential_dto.py
index ad87dd7..04a21a4 100644
--- a/src/vapi/types/create_custom_llm_credential_dto.py
+++ b/src/vapi/types/create_custom_llm_credential_dto.py
@@ -5,6 +5,7 @@
import typing_extensions
from ..core.serialization import FieldMetadata
import pydantic
+from .o_auth_2_authentication_plan import OAuth2AuthenticationPlan
from ..core.pydantic_utilities import IS_PYDANTIC_V2
@@ -15,6 +16,18 @@ class CreateCustomLlmCredentialDto(UniversalBaseModel):
This is not returned in the API.
"""
+ authentication_plan: typing_extensions.Annotated[
+ typing.Optional[OAuth2AuthenticationPlan], FieldMetadata(alias="authenticationPlan")
+ ] = pydantic.Field(default=None)
+ """
+ This is the authentication plan. Currently supports OAuth2 RFC 6749. To use Bearer authentication, use apiKey
+ """
+
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/create_customer_dto.py b/src/vapi/types/create_customer_dto.py
index e0481e4..1e92daf 100644
--- a/src/vapi/types/create_customer_dto.py
+++ b/src/vapi/types/create_customer_dto.py
@@ -16,7 +16,6 @@ class CreateCustomerDto(UniversalBaseModel):
This is the flag to toggle the E164 check for the `number` field. This is an advanced property which should be used if you know your use case requires it.
Use cases:
-
- `false`: To allow non-E164 numbers like `+001234567890`, `1234`, or `abc`. This is useful for dialing out to non-E164 numbers on your SIP trunks.
- `true` (default): To allow only E164 numbers like `+14155551234`. This is standard for PSTN calls.
diff --git a/src/vapi/types/create_deep_infra_credential_dto.py b/src/vapi/types/create_deep_infra_credential_dto.py
index 96a3da0..d92e4f1 100644
--- a/src/vapi/types/create_deep_infra_credential_dto.py
+++ b/src/vapi/types/create_deep_infra_credential_dto.py
@@ -15,6 +15,11 @@ class CreateDeepInfraCredentialDto(UniversalBaseModel):
This is not returned in the API.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/create_deepgram_credential_dto.py b/src/vapi/types/create_deepgram_credential_dto.py
index 884c0d0..783fc25 100644
--- a/src/vapi/types/create_deepgram_credential_dto.py
+++ b/src/vapi/types/create_deepgram_credential_dto.py
@@ -22,6 +22,11 @@ class CreateDeepgramCredentialDto(UniversalBaseModel):
This can be used to point to an onprem Deepgram instance. Defaults to api.deepgram.com.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/create_eleven_labs_credential_dto.py b/src/vapi/types/create_eleven_labs_credential_dto.py
index 12aeedc..8a8ca07 100644
--- a/src/vapi/types/create_eleven_labs_credential_dto.py
+++ b/src/vapi/types/create_eleven_labs_credential_dto.py
@@ -15,6 +15,11 @@ class CreateElevenLabsCredentialDto(UniversalBaseModel):
This is not returned in the API.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/create_gcp_credential_dto.py b/src/vapi/types/create_gcp_credential_dto.py
index 8869673..21c3711 100644
--- a/src/vapi/types/create_gcp_credential_dto.py
+++ b/src/vapi/types/create_gcp_credential_dto.py
@@ -2,21 +2,16 @@
from ..core.pydantic_utilities import UniversalBaseModel
import typing
-import pydantic
import typing_extensions
from .gcp_key import GcpKey
from ..core.serialization import FieldMetadata
+import pydantic
from .bucket_plan import BucketPlan
from ..core.pydantic_utilities import IS_PYDANTIC_V2
class CreateGcpCredentialDto(UniversalBaseModel):
provider: typing.Literal["gcp"] = "gcp"
- name: typing.Optional[str] = pydantic.Field(default=None)
- """
- This is the name of the GCP credential. This is just for your reference.
- """
-
gcp_key: typing_extensions.Annotated[GcpKey, FieldMetadata(alias="gcpKey")] = pydantic.Field()
"""
This is the GCP key. This is the JSON that can be generated in the Google Cloud Console at https://console.cloud.google.com/iam-admin/serviceaccounts/details//keys.
@@ -31,6 +26,11 @@ class CreateGcpCredentialDto(UniversalBaseModel):
This is the bucket plan that can be provided to store call artifacts in GCP.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/create_gladia_credential_dto.py b/src/vapi/types/create_gladia_credential_dto.py
index 798377f..53c0220 100644
--- a/src/vapi/types/create_gladia_credential_dto.py
+++ b/src/vapi/types/create_gladia_credential_dto.py
@@ -15,6 +15,11 @@ class CreateGladiaCredentialDto(UniversalBaseModel):
This is not returned in the API.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/create_go_high_level_credential_dto.py b/src/vapi/types/create_go_high_level_credential_dto.py
index 2b3a7c7..60a539d 100644
--- a/src/vapi/types/create_go_high_level_credential_dto.py
+++ b/src/vapi/types/create_go_high_level_credential_dto.py
@@ -15,6 +15,11 @@ class CreateGoHighLevelCredentialDto(UniversalBaseModel):
This is not returned in the API.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/create_google_credential_dto.py b/src/vapi/types/create_google_credential_dto.py
new file mode 100644
index 0000000..ec61e3c
--- /dev/null
+++ b/src/vapi/types/create_google_credential_dto.py
@@ -0,0 +1,34 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import pydantic
+import typing_extensions
+from ..core.serialization import FieldMetadata
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class CreateGoogleCredentialDto(UniversalBaseModel):
+ provider: typing.Literal["google"] = pydantic.Field(default="google")
+ """
+ This is the key for Gemini in Google AI Studio. Get it from here: https://aistudio.google.com/app/apikey
+ """
+
+ api_key: typing_extensions.Annotated[str, FieldMetadata(alias="apiKey")] = pydantic.Field()
+ """
+ This is not returned in the API.
+ """
+
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/create_groq_credential_dto.py b/src/vapi/types/create_groq_credential_dto.py
index 40d67a7..12b8215 100644
--- a/src/vapi/types/create_groq_credential_dto.py
+++ b/src/vapi/types/create_groq_credential_dto.py
@@ -15,6 +15,11 @@ class CreateGroqCredentialDto(UniversalBaseModel):
This is not returned in the API.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/create_inflection_ai_credential_dto.py b/src/vapi/types/create_inflection_ai_credential_dto.py
new file mode 100644
index 0000000..9a67fed
--- /dev/null
+++ b/src/vapi/types/create_inflection_ai_credential_dto.py
@@ -0,0 +1,34 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import pydantic
+import typing_extensions
+from ..core.serialization import FieldMetadata
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class CreateInflectionAiCredentialDto(UniversalBaseModel):
+ provider: typing.Literal["inflection-ai"] = pydantic.Field(default="inflection-ai")
+ """
+ This is the api key for Pi in InflectionAI's console. Get it from here: https://developers.inflection.ai/keys, billing will need to be setup
+ """
+
+ api_key: typing_extensions.Annotated[str, FieldMetadata(alias="apiKey")] = pydantic.Field()
+ """
+ This is not returned in the API.
+ """
+
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/create_langfuse_credential_dto.py b/src/vapi/types/create_langfuse_credential_dto.py
new file mode 100644
index 0000000..4b32a40
--- /dev/null
+++ b/src/vapi/types/create_langfuse_credential_dto.py
@@ -0,0 +1,40 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import typing_extensions
+from ..core.serialization import FieldMetadata
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class CreateLangfuseCredentialDto(UniversalBaseModel):
+ provider: typing.Literal["langfuse"] = "langfuse"
+ public_key: typing_extensions.Annotated[str, FieldMetadata(alias="publicKey")] = pydantic.Field()
+ """
+ The public key for Langfuse project. Eg: pk-lf-...
+ """
+
+ api_key: typing_extensions.Annotated[str, FieldMetadata(alias="apiKey")] = pydantic.Field()
+ """
+ The secret key for Langfuse project. Eg: sk-lf-... .This is not returned in the API.
+ """
+
+ api_url: typing_extensions.Annotated[str, FieldMetadata(alias="apiUrl")] = pydantic.Field()
+ """
+ The host URL for Langfuse project. Eg: https://cloud.langfuse.com
+ """
+
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/create_lmnt_credential_dto.py b/src/vapi/types/create_lmnt_credential_dto.py
index cb3e516..85eabcf 100644
--- a/src/vapi/types/create_lmnt_credential_dto.py
+++ b/src/vapi/types/create_lmnt_credential_dto.py
@@ -15,6 +15,11 @@ class CreateLmntCredentialDto(UniversalBaseModel):
This is not returned in the API.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/create_make_credential_dto.py b/src/vapi/types/create_make_credential_dto.py
index 461f9c8..7ff84bf 100644
--- a/src/vapi/types/create_make_credential_dto.py
+++ b/src/vapi/types/create_make_credential_dto.py
@@ -25,6 +25,11 @@ class CreateMakeCredentialDto(UniversalBaseModel):
This is not returned in the API.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/create_open_ai_credential_dto.py b/src/vapi/types/create_open_ai_credential_dto.py
index 0e19c57..7f49835 100644
--- a/src/vapi/types/create_open_ai_credential_dto.py
+++ b/src/vapi/types/create_open_ai_credential_dto.py
@@ -15,6 +15,11 @@ class CreateOpenAiCredentialDto(UniversalBaseModel):
This is not returned in the API.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/create_open_router_credential_dto.py b/src/vapi/types/create_open_router_credential_dto.py
index 9985829..cd53bf8 100644
--- a/src/vapi/types/create_open_router_credential_dto.py
+++ b/src/vapi/types/create_open_router_credential_dto.py
@@ -15,6 +15,11 @@ class CreateOpenRouterCredentialDto(UniversalBaseModel):
This is not returned in the API.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/create_org_dto.py b/src/vapi/types/create_org_dto.py
index 16f6435..f127f45 100644
--- a/src/vapi/types/create_org_dto.py
+++ b/src/vapi/types/create_org_dto.py
@@ -5,6 +5,7 @@
import typing
from ..core.serialization import FieldMetadata
import pydantic
+from .create_org_dto_channel import CreateOrgDtoChannel
from ..core.pydantic_utilities import IS_PYDANTIC_V2
@@ -18,11 +19,23 @@ class CreateOrgDto(UniversalBaseModel):
This is due to the compliance requirements of HIPAA. Other providers may not meet these requirements.
"""
+ subscription_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="subscriptionId")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the ID of the subscription the org belongs to.
+ """
+
name: typing.Optional[str] = pydantic.Field(default=None)
"""
This is the name of the org. This is just for your own reference.
"""
+ channel: typing.Optional[CreateOrgDtoChannel] = pydantic.Field(default=None)
+ """
+ This is the channel of the org. There is the cluster the API traffic for the org will be directed.
+ """
+
billing_limit: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="billingLimit")] = (
pydantic.Field(default=None)
)
diff --git a/src/vapi/types/create_org_dto_channel.py b/src/vapi/types/create_org_dto_channel.py
new file mode 100644
index 0000000..384f19c
--- /dev/null
+++ b/src/vapi/types/create_org_dto_channel.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+CreateOrgDtoChannel = typing.Union[typing.Literal["default", "weekly"], typing.Any]
diff --git a/src/vapi/types/create_perplexity_ai_credential_dto.py b/src/vapi/types/create_perplexity_ai_credential_dto.py
index b47d72f..1eb0385 100644
--- a/src/vapi/types/create_perplexity_ai_credential_dto.py
+++ b/src/vapi/types/create_perplexity_ai_credential_dto.py
@@ -15,6 +15,11 @@ class CreatePerplexityAiCredentialDto(UniversalBaseModel):
This is not returned in the API.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/create_play_ht_credential_dto.py b/src/vapi/types/create_play_ht_credential_dto.py
index 79b83a6..c8b104e 100644
--- a/src/vapi/types/create_play_ht_credential_dto.py
+++ b/src/vapi/types/create_play_ht_credential_dto.py
@@ -16,6 +16,10 @@ class CreatePlayHtCredentialDto(UniversalBaseModel):
"""
user_id: typing_extensions.Annotated[str, FieldMetadata(alias="userId")]
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
diff --git a/src/vapi/types/create_rime_ai_credential_dto.py b/src/vapi/types/create_rime_ai_credential_dto.py
index ce70aba..00067e9 100644
--- a/src/vapi/types/create_rime_ai_credential_dto.py
+++ b/src/vapi/types/create_rime_ai_credential_dto.py
@@ -15,6 +15,11 @@ class CreateRimeAiCredentialDto(UniversalBaseModel):
This is not returned in the API.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/create_runpod_credential_dto.py b/src/vapi/types/create_runpod_credential_dto.py
index e3cdfed..d791edb 100644
--- a/src/vapi/types/create_runpod_credential_dto.py
+++ b/src/vapi/types/create_runpod_credential_dto.py
@@ -15,6 +15,11 @@ class CreateRunpodCredentialDto(UniversalBaseModel):
This is not returned in the API.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/create_s_3_credential_dto.py b/src/vapi/types/create_s_3_credential_dto.py
index 3e56e58..4f4eefe 100644
--- a/src/vapi/types/create_s_3_credential_dto.py
+++ b/src/vapi/types/create_s_3_credential_dto.py
@@ -41,6 +41,11 @@ class CreateS3CredentialDto(UniversalBaseModel):
The path prefix for the uploaded recording. Ex. "recordings/"
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/create_tavus_credential_dto.py b/src/vapi/types/create_tavus_credential_dto.py
new file mode 100644
index 0000000..93d59cc
--- /dev/null
+++ b/src/vapi/types/create_tavus_credential_dto.py
@@ -0,0 +1,30 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import typing_extensions
+from ..core.serialization import FieldMetadata
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class CreateTavusCredentialDto(UniversalBaseModel):
+ provider: typing.Literal["tavus"] = "tavus"
+ api_key: typing_extensions.Annotated[str, FieldMetadata(alias="apiKey")] = pydantic.Field()
+ """
+ This is not returned in the API.
+ """
+
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/create_text_editor_tool_dto.py b/src/vapi/types/create_text_editor_tool_dto.py
new file mode 100644
index 0000000..b424268
--- /dev/null
+++ b/src/vapi/types/create_text_editor_tool_dto.py
@@ -0,0 +1,73 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing_extensions
+import typing
+from ..core.serialization import FieldMetadata
+import pydantic
+from .create_text_editor_tool_dto_messages_item import CreateTextEditorToolDtoMessagesItem
+from .open_ai_function import OpenAiFunction
+from .server import Server
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class CreateTextEditorToolDto(UniversalBaseModel):
+ async_: typing_extensions.Annotated[typing.Optional[bool], FieldMetadata(alias="async")] = pydantic.Field(
+ default=None
+ )
+ """
+ This determines if the tool is async.
+
+ If async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.
+
+ If sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.
+
+ Defaults to synchronous (`false`).
+ """
+
+ messages: typing.Optional[typing.List[CreateTextEditorToolDtoMessagesItem]] = pydantic.Field(default=None)
+ """
+ These are the messages that will be spoken to the user as the tool is running.
+
+ For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
+ """
+
+ type: typing.Literal["textEditor"] = "textEditor"
+ sub_type: typing_extensions.Annotated[typing.Literal["text_editor_20241022"], FieldMetadata(alias="subType")] = (
+ pydantic.Field(default="text_editor_20241022")
+ )
+ """
+ The sub type of tool.
+ """
+
+ name: typing.Literal["str_replace_editor"] = pydantic.Field(default="str_replace_editor")
+ """
+ The name of the tool, fixed to 'str_replace_editor'
+ """
+
+ function: typing.Optional[OpenAiFunction] = pydantic.Field(default=None)
+ """
+ This is the function definition of the tool.
+
+ For `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.
+
+ An example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument "reason". Then, in `messages` array, you can have many "request-complete" messages. One of these messages will be triggered if the `messages[].conditions` matches the "reason" argument.
+ """
+
+ server: typing.Optional[Server] = pydantic.Field(default=None)
+ """
+ This is the server that will be hit when this tool is requested by the model.
+
+ All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
+
+ This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/create_text_editor_tool_dto_messages_item.py b/src/vapi/types/create_text_editor_tool_dto_messages_item.py
new file mode 100644
index 0000000..acb362b
--- /dev/null
+++ b/src/vapi/types/create_text_editor_tool_dto_messages_item.py
@@ -0,0 +1,11 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+from .tool_message_start import ToolMessageStart
+from .tool_message_complete import ToolMessageComplete
+from .tool_message_failed import ToolMessageFailed
+from .tool_message_delayed import ToolMessageDelayed
+
+CreateTextEditorToolDtoMessagesItem = typing.Union[
+ ToolMessageStart, ToolMessageComplete, ToolMessageFailed, ToolMessageDelayed
+]
diff --git a/src/vapi/types/create_together_ai_credential_dto.py b/src/vapi/types/create_together_ai_credential_dto.py
index 4f4c4c2..54f9f0c 100644
--- a/src/vapi/types/create_together_ai_credential_dto.py
+++ b/src/vapi/types/create_together_ai_credential_dto.py
@@ -15,6 +15,11 @@ class CreateTogetherAiCredentialDto(UniversalBaseModel):
This is not returned in the API.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/create_tool_call_block_dto.py b/src/vapi/types/create_tool_call_block_dto.py
index 36f9913..9bacc81 100644
--- a/src/vapi/types/create_tool_call_block_dto.py
+++ b/src/vapi/types/create_tool_call_block_dto.py
@@ -24,7 +24,6 @@ class CreateToolCallBlockDto(UniversalBaseModel):
This is the input schema for the block. This is the input the block needs to run. It's given to the block as `steps[0].input`
These are accessible as variables:
-
- ({{input.propertyName}}) in context of the block execution (step)
- ({{stepName.input.propertyName}}) in context of the workflow
"""
@@ -36,13 +35,11 @@ class CreateToolCallBlockDto(UniversalBaseModel):
This is the output schema for the block. This is the output the block will return to the workflow (`{{stepName.output}}`).
These are accessible as variables:
-
- ({{output.propertyName}}) in context of the block execution (step)
- ({{stepName.output.propertyName}}) in context of the workflow (read caveat #1)
- ({{blockName.output.propertyName}}) in context of the workflow (read caveat #2)
Caveats:
-
1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.output.propertyName}} will reference the latest usage of the step.
2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.output.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow with steps.
"""
diff --git a/src/vapi/types/create_trieve_knowledge_base_dto.py b/src/vapi/types/create_trieve_knowledge_base_dto.py
new file mode 100644
index 0000000..cee7749
--- /dev/null
+++ b/src/vapi/types/create_trieve_knowledge_base_dto.py
@@ -0,0 +1,52 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import pydantic
+import typing_extensions
+from .trieve_knowledge_base_vector_store_search_plan import TrieveKnowledgeBaseVectorStoreSearchPlan
+from ..core.serialization import FieldMetadata
+from .trieve_knowledge_base_vector_store_create_plan import TrieveKnowledgeBaseVectorStoreCreatePlan
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class CreateTrieveKnowledgeBaseDto(UniversalBaseModel):
+ provider: typing.Literal["trieve"] = "trieve"
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of the knowledge base.
+ """
+
+ vector_store_search_plan: typing_extensions.Annotated[
+ TrieveKnowledgeBaseVectorStoreSearchPlan, FieldMetadata(alias="vectorStoreSearchPlan")
+ ] = pydantic.Field()
+ """
+ This is the plan on how to search the vector store while a call is going on.
+ """
+
+ vector_store_create_plan: typing_extensions.Annotated[
+ typing.Optional[TrieveKnowledgeBaseVectorStoreCreatePlan], FieldMetadata(alias="vectorStoreCreatePlan")
+ ] = pydantic.Field(default=None)
+ """
+ This is the plan if you want us to create a new vector store on your behalf. To use an existing vector store from your account, use `vectoreStoreProviderId`
+ """
+
+ vector_store_provider_id: typing_extensions.Annotated[
+ typing.Optional[str], FieldMetadata(alias="vectorStoreProviderId")
+ ] = pydantic.Field(default=None)
+ """
+ This is an vector store that you already have on your account with the provider. To create a new vector store, use vectorStoreCreatePlan.
+
+ Usage:
+ - To bring your own vector store from Trieve, go to https://trieve.ai
+ - Create a dataset, and use the datasetId here.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/create_twilio_credential_dto.py b/src/vapi/types/create_twilio_credential_dto.py
index 0a11e75..1d71d24 100644
--- a/src/vapi/types/create_twilio_credential_dto.py
+++ b/src/vapi/types/create_twilio_credential_dto.py
@@ -16,6 +16,10 @@ class CreateTwilioCredentialDto(UniversalBaseModel):
"""
account_sid: typing_extensions.Annotated[str, FieldMetadata(alias="accountSid")]
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
diff --git a/src/vapi/types/create_twilio_phone_number_dto.py b/src/vapi/types/create_twilio_phone_number_dto.py
index 3bece8f..da9b476 100644
--- a/src/vapi/types/create_twilio_phone_number_dto.py
+++ b/src/vapi/types/create_twilio_phone_number_dto.py
@@ -15,7 +15,6 @@ class CreateTwilioPhoneNumberDto(UniversalBaseModel):
] = pydantic.Field(default=None)
"""
This is the fallback destination an inbound call will be transferred to if:
-
1. `assistantId` is not set
2. `squadId` is not set
3. and, `assistant-request` message to the `serverUrl` fails
diff --git a/src/vapi/types/create_vapi_phone_number_dto.py b/src/vapi/types/create_vapi_phone_number_dto.py
index 1c2b5bd..0c093c3 100644
--- a/src/vapi/types/create_vapi_phone_number_dto.py
+++ b/src/vapi/types/create_vapi_phone_number_dto.py
@@ -6,6 +6,7 @@
from .create_vapi_phone_number_dto_fallback_destination import CreateVapiPhoneNumberDtoFallbackDestination
from ..core.serialization import FieldMetadata
import pydantic
+from .sip_authentication import SipAuthentication
from ..core.pydantic_utilities import IS_PYDANTIC_V2
@@ -15,7 +16,6 @@ class CreateVapiPhoneNumberDto(UniversalBaseModel):
] = pydantic.Field(default=None)
"""
This is the fallback destination an inbound call will be transferred to if:
-
1. `assistantId` is not set
2. `squadId` is not set
3. and, `assistant-request` message to the `serverUrl` fails
@@ -31,6 +31,13 @@ class CreateVapiPhoneNumberDto(UniversalBaseModel):
This is case-insensitive.
"""
+ authentication: typing.Optional[SipAuthentication] = pydantic.Field(default=None)
+ """
+ This enables authentication for incoming SIP INVITE requests to the `sipUri`.
+
+ If not set, any username/password to the 401 challenge of the SIP INVITE will be accepted.
+ """
+
name: typing.Optional[str] = pydantic.Field(default=None)
"""
This is the name of the phone number. This is just for your own reference.
diff --git a/src/vapi/types/create_vonage_credential_dto.py b/src/vapi/types/create_vonage_credential_dto.py
index ad1e492..3318bb3 100644
--- a/src/vapi/types/create_vonage_credential_dto.py
+++ b/src/vapi/types/create_vonage_credential_dto.py
@@ -16,6 +16,10 @@ class CreateVonageCredentialDto(UniversalBaseModel):
"""
api_key: typing_extensions.Annotated[str, FieldMetadata(alias="apiKey")]
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
diff --git a/src/vapi/types/create_vonage_phone_number_dto.py b/src/vapi/types/create_vonage_phone_number_dto.py
index 2936e3a..89ad3a4 100644
--- a/src/vapi/types/create_vonage_phone_number_dto.py
+++ b/src/vapi/types/create_vonage_phone_number_dto.py
@@ -15,7 +15,6 @@ class CreateVonagePhoneNumberDto(UniversalBaseModel):
] = pydantic.Field(default=None)
"""
This is the fallback destination an inbound call will be transferred to if:
-
1. `assistantId` is not set
2. `squadId` is not set
3. and, `assistant-request` message to the `serverUrl` fails
diff --git a/src/vapi/types/create_webhook_credential_dto.py b/src/vapi/types/create_webhook_credential_dto.py
new file mode 100644
index 0000000..33c96a6
--- /dev/null
+++ b/src/vapi/types/create_webhook_credential_dto.py
@@ -0,0 +1,33 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import typing_extensions
+from .o_auth_2_authentication_plan import OAuth2AuthenticationPlan
+from ..core.serialization import FieldMetadata
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class CreateWebhookCredentialDto(UniversalBaseModel):
+ provider: typing.Literal["webhook"] = "webhook"
+ authentication_plan: typing_extensions.Annotated[
+ OAuth2AuthenticationPlan, FieldMetadata(alias="authenticationPlan")
+ ] = pydantic.Field()
+ """
+ This is the authentication plan. Currently supports OAuth2 RFC 6749.
+ """
+
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/create_workflow_block_dto.py b/src/vapi/types/create_workflow_block_dto.py
index 670aa23..bd2ff5a 100644
--- a/src/vapi/types/create_workflow_block_dto.py
+++ b/src/vapi/types/create_workflow_block_dto.py
@@ -25,7 +25,6 @@ class CreateWorkflowBlockDto(UniversalBaseModel):
This is the input schema for the block. This is the input the block needs to run. It's given to the block as `steps[0].input`
These are accessible as variables:
-
- ({{input.propertyName}}) in context of the block execution (step)
- ({{stepName.input.propertyName}}) in context of the workflow
"""
@@ -37,13 +36,11 @@ class CreateWorkflowBlockDto(UniversalBaseModel):
This is the output schema for the block. This is the output the block will return to the workflow (`{{stepName.output}}`).
These are accessible as variables:
-
- ({{output.propertyName}}) in context of the block execution (step)
- ({{stepName.output.propertyName}}) in context of the workflow (read caveat #1)
- ({{blockName.output.propertyName}}) in context of the workflow (read caveat #2)
Caveats:
-
1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.output.propertyName}} will reference the latest usage of the step.
2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.output.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow with steps.
"""
diff --git a/src/vapi/types/create_x_ai_credential_dto.py b/src/vapi/types/create_x_ai_credential_dto.py
new file mode 100644
index 0000000..2324c12
--- /dev/null
+++ b/src/vapi/types/create_x_ai_credential_dto.py
@@ -0,0 +1,34 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import pydantic
+import typing_extensions
+from ..core.serialization import FieldMetadata
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class CreateXAiCredentialDto(UniversalBaseModel):
+ provider: typing.Literal["xai"] = pydantic.Field(default="xai")
+ """
+ This is the api key for Grok in XAi's console. Get it from here: https://console.x.ai
+ """
+
+ api_key: typing_extensions.Annotated[str, FieldMetadata(alias="apiKey")] = pydantic.Field()
+ """
+ This is not returned in the API.
+ """
+
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/credits_buy_dto.py b/src/vapi/types/credits_buy_dto.py
new file mode 100644
index 0000000..92a8aa5
--- /dev/null
+++ b/src/vapi/types/credits_buy_dto.py
@@ -0,0 +1,22 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+import typing
+
+
+class CreditsBuyDto(UniversalBaseModel):
+ credits: float = pydantic.Field()
+ """
+ This is the number of credits to add to the subscription.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/custom_knowledge_base.py b/src/vapi/types/custom_knowledge_base.py
new file mode 100644
index 0000000..a430daf
--- /dev/null
+++ b/src/vapi/types/custom_knowledge_base.py
@@ -0,0 +1,75 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+from .server import Server
+import pydantic
+import typing_extensions
+from ..core.serialization import FieldMetadata
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class CustomKnowledgeBase(UniversalBaseModel):
+ provider: typing.Literal["custom-knowledge-base"] = "custom-knowledge-base"
+ server: Server = pydantic.Field()
+ """
+ /**
+ This is where the knowledge base request will be sent.
+
+ Request Example:
+
+ POST https://{server.url}
+ Content-Type: application/json
+
+ {
+ "messsage": {
+ "type": "knowledge-base-request",
+ "messages": [
+ {
+ "role": "user",
+ "content": "Why is ocean blue?"
+ }
+ ],
+ ...other metadata about the call...
+ }
+ }
+
+ Response Expected:
+ ```
+ {
+ "message": {
+ "role": "assistant",
+ "content": "The ocean is blue because water absorbs everything but blue.",
+ }, // YOU CAN RETURN THE EXACT RESPONSE TO SPEAK
+ "documents": [
+ {
+ "content": "The ocean is blue primarily because water absorbs colors in the red part of the light spectrum and scatters the blue light, making it more visible to our eyes.",
+ "similarity": 1
+ },
+ {
+ "content": "Blue light is scattered more by the water molecules than other colors, enhancing the blue appearance of the ocean.",
+ "similarity": .5
+ }
+ ] // OR, YOU CAN RETURN AN ARRAY OF DOCUMENTS THAT WILL BE SENT TO THE MODEL
+ }
+ ```
+ """
+
+ id: str = pydantic.Field()
+ """
+ This is the id of the knowledge base.
+ """
+
+ org_id: typing_extensions.Annotated[str, FieldMetadata(alias="orgId")] = pydantic.Field()
+ """
+ This is the org id of the knowledge base.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/custom_llm_credential.py b/src/vapi/types/custom_llm_credential.py
index 0e9c3a2..83b6092 100644
--- a/src/vapi/types/custom_llm_credential.py
+++ b/src/vapi/types/custom_llm_credential.py
@@ -5,7 +5,9 @@
import typing_extensions
from ..core.serialization import FieldMetadata
import pydantic
+from .o_auth_2_authentication_plan import OAuth2AuthenticationPlan
import datetime as dt
+from .oauth_2_authentication_session import Oauth2AuthenticationSession
from ..core.pydantic_utilities import IS_PYDANTIC_V2
@@ -16,6 +18,13 @@ class CustomLlmCredential(UniversalBaseModel):
This is not returned in the API.
"""
+ authentication_plan: typing_extensions.Annotated[
+ typing.Optional[OAuth2AuthenticationPlan], FieldMetadata(alias="authenticationPlan")
+ ] = pydantic.Field(default=None)
+ """
+ This is the authentication plan. Currently supports OAuth2 RFC 6749. To use Bearer authentication, use apiKey
+ """
+
id: str = pydantic.Field()
"""
This is the unique identifier for the credential.
@@ -36,6 +45,18 @@ class CustomLlmCredential(UniversalBaseModel):
This is the ISO 8601 date-time string of when the assistant was last updated.
"""
+ authentication_session: typing_extensions.Annotated[
+ typing.Optional[Oauth2AuthenticationSession], FieldMetadata(alias="authenticationSession")
+ ] = pydantic.Field(default=None)
+ """
+ This is the authentication session for the credential. Available for credentials that have an authentication plan.
+ """
+
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/custom_llm_model.py b/src/vapi/types/custom_llm_model.py
index d7f98dd..8e1f4b7 100644
--- a/src/vapi/types/custom_llm_model.py
+++ b/src/vapi/types/custom_llm_model.py
@@ -7,8 +7,8 @@
from .custom_llm_model_tools_item import CustomLlmModelToolsItem
import typing_extensions
from ..core.serialization import FieldMetadata
+from .create_custom_knowledge_base_dto import CreateCustomKnowledgeBaseDto
from .custom_llm_model_metadata_send_mode import CustomLlmModelMetadataSendMode
-from .knowledge_base import KnowledgeBase
from ..core.pydantic_utilities import IS_PYDANTIC_V2
@@ -34,6 +34,20 @@ class CustomLlmModel(UniversalBaseModel):
Both `tools` and `toolIds` can be used together.
"""
+ knowledge_base: typing_extensions.Annotated[
+ typing.Optional[CreateCustomKnowledgeBaseDto], FieldMetadata(alias="knowledgeBase")
+ ] = pydantic.Field(default=None)
+ """
+ These are the options for the knowledge base.
+ """
+
+ knowledge_base_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="knowledgeBaseId")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the ID of the knowledge base the model will use.
+ """
+
provider: typing.Literal["custom-llm"] = pydantic.Field(default="custom-llm")
"""
This is the provider that will be used for the model. Any service, including your own server, that is compatible with the OpenAI API can be used.
@@ -69,13 +83,6 @@ class CustomLlmModel(UniversalBaseModel):
This is the temperature that will be used for calls. Default is 0 to leverage caching for lower latency.
"""
- knowledge_base: typing_extensions.Annotated[
- typing.Optional[KnowledgeBase], FieldMetadata(alias="knowledgeBase")
- ] = pydantic.Field(default=None)
- """
- These are the options for the knowledge base.
- """
-
max_tokens: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="maxTokens")] = pydantic.Field(
default=None
)
diff --git a/src/vapi/types/custom_message.py b/src/vapi/types/custom_message.py
new file mode 100644
index 0000000..3bbec85
--- /dev/null
+++ b/src/vapi/types/custom_message.py
@@ -0,0 +1,39 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+from .text_content import TextContent
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class CustomMessage(UniversalBaseModel):
+ contents: typing.Optional[typing.List[TextContent]] = pydantic.Field(default=None)
+ """
+ This is an alternative to the `content` property. It allows to specify variants of the same content, one per language.
+
+ Usage:
+ - If your assistants are multilingual, you can provide content for each language.
+ - If you don't provide content for a language, the first item in the array will be automatically translated to the active language at that moment.
+
+ This will override the `content` property.
+ """
+
+ type: typing.Literal["custom-message"] = pydantic.Field(default="custom-message")
+ """
+ This is a custom message.
+ """
+
+ content: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the content that the assistant will say when this message is triggered.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/custom_transcriber.py b/src/vapi/types/custom_transcriber.py
new file mode 100644
index 0000000..28dc08e
--- /dev/null
+++ b/src/vapi/types/custom_transcriber.py
@@ -0,0 +1,65 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import pydantic
+from .server import Server
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class CustomTranscriber(UniversalBaseModel):
+ provider: typing.Literal["custom-transcriber"] = pydantic.Field(default="custom-transcriber")
+ """
+ This is the transcription provider that will be used. Use `custom-transcriber` for providers that are not natively supported.
+ """
+
+ server: Server = pydantic.Field()
+ """
+ This is where the transcription request will be sent.
+
+ Usage:
+ 1. Vapi will initiate a websocket connection with `server.url`.
+
+ 2. Vapi will send an initial text frame with the sample rate. Format:
+ ```
+ {
+ "type": "start",
+ "encoding": "linear16", // 16-bit raw PCM format
+ "container": "raw",
+ "sampleRate": {{sampleRate}},
+ "channels": 2 // customer is channel 0, assistant is channel 1
+ }
+ ```
+
+ 3. Vapi will send the audio data in 16-bit raw PCM format as binary frames.
+
+ 4. You can read the messages something like this:
+ ```
+ ws.on('message', (data, isBinary) => {
+ if (isBinary) {
+ pcmBuffer = Buffer.concat([pcmBuffer, data]);
+ console.log(`Received PCM data, buffer size: ${pcmBuffer.length}`);
+ } else {
+ console.log('Received message:', JSON.parse(data.toString()));
+ }
+ });
+ ```
+
+ 5. You will respond with transcriptions as you have them. Format:
+ ```
+ {
+ "type": "transcriber-response",
+ "transcription": "Hello, world!",
+ "channel": "customer" | "assistant"
+ }
+ ```
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/custom_voice.py b/src/vapi/types/custom_voice.py
new file mode 100644
index 0000000..2698ef1
--- /dev/null
+++ b/src/vapi/types/custom_voice.py
@@ -0,0 +1,67 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import pydantic
+import typing_extensions
+from .chunk_plan import ChunkPlan
+from ..core.serialization import FieldMetadata
+from .server import Server
+from .fallback_plan import FallbackPlan
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class CustomVoice(UniversalBaseModel):
+ provider: typing.Literal["custom-voice"] = pydantic.Field(default="custom-voice")
+ """
+ This is the voice provider that will be used. Use `custom-voice` for providers that are not natively supported.
+ """
+
+ chunk_plan: typing_extensions.Annotated[typing.Optional[ChunkPlan], FieldMetadata(alias="chunkPlan")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the plan for chunking the model output before it is sent to the voice provider.
+ """
+
+ server: Server = pydantic.Field()
+ """
+ This is where the voice request will be sent.
+
+ Request Example:
+
+ POST https://{server.url}
+ Content-Type: application/json
+
+ {
+ "message": {
+ "type": "voice-request",
+ "text": "Hello, world!",
+ "sampleRate": 24000,
+ ...other metadata about the call...
+ }
+ }
+
+ Response Expected: 1-channel 16-bit raw PCM audio at the sample rate specified in the request. Here is how the response will be piped to the transport:
+ ```
+ response.on('data', (chunk: Buffer) => {
+ outputStream.write(chunk);
+ });
+ ```
+ """
+
+ fallback_plan: typing_extensions.Annotated[typing.Optional[FallbackPlan], FieldMetadata(alias="fallbackPlan")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the plan for voice provider fallbacks in the event that the primary voice provider fails.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/customer_custom_endpointing_rule.py b/src/vapi/types/customer_custom_endpointing_rule.py
new file mode 100644
index 0000000..f807f82
--- /dev/null
+++ b/src/vapi/types/customer_custom_endpointing_rule.py
@@ -0,0 +1,61 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import pydantic
+import typing_extensions
+from .regex_option import RegexOption
+from ..core.serialization import FieldMetadata
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class CustomerCustomEndpointingRule(UniversalBaseModel):
+ type: typing.Literal["customer"] = pydantic.Field(default="customer")
+ """
+ This endpointing rule is based on current customer message as they are speaking.
+
+ Flow:
+ - Assistant speaks
+ - Customer starts speaking
+ - Customer transcription comes in
+ - This rule is evaluated on the current customer transcription
+ - If a match is found based on `regex`, the endpointing timeout is set to `timeoutSeconds`
+
+ Usage:
+ - If you want to wait longer while customer is speaking numbers, you can set a longer timeout.
+ """
+
+ regex: str = pydantic.Field()
+ """
+ This is the regex pattern to match.
+
+ Note:
+ - This works by using the `RegExp.test` method in Node.JS. Eg. `/hello/.test("hello there")` will return `true`.
+
+ Hot tip:
+ - In JavaScript, escape `\` when sending the regex pattern. Eg. `"hello\sthere"` will be sent over the wire as `"hellosthere"`. Send `"hello\\sthere"` instead.
+ - `RegExp.test` does substring matching, so `/cat/.test("I love cats")` will return `true`. To do full string matching, send "^cat$".
+ """
+
+ regex_options: typing_extensions.Annotated[
+ typing.Optional[typing.List[RegexOption]], FieldMetadata(alias="regexOptions")
+ ] = pydantic.Field(default=None)
+ """
+ These are the options for the regex match. Defaults to all disabled.
+
+ @default []
+ """
+
+ timeout_seconds: typing_extensions.Annotated[float, FieldMetadata(alias="timeoutSeconds")] = pydantic.Field()
+ """
+ This is the endpointing timeout in seconds, if the rule is matched.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/deep_infra_credential.py b/src/vapi/types/deep_infra_credential.py
index d4660c0..b574878 100644
--- a/src/vapi/types/deep_infra_credential.py
+++ b/src/vapi/types/deep_infra_credential.py
@@ -36,6 +36,11 @@ class DeepInfraCredential(UniversalBaseModel):
This is the ISO 8601 date-time string of when the assistant was last updated.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/deep_infra_model.py b/src/vapi/types/deep_infra_model.py
index a42efed..f470ad7 100644
--- a/src/vapi/types/deep_infra_model.py
+++ b/src/vapi/types/deep_infra_model.py
@@ -7,7 +7,7 @@
from .deep_infra_model_tools_item import DeepInfraModelToolsItem
import typing_extensions
from ..core.serialization import FieldMetadata
-from .knowledge_base import KnowledgeBase
+from .create_custom_knowledge_base_dto import CreateCustomKnowledgeBaseDto
from ..core.pydantic_utilities import IS_PYDANTIC_V2
@@ -33,6 +33,20 @@ class DeepInfraModel(UniversalBaseModel):
Both `tools` and `toolIds` can be used together.
"""
+ knowledge_base: typing_extensions.Annotated[
+ typing.Optional[CreateCustomKnowledgeBaseDto], FieldMetadata(alias="knowledgeBase")
+ ] = pydantic.Field(default=None)
+ """
+ These are the options for the knowledge base.
+ """
+
+ knowledge_base_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="knowledgeBaseId")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the ID of the knowledge base the model will use.
+ """
+
provider: typing.Literal["deepinfra"] = "deepinfra"
model: str = pydantic.Field()
"""
@@ -44,13 +58,6 @@ class DeepInfraModel(UniversalBaseModel):
This is the temperature that will be used for calls. Default is 0 to leverage caching for lower latency.
"""
- knowledge_base: typing_extensions.Annotated[
- typing.Optional[KnowledgeBase], FieldMetadata(alias="knowledgeBase")
- ] = pydantic.Field(default=None)
- """
- These are the options for the knowledge base.
- """
-
max_tokens: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="maxTokens")] = pydantic.Field(
default=None
)
diff --git a/src/vapi/types/deepgram_credential.py b/src/vapi/types/deepgram_credential.py
index d2d1809..ab28555 100644
--- a/src/vapi/types/deepgram_credential.py
+++ b/src/vapi/types/deepgram_credential.py
@@ -36,6 +36,11 @@ class DeepgramCredential(UniversalBaseModel):
This is the ISO 8601 date-time string of when the assistant was last updated.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
api_url: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="apiUrl")] = pydantic.Field(
default=None
)
diff --git a/src/vapi/types/deepgram_transcriber.py b/src/vapi/types/deepgram_transcriber.py
index 7409f78..06f03fc 100644
--- a/src/vapi/types/deepgram_transcriber.py
+++ b/src/vapi/types/deepgram_transcriber.py
@@ -33,11 +33,41 @@ class DeepgramTranscriber(UniversalBaseModel):
This will be use smart format option provided by Deepgram. It's default disabled because it can sometimes format numbers as times but it's getting better.
"""
- language_detection_enabled: typing_extensions.Annotated[
- typing.Optional[bool], FieldMetadata(alias="languageDetectionEnabled")
+ code_switching_enabled: typing_extensions.Annotated[
+ typing.Optional[bool], FieldMetadata(alias="codeSwitchingEnabled")
] = pydantic.Field(default=None)
"""
- This enables or disables language detection. If true, swaps transcribers to detected language automatically. Defaults to false.
+ This automatically switches the transcriber's language when the customer's language changes. Defaults to false.
+
+ Usage:
+ - If your customers switch languages mid-call, you can set this to true.
+
+ Note:
+ - To detect language changes, Vapi uses a custom trained model. Languages supported (X = limited support):
+ 1. Arabic
+ 2. Bengali
+ 3. Cantonese
+ 4. Chinese
+ 5. Chinese Simplified (X)
+ 6. Chinese Traditional (X)
+ 7. English
+ 8. Farsi (X)
+ 9. French
+ 10. German
+ 11. Haitian Creole (X)
+ 12. Hindi
+ 13. Italian
+ 14. Japanese
+ 15. Korean
+ 16. Portuguese
+ 17. Russian
+ 18. Spanish
+ 19. Thai
+ 20. Urdu
+ 21. Vietnamese
+ - To receive `language-change-detected` webhook events, add it to `assistant.serverMessages`.
+
+ @default false
"""
keywords: typing.Optional[typing.List[str]] = pydantic.Field(default=None)
@@ -50,7 +80,6 @@ class DeepgramTranscriber(UniversalBaseModel):
This is the timeout after which Deepgram will send transcription on user silence. You can read in-depth documentation here: https://developers.deepgram.com/docs/endpointing.
Here are the most important bits:
-
- Defaults to 10. This is recommended for most use cases to optimize for latency.
- 10 can cause some missing transcriptions since because of the shorter context. This mostly happens for one-word utterances. For those uses cases, it's recommended to try 300. It will add a bit of latency but the quality and reliability of the experience will be better.
- If neither 10 nor 300 work, contact support@vapi.ai and we'll find another solution.
diff --git a/src/vapi/types/deepgram_voice.py b/src/vapi/types/deepgram_voice.py
index f3becc5..f5f3cf2 100644
--- a/src/vapi/types/deepgram_voice.py
+++ b/src/vapi/types/deepgram_voice.py
@@ -1,25 +1,17 @@
# This file was auto-generated by Fern from our API Definition.
from ..core.pydantic_utilities import UniversalBaseModel
-import typing_extensions
import typing
-from ..core.serialization import FieldMetadata
import pydantic
+import typing_extensions
from .deepgram_voice_id import DeepgramVoiceId
+from ..core.serialization import FieldMetadata
from .chunk_plan import ChunkPlan
+from .fallback_plan import FallbackPlan
from ..core.pydantic_utilities import IS_PYDANTIC_V2
class DeepgramVoice(UniversalBaseModel):
- filler_injection_enabled: typing_extensions.Annotated[
- typing.Optional[bool], FieldMetadata(alias="fillerInjectionEnabled")
- ] = pydantic.Field(default=None)
- """
- This determines whether fillers are injected into the model output before inputting it into the voice provider.
-
- Default `false` because you can achieve better results with prompting the model.
- """
-
provider: typing.Literal["deepgram"] = pydantic.Field(default="deepgram")
"""
This is the voice provider that will be used.
@@ -37,6 +29,13 @@ class DeepgramVoice(UniversalBaseModel):
This is the plan for chunking the model output before it is sent to the voice provider.
"""
+ fallback_plan: typing_extensions.Annotated[typing.Optional[FallbackPlan], FieldMetadata(alias="fallbackPlan")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the plan for voice provider fallbacks in the event that the primary voice provider fails.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/eleven_labs_credential.py b/src/vapi/types/eleven_labs_credential.py
index 5a4f707..e354c6c 100644
--- a/src/vapi/types/eleven_labs_credential.py
+++ b/src/vapi/types/eleven_labs_credential.py
@@ -36,6 +36,11 @@ class ElevenLabsCredential(UniversalBaseModel):
This is the ISO 8601 date-time string of when the assistant was last updated.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/eleven_labs_voice.py b/src/vapi/types/eleven_labs_voice.py
index 6620031..f172b1e 100644
--- a/src/vapi/types/eleven_labs_voice.py
+++ b/src/vapi/types/eleven_labs_voice.py
@@ -1,26 +1,18 @@
# This file was auto-generated by Fern from our API Definition.
from ..core.pydantic_utilities import UniversalBaseModel
-import typing_extensions
import typing
-from ..core.serialization import FieldMetadata
import pydantic
+import typing_extensions
from .eleven_labs_voice_id import ElevenLabsVoiceId
+from ..core.serialization import FieldMetadata
from .eleven_labs_voice_model import ElevenLabsVoiceModel
from .chunk_plan import ChunkPlan
+from .fallback_plan import FallbackPlan
from ..core.pydantic_utilities import IS_PYDANTIC_V2
class ElevenLabsVoice(UniversalBaseModel):
- filler_injection_enabled: typing_extensions.Annotated[
- typing.Optional[bool], FieldMetadata(alias="fillerInjectionEnabled")
- ] = pydantic.Field(default=None)
- """
- This determines whether fillers are injected into the model output before inputting it into the voice provider.
-
- Default `false` because you can achieve better results with prompting the model.
- """
-
provider: typing.Literal["11labs"] = pydantic.Field(default="11labs")
"""
This is the voice provider that will be used.
@@ -76,16 +68,23 @@ class ElevenLabsVoice(UniversalBaseModel):
This is the model that will be used. Defaults to 'eleven_turbo_v2' if not specified.
"""
+ chunk_plan: typing_extensions.Annotated[typing.Optional[ChunkPlan], FieldMetadata(alias="chunkPlan")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the plan for chunking the model output before it is sent to the voice provider.
+ """
+
language: typing.Optional[str] = pydantic.Field(default=None)
"""
This is the language (ISO 639-1) that is enforced for the model. Currently only Turbo v2.5 supports language enforcement. For other models, an error will be returned if language code is provided.
"""
- chunk_plan: typing_extensions.Annotated[typing.Optional[ChunkPlan], FieldMetadata(alias="chunkPlan")] = (
+ fallback_plan: typing_extensions.Annotated[typing.Optional[FallbackPlan], FieldMetadata(alias="fallbackPlan")] = (
pydantic.Field(default=None)
)
"""
- This is the plan for chunking the model output before it is sent to the voice provider.
+ This is the plan for voice provider fallbacks in the event that the primary voice provider fails.
"""
if IS_PYDANTIC_V2:
diff --git a/src/vapi/types/exact_replacement.py b/src/vapi/types/exact_replacement.py
index 54f5d40..6190c9f 100644
--- a/src/vapi/types/exact_replacement.py
+++ b/src/vapi/types/exact_replacement.py
@@ -12,7 +12,6 @@ class ExactReplacement(UniversalBaseModel):
This is the exact replacement type. You can use this to replace a specific word or phrase with a different word or phrase.
Usage:
-
- Replace "hello" with "hi": { type: 'exact', key: 'hello', value: 'hi' }
- Replace "good morning" with "good day": { type: 'exact', key: 'good morning', value: 'good day' }
- Replace a specific name: { type: 'exact', key: 'John Doe', value: 'Jane Smith' }
diff --git a/src/vapi/types/fallback_azure_voice.py b/src/vapi/types/fallback_azure_voice.py
new file mode 100644
index 0000000..2d76041
--- /dev/null
+++ b/src/vapi/types/fallback_azure_voice.py
@@ -0,0 +1,47 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import pydantic
+import typing_extensions
+from .fallback_azure_voice_id import FallbackAzureVoiceId
+from ..core.serialization import FieldMetadata
+from .chunk_plan import ChunkPlan
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class FallbackAzureVoice(UniversalBaseModel):
+ provider: typing.Literal["azure"] = pydantic.Field(default="azure")
+ """
+ This is the voice provider that will be used.
+ """
+
+ voice_id: typing_extensions.Annotated[FallbackAzureVoiceId, FieldMetadata(alias="voiceId")] = pydantic.Field()
+ """
+ This is the provider-specific ID that will be used.
+ """
+
+ speed: typing.Optional[float] = pydantic.Field(default=None)
+ """
+ This is the speed multiplier that will be used.
+ """
+
+ chunk_plan: typing_extensions.Annotated[typing.Optional[ChunkPlan], FieldMetadata(alias="chunkPlan")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the plan for chunking the model output before it is sent to the voice provider.
+ """
+
+ one_of: typing_extensions.Annotated[typing.Optional[typing.Optional[typing.Any]], FieldMetadata(alias="oneOf")] = (
+ None
+ )
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/fallback_azure_voice_id.py b/src/vapi/types/fallback_azure_voice_id.py
new file mode 100644
index 0000000..e91b80f
--- /dev/null
+++ b/src/vapi/types/fallback_azure_voice_id.py
@@ -0,0 +1,6 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+from .fallback_azure_voice_voice_id import FallbackAzureVoiceVoiceId
+
+FallbackAzureVoiceId = typing.Union[FallbackAzureVoiceVoiceId, str]
diff --git a/src/vapi/types/fallback_azure_voice_voice_id.py b/src/vapi/types/fallback_azure_voice_voice_id.py
new file mode 100644
index 0000000..9b7164f
--- /dev/null
+++ b/src/vapi/types/fallback_azure_voice_voice_id.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+FallbackAzureVoiceVoiceId = typing.Union[typing.Literal["andrew", "brian", "emma"], typing.Any]
diff --git a/src/vapi/types/fallback_cartesia_voice.py b/src/vapi/types/fallback_cartesia_voice.py
new file mode 100644
index 0000000..afce078
--- /dev/null
+++ b/src/vapi/types/fallback_cartesia_voice.py
@@ -0,0 +1,49 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import pydantic
+from .fallback_cartesia_voice_model import FallbackCartesiaVoiceModel
+from .fallback_cartesia_voice_language import FallbackCartesiaVoiceLanguage
+import typing_extensions
+from ..core.serialization import FieldMetadata
+from .chunk_plan import ChunkPlan
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class FallbackCartesiaVoice(UniversalBaseModel):
+ provider: typing.Literal["cartesia"] = pydantic.Field(default="cartesia")
+ """
+ This is the voice provider that will be used.
+ """
+
+ model: typing.Optional[FallbackCartesiaVoiceModel] = pydantic.Field(default=None)
+ """
+ This is the model that will be used. This is optional and will default to the correct model for the voiceId.
+ """
+
+ language: typing.Optional[FallbackCartesiaVoiceLanguage] = pydantic.Field(default=None)
+ """
+ This is the language that will be used. This is optional and will default to the correct language for the voiceId.
+ """
+
+ voice_id: typing_extensions.Annotated[str, FieldMetadata(alias="voiceId")] = pydantic.Field()
+ """
+ This is the provider-specific ID that will be used.
+ """
+
+ chunk_plan: typing_extensions.Annotated[typing.Optional[ChunkPlan], FieldMetadata(alias="chunkPlan")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the plan for chunking the model output before it is sent to the voice provider.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/fallback_cartesia_voice_language.py b/src/vapi/types/fallback_cartesia_voice_language.py
new file mode 100644
index 0000000..1959cb7
--- /dev/null
+++ b/src/vapi/types/fallback_cartesia_voice_language.py
@@ -0,0 +1,7 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+FallbackCartesiaVoiceLanguage = typing.Union[
+ typing.Literal["en", "de", "es", "fr", "ja", "pt", "zh", "hi", "it", "ko", "nl", "pl", "ru", "sv", "tr"], typing.Any
+]
diff --git a/src/vapi/types/fallback_cartesia_voice_model.py b/src/vapi/types/fallback_cartesia_voice_model.py
new file mode 100644
index 0000000..dd84285
--- /dev/null
+++ b/src/vapi/types/fallback_cartesia_voice_model.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+FallbackCartesiaVoiceModel = typing.Union[typing.Literal["sonic-english", "sonic-multilingual"], typing.Any]
diff --git a/src/vapi/types/fallback_custom_voice.py b/src/vapi/types/fallback_custom_voice.py
new file mode 100644
index 0000000..cfdc0b0
--- /dev/null
+++ b/src/vapi/types/fallback_custom_voice.py
@@ -0,0 +1,59 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import pydantic
+from .server import Server
+import typing_extensions
+from .chunk_plan import ChunkPlan
+from ..core.serialization import FieldMetadata
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class FallbackCustomVoice(UniversalBaseModel):
+ provider: typing.Literal["custom-voice"] = pydantic.Field(default="custom-voice")
+ """
+ This is the voice provider that will be used. Use `custom-voice` for providers that are not natively supported.
+ """
+
+ server: Server = pydantic.Field()
+ """
+ This is where the voice request will be sent.
+
+ Request Example:
+
+ POST https://{server.url}
+ Content-Type: application/json
+
+ {
+ "message": {
+ "type": "voice-request",
+ "text": "Hello, world!",
+ "sampleRate": 24000,
+ ...other metadata about the call...
+ }
+ }
+
+ Response Expected: 1-channel 16-bit raw PCM audio at the sample rate specified in the request. Here is how the response will be piped to the transport:
+ ```
+ response.on('data', (chunk: Buffer) => {
+ outputStream.write(chunk);
+ });
+ ```
+ """
+
+ chunk_plan: typing_extensions.Annotated[typing.Optional[ChunkPlan], FieldMetadata(alias="chunkPlan")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the plan for chunking the model output before it is sent to the voice provider.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/fallback_deepgram_voice.py b/src/vapi/types/fallback_deepgram_voice.py
new file mode 100644
index 0000000..90eaf1c
--- /dev/null
+++ b/src/vapi/types/fallback_deepgram_voice.py
@@ -0,0 +1,38 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import pydantic
+import typing_extensions
+from .fallback_deepgram_voice_id import FallbackDeepgramVoiceId
+from ..core.serialization import FieldMetadata
+from .chunk_plan import ChunkPlan
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class FallbackDeepgramVoice(UniversalBaseModel):
+ provider: typing.Literal["deepgram"] = pydantic.Field(default="deepgram")
+ """
+ This is the voice provider that will be used.
+ """
+
+ voice_id: typing_extensions.Annotated[FallbackDeepgramVoiceId, FieldMetadata(alias="voiceId")] = pydantic.Field()
+ """
+ This is the provider-specific ID that will be used.
+ """
+
+ chunk_plan: typing_extensions.Annotated[typing.Optional[ChunkPlan], FieldMetadata(alias="chunkPlan")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the plan for chunking the model output before it is sent to the voice provider.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/fallback_deepgram_voice_id.py b/src/vapi/types/fallback_deepgram_voice_id.py
new file mode 100644
index 0000000..9527615
--- /dev/null
+++ b/src/vapi/types/fallback_deepgram_voice_id.py
@@ -0,0 +1,6 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+from .fallback_deepgram_voice_id_enum import FallbackDeepgramVoiceIdEnum
+
+FallbackDeepgramVoiceId = typing.Union[FallbackDeepgramVoiceIdEnum, str]
diff --git a/src/vapi/types/fallback_deepgram_voice_id_enum.py b/src/vapi/types/fallback_deepgram_voice_id_enum.py
new file mode 100644
index 0000000..824a83b
--- /dev/null
+++ b/src/vapi/types/fallback_deepgram_voice_id_enum.py
@@ -0,0 +1,10 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+FallbackDeepgramVoiceIdEnum = typing.Union[
+ typing.Literal[
+ "asteria", "luna", "stella", "athena", "hera", "orion", "arcas", "perseus", "angus", "orpheus", "helios", "zeus"
+ ],
+ typing.Any,
+]
diff --git a/src/vapi/types/fallback_eleven_labs_voice.py b/src/vapi/types/fallback_eleven_labs_voice.py
new file mode 100644
index 0000000..04fcb33
--- /dev/null
+++ b/src/vapi/types/fallback_eleven_labs_voice.py
@@ -0,0 +1,89 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import pydantic
+import typing_extensions
+from .fallback_eleven_labs_voice_id import FallbackElevenLabsVoiceId
+from ..core.serialization import FieldMetadata
+from .fallback_eleven_labs_voice_model import FallbackElevenLabsVoiceModel
+from .chunk_plan import ChunkPlan
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class FallbackElevenLabsVoice(UniversalBaseModel):
+ provider: typing.Literal["11labs"] = pydantic.Field(default="11labs")
+ """
+ This is the voice provider that will be used.
+ """
+
+ voice_id: typing_extensions.Annotated[FallbackElevenLabsVoiceId, FieldMetadata(alias="voiceId")] = pydantic.Field()
+ """
+ This is the provider-specific ID that will be used. Ensure the Voice is present in your 11Labs Voice Library.
+ """
+
+ stability: typing.Optional[float] = pydantic.Field(default=None)
+ """
+ Defines the stability for voice settings.
+ """
+
+ similarity_boost: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="similarityBoost")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ Defines the similarity boost for voice settings.
+ """
+
+ style: typing.Optional[float] = pydantic.Field(default=None)
+ """
+ Defines the style for voice settings.
+ """
+
+ use_speaker_boost: typing_extensions.Annotated[typing.Optional[bool], FieldMetadata(alias="useSpeakerBoost")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ Defines the use speaker boost for voice settings.
+ """
+
+ optimize_streaming_latency: typing_extensions.Annotated[
+ typing.Optional[float], FieldMetadata(alias="optimizeStreamingLatency")
+ ] = pydantic.Field(default=None)
+ """
+ Defines the optimize streaming latency for voice settings. Defaults to 3.
+ """
+
+ enable_ssml_parsing: typing_extensions.Annotated[
+ typing.Optional[bool], FieldMetadata(alias="enableSsmlParsing")
+ ] = pydantic.Field(default=None)
+ """
+ This enables the use of https://elevenlabs.io/docs/speech-synthesis/prompting#pronunciation. Defaults to false to save latency.
+
+ @default false
+ """
+
+ model: typing.Optional[FallbackElevenLabsVoiceModel] = pydantic.Field(default=None)
+ """
+ This is the model that will be used. Defaults to 'eleven_turbo_v2' if not specified.
+ """
+
+ language: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the language (ISO 639-1) that is enforced for the model. Currently only Turbo v2.5 supports language enforcement. For other models, an error will be returned if language code is provided.
+ """
+
+ chunk_plan: typing_extensions.Annotated[typing.Optional[ChunkPlan], FieldMetadata(alias="chunkPlan")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the plan for chunking the model output before it is sent to the voice provider.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/fallback_eleven_labs_voice_id.py b/src/vapi/types/fallback_eleven_labs_voice_id.py
new file mode 100644
index 0000000..c60f513
--- /dev/null
+++ b/src/vapi/types/fallback_eleven_labs_voice_id.py
@@ -0,0 +1,6 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+from .fallback_eleven_labs_voice_id_enum import FallbackElevenLabsVoiceIdEnum
+
+FallbackElevenLabsVoiceId = typing.Union[FallbackElevenLabsVoiceIdEnum, str]
diff --git a/src/vapi/types/fallback_eleven_labs_voice_id_enum.py b/src/vapi/types/fallback_eleven_labs_voice_id_enum.py
new file mode 100644
index 0000000..6c05698
--- /dev/null
+++ b/src/vapi/types/fallback_eleven_labs_voice_id_enum.py
@@ -0,0 +1,24 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+FallbackElevenLabsVoiceIdEnum = typing.Union[
+ typing.Literal[
+ "burt",
+ "marissa",
+ "andrea",
+ "sarah",
+ "phillip",
+ "steve",
+ "joseph",
+ "myra",
+ "paula",
+ "ryan",
+ "drew",
+ "paul",
+ "mrb",
+ "matilda",
+ "mark",
+ ],
+ typing.Any,
+]
diff --git a/src/vapi/types/fallback_eleven_labs_voice_model.py b/src/vapi/types/fallback_eleven_labs_voice_model.py
new file mode 100644
index 0000000..1f686c3
--- /dev/null
+++ b/src/vapi/types/fallback_eleven_labs_voice_model.py
@@ -0,0 +1,8 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+FallbackElevenLabsVoiceModel = typing.Union[
+ typing.Literal["eleven_multilingual_v2", "eleven_turbo_v2", "eleven_turbo_v2_5", "eleven_monolingual_v1"],
+ typing.Any,
+]
diff --git a/src/vapi/types/fallback_lmnt_voice.py b/src/vapi/types/fallback_lmnt_voice.py
new file mode 100644
index 0000000..b52565b
--- /dev/null
+++ b/src/vapi/types/fallback_lmnt_voice.py
@@ -0,0 +1,43 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import pydantic
+import typing_extensions
+from .fallback_lmnt_voice_id import FallbackLmntVoiceId
+from ..core.serialization import FieldMetadata
+from .chunk_plan import ChunkPlan
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class FallbackLmntVoice(UniversalBaseModel):
+ provider: typing.Literal["lmnt"] = pydantic.Field(default="lmnt")
+ """
+ This is the voice provider that will be used.
+ """
+
+ voice_id: typing_extensions.Annotated[FallbackLmntVoiceId, FieldMetadata(alias="voiceId")] = pydantic.Field()
+ """
+ This is the provider-specific ID that will be used.
+ """
+
+ speed: typing.Optional[float] = pydantic.Field(default=None)
+ """
+ This is the speed multiplier that will be used.
+ """
+
+ chunk_plan: typing_extensions.Annotated[typing.Optional[ChunkPlan], FieldMetadata(alias="chunkPlan")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the plan for chunking the model output before it is sent to the voice provider.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/fallback_lmnt_voice_id.py b/src/vapi/types/fallback_lmnt_voice_id.py
new file mode 100644
index 0000000..1c04ce4
--- /dev/null
+++ b/src/vapi/types/fallback_lmnt_voice_id.py
@@ -0,0 +1,6 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+from .fallback_lmnt_voice_id_enum import FallbackLmntVoiceIdEnum
+
+FallbackLmntVoiceId = typing.Union[FallbackLmntVoiceIdEnum, str]
diff --git a/src/vapi/types/fallback_lmnt_voice_id_enum.py b/src/vapi/types/fallback_lmnt_voice_id_enum.py
new file mode 100644
index 0000000..bdaa000
--- /dev/null
+++ b/src/vapi/types/fallback_lmnt_voice_id_enum.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+FallbackLmntVoiceIdEnum = typing.Union[typing.Literal["lily", "daniel"], typing.Any]
diff --git a/src/vapi/types/fallback_neets_voice.py b/src/vapi/types/fallback_neets_voice.py
new file mode 100644
index 0000000..798a701
--- /dev/null
+++ b/src/vapi/types/fallback_neets_voice.py
@@ -0,0 +1,38 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import pydantic
+import typing_extensions
+from .fallback_neets_voice_id import FallbackNeetsVoiceId
+from ..core.serialization import FieldMetadata
+from .chunk_plan import ChunkPlan
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class FallbackNeetsVoice(UniversalBaseModel):
+ provider: typing.Literal["neets"] = pydantic.Field(default="neets")
+ """
+ This is the voice provider that will be used.
+ """
+
+ voice_id: typing_extensions.Annotated[FallbackNeetsVoiceId, FieldMetadata(alias="voiceId")] = pydantic.Field()
+ """
+ This is the provider-specific ID that will be used.
+ """
+
+ chunk_plan: typing_extensions.Annotated[typing.Optional[ChunkPlan], FieldMetadata(alias="chunkPlan")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the plan for chunking the model output before it is sent to the voice provider.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/fallback_neets_voice_id.py b/src/vapi/types/fallback_neets_voice_id.py
new file mode 100644
index 0000000..bda28ae
--- /dev/null
+++ b/src/vapi/types/fallback_neets_voice_id.py
@@ -0,0 +1,6 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+from .fallback_neets_voice_id_enum import FallbackNeetsVoiceIdEnum
+
+FallbackNeetsVoiceId = typing.Union[FallbackNeetsVoiceIdEnum, str]
diff --git a/src/vapi/types/fallback_neets_voice_id_enum.py b/src/vapi/types/fallback_neets_voice_id_enum.py
new file mode 100644
index 0000000..90bb5b4
--- /dev/null
+++ b/src/vapi/types/fallback_neets_voice_id_enum.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+FallbackNeetsVoiceIdEnum = typing.Union[typing.Literal["vits"], typing.Any]
diff --git a/src/vapi/types/fallback_open_ai_voice.py b/src/vapi/types/fallback_open_ai_voice.py
new file mode 100644
index 0000000..d66873b
--- /dev/null
+++ b/src/vapi/types/fallback_open_ai_voice.py
@@ -0,0 +1,44 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import pydantic
+import typing_extensions
+from .fallback_open_ai_voice_id import FallbackOpenAiVoiceId
+from ..core.serialization import FieldMetadata
+from .chunk_plan import ChunkPlan
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class FallbackOpenAiVoice(UniversalBaseModel):
+ provider: typing.Literal["openai"] = pydantic.Field(default="openai")
+ """
+ This is the voice provider that will be used.
+ """
+
+ voice_id: typing_extensions.Annotated[FallbackOpenAiVoiceId, FieldMetadata(alias="voiceId")] = pydantic.Field()
+ """
+ This is the provider-specific ID that will be used.
+ Please note that ash, ballad, coral, sage, and verse may only be used with the `gpt-4o-realtime-preview-2024-10-01` model.
+ """
+
+ speed: typing.Optional[float] = pydantic.Field(default=None)
+ """
+ This is the speed multiplier that will be used.
+ """
+
+ chunk_plan: typing_extensions.Annotated[typing.Optional[ChunkPlan], FieldMetadata(alias="chunkPlan")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the plan for chunking the model output before it is sent to the voice provider.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/fallback_open_ai_voice_id.py b/src/vapi/types/fallback_open_ai_voice_id.py
new file mode 100644
index 0000000..7a1b2ca
--- /dev/null
+++ b/src/vapi/types/fallback_open_ai_voice_id.py
@@ -0,0 +1,8 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+FallbackOpenAiVoiceId = typing.Union[
+ typing.Literal["alloy", "echo", "fable", "onyx", "nova", "shimmer", "ash", "ballad", "coral", "sage", "verse"],
+ typing.Any,
+]
diff --git a/src/vapi/types/fallback_plan.py b/src/vapi/types/fallback_plan.py
new file mode 100644
index 0000000..e9d8941
--- /dev/null
+++ b/src/vapi/types/fallback_plan.py
@@ -0,0 +1,23 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+from .fallback_plan_voices_item import FallbackPlanVoicesItem
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class FallbackPlan(UniversalBaseModel):
+ voices: typing.List[FallbackPlanVoicesItem] = pydantic.Field()
+ """
+ This is the list of voices to fallback to in the event that the primary voice provider fails.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/fallback_plan_voices_item.py b/src/vapi/types/fallback_plan_voices_item.py
new file mode 100644
index 0000000..0eaaa7b
--- /dev/null
+++ b/src/vapi/types/fallback_plan_voices_item.py
@@ -0,0 +1,28 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+from .fallback_azure_voice import FallbackAzureVoice
+from .fallback_cartesia_voice import FallbackCartesiaVoice
+from .fallback_custom_voice import FallbackCustomVoice
+from .fallback_deepgram_voice import FallbackDeepgramVoice
+from .fallback_eleven_labs_voice import FallbackElevenLabsVoice
+from .fallback_lmnt_voice import FallbackLmntVoice
+from .fallback_neets_voice import FallbackNeetsVoice
+from .fallback_open_ai_voice import FallbackOpenAiVoice
+from .fallback_play_ht_voice import FallbackPlayHtVoice
+from .fallback_rime_ai_voice import FallbackRimeAiVoice
+from .fallback_tavus_voice import FallbackTavusVoice
+
+FallbackPlanVoicesItem = typing.Union[
+ FallbackAzureVoice,
+ FallbackCartesiaVoice,
+ FallbackCustomVoice,
+ FallbackDeepgramVoice,
+ FallbackElevenLabsVoice,
+ FallbackLmntVoice,
+ FallbackNeetsVoice,
+ FallbackOpenAiVoice,
+ FallbackPlayHtVoice,
+ FallbackRimeAiVoice,
+ FallbackTavusVoice,
+]
diff --git a/src/vapi/types/fallback_play_ht_voice.py b/src/vapi/types/fallback_play_ht_voice.py
new file mode 100644
index 0000000..26c015e
--- /dev/null
+++ b/src/vapi/types/fallback_play_ht_voice.py
@@ -0,0 +1,87 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import pydantic
+import typing_extensions
+from .fallback_play_ht_voice_id import FallbackPlayHtVoiceId
+from ..core.serialization import FieldMetadata
+from .fallback_play_ht_voice_emotion import FallbackPlayHtVoiceEmotion
+from .fallback_play_ht_voice_model import FallbackPlayHtVoiceModel
+from .fallback_play_ht_voice_language import FallbackPlayHtVoiceLanguage
+from .chunk_plan import ChunkPlan
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class FallbackPlayHtVoice(UniversalBaseModel):
+ provider: typing.Literal["playht"] = pydantic.Field(default="playht")
+ """
+ This is the voice provider that will be used.
+ """
+
+ voice_id: typing_extensions.Annotated[FallbackPlayHtVoiceId, FieldMetadata(alias="voiceId")] = pydantic.Field()
+ """
+ This is the provider-specific ID that will be used.
+ """
+
+ speed: typing.Optional[float] = pydantic.Field(default=None)
+ """
+ This is the speed multiplier that will be used.
+ """
+
+ temperature: typing.Optional[float] = pydantic.Field(default=None)
+ """
+ A floating point number between 0, exclusive, and 2, inclusive. If equal to null or not provided, the model's default temperature will be used. The temperature parameter controls variance. Lower temperatures result in more predictable results, higher temperatures allow each run to vary more, so the voice may sound less like the baseline voice.
+ """
+
+ emotion: typing.Optional[FallbackPlayHtVoiceEmotion] = pydantic.Field(default=None)
+ """
+ An emotion to be applied to the speech.
+ """
+
+ voice_guidance: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="voiceGuidance")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ A number between 1 and 6. Use lower numbers to reduce how unique your chosen voice will be compared to other voices.
+ """
+
+ style_guidance: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="styleGuidance")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ A number between 1 and 30. Use lower numbers to to reduce how strong your chosen emotion will be. Higher numbers will create a very emotional performance.
+ """
+
+ text_guidance: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="textGuidance")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ A number between 1 and 2. This number influences how closely the generated speech adheres to the input text. Use lower values to create more fluid speech, but with a higher chance of deviating from the input text. Higher numbers will make the generated speech more accurate to the input text, ensuring that the words spoken align closely with the provided text.
+ """
+
+ model: typing.Optional[FallbackPlayHtVoiceModel] = pydantic.Field(default=None)
+ """
+ Playht voice model/engine to use.
+ """
+
+ language: typing.Optional[FallbackPlayHtVoiceLanguage] = pydantic.Field(default=None)
+ """
+ The language to use for the speech.
+ """
+
+ chunk_plan: typing_extensions.Annotated[typing.Optional[ChunkPlan], FieldMetadata(alias="chunkPlan")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the plan for chunking the model output before it is sent to the voice provider.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/fallback_play_ht_voice_emotion.py b/src/vapi/types/fallback_play_ht_voice_emotion.py
new file mode 100644
index 0000000..cd437f4
--- /dev/null
+++ b/src/vapi/types/fallback_play_ht_voice_emotion.py
@@ -0,0 +1,21 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+FallbackPlayHtVoiceEmotion = typing.Union[
+ typing.Literal[
+ "female_happy",
+ "female_sad",
+ "female_angry",
+ "female_fearful",
+ "female_disgust",
+ "female_surprised",
+ "male_happy",
+ "male_sad",
+ "male_angry",
+ "male_fearful",
+ "male_disgust",
+ "male_surprised",
+ ],
+ typing.Any,
+]
diff --git a/src/vapi/types/fallback_play_ht_voice_id.py b/src/vapi/types/fallback_play_ht_voice_id.py
new file mode 100644
index 0000000..a900235
--- /dev/null
+++ b/src/vapi/types/fallback_play_ht_voice_id.py
@@ -0,0 +1,6 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+from .fallback_play_ht_voice_id_enum import FallbackPlayHtVoiceIdEnum
+
+FallbackPlayHtVoiceId = typing.Union[FallbackPlayHtVoiceIdEnum, str]
diff --git a/src/vapi/types/fallback_play_ht_voice_id_enum.py b/src/vapi/types/fallback_play_ht_voice_id_enum.py
new file mode 100644
index 0000000..71f4e66
--- /dev/null
+++ b/src/vapi/types/fallback_play_ht_voice_id_enum.py
@@ -0,0 +1,8 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+FallbackPlayHtVoiceIdEnum = typing.Union[
+ typing.Literal["jennifer", "melissa", "will", "chris", "matt", "jack", "ruby", "davis", "donna", "michael"],
+ typing.Any,
+]
diff --git a/src/vapi/types/fallback_play_ht_voice_language.py b/src/vapi/types/fallback_play_ht_voice_language.py
new file mode 100644
index 0000000..c0b9645
--- /dev/null
+++ b/src/vapi/types/fallback_play_ht_voice_language.py
@@ -0,0 +1,46 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+FallbackPlayHtVoiceLanguage = typing.Union[
+ typing.Literal[
+ "afrikaans",
+ "albanian",
+ "amharic",
+ "arabic",
+ "bengali",
+ "bulgarian",
+ "catalan",
+ "croatian",
+ "czech",
+ "danish",
+ "dutch",
+ "english",
+ "french",
+ "galician",
+ "german",
+ "greek",
+ "hebrew",
+ "hindi",
+ "hungarian",
+ "indonesian",
+ "italian",
+ "japanese",
+ "korean",
+ "malay",
+ "mandarin",
+ "polish",
+ "portuguese",
+ "russian",
+ "serbian",
+ "spanish",
+ "swedish",
+ "tagalog",
+ "thai",
+ "turkish",
+ "ukrainian",
+ "urdu",
+ "xhosa",
+ ],
+ typing.Any,
+]
diff --git a/src/vapi/types/fallback_play_ht_voice_model.py b/src/vapi/types/fallback_play_ht_voice_model.py
new file mode 100644
index 0000000..4904858
--- /dev/null
+++ b/src/vapi/types/fallback_play_ht_voice_model.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+FallbackPlayHtVoiceModel = typing.Union[typing.Literal["PlayHT2.0", "PlayHT2.0-turbo", "Play3.0-mini"], typing.Any]
diff --git a/src/vapi/types/fallback_rime_ai_voice.py b/src/vapi/types/fallback_rime_ai_voice.py
new file mode 100644
index 0000000..92c9d30
--- /dev/null
+++ b/src/vapi/types/fallback_rime_ai_voice.py
@@ -0,0 +1,49 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import pydantic
+import typing_extensions
+from .fallback_rime_ai_voice_id import FallbackRimeAiVoiceId
+from ..core.serialization import FieldMetadata
+from .fallback_rime_ai_voice_model import FallbackRimeAiVoiceModel
+from .chunk_plan import ChunkPlan
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class FallbackRimeAiVoice(UniversalBaseModel):
+ provider: typing.Literal["rime-ai"] = pydantic.Field(default="rime-ai")
+ """
+ This is the voice provider that will be used.
+ """
+
+ voice_id: typing_extensions.Annotated[FallbackRimeAiVoiceId, FieldMetadata(alias="voiceId")] = pydantic.Field()
+ """
+ This is the provider-specific ID that will be used.
+ """
+
+ model: typing.Optional[FallbackRimeAiVoiceModel] = pydantic.Field(default=None)
+ """
+ This is the model that will be used. Defaults to 'v1' when not specified.
+ """
+
+ speed: typing.Optional[float] = pydantic.Field(default=None)
+ """
+ This is the speed multiplier that will be used.
+ """
+
+ chunk_plan: typing_extensions.Annotated[typing.Optional[ChunkPlan], FieldMetadata(alias="chunkPlan")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the plan for chunking the model output before it is sent to the voice provider.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/fallback_rime_ai_voice_id.py b/src/vapi/types/fallback_rime_ai_voice_id.py
new file mode 100644
index 0000000..b7b529c
--- /dev/null
+++ b/src/vapi/types/fallback_rime_ai_voice_id.py
@@ -0,0 +1,6 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+from .fallback_rime_ai_voice_id_enum import FallbackRimeAiVoiceIdEnum
+
+FallbackRimeAiVoiceId = typing.Union[FallbackRimeAiVoiceIdEnum, str]
diff --git a/src/vapi/types/fallback_rime_ai_voice_id_enum.py b/src/vapi/types/fallback_rime_ai_voice_id_enum.py
new file mode 100644
index 0000000..afd2985
--- /dev/null
+++ b/src/vapi/types/fallback_rime_ai_voice_id_enum.py
@@ -0,0 +1,90 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+FallbackRimeAiVoiceIdEnum = typing.Union[
+ typing.Literal[
+ "marsh",
+ "bayou",
+ "creek",
+ "brook",
+ "flower",
+ "spore",
+ "glacier",
+ "gulch",
+ "alpine",
+ "cove",
+ "lagoon",
+ "tundra",
+ "steppe",
+ "mesa",
+ "grove",
+ "rainforest",
+ "moraine",
+ "wildflower",
+ "peak",
+ "boulder",
+ "abbie",
+ "allison",
+ "ally",
+ "alona",
+ "amber",
+ "ana",
+ "antoine",
+ "armon",
+ "brenda",
+ "brittany",
+ "carol",
+ "colin",
+ "courtney",
+ "elena",
+ "elliot",
+ "eva",
+ "geoff",
+ "gerald",
+ "hank",
+ "helen",
+ "hera",
+ "jen",
+ "joe",
+ "joy",
+ "juan",
+ "kendra",
+ "kendrick",
+ "kenneth",
+ "kevin",
+ "kris",
+ "linda",
+ "madison",
+ "marge",
+ "marina",
+ "marissa",
+ "marta",
+ "maya",
+ "nicholas",
+ "nyles",
+ "phil",
+ "reba",
+ "rex",
+ "rick",
+ "ritu",
+ "rob",
+ "rodney",
+ "rohan",
+ "rosco",
+ "samantha",
+ "sandy",
+ "selena",
+ "seth",
+ "sharon",
+ "stan",
+ "tamra",
+ "tanya",
+ "tibur",
+ "tj",
+ "tyler",
+ "viv",
+ "yadira",
+ ],
+ typing.Any,
+]
diff --git a/src/vapi/types/fallback_rime_ai_voice_model.py b/src/vapi/types/fallback_rime_ai_voice_model.py
new file mode 100644
index 0000000..a0351b1
--- /dev/null
+++ b/src/vapi/types/fallback_rime_ai_voice_model.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+FallbackRimeAiVoiceModel = typing.Union[typing.Literal["v1", "mist"], typing.Any]
diff --git a/src/vapi/types/fallback_tavus_voice.py b/src/vapi/types/fallback_tavus_voice.py
new file mode 100644
index 0000000..4cbba3c
--- /dev/null
+++ b/src/vapi/types/fallback_tavus_voice.py
@@ -0,0 +1,79 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import pydantic
+import typing_extensions
+from .fallback_tavus_voice_voice_id import FallbackTavusVoiceVoiceId
+from ..core.serialization import FieldMetadata
+from .tavus_conversation_properties import TavusConversationProperties
+from .chunk_plan import ChunkPlan
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class FallbackTavusVoice(UniversalBaseModel):
+ provider: typing.Literal["tavus"] = pydantic.Field(default="tavus")
+ """
+ This is the voice provider that will be used.
+ """
+
+ voice_id: typing_extensions.Annotated[FallbackTavusVoiceVoiceId, FieldMetadata(alias="voiceId")] = pydantic.Field()
+ """
+ This is the provider-specific ID that will be used.
+ """
+
+ persona_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="personaId")] = pydantic.Field(
+ default=None
+ )
+ """
+ This is the unique identifier for the persona that the replica will use in the conversation.
+ """
+
+ callback_url: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="callbackUrl")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the url that will receive webhooks with updates regarding the conversation state.
+ """
+
+ conversation_name: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="conversationName")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the name for the conversation.
+ """
+
+ conversational_context: typing_extensions.Annotated[
+ typing.Optional[str], FieldMetadata(alias="conversationalContext")
+ ] = pydantic.Field(default=None)
+ """
+ This is the context that will be appended to any context provided in the persona, if one is provided.
+ """
+
+ custom_greeting: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="customGreeting")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the custom greeting that the replica will give once a participant joines the conversation.
+ """
+
+ properties: typing.Optional[TavusConversationProperties] = pydantic.Field(default=None)
+ """
+ These are optional properties used to customize the conversation.
+ """
+
+ chunk_plan: typing_extensions.Annotated[typing.Optional[ChunkPlan], FieldMetadata(alias="chunkPlan")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the plan for chunking the model output before it is sent to the voice provider.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/fallback_tavus_voice_voice_id.py b/src/vapi/types/fallback_tavus_voice_voice_id.py
new file mode 100644
index 0000000..5de275e
--- /dev/null
+++ b/src/vapi/types/fallback_tavus_voice_voice_id.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+FallbackTavusVoiceVoiceId = typing.Union[typing.Literal["r52da2535a"], str]
diff --git a/src/vapi/types/format_plan.py b/src/vapi/types/format_plan.py
index 4982f87..13ff17e 100644
--- a/src/vapi/types/format_plan.py
+++ b/src/vapi/types/format_plan.py
@@ -15,9 +15,7 @@ class FormatPlan(UniversalBaseModel):
This determines whether the chunk is formatted before being sent to the voice provider. This helps with enunciation. This includes phone numbers, emails and addresses. Default `true`.
Usage:
-
- To rely on the voice provider's formatting logic, set this to `false`.
- - To use ElevenLabs's `enableSsmlParsing` feature, set this to `false`.
If `voice.chunkPlan.enabled` is `false`, this is automatically `false` since there's no chunk to format.
@@ -31,11 +29,9 @@ class FormatPlan(UniversalBaseModel):
This is the cutoff after which a number is converted to individual digits instead of being spoken as words.
Example:
-
- If cutoff 2025, "12345" is converted to "1 2 3 4 5" while "1200" is converted to "twelve hundred".
Usage:
-
- If your use case doesn't involve IDs like zip codes, set this to a high value.
- If your use case involves IDs that are shorter than 5 digits, set this to a lower value.
@@ -47,7 +43,6 @@ class FormatPlan(UniversalBaseModel):
These are the custom replacements you can make to the chunk before it is sent to the voice provider.
Usage:
-
- To replace a specific word or phrase with a different word or phrase, use the `ExactReplacement` type. Eg. `{ type: 'exact', key: 'hello', value: 'hi' }`
- To replace a word or phrase that matches a pattern, use the `RegexReplacement` type. Eg. `{ type: 'regex', regex: '\\b[a-zA-Z]{5}\\b', value: 'hi' }`
diff --git a/src/vapi/types/gcp_credential.py b/src/vapi/types/gcp_credential.py
index d203a07..38abc0e 100644
--- a/src/vapi/types/gcp_credential.py
+++ b/src/vapi/types/gcp_credential.py
@@ -35,7 +35,7 @@ class GcpCredential(UniversalBaseModel):
name: typing.Optional[str] = pydantic.Field(default=None)
"""
- This is the name of the GCP credential. This is just for your reference.
+ This is the name of credential. This is just for your reference.
"""
gcp_key: typing_extensions.Annotated[GcpKey, FieldMetadata(alias="gcpKey")] = pydantic.Field()
diff --git a/src/vapi/types/gladia_credential.py b/src/vapi/types/gladia_credential.py
index c40754c..5125945 100644
--- a/src/vapi/types/gladia_credential.py
+++ b/src/vapi/types/gladia_credential.py
@@ -36,6 +36,11 @@ class GladiaCredential(UniversalBaseModel):
This is the ISO 8601 date-time string of when the assistant was last updated.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/go_high_level_credential.py b/src/vapi/types/go_high_level_credential.py
index 998eade..3a41ccf 100644
--- a/src/vapi/types/go_high_level_credential.py
+++ b/src/vapi/types/go_high_level_credential.py
@@ -36,6 +36,11 @@ class GoHighLevelCredential(UniversalBaseModel):
This is the ISO 8601 date-time string of when the assistant was last updated.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/google_credential.py b/src/vapi/types/google_credential.py
new file mode 100644
index 0000000..0975ef4
--- /dev/null
+++ b/src/vapi/types/google_credential.py
@@ -0,0 +1,55 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import pydantic
+import typing_extensions
+from ..core.serialization import FieldMetadata
+import datetime as dt
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class GoogleCredential(UniversalBaseModel):
+ provider: typing.Literal["google"] = pydantic.Field(default="google")
+ """
+ This is the key for Gemini in Google AI Studio. Get it from here: https://aistudio.google.com/app/apikey
+ """
+
+ api_key: typing_extensions.Annotated[str, FieldMetadata(alias="apiKey")] = pydantic.Field()
+ """
+ This is not returned in the API.
+ """
+
+ id: str = pydantic.Field()
+ """
+ This is the unique identifier for the credential.
+ """
+
+ org_id: typing_extensions.Annotated[str, FieldMetadata(alias="orgId")] = pydantic.Field()
+ """
+ This is the unique identifier for the org that this credential belongs to.
+ """
+
+ created_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="createdAt")] = pydantic.Field()
+ """
+ This is the ISO 8601 date-time string of when the credential was created.
+ """
+
+ updated_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="updatedAt")] = pydantic.Field()
+ """
+ This is the ISO 8601 date-time string of when the assistant was last updated.
+ """
+
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/google_model.py b/src/vapi/types/google_model.py
new file mode 100644
index 0000000..994b13d
--- /dev/null
+++ b/src/vapi/types/google_model.py
@@ -0,0 +1,98 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+from .open_ai_message import OpenAiMessage
+import pydantic
+from .google_model_tools_item import GoogleModelToolsItem
+import typing_extensions
+from ..core.serialization import FieldMetadata
+from .create_custom_knowledge_base_dto import CreateCustomKnowledgeBaseDto
+from .google_model_model import GoogleModelModel
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class GoogleModel(UniversalBaseModel):
+ messages: typing.Optional[typing.List[OpenAiMessage]] = pydantic.Field(default=None)
+ """
+ This is the starting state for the conversation.
+ """
+
+ tools: typing.Optional[typing.List[GoogleModelToolsItem]] = pydantic.Field(default=None)
+ """
+ These are the tools that the assistant can use during the call. To use existing tools, use `toolIds`.
+
+ Both `tools` and `toolIds` can be used together.
+ """
+
+ tool_ids: typing_extensions.Annotated[typing.Optional[typing.List[str]], FieldMetadata(alias="toolIds")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
+
+ Both `tools` and `toolIds` can be used together.
+ """
+
+ knowledge_base: typing_extensions.Annotated[
+ typing.Optional[CreateCustomKnowledgeBaseDto], FieldMetadata(alias="knowledgeBase")
+ ] = pydantic.Field(default=None)
+ """
+ These are the options for the knowledge base.
+ """
+
+ knowledge_base_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="knowledgeBaseId")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the ID of the knowledge base the model will use.
+ """
+
+ model: GoogleModelModel = pydantic.Field()
+ """
+ This is the Google model that will be used.
+ """
+
+ provider: typing.Literal["google"] = "google"
+ temperature: typing.Optional[float] = pydantic.Field(default=None)
+ """
+ This is the temperature that will be used for calls. Default is 0 to leverage caching for lower latency.
+ """
+
+ max_tokens: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="maxTokens")] = pydantic.Field(
+ default=None
+ )
+ """
+ This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250.
+ """
+
+ emotion_recognition_enabled: typing_extensions.Annotated[
+ typing.Optional[bool], FieldMetadata(alias="emotionRecognitionEnabled")
+ ] = pydantic.Field(default=None)
+ """
+ This determines whether we detect user's emotion while they speak and send it as an additional info to model.
+
+ Default `false` because the model is usually are good at understanding the user's emotion from text.
+
+ @default false
+ """
+
+ num_fast_turns: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="numFastTurns")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This sets how many turns at the start of the conversation to use a smaller, faster model from the same provider before switching to the primary model. Example, gpt-3.5-turbo if provider is openai.
+
+ Default is 0.
+
+ @default 0
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/google_model_model.py b/src/vapi/types/google_model_model.py
new file mode 100644
index 0000000..2693378
--- /dev/null
+++ b/src/vapi/types/google_model_model.py
@@ -0,0 +1,10 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+GoogleModelModel = typing.Union[
+ typing.Literal[
+ "gemini-1.5-flash", "gemini-1.5-flash-002", "gemini-1.5-pro", "gemini-1.5-pro-002", "gemini-1.0-pro"
+ ],
+ typing.Any,
+]
diff --git a/src/vapi/types/google_model_tools_item.py b/src/vapi/types/google_model_tools_item.py
new file mode 100644
index 0000000..0a0619f
--- /dev/null
+++ b/src/vapi/types/google_model_tools_item.py
@@ -0,0 +1,20 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+from .create_dtmf_tool_dto import CreateDtmfToolDto
+from .create_end_call_tool_dto import CreateEndCallToolDto
+from .create_voicemail_tool_dto import CreateVoicemailToolDto
+from .create_function_tool_dto import CreateFunctionToolDto
+from .create_ghl_tool_dto import CreateGhlToolDto
+from .create_make_tool_dto import CreateMakeToolDto
+from .create_transfer_call_tool_dto import CreateTransferCallToolDto
+
+GoogleModelToolsItem = typing.Union[
+ CreateDtmfToolDto,
+ CreateEndCallToolDto,
+ CreateVoicemailToolDto,
+ CreateFunctionToolDto,
+ CreateGhlToolDto,
+ CreateMakeToolDto,
+ CreateTransferCallToolDto,
+]
diff --git a/src/vapi/types/groq_credential.py b/src/vapi/types/groq_credential.py
index f0bb13e..108c5dc 100644
--- a/src/vapi/types/groq_credential.py
+++ b/src/vapi/types/groq_credential.py
@@ -36,6 +36,11 @@ class GroqCredential(UniversalBaseModel):
This is the ISO 8601 date-time string of when the assistant was last updated.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/groq_model.py b/src/vapi/types/groq_model.py
index d7ccf2f..b374eae 100644
--- a/src/vapi/types/groq_model.py
+++ b/src/vapi/types/groq_model.py
@@ -7,8 +7,8 @@
from .groq_model_tools_item import GroqModelToolsItem
import typing_extensions
from ..core.serialization import FieldMetadata
+from .create_custom_knowledge_base_dto import CreateCustomKnowledgeBaseDto
from .groq_model_model import GroqModelModel
-from .knowledge_base import KnowledgeBase
from ..core.pydantic_utilities import IS_PYDANTIC_V2
@@ -34,6 +34,20 @@ class GroqModel(UniversalBaseModel):
Both `tools` and `toolIds` can be used together.
"""
+ knowledge_base: typing_extensions.Annotated[
+ typing.Optional[CreateCustomKnowledgeBaseDto], FieldMetadata(alias="knowledgeBase")
+ ] = pydantic.Field(default=None)
+ """
+ These are the options for the knowledge base.
+ """
+
+ knowledge_base_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="knowledgeBaseId")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the ID of the knowledge base the model will use.
+ """
+
model: GroqModelModel = pydantic.Field()
"""
This is the name of the model. Ex. cognitivecomputations/dolphin-mixtral-8x7b
@@ -45,13 +59,6 @@ class GroqModel(UniversalBaseModel):
This is the temperature that will be used for calls. Default is 0 to leverage caching for lower latency.
"""
- knowledge_base: typing_extensions.Annotated[
- typing.Optional[KnowledgeBase], FieldMetadata(alias="knowledgeBase")
- ] = pydantic.Field(default=None)
- """
- These are the options for the knowledge base.
- """
-
max_tokens: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="maxTokens")] = pydantic.Field(
default=None
)
diff --git a/src/vapi/types/handoff_step.py b/src/vapi/types/handoff_step.py
index e36f3c2..1e850bc 100644
--- a/src/vapi/types/handoff_step.py
+++ b/src/vapi/types/handoff_step.py
@@ -22,7 +22,6 @@ class HandoffStep(UniversalBaseModel):
This is a step that takes a handoff from the previous step. This means it won't return to the calling step. The workflow execution will continue linearly.
Use case:
-
- You want to collect information linearly (e.g. a form, provide information, etc).
"""
@@ -49,12 +48,11 @@ class HandoffStep(UniversalBaseModel):
Example:
{
- "name": "John Doe",
- "age": 20
+ "name": "John Doe",
+ "age": 20
}
You can reference any variable in the context of the current block:
-
- "{{your-step-name.output.your-property-name}}" for another step's output (in the same workflow; read caveat #1)
- "{{your-step-name.input.your-property-name}}" for another step's input (in the same workflow; read caveat #1)
- "{{your-block-name.output.your-property-name}}" for another block's output (in the same workflow; read caveat #2)
@@ -64,35 +62,34 @@ class HandoffStep(UniversalBaseModel):
Example:
{
- "name": "{{my-tool-call-step.output.name}}",
- "age": "{{my-tool-call-step.input.age}}",
- "date": "{{workflow.input.date}}"
+ "name": "{{my-tool-call-step.output.name}}",
+ "age": "{{my-tool-call-step.input.age}}",
+ "date": "{{workflow.input.date}}"
}
You can dynamically change the key name.
Example:
{
- "{{my-tool-call-step.output.key-name-for-name}}": "{{name}}",
- "{{my-tool-call-step.input.key-name-for-age}}": "{{age}}",
- "{{workflow.input.key-name-for-date}}": "{{date}}"
+ "{{my-tool-call-step.output.key-name-for-name}}": "{{name}}",
+ "{{my-tool-call-step.input.key-name-for-age}}": "{{age}}",
+ "{{workflow.input.key-name-for-date}}": "{{date}}"
}
You can represent the value as a string, number, boolean, array, or object.
Example:
{
- "name": "john",
- "age": 20,
- "date": "2021-01-01",
- "metadata": {
- "unique-key": "{{my-tool-call-step.output.unique-key}}"
- },
- "array": ["A", "B", "C"],
+ "name": "john",
+ "age": 20,
+ "date": "2021-01-01",
+ "metadata": {
+ "unique-key": "{{my-tool-call-step.output.unique-key}}"
+ },
+ "array": ["A", "B", "C"],
}
Caveats:
-
1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.input/output.propertyName}} will reference the latest usage of the step.
2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.input/output.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow.
"""
diff --git a/src/vapi/types/hipaa_buy_dto.py b/src/vapi/types/hipaa_buy_dto.py
new file mode 100644
index 0000000..f69eb83
--- /dev/null
+++ b/src/vapi/types/hipaa_buy_dto.py
@@ -0,0 +1,31 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing_extensions
+from ..core.serialization import FieldMetadata
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+import typing
+
+
+class HipaaBuyDto(UniversalBaseModel):
+ recipient_name: typing_extensions.Annotated[str, FieldMetadata(alias="recipientName")] = pydantic.Field()
+ """
+ This is the name of the recipient.
+ """
+
+ recipient_organization: typing_extensions.Annotated[str, FieldMetadata(alias="recipientOrganization")] = (
+ pydantic.Field()
+ )
+ """
+ This is the name of the recipient organization.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/import_twilio_phone_number_dto.py b/src/vapi/types/import_twilio_phone_number_dto.py
index 1ef045e..36254d1 100644
--- a/src/vapi/types/import_twilio_phone_number_dto.py
+++ b/src/vapi/types/import_twilio_phone_number_dto.py
@@ -15,7 +15,6 @@ class ImportTwilioPhoneNumberDto(UniversalBaseModel):
] = pydantic.Field(default=None)
"""
This is the fallback destination an inbound call will be transferred to if:
-
1. `assistantId` is not set
2. `squadId` is not set
3. and, `assistant-request` message to the `serverUrl` fails
diff --git a/src/vapi/types/import_vonage_phone_number_dto.py b/src/vapi/types/import_vonage_phone_number_dto.py
index c7e59e8..c352636 100644
--- a/src/vapi/types/import_vonage_phone_number_dto.py
+++ b/src/vapi/types/import_vonage_phone_number_dto.py
@@ -15,7 +15,6 @@ class ImportVonagePhoneNumberDto(UniversalBaseModel):
] = pydantic.Field(default=None)
"""
This is the fallback destination an inbound call will be transferred to if:
-
1. `assistantId` is not set
2. `squadId` is not set
3. and, `assistant-request` message to the `serverUrl` fails
diff --git a/src/vapi/types/inflection_ai_credential.py b/src/vapi/types/inflection_ai_credential.py
new file mode 100644
index 0000000..52ce5fe
--- /dev/null
+++ b/src/vapi/types/inflection_ai_credential.py
@@ -0,0 +1,55 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import pydantic
+import typing_extensions
+from ..core.serialization import FieldMetadata
+import datetime as dt
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class InflectionAiCredential(UniversalBaseModel):
+ provider: typing.Literal["inflection-ai"] = pydantic.Field(default="inflection-ai")
+ """
+ This is the api key for Pi in InflectionAI's console. Get it from here: https://developers.inflection.ai/keys, billing will need to be setup
+ """
+
+ api_key: typing_extensions.Annotated[str, FieldMetadata(alias="apiKey")] = pydantic.Field()
+ """
+ This is not returned in the API.
+ """
+
+ id: str = pydantic.Field()
+ """
+ This is the unique identifier for the credential.
+ """
+
+ org_id: typing_extensions.Annotated[str, FieldMetadata(alias="orgId")] = pydantic.Field()
+ """
+ This is the unique identifier for the org that this credential belongs to.
+ """
+
+ created_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="createdAt")] = pydantic.Field()
+ """
+ This is the ISO 8601 date-time string of when the credential was created.
+ """
+
+ updated_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="updatedAt")] = pydantic.Field()
+ """
+ This is the ISO 8601 date-time string of when the assistant was last updated.
+ """
+
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/inflection_ai_model.py b/src/vapi/types/inflection_ai_model.py
new file mode 100644
index 0000000..ddd1d46
--- /dev/null
+++ b/src/vapi/types/inflection_ai_model.py
@@ -0,0 +1,97 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+from .open_ai_message import OpenAiMessage
+import pydantic
+from .inflection_ai_model_tools_item import InflectionAiModelToolsItem
+import typing_extensions
+from ..core.serialization import FieldMetadata
+from .create_custom_knowledge_base_dto import CreateCustomKnowledgeBaseDto
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class InflectionAiModel(UniversalBaseModel):
+ messages: typing.Optional[typing.List[OpenAiMessage]] = pydantic.Field(default=None)
+ """
+ This is the starting state for the conversation.
+ """
+
+ tools: typing.Optional[typing.List[InflectionAiModelToolsItem]] = pydantic.Field(default=None)
+ """
+ These are the tools that the assistant can use during the call. To use existing tools, use `toolIds`.
+
+ Both `tools` and `toolIds` can be used together.
+ """
+
+ tool_ids: typing_extensions.Annotated[typing.Optional[typing.List[str]], FieldMetadata(alias="toolIds")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
+
+ Both `tools` and `toolIds` can be used together.
+ """
+
+ knowledge_base: typing_extensions.Annotated[
+ typing.Optional[CreateCustomKnowledgeBaseDto], FieldMetadata(alias="knowledgeBase")
+ ] = pydantic.Field(default=None)
+ """
+ These are the options for the knowledge base.
+ """
+
+ knowledge_base_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="knowledgeBaseId")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the ID of the knowledge base the model will use.
+ """
+
+ model: typing.Literal["inflection_3_pi"] = pydantic.Field(default="inflection_3_pi")
+ """
+ This is the name of the model. Ex. cognitivecomputations/dolphin-mixtral-8x7b
+ """
+
+ provider: typing.Literal["inflection-ai"] = "inflection-ai"
+ temperature: typing.Optional[float] = pydantic.Field(default=None)
+ """
+ This is the temperature that will be used for calls. Default is 0 to leverage caching for lower latency.
+ """
+
+ max_tokens: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="maxTokens")] = pydantic.Field(
+ default=None
+ )
+ """
+ This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250.
+ """
+
+ emotion_recognition_enabled: typing_extensions.Annotated[
+ typing.Optional[bool], FieldMetadata(alias="emotionRecognitionEnabled")
+ ] = pydantic.Field(default=None)
+ """
+ This determines whether we detect user's emotion while they speak and send it as an additional info to model.
+
+ Default `false` because the model is usually are good at understanding the user's emotion from text.
+
+ @default false
+ """
+
+ num_fast_turns: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="numFastTurns")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This sets how many turns at the start of the conversation to use a smaller, faster model from the same provider before switching to the primary model. Example, gpt-3.5-turbo if provider is openai.
+
+ Default is 0.
+
+ @default 0
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/inflection_ai_model_tools_item.py b/src/vapi/types/inflection_ai_model_tools_item.py
new file mode 100644
index 0000000..85f3b6a
--- /dev/null
+++ b/src/vapi/types/inflection_ai_model_tools_item.py
@@ -0,0 +1,20 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+from .create_dtmf_tool_dto import CreateDtmfToolDto
+from .create_end_call_tool_dto import CreateEndCallToolDto
+from .create_voicemail_tool_dto import CreateVoicemailToolDto
+from .create_function_tool_dto import CreateFunctionToolDto
+from .create_ghl_tool_dto import CreateGhlToolDto
+from .create_make_tool_dto import CreateMakeToolDto
+from .create_transfer_call_tool_dto import CreateTransferCallToolDto
+
+InflectionAiModelToolsItem = typing.Union[
+ CreateDtmfToolDto,
+ CreateEndCallToolDto,
+ CreateVoicemailToolDto,
+ CreateFunctionToolDto,
+ CreateGhlToolDto,
+ CreateMakeToolDto,
+ CreateTransferCallToolDto,
+]
diff --git a/src/vapi/types/invite_user_dto.py b/src/vapi/types/invite_user_dto.py
index 7d336e9..f84841a 100644
--- a/src/vapi/types/invite_user_dto.py
+++ b/src/vapi/types/invite_user_dto.py
@@ -1,14 +1,14 @@
# This file was auto-generated by Fern from our API Definition.
from ..core.pydantic_utilities import UniversalBaseModel
+import typing
from .invite_user_dto_role import InviteUserDtoRole
from ..core.pydantic_utilities import IS_PYDANTIC_V2
-import typing
import pydantic
class InviteUserDto(UniversalBaseModel):
- email: str
+ emails: typing.List[str]
role: InviteUserDtoRole
if IS_PYDANTIC_V2:
diff --git a/src/vapi/types/knowledge_base_response_document.py b/src/vapi/types/knowledge_base_response_document.py
new file mode 100644
index 0000000..81202cf
--- /dev/null
+++ b/src/vapi/types/knowledge_base_response_document.py
@@ -0,0 +1,34 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import pydantic
+import typing_extensions
+import typing
+from ..core.serialization import FieldMetadata
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class KnowledgeBaseResponseDocument(UniversalBaseModel):
+ content: str = pydantic.Field()
+ """
+ This is the content of the document.
+ """
+
+ similarity: float = pydantic.Field()
+ """
+ This is the similarity score of the document.
+ """
+
+ uuid_: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="uuid")] = pydantic.Field(default=None)
+ """
+ This is the uuid of the document.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/langfuse_credential.py b/src/vapi/types/langfuse_credential.py
new file mode 100644
index 0000000..9cfb531
--- /dev/null
+++ b/src/vapi/types/langfuse_credential.py
@@ -0,0 +1,61 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import typing_extensions
+from ..core.serialization import FieldMetadata
+import pydantic
+import datetime as dt
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class LangfuseCredential(UniversalBaseModel):
+ provider: typing.Literal["langfuse"] = "langfuse"
+ public_key: typing_extensions.Annotated[str, FieldMetadata(alias="publicKey")] = pydantic.Field()
+ """
+ The public key for Langfuse project. Eg: pk-lf-...
+ """
+
+ api_key: typing_extensions.Annotated[str, FieldMetadata(alias="apiKey")] = pydantic.Field()
+ """
+ The secret key for Langfuse project. Eg: sk-lf-... .This is not returned in the API.
+ """
+
+ api_url: typing_extensions.Annotated[str, FieldMetadata(alias="apiUrl")] = pydantic.Field()
+ """
+ The host URL for Langfuse project. Eg: https://cloud.langfuse.com
+ """
+
+ id: str = pydantic.Field()
+ """
+ This is the unique identifier for the credential.
+ """
+
+ org_id: typing_extensions.Annotated[str, FieldMetadata(alias="orgId")] = pydantic.Field()
+ """
+ This is the unique identifier for the org that this credential belongs to.
+ """
+
+ created_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="createdAt")] = pydantic.Field()
+ """
+ This is the ISO 8601 date-time string of when the credential was created.
+ """
+
+ updated_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="updatedAt")] = pydantic.Field()
+ """
+ This is the ISO 8601 date-time string of when the assistant was last updated.
+ """
+
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/lmnt_credential.py b/src/vapi/types/lmnt_credential.py
index 16b158a..6fbfdd3 100644
--- a/src/vapi/types/lmnt_credential.py
+++ b/src/vapi/types/lmnt_credential.py
@@ -36,6 +36,11 @@ class LmntCredential(UniversalBaseModel):
This is the ISO 8601 date-time string of when the assistant was last updated.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/lmnt_voice.py b/src/vapi/types/lmnt_voice.py
index 18d21ab..20dc03b 100644
--- a/src/vapi/types/lmnt_voice.py
+++ b/src/vapi/types/lmnt_voice.py
@@ -1,25 +1,17 @@
# This file was auto-generated by Fern from our API Definition.
from ..core.pydantic_utilities import UniversalBaseModel
-import typing_extensions
import typing
-from ..core.serialization import FieldMetadata
import pydantic
+import typing_extensions
from .lmnt_voice_id import LmntVoiceId
+from ..core.serialization import FieldMetadata
from .chunk_plan import ChunkPlan
+from .fallback_plan import FallbackPlan
from ..core.pydantic_utilities import IS_PYDANTIC_V2
class LmntVoice(UniversalBaseModel):
- filler_injection_enabled: typing_extensions.Annotated[
- typing.Optional[bool], FieldMetadata(alias="fillerInjectionEnabled")
- ] = pydantic.Field(default=None)
- """
- This determines whether fillers are injected into the model output before inputting it into the voice provider.
-
- Default `false` because you can achieve better results with prompting the model.
- """
-
provider: typing.Literal["lmnt"] = pydantic.Field(default="lmnt")
"""
This is the voice provider that will be used.
@@ -42,6 +34,13 @@ class LmntVoice(UniversalBaseModel):
This is the plan for chunking the model output before it is sent to the voice provider.
"""
+ fallback_plan: typing_extensions.Annotated[typing.Optional[FallbackPlan], FieldMetadata(alias="fallbackPlan")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the plan for voice provider fallbacks in the event that the primary voice provider fails.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/log.py b/src/vapi/types/log.py
index aeca7ec..05abd67 100644
--- a/src/vapi/types/log.py
+++ b/src/vapi/types/log.py
@@ -13,7 +13,7 @@
class Log(UniversalBaseModel):
- time: float = pydantic.Field()
+ time: str = pydantic.Field()
"""
This is the timestamp at which the log was written.
"""
@@ -28,6 +28,13 @@ class Log(UniversalBaseModel):
This is the type of the log.
"""
+ webhook_type: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="webhookType")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the type of the webhook, given the log is from a webhook.
+ """
+
resource: typing.Optional[LogResource] = pydantic.Field(default=None)
"""
This is the specific resource, relevant only to API logs.
diff --git a/src/vapi/types/log_resource.py b/src/vapi/types/log_resource.py
index 7e35ea0..ab0b1c2 100644
--- a/src/vapi/types/log_resource.py
+++ b/src/vapi/types/log_resource.py
@@ -3,5 +3,23 @@
import typing
LogResource = typing.Union[
- typing.Literal["assistant", "phone-number", "tool", "squad", "call", "file", "metric", "log"], typing.Any
+ typing.Literal[
+ "org",
+ "assistant",
+ "analytics",
+ "credential",
+ "phone-number",
+ "block",
+ "voice-library",
+ "provider",
+ "tool",
+ "token",
+ "template",
+ "squad",
+ "call",
+ "file",
+ "metric",
+ "log",
+ ],
+ typing.Any,
]
diff --git a/src/vapi/types/make_credential.py b/src/vapi/types/make_credential.py
index 609725c..9477955 100644
--- a/src/vapi/types/make_credential.py
+++ b/src/vapi/types/make_credential.py
@@ -46,6 +46,11 @@ class MakeCredential(UniversalBaseModel):
This is the ISO 8601 date-time string of when the assistant was last updated.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/message_plan.py b/src/vapi/types/message_plan.py
index 651466a..4d24f95 100644
--- a/src/vapi/types/message_plan.py
+++ b/src/vapi/types/message_plan.py
@@ -16,7 +16,6 @@ class MessagePlan(UniversalBaseModel):
This are the messages that the assistant will speak when the user hasn't responded for `idleTimeoutSeconds`. Each time the timeout is triggered, a random message will be chosen from this array.
Usage:
-
- If user gets distracted and doesn't respond for a while, this can be used to grab their attention.
- If the transcriber doesn't pick up what the user said, this can be used to ask the user to repeat themselves. (From the perspective of the assistant, the conversation is idle since it didn't "hear" any user messages.)
diff --git a/src/vapi/types/model_based_condition.py b/src/vapi/types/model_based_condition.py
index 924f543..878dbd8 100644
--- a/src/vapi/types/model_based_condition.py
+++ b/src/vapi/types/model_based_condition.py
@@ -17,7 +17,6 @@ class ModelBasedCondition(UniversalBaseModel):
This is the instruction which should output a boolean value when passed to a model.
You can reference any variable in the context of the current block execution (step):
-
- "{{output.your-property-name}}" for current step's output
- "{{input.your-property-name}}" for current step's input
- "{{your-step-name.output.your-property-name}}" for another step's output (in the same workflow; read caveat #1)
@@ -28,18 +27,15 @@ class ModelBasedCondition(UniversalBaseModel):
- "{{global.your-property-name}}" for the global context
You can also talk about the current step's output or input directly:
-
- "{{output.your-property-name}} is greater than 10"
- "{{input.your-property-name}} is greater than 10"
Examples:
-
- - "{{input.age}} is greater than 10"
- - "{{input.age}} is greater than {{input.age2}}"
- - "{{output.age}} is greater than 10"
+ - "{{input.age}} is greater than 10"
+ - "{{input.age}} is greater than {{input.age2}}"
+ - "{{output.age}} is greater than 10"
Caveats:
-
1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.input/output.propertyName}} will reference the latest usage of the step.
2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.input/output.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow with steps.
"""
diff --git a/src/vapi/types/model_cost.py b/src/vapi/types/model_cost.py
index 5ff3edb..d145e3f 100644
--- a/src/vapi/types/model_cost.py
+++ b/src/vapi/types/model_cost.py
@@ -19,7 +19,6 @@ class ModelCost(UniversalBaseModel):
This is the model that was used during the call.
This matches one of the following:
-
- `call.assistant.model`,
- `call.assistantId->model`,
- `call.squad[n].assistant.model`,
diff --git a/src/vapi/types/neets_voice.py b/src/vapi/types/neets_voice.py
index 6c77093..0c1a125 100644
--- a/src/vapi/types/neets_voice.py
+++ b/src/vapi/types/neets_voice.py
@@ -1,25 +1,17 @@
# This file was auto-generated by Fern from our API Definition.
from ..core.pydantic_utilities import UniversalBaseModel
-import typing_extensions
import typing
-from ..core.serialization import FieldMetadata
import pydantic
+import typing_extensions
from .neets_voice_id import NeetsVoiceId
+from ..core.serialization import FieldMetadata
from .chunk_plan import ChunkPlan
+from .fallback_plan import FallbackPlan
from ..core.pydantic_utilities import IS_PYDANTIC_V2
class NeetsVoice(UniversalBaseModel):
- filler_injection_enabled: typing_extensions.Annotated[
- typing.Optional[bool], FieldMetadata(alias="fillerInjectionEnabled")
- ] = pydantic.Field(default=None)
- """
- This determines whether fillers are injected into the model output before inputting it into the voice provider.
-
- Default `false` because you can achieve better results with prompting the model.
- """
-
provider: typing.Literal["neets"] = pydantic.Field(default="neets")
"""
This is the voice provider that will be used.
@@ -37,6 +29,13 @@ class NeetsVoice(UniversalBaseModel):
This is the plan for chunking the model output before it is sent to the voice provider.
"""
+ fallback_plan: typing_extensions.Annotated[typing.Optional[FallbackPlan], FieldMetadata(alias="fallbackPlan")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the plan for voice provider fallbacks in the event that the primary voice provider fails.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/o_auth_2_authentication_plan.py b/src/vapi/types/o_auth_2_authentication_plan.py
new file mode 100644
index 0000000..4393371
--- /dev/null
+++ b/src/vapi/types/o_auth_2_authentication_plan.py
@@ -0,0 +1,35 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import pydantic
+import typing_extensions
+from ..core.serialization import FieldMetadata
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class OAuth2AuthenticationPlan(UniversalBaseModel):
+ type: typing.Literal["oauth2"] = "oauth2"
+ url: str = pydantic.Field()
+ """
+ This is the OAuth2 URL.
+ """
+
+ client_id: typing_extensions.Annotated[str, FieldMetadata(alias="clientId")] = pydantic.Field()
+ """
+ This is the OAuth2 client ID.
+ """
+
+ client_secret: typing_extensions.Annotated[str, FieldMetadata(alias="clientSecret")] = pydantic.Field()
+ """
+ This is the OAuth2 client secret.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/oauth_2_authentication_session.py b/src/vapi/types/oauth_2_authentication_session.py
new file mode 100644
index 0000000..a588143
--- /dev/null
+++ b/src/vapi/types/oauth_2_authentication_session.py
@@ -0,0 +1,34 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing_extensions
+import typing
+from ..core.serialization import FieldMetadata
+import pydantic
+import datetime as dt
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class Oauth2AuthenticationSession(UniversalBaseModel):
+ access_token: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="accessToken")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the OAuth2 access token.
+ """
+
+ expires_at: typing_extensions.Annotated[typing.Optional[dt.datetime], FieldMetadata(alias="expiresAt")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the OAuth2 access token expiration.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/open_ai_credential.py b/src/vapi/types/open_ai_credential.py
index 53a34ca..4acd104 100644
--- a/src/vapi/types/open_ai_credential.py
+++ b/src/vapi/types/open_ai_credential.py
@@ -36,6 +36,11 @@ class OpenAiCredential(UniversalBaseModel):
This is the ISO 8601 date-time string of when the assistant was last updated.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/open_ai_function.py b/src/vapi/types/open_ai_function.py
index 13e9e1b..b55717a 100644
--- a/src/vapi/types/open_ai_function.py
+++ b/src/vapi/types/open_ai_function.py
@@ -1,13 +1,20 @@
# This file was auto-generated by Fern from our API Definition.
from ..core.pydantic_utilities import UniversalBaseModel
-import pydantic
import typing
+import pydantic
from .open_ai_function_parameters import OpenAiFunctionParameters
from ..core.pydantic_utilities import IS_PYDANTIC_V2
class OpenAiFunction(UniversalBaseModel):
+ strict: typing.Optional[bool] = pydantic.Field(default=None)
+ """
+ This is a boolean that controls whether to enable strict schema adherence when generating the function call. If set to true, the model will follow the exact schema defined in the parameters field. Only a subset of JSON Schema is supported when strict is true. Learn more about Structured Outputs in the [OpenAI guide](https://openai.com/index/introducing-structured-outputs-in-the-api/).
+
+ @default false
+ """
+
name: str = pydantic.Field()
"""
This is the the name of the function to be called.
@@ -15,7 +22,11 @@ class OpenAiFunction(UniversalBaseModel):
Must be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64.
"""
- description: typing.Optional[str] = None
+ description: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the description of what the function does, used by the AI to choose when and how to call the function.
+ """
+
parameters: typing.Optional[OpenAiFunctionParameters] = pydantic.Field(default=None)
"""
These are the parameters the functions accepts, described as a JSON Schema object.
diff --git a/src/vapi/types/open_ai_model.py b/src/vapi/types/open_ai_model.py
index d5ac2aa..a690cab 100644
--- a/src/vapi/types/open_ai_model.py
+++ b/src/vapi/types/open_ai_model.py
@@ -7,9 +7,9 @@
from .open_ai_model_tools_item import OpenAiModelToolsItem
import typing_extensions
from ..core.serialization import FieldMetadata
+from .create_custom_knowledge_base_dto import CreateCustomKnowledgeBaseDto
from .open_ai_model_model import OpenAiModelModel
from .open_ai_model_fallback_models_item import OpenAiModelFallbackModelsItem
-from .knowledge_base import KnowledgeBase
from ..core.pydantic_utilities import IS_PYDANTIC_V2
@@ -35,6 +35,20 @@ class OpenAiModel(UniversalBaseModel):
Both `tools` and `toolIds` can be used together.
"""
+ knowledge_base: typing_extensions.Annotated[
+ typing.Optional[CreateCustomKnowledgeBaseDto], FieldMetadata(alias="knowledgeBase")
+ ] = pydantic.Field(default=None)
+ """
+ These are the options for the knowledge base.
+ """
+
+ knowledge_base_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="knowledgeBaseId")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the ID of the knowledge base the model will use.
+ """
+
provider: typing.Literal["openai"] = pydantic.Field(default="openai")
"""
This is the provider that will be used for the model.
@@ -60,13 +74,6 @@ class OpenAiModel(UniversalBaseModel):
This is the temperature that will be used for calls. Default is 0 to leverage caching for lower latency.
"""
- knowledge_base: typing_extensions.Annotated[
- typing.Optional[KnowledgeBase], FieldMetadata(alias="knowledgeBase")
- ] = pydantic.Field(default=None)
- """
- These are the options for the knowledge base.
- """
-
max_tokens: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="maxTokens")] = pydantic.Field(
default=None
)
diff --git a/src/vapi/types/open_ai_model_fallback_models_item.py b/src/vapi/types/open_ai_model_fallback_models_item.py
index ce6a039..1a57a5d 100644
--- a/src/vapi/types/open_ai_model_fallback_models_item.py
+++ b/src/vapi/types/open_ai_model_fallback_models_item.py
@@ -4,11 +4,13 @@
OpenAiModelFallbackModelsItem = typing.Union[
typing.Literal[
+ "gpt-4o-realtime-preview-2024-10-01",
"gpt-4o-mini",
"gpt-4o-mini-2024-07-18",
"gpt-4o",
"gpt-4o-2024-05-13",
"gpt-4o-2024-08-06",
+ "gpt-4o-2024-11-20",
"gpt-4-turbo",
"gpt-4-turbo-2024-04-09",
"gpt-4-turbo-preview",
diff --git a/src/vapi/types/open_ai_model_model.py b/src/vapi/types/open_ai_model_model.py
index b8d64e5..3c0648d 100644
--- a/src/vapi/types/open_ai_model_model.py
+++ b/src/vapi/types/open_ai_model_model.py
@@ -4,11 +4,13 @@
OpenAiModelModel = typing.Union[
typing.Literal[
+ "gpt-4o-realtime-preview-2024-10-01",
"gpt-4o-mini",
"gpt-4o-mini-2024-07-18",
"gpt-4o",
"gpt-4o-2024-05-13",
"gpt-4o-2024-08-06",
+ "gpt-4o-2024-11-20",
"gpt-4-turbo",
"gpt-4-turbo-2024-04-09",
"gpt-4-turbo-preview",
diff --git a/src/vapi/types/open_ai_voice.py b/src/vapi/types/open_ai_voice.py
index 5866ae4..bcc24cb 100644
--- a/src/vapi/types/open_ai_voice.py
+++ b/src/vapi/types/open_ai_voice.py
@@ -1,25 +1,17 @@
# This file was auto-generated by Fern from our API Definition.
from ..core.pydantic_utilities import UniversalBaseModel
-import typing_extensions
import typing
-from ..core.serialization import FieldMetadata
import pydantic
+import typing_extensions
from .open_ai_voice_id import OpenAiVoiceId
+from ..core.serialization import FieldMetadata
from .chunk_plan import ChunkPlan
+from .fallback_plan import FallbackPlan
from ..core.pydantic_utilities import IS_PYDANTIC_V2
class OpenAiVoice(UniversalBaseModel):
- filler_injection_enabled: typing_extensions.Annotated[
- typing.Optional[bool], FieldMetadata(alias="fillerInjectionEnabled")
- ] = pydantic.Field(default=None)
- """
- This determines whether fillers are injected into the model output before inputting it into the voice provider.
-
- Default `false` because you can achieve better results with prompting the model.
- """
-
provider: typing.Literal["openai"] = pydantic.Field(default="openai")
"""
This is the voice provider that will be used.
@@ -28,6 +20,7 @@ class OpenAiVoice(UniversalBaseModel):
voice_id: typing_extensions.Annotated[OpenAiVoiceId, FieldMetadata(alias="voiceId")] = pydantic.Field()
"""
This is the provider-specific ID that will be used.
+ Please note that ash, ballad, coral, sage, and verse may only be used with the `gpt-4o-realtime-preview-2024-10-01` model.
"""
speed: typing.Optional[float] = pydantic.Field(default=None)
@@ -42,6 +35,13 @@ class OpenAiVoice(UniversalBaseModel):
This is the plan for chunking the model output before it is sent to the voice provider.
"""
+ fallback_plan: typing_extensions.Annotated[typing.Optional[FallbackPlan], FieldMetadata(alias="fallbackPlan")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the plan for voice provider fallbacks in the event that the primary voice provider fails.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/open_ai_voice_id.py b/src/vapi/types/open_ai_voice_id.py
index 595f327..e87cd87 100644
--- a/src/vapi/types/open_ai_voice_id.py
+++ b/src/vapi/types/open_ai_voice_id.py
@@ -2,4 +2,7 @@
import typing
-OpenAiVoiceId = typing.Union[typing.Literal["alloy", "echo", "fable", "onyx", "nova", "shimmer"], typing.Any]
+OpenAiVoiceId = typing.Union[
+ typing.Literal["alloy", "echo", "fable", "onyx", "nova", "shimmer", "ash", "ballad", "coral", "sage", "verse"],
+ typing.Any,
+]
diff --git a/src/vapi/types/open_router_credential.py b/src/vapi/types/open_router_credential.py
index fb8650a..432b284 100644
--- a/src/vapi/types/open_router_credential.py
+++ b/src/vapi/types/open_router_credential.py
@@ -36,6 +36,11 @@ class OpenRouterCredential(UniversalBaseModel):
This is the ISO 8601 date-time string of when the assistant was last updated.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/open_router_model.py b/src/vapi/types/open_router_model.py
index 3ea1926..8d18ea1 100644
--- a/src/vapi/types/open_router_model.py
+++ b/src/vapi/types/open_router_model.py
@@ -7,7 +7,7 @@
from .open_router_model_tools_item import OpenRouterModelToolsItem
import typing_extensions
from ..core.serialization import FieldMetadata
-from .knowledge_base import KnowledgeBase
+from .create_custom_knowledge_base_dto import CreateCustomKnowledgeBaseDto
from ..core.pydantic_utilities import IS_PYDANTIC_V2
@@ -33,6 +33,20 @@ class OpenRouterModel(UniversalBaseModel):
Both `tools` and `toolIds` can be used together.
"""
+ knowledge_base: typing_extensions.Annotated[
+ typing.Optional[CreateCustomKnowledgeBaseDto], FieldMetadata(alias="knowledgeBase")
+ ] = pydantic.Field(default=None)
+ """
+ These are the options for the knowledge base.
+ """
+
+ knowledge_base_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="knowledgeBaseId")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the ID of the knowledge base the model will use.
+ """
+
provider: typing.Literal["openrouter"] = "openrouter"
model: str = pydantic.Field()
"""
@@ -44,13 +58,6 @@ class OpenRouterModel(UniversalBaseModel):
This is the temperature that will be used for calls. Default is 0 to leverage caching for lower latency.
"""
- knowledge_base: typing_extensions.Annotated[
- typing.Optional[KnowledgeBase], FieldMetadata(alias="knowledgeBase")
- ] = pydantic.Field(default=None)
- """
- These are the options for the knowledge base.
- """
-
max_tokens: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="maxTokens")] = pydantic.Field(
default=None
)
diff --git a/src/vapi/types/org.py b/src/vapi/types/org.py
index 2b7fc66..df82819 100644
--- a/src/vapi/types/org.py
+++ b/src/vapi/types/org.py
@@ -5,8 +5,10 @@
import typing
from ..core.serialization import FieldMetadata
import pydantic
+from .subscription import Subscription
import datetime as dt
from .org_plan import OrgPlan
+from .org_channel import OrgChannel
from ..core.pydantic_utilities import IS_PYDANTIC_V2
@@ -20,6 +22,14 @@ class Org(UniversalBaseModel):
This is due to the compliance requirements of HIPAA. Other providers may not meet these requirements.
"""
+ subscription: typing.Optional[Subscription] = None
+ subscription_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="subscriptionId")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the ID of the subscription the org belongs to.
+ """
+
id: str = pydantic.Field()
"""
This is the unique identifier for the org.
@@ -80,6 +90,11 @@ class Org(UniversalBaseModel):
This is the name of the org. This is just for your own reference.
"""
+ channel: typing.Optional[OrgChannel] = pydantic.Field(default=None)
+ """
+ This is the channel of the org. There is the cluster the API traffic for the org will be directed.
+ """
+
billing_limit: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="billingLimit")] = (
pydantic.Field(default=None)
)
diff --git a/src/vapi/types/org_channel.py b/src/vapi/types/org_channel.py
new file mode 100644
index 0000000..463346b
--- /dev/null
+++ b/src/vapi/types/org_channel.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+OrgChannel = typing.Union[typing.Literal["default", "weekly"], typing.Any]
diff --git a/src/vapi/types/org_with_org_user.py b/src/vapi/types/org_with_org_user.py
new file mode 100644
index 0000000..79e9754
--- /dev/null
+++ b/src/vapi/types/org_with_org_user.py
@@ -0,0 +1,139 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing_extensions
+import typing
+from ..core.serialization import FieldMetadata
+import pydantic
+from .subscription import Subscription
+import datetime as dt
+from .org_plan import OrgPlan
+from .org_with_org_user_channel import OrgWithOrgUserChannel
+from .org_with_org_user_role import OrgWithOrgUserRole
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class OrgWithOrgUser(UniversalBaseModel):
+ hipaa_enabled: typing_extensions.Annotated[typing.Optional[bool], FieldMetadata(alias="hipaaEnabled")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ When this is enabled, no logs, recordings, or transcriptions will be stored. At the end of the call, you will still receive an end-of-call-report message to store on your server. Defaults to false.
+ When HIPAA is enabled, only OpenAI/Custom LLM or Azure Providers will be available for LLM and Voice respectively.
+ This is due to the compliance requirements of HIPAA. Other providers may not meet these requirements.
+ """
+
+ subscription: typing.Optional[Subscription] = None
+ subscription_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="subscriptionId")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the ID of the subscription the org belongs to.
+ """
+
+ id: str = pydantic.Field()
+ """
+ This is the unique identifier for the org.
+ """
+
+ created_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="createdAt")] = pydantic.Field()
+ """
+ This is the ISO 8601 date-time string of when the org was created.
+ """
+
+ updated_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="updatedAt")] = pydantic.Field()
+ """
+ This is the ISO 8601 date-time string of when the org was last updated.
+ """
+
+ stripe_customer_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="stripeCustomerId")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the Stripe customer for the org.
+ """
+
+ stripe_subscription_id: typing_extensions.Annotated[
+ typing.Optional[str], FieldMetadata(alias="stripeSubscriptionId")
+ ] = pydantic.Field(default=None)
+ """
+ This is the subscription for the org.
+ """
+
+ stripe_subscription_item_id: typing_extensions.Annotated[
+ typing.Optional[str], FieldMetadata(alias="stripeSubscriptionItemId")
+ ] = pydantic.Field(default=None)
+ """
+ This is the subscription's subscription item.
+ """
+
+ stripe_subscription_current_period_start: typing_extensions.Annotated[
+ typing.Optional[dt.datetime], FieldMetadata(alias="stripeSubscriptionCurrentPeriodStart")
+ ] = pydantic.Field(default=None)
+ """
+ This is the subscription's current period start.
+ """
+
+ stripe_subscription_status: typing_extensions.Annotated[
+ typing.Optional[str], FieldMetadata(alias="stripeSubscriptionStatus")
+ ] = pydantic.Field(default=None)
+ """
+ This is the subscription's status.
+ """
+
+ plan: typing.Optional[OrgPlan] = pydantic.Field(default=None)
+ """
+ This is the plan for the org.
+ """
+
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of the org. This is just for your own reference.
+ """
+
+ channel: typing.Optional[OrgWithOrgUserChannel] = pydantic.Field(default=None)
+ """
+ This is the channel of the org. There is the cluster the API traffic for the org will be directed.
+ """
+
+ billing_limit: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="billingLimit")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the monthly billing limit for the org. To go beyond $1000/mo, please contact us at support@vapi.ai.
+ """
+
+ server_url: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="serverUrl")] = pydantic.Field(
+ default=None
+ )
+ """
+ This is the URL Vapi will communicate with via HTTP GET and POST Requests. This is used for retrieving context, function calling, and end-of-call reports.
+
+ All requests will be sent with the call object among other things relevant to that message. You can find more details in the Server URL documentation.
+ """
+
+ server_url_secret: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="serverUrlSecret")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the secret you can set that Vapi will send with every request to your server. Will be sent as a header called x-vapi-secret.
+ """
+
+ concurrency_limit: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="concurrencyLimit")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the concurrency limit for the org. This is the maximum number of calls that can be active at any given time. To go beyond 10, please contact us at support@vapi.ai.
+ """
+
+ invited_by_user_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="invitedByUserId")] = None
+ role: typing.Optional[OrgWithOrgUserRole] = None
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/org_with_org_user_channel.py b/src/vapi/types/org_with_org_user_channel.py
new file mode 100644
index 0000000..61ff8ca
--- /dev/null
+++ b/src/vapi/types/org_with_org_user_channel.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+OrgWithOrgUserChannel = typing.Union[typing.Literal["default", "weekly"], typing.Any]
diff --git a/src/vapi/types/org_with_org_user_role.py b/src/vapi/types/org_with_org_user_role.py
new file mode 100644
index 0000000..d10904b
--- /dev/null
+++ b/src/vapi/types/org_with_org_user_role.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+OrgWithOrgUserRole = typing.Union[typing.Literal["admin", "editor", "viewer"], typing.Any]
diff --git a/src/vapi/types/payment.py b/src/vapi/types/payment.py
new file mode 100644
index 0000000..c0af23d
--- /dev/null
+++ b/src/vapi/types/payment.py
@@ -0,0 +1,98 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import pydantic
+import typing_extensions
+import typing
+from ..core.serialization import FieldMetadata
+from .payment_status import PaymentStatus
+import datetime as dt
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class Payment(UniversalBaseModel):
+ id: str = pydantic.Field()
+ """
+ This is the id of the payment
+ """
+
+ org_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="orgId")] = pydantic.Field(
+ default=None
+ )
+ """
+ This is the id of the org
+ """
+
+ cost: str = pydantic.Field()
+ """
+ This is the total cost of the payment, which is the sum of all the costs in the costs object.
+
+ Note: this is a string to avoid floating point precision issues.
+ """
+
+ costs: typing.List[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field()
+ """
+ This is the itemized breakdown of payment amounts
+ """
+
+ status: PaymentStatus = pydantic.Field()
+ """
+ This is the status of the payment
+ """
+
+ created_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="createdAt")] = pydantic.Field()
+ """
+ This is the timestamp when the payment was created
+ """
+
+ updated_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="updatedAt")] = pydantic.Field()
+ """
+ This is the timestamp when the payment was last updated
+ """
+
+ is_auto_reload: typing_extensions.Annotated[bool, FieldMetadata(alias="isAutoReload")] = pydantic.Field()
+ """
+ This indicates if this payment was automatically generated by the auto-reload feature
+ """
+
+ subscription_id: typing_extensions.Annotated[str, FieldMetadata(alias="subscriptionId")] = pydantic.Field()
+ """
+ This is the id of the subscription the payment belongs to
+ """
+
+ call_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="callId")] = pydantic.Field(
+ default=None
+ )
+ """
+ This is the id of the call
+ """
+
+ phone_number_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="phoneNumberId")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the id of the purchased phone number
+ """
+
+ stripe_payment_intent_id: typing_extensions.Annotated[
+ typing.Optional[str], FieldMetadata(alias="stripePaymentIntentId")
+ ] = pydantic.Field(default=None)
+ """
+ This is the id of the associated stripe payment intent
+ """
+
+ stripe_invoice_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="stripeInvoiceId")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the id of the associated stripe invoice
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/knowledge_base.py b/src/vapi/types/payment_retry_dto.py
similarity index 66%
rename from src/vapi/types/knowledge_base.py
rename to src/vapi/types/payment_retry_dto.py
index e258bf2..bb153f3 100644
--- a/src/vapi/types/knowledge_base.py
+++ b/src/vapi/types/payment_retry_dto.py
@@ -1,17 +1,18 @@
# This file was auto-generated by Fern from our API Definition.
from ..core.pydantic_utilities import UniversalBaseModel
-import typing
import typing_extensions
from ..core.serialization import FieldMetadata
-from ..core.pydantic_utilities import IS_PYDANTIC_V2
import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+import typing
-class KnowledgeBase(UniversalBaseModel):
- provider: typing.Literal["canonical"] = "canonical"
- top_k: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="topK")] = None
- file_ids: typing_extensions.Annotated[typing.List[str], FieldMetadata(alias="fileIds")]
+class PaymentRetryDto(UniversalBaseModel):
+ payment_id: typing_extensions.Annotated[str, FieldMetadata(alias="paymentId")] = pydantic.Field()
+ """
+ This is the payment ID to retry.
+ """
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
diff --git a/src/vapi/types/payment_status.py b/src/vapi/types/payment_status.py
new file mode 100644
index 0000000..b2f555a
--- /dev/null
+++ b/src/vapi/types/payment_status.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+PaymentStatus = typing.Union[typing.Literal["past-due", "pending", "finalized", "refunded"], typing.Any]
diff --git a/src/vapi/types/payments_paginated_response.py b/src/vapi/types/payments_paginated_response.py
new file mode 100644
index 0000000..9f56474
--- /dev/null
+++ b/src/vapi/types/payments_paginated_response.py
@@ -0,0 +1,22 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+from .payment import Payment
+from .pagination_meta import PaginationMeta
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+import pydantic
+
+
+class PaymentsPaginatedResponse(UniversalBaseModel):
+ results: typing.List[Payment]
+ metadata: PaginationMeta
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/perplexity_ai_credential.py b/src/vapi/types/perplexity_ai_credential.py
index 13963c5..be3b94b 100644
--- a/src/vapi/types/perplexity_ai_credential.py
+++ b/src/vapi/types/perplexity_ai_credential.py
@@ -36,6 +36,11 @@ class PerplexityAiCredential(UniversalBaseModel):
This is the ISO 8601 date-time string of when the assistant was last updated.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/perplexity_ai_model.py b/src/vapi/types/perplexity_ai_model.py
index f69a17e..1f5db33 100644
--- a/src/vapi/types/perplexity_ai_model.py
+++ b/src/vapi/types/perplexity_ai_model.py
@@ -7,7 +7,7 @@
from .perplexity_ai_model_tools_item import PerplexityAiModelToolsItem
import typing_extensions
from ..core.serialization import FieldMetadata
-from .knowledge_base import KnowledgeBase
+from .create_custom_knowledge_base_dto import CreateCustomKnowledgeBaseDto
from ..core.pydantic_utilities import IS_PYDANTIC_V2
@@ -33,6 +33,20 @@ class PerplexityAiModel(UniversalBaseModel):
Both `tools` and `toolIds` can be used together.
"""
+ knowledge_base: typing_extensions.Annotated[
+ typing.Optional[CreateCustomKnowledgeBaseDto], FieldMetadata(alias="knowledgeBase")
+ ] = pydantic.Field(default=None)
+ """
+ These are the options for the knowledge base.
+ """
+
+ knowledge_base_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="knowledgeBaseId")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the ID of the knowledge base the model will use.
+ """
+
provider: typing.Literal["perplexity-ai"] = "perplexity-ai"
model: str = pydantic.Field()
"""
@@ -44,13 +58,6 @@ class PerplexityAiModel(UniversalBaseModel):
This is the temperature that will be used for calls. Default is 0 to leverage caching for lower latency.
"""
- knowledge_base: typing_extensions.Annotated[
- typing.Optional[KnowledgeBase], FieldMetadata(alias="knowledgeBase")
- ] = pydantic.Field(default=None)
- """
- These are the options for the knowledge base.
- """
-
max_tokens: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="maxTokens")] = pydantic.Field(
default=None
)
diff --git a/src/vapi/types/phone_number_paginated_response.py b/src/vapi/types/phone_number_paginated_response.py
new file mode 100644
index 0000000..1bf42a3
--- /dev/null
+++ b/src/vapi/types/phone_number_paginated_response.py
@@ -0,0 +1,29 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+from .phone_number_paginated_response_results_item import PhoneNumberPaginatedResponseResultsItem
+import pydantic
+from .pagination_meta import PaginationMeta
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class PhoneNumberPaginatedResponse(UniversalBaseModel):
+ results: typing.List[PhoneNumberPaginatedResponseResultsItem] = pydantic.Field()
+ """
+ A list of phone numbers, which can be of any provider type.
+ """
+
+ metadata: PaginationMeta = pydantic.Field()
+ """
+ Metadata about the pagination.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/phone_number_paginated_response_results_item.py b/src/vapi/types/phone_number_paginated_response_results_item.py
new file mode 100644
index 0000000..aa8d60c
--- /dev/null
+++ b/src/vapi/types/phone_number_paginated_response_results_item.py
@@ -0,0 +1,11 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+from .byo_phone_number import ByoPhoneNumber
+from .twilio_phone_number import TwilioPhoneNumber
+from .vonage_phone_number import VonagePhoneNumber
+from .vapi_phone_number import VapiPhoneNumber
+
+PhoneNumberPaginatedResponseResultsItem = typing.Union[
+ ByoPhoneNumber, TwilioPhoneNumber, VonagePhoneNumber, VapiPhoneNumber
+]
diff --git a/src/vapi/types/play_ht_credential.py b/src/vapi/types/play_ht_credential.py
index dbf01f1..3dd3241 100644
--- a/src/vapi/types/play_ht_credential.py
+++ b/src/vapi/types/play_ht_credential.py
@@ -36,6 +36,11 @@ class PlayHtCredential(UniversalBaseModel):
This is the ISO 8601 date-time string of when the assistant was last updated.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
user_id: typing_extensions.Annotated[str, FieldMetadata(alias="userId")]
if IS_PYDANTIC_V2:
diff --git a/src/vapi/types/play_ht_voice.py b/src/vapi/types/play_ht_voice.py
index f8fff11..e3cb41d 100644
--- a/src/vapi/types/play_ht_voice.py
+++ b/src/vapi/types/play_ht_voice.py
@@ -1,26 +1,20 @@
# This file was auto-generated by Fern from our API Definition.
from ..core.pydantic_utilities import UniversalBaseModel
-import typing_extensions
import typing
-from ..core.serialization import FieldMetadata
import pydantic
+import typing_extensions
from .play_ht_voice_id import PlayHtVoiceId
+from ..core.serialization import FieldMetadata
from .play_ht_voice_emotion import PlayHtVoiceEmotion
+from .play_ht_voice_model import PlayHtVoiceModel
+from .play_ht_voice_language import PlayHtVoiceLanguage
from .chunk_plan import ChunkPlan
+from .fallback_plan import FallbackPlan
from ..core.pydantic_utilities import IS_PYDANTIC_V2
class PlayHtVoice(UniversalBaseModel):
- filler_injection_enabled: typing_extensions.Annotated[
- typing.Optional[bool], FieldMetadata(alias="fillerInjectionEnabled")
- ] = pydantic.Field(default=None)
- """
- This determines whether fillers are injected into the model output before inputting it into the voice provider.
-
- Default `false` because you can achieve better results with prompting the model.
- """
-
provider: typing.Literal["playht"] = pydantic.Field(default="playht")
"""
This is the voice provider that will be used.
@@ -67,6 +61,16 @@ class PlayHtVoice(UniversalBaseModel):
A number between 1 and 2. This number influences how closely the generated speech adheres to the input text. Use lower values to create more fluid speech, but with a higher chance of deviating from the input text. Higher numbers will make the generated speech more accurate to the input text, ensuring that the words spoken align closely with the provided text.
"""
+ model: typing.Optional[PlayHtVoiceModel] = pydantic.Field(default=None)
+ """
+ Playht voice model/engine to use.
+ """
+
+ language: typing.Optional[PlayHtVoiceLanguage] = pydantic.Field(default=None)
+ """
+ The language to use for the speech.
+ """
+
chunk_plan: typing_extensions.Annotated[typing.Optional[ChunkPlan], FieldMetadata(alias="chunkPlan")] = (
pydantic.Field(default=None)
)
@@ -74,6 +78,13 @@ class PlayHtVoice(UniversalBaseModel):
This is the plan for chunking the model output before it is sent to the voice provider.
"""
+ fallback_plan: typing_extensions.Annotated[typing.Optional[FallbackPlan], FieldMetadata(alias="fallbackPlan")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the plan for voice provider fallbacks in the event that the primary voice provider fails.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/play_ht_voice_language.py b/src/vapi/types/play_ht_voice_language.py
new file mode 100644
index 0000000..cffb398
--- /dev/null
+++ b/src/vapi/types/play_ht_voice_language.py
@@ -0,0 +1,46 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+PlayHtVoiceLanguage = typing.Union[
+ typing.Literal[
+ "afrikaans",
+ "albanian",
+ "amharic",
+ "arabic",
+ "bengali",
+ "bulgarian",
+ "catalan",
+ "croatian",
+ "czech",
+ "danish",
+ "dutch",
+ "english",
+ "french",
+ "galician",
+ "german",
+ "greek",
+ "hebrew",
+ "hindi",
+ "hungarian",
+ "indonesian",
+ "italian",
+ "japanese",
+ "korean",
+ "malay",
+ "mandarin",
+ "polish",
+ "portuguese",
+ "russian",
+ "serbian",
+ "spanish",
+ "swedish",
+ "tagalog",
+ "thai",
+ "turkish",
+ "ukrainian",
+ "urdu",
+ "xhosa",
+ ],
+ typing.Any,
+]
diff --git a/src/vapi/types/play_ht_voice_model.py b/src/vapi/types/play_ht_voice_model.py
new file mode 100644
index 0000000..c45b1e6
--- /dev/null
+++ b/src/vapi/types/play_ht_voice_model.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+PlayHtVoiceModel = typing.Union[typing.Literal["PlayHT2.0", "PlayHT2.0-turbo", "Play3.0-mini"], typing.Any]
diff --git a/src/vapi/types/regex_option.py b/src/vapi/types/regex_option.py
index d47d751..a06a232 100644
--- a/src/vapi/types/regex_option.py
+++ b/src/vapi/types/regex_option.py
@@ -11,8 +11,7 @@ class RegexOption(UniversalBaseModel):
type: RegexOptionType = pydantic.Field()
"""
This is the type of the regex option. Options are:
-
- - `ignore-case`: Ignores the case of the text being matched.
+ - `ignore-case`: Ignores the case of the text being matched. Add
- `whole-word`: Matches whole words only.
- `multi-line`: Matches across multiple lines.
"""
diff --git a/src/vapi/types/regex_replacement.py b/src/vapi/types/regex_replacement.py
index ea5c525..bf0dd10 100644
--- a/src/vapi/types/regex_replacement.py
+++ b/src/vapi/types/regex_replacement.py
@@ -13,7 +13,6 @@ class RegexReplacement(UniversalBaseModel):
This is the regex replacement type. You can use this to replace a word or phrase that matches a pattern.
Usage:
-
- Replace all numbers with "some number": { type: 'regex', regex: '\\d+', value: 'some number' }
- Replace email addresses with "[EMAIL]": { type: 'regex', regex: '\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Z|a-z]{2,}\\b', value: '[EMAIL]' }
- Replace phone numbers with a formatted version: { type: 'regex', regex: '(\\d{3})(\\d{3})(\\d{4})', value: '($1) $2-$3' }
@@ -24,11 +23,17 @@ class RegexReplacement(UniversalBaseModel):
regex: str = pydantic.Field()
"""
This is the regex pattern to replace.
+
+ Note:
+ - This works by using the `string.replace` method in Node.JS. Eg. `"hello there".replace(/hello/g, "hi")` will return `"hi there"`.
+
+ Hot tip:
+ - In JavaScript, escape `\` when sending the regex pattern. Eg. `"hello\sthere"` will be sent over the wire as `"hellosthere"`. Send `"hello\\sthere"` instead.
"""
options: typing.Optional[typing.List[RegexOption]] = pydantic.Field(default=None)
"""
- These are the options for the regex replacement. Default all options are disabled.
+ These are the options for the regex replacement. Defaults to all disabled.
@default []
"""
diff --git a/src/vapi/types/rime_ai_credential.py b/src/vapi/types/rime_ai_credential.py
index bb8acd7..206b6a9 100644
--- a/src/vapi/types/rime_ai_credential.py
+++ b/src/vapi/types/rime_ai_credential.py
@@ -36,6 +36,11 @@ class RimeAiCredential(UniversalBaseModel):
This is the ISO 8601 date-time string of when the assistant was last updated.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/rime_ai_voice.py b/src/vapi/types/rime_ai_voice.py
index 8c8289a..d9b8a93 100644
--- a/src/vapi/types/rime_ai_voice.py
+++ b/src/vapi/types/rime_ai_voice.py
@@ -1,26 +1,18 @@
# This file was auto-generated by Fern from our API Definition.
from ..core.pydantic_utilities import UniversalBaseModel
-import typing_extensions
import typing
-from ..core.serialization import FieldMetadata
import pydantic
+import typing_extensions
from .rime_ai_voice_id import RimeAiVoiceId
+from ..core.serialization import FieldMetadata
from .rime_ai_voice_model import RimeAiVoiceModel
from .chunk_plan import ChunkPlan
+from .fallback_plan import FallbackPlan
from ..core.pydantic_utilities import IS_PYDANTIC_V2
class RimeAiVoice(UniversalBaseModel):
- filler_injection_enabled: typing_extensions.Annotated[
- typing.Optional[bool], FieldMetadata(alias="fillerInjectionEnabled")
- ] = pydantic.Field(default=None)
- """
- This determines whether fillers are injected into the model output before inputting it into the voice provider.
-
- Default `false` because you can achieve better results with prompting the model.
- """
-
provider: typing.Literal["rime-ai"] = pydantic.Field(default="rime-ai")
"""
This is the voice provider that will be used.
@@ -48,6 +40,13 @@ class RimeAiVoice(UniversalBaseModel):
This is the plan for chunking the model output before it is sent to the voice provider.
"""
+ fallback_plan: typing_extensions.Annotated[typing.Optional[FallbackPlan], FieldMetadata(alias="fallbackPlan")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the plan for voice provider fallbacks in the event that the primary voice provider fails.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/rule_based_condition.py b/src/vapi/types/rule_based_condition.py
index 376a87b..3947d86 100644
--- a/src/vapi/types/rule_based_condition.py
+++ b/src/vapi/types/rule_based_condition.py
@@ -27,7 +27,6 @@ class RuleBasedCondition(UniversalBaseModel):
This is the left side of the operation.
You can reference any variable in the context of the current block execution (step):
-
- "{{output.your-property-name}}" for current step's output
- "{{input.your-property-name}}" for current step's input
- "{{your-step-name.output.your-property-name}}" for another step's output (in the same workflow; read caveat #1)
@@ -38,18 +37,15 @@ class RuleBasedCondition(UniversalBaseModel):
- "{{global.your-property-name}}" for the global context
Or, you can use a constant:
-
- "1"
- "text"
- "true"
- "false"
Or, you can mix and match with string interpolation:
-
- "{{your-property-name}}-{{input.your-property-name-2}}-1"
Caveats:
-
1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.input/output.propertyName}} will reference the latest usage of the step.
2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.input/output.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow with steps.
"""
@@ -59,7 +55,6 @@ class RuleBasedCondition(UniversalBaseModel):
This is the right side of the operation.
You can reference any variable in the context of the current block execution (step):
-
- "{{output.your-property-name}}" for current step's output
- "{{input.your-property-name}}" for current step's input
- "{{your-step-name.output.your-property-name}}" for another step's output (in the same workflow; read caveat #1)
@@ -70,18 +65,15 @@ class RuleBasedCondition(UniversalBaseModel):
- "{{global.your-property-name}}" for the global context
Or, you can use a constant:
-
- "1"
- "text"
- "true"
- "false"
Or, you can mix and match with string interpolation:
-
- "{{your-property-name}}-{{input.your-property-name-2}}-1"
Caveats:
-
1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.input/output.propertyName}} will reference the latest usage of the step.
2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.input/output.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow with steps.
"""
diff --git a/src/vapi/types/runpod_credential.py b/src/vapi/types/runpod_credential.py
index 3a163e7..6648fea 100644
--- a/src/vapi/types/runpod_credential.py
+++ b/src/vapi/types/runpod_credential.py
@@ -36,6 +36,11 @@ class RunpodCredential(UniversalBaseModel):
This is the ISO 8601 date-time string of when the assistant was last updated.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/s_3_credential.py b/src/vapi/types/s_3_credential.py
index 44f22cc..1710369 100644
--- a/src/vapi/types/s_3_credential.py
+++ b/src/vapi/types/s_3_credential.py
@@ -62,6 +62,11 @@ class S3Credential(UniversalBaseModel):
This is the ISO 8601 date-time string of when the assistant was last updated.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/server.py b/src/vapi/types/server.py
index 4492e1c..a190309 100644
--- a/src/vapi/types/server.py
+++ b/src/vapi/types/server.py
@@ -30,6 +30,13 @@ class Server(UniversalBaseModel):
Same precedence logic as server.
"""
+ headers: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field(default=None)
+ """
+ These are the custom headers to include in the request sent to your server.
+
+ Each key-value pair represents a header name and its value.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/server_message_assistant_request.py b/src/vapi/types/server_message_assistant_request.py
index 57d8173..0024863 100644
--- a/src/vapi/types/server_message_assistant_request.py
+++ b/src/vapi/types/server_message_assistant_request.py
@@ -26,7 +26,6 @@ class ServerMessageAssistantRequest(UniversalBaseModel):
This is the phone number associated with the call.
This matches one of the following:
-
- `call.phoneNumber`,
- `call.phoneNumberId`.
"""
@@ -53,7 +52,6 @@ class ServerMessageAssistantRequest(UniversalBaseModel):
This is the assistant that is currently active. This is provided for convenience.
This matches one of the following:
-
- `call.assistant`,
- `call.assistantId`,
- `call.squad[n].assistant`,
@@ -67,7 +65,6 @@ class ServerMessageAssistantRequest(UniversalBaseModel):
This is the customer associated with the call.
This matches one of the following:
-
- `call.customer`,
- `call.customerId`.
"""
diff --git a/src/vapi/types/server_message_conversation_update.py b/src/vapi/types/server_message_conversation_update.py
index 1ec4410..3a62bc3 100644
--- a/src/vapi/types/server_message_conversation_update.py
+++ b/src/vapi/types/server_message_conversation_update.py
@@ -28,7 +28,6 @@ class ServerMessageConversationUpdate(UniversalBaseModel):
This is the phone number associated with the call.
This matches one of the following:
-
- `call.phoneNumber`,
- `call.phoneNumberId`.
"""
@@ -67,7 +66,6 @@ class ServerMessageConversationUpdate(UniversalBaseModel):
This is the assistant that is currently active. This is provided for convenience.
This matches one of the following:
-
- `call.assistant`,
- `call.assistantId`,
- `call.squad[n].assistant`,
@@ -81,7 +79,6 @@ class ServerMessageConversationUpdate(UniversalBaseModel):
This is the customer associated with the call.
This matches one of the following:
-
- `call.customer`,
- `call.customerId`.
"""
diff --git a/src/vapi/types/server_message_end_of_call_report.py b/src/vapi/types/server_message_end_of_call_report.py
index bfc105c..0a7b580 100644
--- a/src/vapi/types/server_message_end_of_call_report.py
+++ b/src/vapi/types/server_message_end_of_call_report.py
@@ -30,7 +30,6 @@ class ServerMessageEndOfCallReport(UniversalBaseModel):
This is the phone number associated with the call.
This matches one of the following:
-
- `call.phoneNumber`,
- `call.phoneNumberId`.
"""
@@ -72,7 +71,6 @@ class ServerMessageEndOfCallReport(UniversalBaseModel):
This is the assistant that is currently active. This is provided for convenience.
This matches one of the following:
-
- `call.assistant`,
- `call.assistantId`,
- `call.squad[n].assistant`,
@@ -86,7 +84,6 @@ class ServerMessageEndOfCallReport(UniversalBaseModel):
This is the customer associated with the call.
This matches one of the following:
-
- `call.customer`,
- `call.customerId`.
"""
diff --git a/src/vapi/types/server_message_end_of_call_report_ended_reason.py b/src/vapi/types/server_message_end_of_call_report_ended_reason.py
index 970a625..e6a3189 100644
--- a/src/vapi/types/server_message_end_of_call_report_ended_reason.py
+++ b/src/vapi/types/server_message_end_of_call_report_ended_reason.py
@@ -4,32 +4,24 @@
ServerMessageEndOfCallReportEndedReason = typing.Union[
typing.Literal[
- "assistant-error",
- "assistant-not-found",
- "db-error",
- "no-server-available",
- "license-check-failed",
- "pipeline-error-openai-llm-failed",
- "pipeline-error-azure-openai-llm-failed",
- "pipeline-error-groq-llm-failed",
- "pipeline-error-anthropic-llm-failed",
- "pipeline-error-vapi-llm-failed",
- "pipeline-error-vapi-400-bad-request-validation-failed",
- "pipeline-error-vapi-401-unauthorized",
- "pipeline-error-vapi-403-model-access-denied",
- "pipeline-error-vapi-429-exceeded-quota",
- "pipeline-error-vapi-500-server-error",
"pipeline-error-openai-voice-failed",
"pipeline-error-cartesia-voice-failed",
- "pipeline-error-deepgram-transcriber-failed",
"pipeline-error-deepgram-voice-failed",
- "pipeline-error-gladia-transcriber-failed",
"pipeline-error-eleven-labs-voice-failed",
"pipeline-error-playht-voice-failed",
"pipeline-error-lmnt-voice-failed",
"pipeline-error-azure-voice-failed",
"pipeline-error-rime-ai-voice-failed",
"pipeline-error-neets-voice-failed",
+ "db-error",
+ "assistant-not-found",
+ "license-check-failed",
+ "pipeline-error-vapi-llm-failed",
+ "pipeline-error-vapi-400-bad-request-validation-failed",
+ "pipeline-error-vapi-401-unauthorized",
+ "pipeline-error-vapi-403-model-access-denied",
+ "pipeline-error-vapi-429-exceeded-quota",
+ "pipeline-error-vapi-500-server-error",
"pipeline-no-available-model",
"worker-shutdown",
"unknown-error",
@@ -42,6 +34,16 @@
"vapifault-transport-never-connected",
"vapifault-web-call-worker-setup-failed",
"vapifault-transport-connected-but-call-not-active",
+ "vapifault-call-started-but-connection-to-transport-missing",
+ "pipeline-error-deepgram-transcriber-failed",
+ "pipeline-error-gladia-transcriber-failed",
+ "pipeline-error-assembly-ai-transcriber-failed",
+ "pipeline-error-openai-llm-failed",
+ "pipeline-error-azure-openai-llm-failed",
+ "pipeline-error-groq-llm-failed",
+ "pipeline-error-google-llm-failed",
+ "pipeline-error-xai-llm-failed",
+ "pipeline-error-inflection-ai-llm-failed",
"assistant-not-invalid",
"assistant-not-provided",
"call-start-error-neither-assistant-nor-server-set",
@@ -68,6 +70,21 @@
"pipeline-error-openai-403-model-access-denied",
"pipeline-error-openai-429-exceeded-quota",
"pipeline-error-openai-500-server-error",
+ "pipeline-error-google-400-bad-request-validation-failed",
+ "pipeline-error-google-401-unauthorized",
+ "pipeline-error-google-403-model-access-denied",
+ "pipeline-error-google-429-exceeded-quota",
+ "pipeline-error-google-500-server-error",
+ "pipeline-error-xai-400-bad-request-validation-failed",
+ "pipeline-error-xai-401-unauthorized",
+ "pipeline-error-xai-403-model-access-denied",
+ "pipeline-error-xai-429-exceeded-quota",
+ "pipeline-error-xai-500-server-error",
+ "pipeline-error-inflection-ai-400-bad-request-validation-failed",
+ "pipeline-error-inflection-ai-401-unauthorized",
+ "pipeline-error-inflection-ai-403-model-access-denied",
+ "pipeline-error-inflection-ai-429-exceeded-quota",
+ "pipeline-error-inflection-ai-500-server-error",
"pipeline-error-azure-openai-400-bad-request-validation-failed",
"pipeline-error-azure-openai-401-unauthorized",
"pipeline-error-azure-openai-403-model-access-denied",
@@ -83,6 +100,7 @@
"pipeline-error-anthropic-403-model-access-denied",
"pipeline-error-anthropic-429-exceeded-quota",
"pipeline-error-anthropic-500-server-error",
+ "pipeline-error-anthropic-llm-failed",
"pipeline-error-together-ai-400-bad-request-validation-failed",
"pipeline-error-together-ai-401-unauthorized",
"pipeline-error-together-ai-403-model-access-denied",
@@ -125,12 +143,12 @@
"pipeline-error-custom-llm-429-exceeded-quota",
"pipeline-error-custom-llm-500-server-error",
"pipeline-error-custom-llm-llm-failed",
+ "pipeline-error-custom-voice-failed",
"pipeline-error-cartesia-socket-hang-up",
"pipeline-error-cartesia-requested-payment",
"pipeline-error-cartesia-500-server-error",
"pipeline-error-cartesia-503-server-error",
"pipeline-error-cartesia-522-server-error",
- "pipeline-error-custom-voice-failed",
"pipeline-error-eleven-labs-voice-not-found",
"pipeline-error-eleven-labs-quota-exceeded",
"pipeline-error-eleven-labs-unauthorized-access",
@@ -151,10 +169,12 @@
"pipeline-error-eleven-labs-voice-not-allowed-for-free-users",
"pipeline-error-eleven-labs-500-server-error",
"pipeline-error-eleven-labs-max-character-limit-exceeded",
+ "pipeline-error-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification",
"pipeline-error-playht-request-timed-out",
"pipeline-error-playht-invalid-voice",
"pipeline-error-playht-unexpected-error",
"pipeline-error-playht-out-of-credits",
+ "pipeline-error-playht-invalid-emotion",
"pipeline-error-playht-voice-must-be-a-valid-voice-manifest-uri",
"pipeline-error-playht-401-unauthorized",
"pipeline-error-playht-403-forbidden-out-of-characters",
@@ -162,16 +182,21 @@
"pipeline-error-playht-429-exceeded-quota",
"pipeline-error-playht-502-gateway-error",
"pipeline-error-playht-504-gateway-error",
- "pipeline-error-deepgram-403-model-access-denied",
- "pipeline-error-deepgram-404-not-found",
- "pipeline-error-deepgram-400-no-such-model-language-tier-combination",
- "pipeline-error-deepgram-500-returning-invalid-json",
- "sip-gateway-failed-to-connect-call",
+ "pipeline-error-deepgram-returning-403-model-access-denied",
+ "pipeline-error-deepgram-returning-401-invalid-credentials",
+ "pipeline-error-deepgram-returning-404-not-found",
+ "pipeline-error-deepgram-returning-400-no-such-model-language-tier-combination",
+ "pipeline-error-deepgram-returning-500-invalid-json",
+ "pipeline-error-deepgram-returning-502-network-error",
+ "pipeline-error-deepgram-returning-502-bad-gateway-ehostunreach",
+ "pipeline-error-tavus-video-failed",
+ "pipeline-error-custom-transcriber-failed",
"silence-timed-out",
+ "sip-gateway-failed-to-connect-call",
"twilio-failed-to-connect-call",
"twilio-reported-customer-misdialed",
- "voicemail",
"vonage-rejected",
+ "voicemail",
],
typing.Any,
]
diff --git a/src/vapi/types/server_message_hang.py b/src/vapi/types/server_message_hang.py
index 459e195..ad4b2d8 100644
--- a/src/vapi/types/server_message_hang.py
+++ b/src/vapi/types/server_message_hang.py
@@ -26,7 +26,6 @@ class ServerMessageHang(UniversalBaseModel):
This is the phone number associated with the call.
This matches one of the following:
-
- `call.phoneNumber`,
- `call.phoneNumberId`.
"""
@@ -34,7 +33,6 @@ class ServerMessageHang(UniversalBaseModel):
type: typing.Literal["hang"] = pydantic.Field(default="hang")
"""
This is the type of the message. "hang" is sent when the assistant is hanging due to a delay. The delay can be caused by many factors, such as:
-
- the model is too slow to respond
- the voice is too slow to respond
- the tool call is still waiting for a response from your server
@@ -58,7 +56,6 @@ class ServerMessageHang(UniversalBaseModel):
This is the assistant that is currently active. This is provided for convenience.
This matches one of the following:
-
- `call.assistant`,
- `call.assistantId`,
- `call.squad[n].assistant`,
@@ -72,7 +69,6 @@ class ServerMessageHang(UniversalBaseModel):
This is the customer associated with the call.
This matches one of the following:
-
- `call.customer`,
- `call.customerId`.
"""
diff --git a/src/vapi/types/server_message_knowledge_base_request.py b/src/vapi/types/server_message_knowledge_base_request.py
new file mode 100644
index 0000000..b8f9a57
--- /dev/null
+++ b/src/vapi/types/server_message_knowledge_base_request.py
@@ -0,0 +1,107 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from __future__ import annotations
+from ..core.pydantic_utilities import UniversalBaseModel
+from .callback_step import CallbackStep
+from .create_workflow_block_dto import CreateWorkflowBlockDto
+from .handoff_step import HandoffStep
+import typing_extensions
+import typing
+from .server_message_knowledge_base_request_phone_number import ServerMessageKnowledgeBaseRequestPhoneNumber
+from ..core.serialization import FieldMetadata
+import pydantic
+from .server_message_knowledge_base_request_messages_item import ServerMessageKnowledgeBaseRequestMessagesItem
+from .open_ai_message import OpenAiMessage
+from .artifact import Artifact
+from .create_assistant_dto import CreateAssistantDto
+from .create_customer_dto import CreateCustomerDto
+from .call import Call
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.pydantic_utilities import update_forward_refs
+
+
+class ServerMessageKnowledgeBaseRequest(UniversalBaseModel):
+ phone_number: typing_extensions.Annotated[
+ typing.Optional[ServerMessageKnowledgeBaseRequestPhoneNumber], FieldMetadata(alias="phoneNumber")
+ ] = pydantic.Field(default=None)
+ """
+ This is the phone number associated with the call.
+
+ This matches one of the following:
+ - `call.phoneNumber`,
+ - `call.phoneNumberId`.
+ """
+
+ type: typing.Literal["knowledge-base-request"] = pydantic.Field(default="knowledge-base-request")
+ """
+ This is the type of the message. "knowledge-base-request" is sent to request knowledge base documents. To enable, use `assistant.knowledgeBase.provider=custom-knowledge-base`.
+ """
+
+ messages: typing.Optional[typing.List[ServerMessageKnowledgeBaseRequestMessagesItem]] = pydantic.Field(default=None)
+ """
+ These are the messages that are going to be sent to the `model` right after the `knowledge-base-request` webhook completes.
+ """
+
+ messages_open_ai_formatted: typing_extensions.Annotated[
+ typing.List[OpenAiMessage], FieldMetadata(alias="messagesOpenAIFormatted")
+ ] = pydantic.Field()
+ """
+ This is just `messages` formatted for OpenAI.
+ """
+
+ timestamp: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the ISO-8601 formatted timestamp of when the message was sent.
+ """
+
+ artifact: typing.Optional[Artifact] = pydantic.Field(default=None)
+ """
+ This is a live version of the `call.artifact`.
+
+ This matches what is stored on `call.artifact` after the call.
+ """
+
+ assistant: typing.Optional[CreateAssistantDto] = pydantic.Field(default=None)
+ """
+ This is the assistant that is currently active. This is provided for convenience.
+
+ This matches one of the following:
+ - `call.assistant`,
+ - `call.assistantId`,
+ - `call.squad[n].assistant`,
+ - `call.squad[n].assistantId`,
+ - `call.squadId->[n].assistant`,
+ - `call.squadId->[n].assistantId`.
+ """
+
+ customer: typing.Optional[CreateCustomerDto] = pydantic.Field(default=None)
+ """
+ This is the customer associated with the call.
+
+ This matches one of the following:
+ - `call.customer`,
+ - `call.customerId`.
+ """
+
+ call: typing.Optional[Call] = pydantic.Field(default=None)
+ """
+ This is the call object.
+
+ This matches what was returned in POST /call.
+
+ Note: This might get stale during the call. To get the latest call object, especially after the call is ended, use GET /call/:id.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
+
+
+update_forward_refs(CallbackStep, ServerMessageKnowledgeBaseRequest=ServerMessageKnowledgeBaseRequest)
+update_forward_refs(CreateWorkflowBlockDto, ServerMessageKnowledgeBaseRequest=ServerMessageKnowledgeBaseRequest)
+update_forward_refs(HandoffStep, ServerMessageKnowledgeBaseRequest=ServerMessageKnowledgeBaseRequest)
diff --git a/src/vapi/types/server_message_knowledge_base_request_messages_item.py b/src/vapi/types/server_message_knowledge_base_request_messages_item.py
new file mode 100644
index 0000000..54a7beb
--- /dev/null
+++ b/src/vapi/types/server_message_knowledge_base_request_messages_item.py
@@ -0,0 +1,12 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+from .user_message import UserMessage
+from .system_message import SystemMessage
+from .bot_message import BotMessage
+from .tool_call_message import ToolCallMessage
+from .tool_call_result_message import ToolCallResultMessage
+
+ServerMessageKnowledgeBaseRequestMessagesItem = typing.Union[
+ UserMessage, SystemMessage, BotMessage, ToolCallMessage, ToolCallResultMessage
+]
diff --git a/src/vapi/types/server_message_language_changed_phone_number.py b/src/vapi/types/server_message_knowledge_base_request_phone_number.py
similarity index 88%
rename from src/vapi/types/server_message_language_changed_phone_number.py
rename to src/vapi/types/server_message_knowledge_base_request_phone_number.py
index 94d702f..bd48e69 100644
--- a/src/vapi/types/server_message_language_changed_phone_number.py
+++ b/src/vapi/types/server_message_knowledge_base_request_phone_number.py
@@ -6,6 +6,6 @@
from .create_vonage_phone_number_dto import CreateVonagePhoneNumberDto
from .create_vapi_phone_number_dto import CreateVapiPhoneNumberDto
-ServerMessageLanguageChangedPhoneNumber = typing.Union[
+ServerMessageKnowledgeBaseRequestPhoneNumber = typing.Union[
CreateByoPhoneNumberDto, CreateTwilioPhoneNumberDto, CreateVonagePhoneNumberDto, CreateVapiPhoneNumberDto
]
diff --git a/src/vapi/types/server_message_language_changed.py b/src/vapi/types/server_message_language_change_detected.py
similarity index 77%
rename from src/vapi/types/server_message_language_changed.py
rename to src/vapi/types/server_message_language_change_detected.py
index 130542e..5e4541e 100644
--- a/src/vapi/types/server_message_language_changed.py
+++ b/src/vapi/types/server_message_language_change_detected.py
@@ -7,7 +7,7 @@
from .handoff_step import HandoffStep
import typing_extensions
import typing
-from .server_message_language_changed_phone_number import ServerMessageLanguageChangedPhoneNumber
+from .server_message_language_change_detected_phone_number import ServerMessageLanguageChangeDetectedPhoneNumber
from ..core.serialization import FieldMetadata
import pydantic
from .artifact import Artifact
@@ -18,22 +18,21 @@
from ..core.pydantic_utilities import update_forward_refs
-class ServerMessageLanguageChanged(UniversalBaseModel):
+class ServerMessageLanguageChangeDetected(UniversalBaseModel):
phone_number: typing_extensions.Annotated[
- typing.Optional[ServerMessageLanguageChangedPhoneNumber], FieldMetadata(alias="phoneNumber")
+ typing.Optional[ServerMessageLanguageChangeDetectedPhoneNumber], FieldMetadata(alias="phoneNumber")
] = pydantic.Field(default=None)
"""
This is the phone number associated with the call.
This matches one of the following:
-
- `call.phoneNumber`,
- `call.phoneNumberId`.
"""
- type: typing.Literal["language-changed"] = pydantic.Field(default="language-changed")
+ type: typing.Literal["language-change-detected"] = pydantic.Field(default="language-change-detected")
"""
- This is the type of the message. "language-switched" is sent when the transcriber is automatically switched based on the detected language.
+ This is the type of the message. "language-change-detected" is sent when the transcriber is automatically switched based on the detected language.
"""
timestamp: typing.Optional[str] = pydantic.Field(default=None)
@@ -53,7 +52,6 @@ class ServerMessageLanguageChanged(UniversalBaseModel):
This is the assistant that is currently active. This is provided for convenience.
This matches one of the following:
-
- `call.assistant`,
- `call.assistantId`,
- `call.squad[n].assistant`,
@@ -67,7 +65,6 @@ class ServerMessageLanguageChanged(UniversalBaseModel):
This is the customer associated with the call.
This matches one of the following:
-
- `call.customer`,
- `call.customerId`.
"""
@@ -96,6 +93,6 @@ class Config:
extra = pydantic.Extra.allow
-update_forward_refs(CallbackStep, ServerMessageLanguageChanged=ServerMessageLanguageChanged)
-update_forward_refs(CreateWorkflowBlockDto, ServerMessageLanguageChanged=ServerMessageLanguageChanged)
-update_forward_refs(HandoffStep, ServerMessageLanguageChanged=ServerMessageLanguageChanged)
+update_forward_refs(CallbackStep, ServerMessageLanguageChangeDetected=ServerMessageLanguageChangeDetected)
+update_forward_refs(CreateWorkflowBlockDto, ServerMessageLanguageChangeDetected=ServerMessageLanguageChangeDetected)
+update_forward_refs(HandoffStep, ServerMessageLanguageChangeDetected=ServerMessageLanguageChangeDetected)
diff --git a/src/vapi/types/server_message_language_change_detected_phone_number.py b/src/vapi/types/server_message_language_change_detected_phone_number.py
new file mode 100644
index 0000000..12e160c
--- /dev/null
+++ b/src/vapi/types/server_message_language_change_detected_phone_number.py
@@ -0,0 +1,11 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+from .create_byo_phone_number_dto import CreateByoPhoneNumberDto
+from .create_twilio_phone_number_dto import CreateTwilioPhoneNumberDto
+from .create_vonage_phone_number_dto import CreateVonagePhoneNumberDto
+from .create_vapi_phone_number_dto import CreateVapiPhoneNumberDto
+
+ServerMessageLanguageChangeDetectedPhoneNumber = typing.Union[
+ CreateByoPhoneNumberDto, CreateTwilioPhoneNumberDto, CreateVonagePhoneNumberDto, CreateVapiPhoneNumberDto
+]
diff --git a/src/vapi/types/server_message_message.py b/src/vapi/types/server_message_message.py
index 55f1d28..f1d28e9 100644
--- a/src/vapi/types/server_message_message.py
+++ b/src/vapi/types/server_message_message.py
@@ -5,6 +5,7 @@
from .server_message_conversation_update import ServerMessageConversationUpdate
from .server_message_end_of_call_report import ServerMessageEndOfCallReport
from .server_message_hang import ServerMessageHang
+from .server_message_knowledge_base_request import ServerMessageKnowledgeBaseRequest
from .server_message_model_output import ServerMessageModelOutput
from .server_message_phone_call_control import ServerMessagePhoneCallControl
from .server_message_speech_update import ServerMessageSpeechUpdate
@@ -14,7 +15,7 @@
from .server_message_transfer_update import ServerMessageTransferUpdate
from .server_message_transcript import ServerMessageTranscript
from .server_message_user_interrupted import ServerMessageUserInterrupted
-from .server_message_language_changed import ServerMessageLanguageChanged
+from .server_message_language_change_detected import ServerMessageLanguageChangeDetected
from .server_message_voice_input import ServerMessageVoiceInput
from .server_message_voice_request import ServerMessageVoiceRequest
@@ -23,6 +24,7 @@
ServerMessageConversationUpdate,
ServerMessageEndOfCallReport,
ServerMessageHang,
+ ServerMessageKnowledgeBaseRequest,
ServerMessageModelOutput,
ServerMessagePhoneCallControl,
ServerMessageSpeechUpdate,
@@ -32,7 +34,7 @@
ServerMessageTransferUpdate,
ServerMessageTranscript,
ServerMessageUserInterrupted,
- ServerMessageLanguageChanged,
+ ServerMessageLanguageChangeDetected,
ServerMessageVoiceInput,
ServerMessageVoiceRequest,
]
diff --git a/src/vapi/types/server_message_model_output.py b/src/vapi/types/server_message_model_output.py
index f2221d1..f05c07c 100644
--- a/src/vapi/types/server_message_model_output.py
+++ b/src/vapi/types/server_message_model_output.py
@@ -26,7 +26,6 @@ class ServerMessageModelOutput(UniversalBaseModel):
This is the phone number associated with the call.
This matches one of the following:
-
- `call.phoneNumber`,
- `call.phoneNumberId`.
"""
@@ -53,7 +52,6 @@ class ServerMessageModelOutput(UniversalBaseModel):
This is the assistant that is currently active. This is provided for convenience.
This matches one of the following:
-
- `call.assistant`,
- `call.assistantId`,
- `call.squad[n].assistant`,
@@ -67,7 +65,6 @@ class ServerMessageModelOutput(UniversalBaseModel):
This is the customer associated with the call.
This matches one of the following:
-
- `call.customer`,
- `call.customerId`.
"""
diff --git a/src/vapi/types/server_message_phone_call_control.py b/src/vapi/types/server_message_phone_call_control.py
index 80c7aec..d66270c 100644
--- a/src/vapi/types/server_message_phone_call_control.py
+++ b/src/vapi/types/server_message_phone_call_control.py
@@ -28,7 +28,6 @@ class ServerMessagePhoneCallControl(UniversalBaseModel):
This is the phone number associated with the call.
This matches one of the following:
-
- `call.phoneNumber`,
- `call.phoneNumberId`.
"""
@@ -67,7 +66,6 @@ class ServerMessagePhoneCallControl(UniversalBaseModel):
This is the assistant that is currently active. This is provided for convenience.
This matches one of the following:
-
- `call.assistant`,
- `call.assistantId`,
- `call.squad[n].assistant`,
@@ -81,7 +79,6 @@ class ServerMessagePhoneCallControl(UniversalBaseModel):
This is the customer associated with the call.
This matches one of the following:
-
- `call.customer`,
- `call.customerId`.
"""
diff --git a/src/vapi/types/server_message_response_knowledge_base_request.py b/src/vapi/types/server_message_response_knowledge_base_request.py
new file mode 100644
index 0000000..e749585
--- /dev/null
+++ b/src/vapi/types/server_message_response_knowledge_base_request.py
@@ -0,0 +1,29 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+from .knowledge_base_response_document import KnowledgeBaseResponseDocument
+import pydantic
+from .custom_message import CustomMessage
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class ServerMessageResponseKnowledgeBaseRequest(UniversalBaseModel):
+ documents: typing.Optional[typing.List[KnowledgeBaseResponseDocument]] = pydantic.Field(default=None)
+ """
+ This is the list of documents that will be sent to the model alongside the `messages` to generate a response.
+ """
+
+ message: typing.Optional[CustomMessage] = pydantic.Field(default=None)
+ """
+ This can be used to skip the model output generation and speak a custom message.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/server_message_response_message_response.py b/src/vapi/types/server_message_response_message_response.py
index 3196d2f..8012236 100644
--- a/src/vapi/types/server_message_response_message_response.py
+++ b/src/vapi/types/server_message_response_message_response.py
@@ -2,12 +2,14 @@
import typing
from .server_message_response_assistant_request import ServerMessageResponseAssistantRequest
+from .server_message_response_knowledge_base_request import ServerMessageResponseKnowledgeBaseRequest
from .server_message_response_tool_calls import ServerMessageResponseToolCalls
from .server_message_response_transfer_destination_request import ServerMessageResponseTransferDestinationRequest
from .server_message_response_voice_request import ServerMessageResponseVoiceRequest
ServerMessageResponseMessageResponse = typing.Union[
ServerMessageResponseAssistantRequest,
+ ServerMessageResponseKnowledgeBaseRequest,
ServerMessageResponseToolCalls,
ServerMessageResponseTransferDestinationRequest,
ServerMessageResponseVoiceRequest,
diff --git a/src/vapi/types/server_message_response_voice_request.py b/src/vapi/types/server_message_response_voice_request.py
index e6ccf31..a207f67 100644
--- a/src/vapi/types/server_message_response_voice_request.py
+++ b/src/vapi/types/server_message_response_voice_request.py
@@ -17,16 +17,15 @@ class ServerMessageResponseVoiceRequest(UniversalBaseModel):
Content-Type: application/json
{
- "messsage": {
- "type": "voice-request",
- "text": "Hello, world!",
- "sampleRate": 24000,
- ...other metadata about the call...
- }
+ "messsage": {
+ "type": "voice-request",
+ "text": "Hello, world!",
+ "sampleRate": 24000,
+ ...other metadata about the call...
+ }
}
The expected response is 1-channel 16-bit raw PCM audio at the sample rate specified in the request. Here is how the response will be piped to the transport:
-
```
response.on('data', (chunk: Buffer) => {
outputStream.write(chunk);
diff --git a/src/vapi/types/server_message_speech_update.py b/src/vapi/types/server_message_speech_update.py
index 09179a7..3fa1012 100644
--- a/src/vapi/types/server_message_speech_update.py
+++ b/src/vapi/types/server_message_speech_update.py
@@ -28,7 +28,6 @@ class ServerMessageSpeechUpdate(UniversalBaseModel):
This is the phone number associated with the call.
This matches one of the following:
-
- `call.phoneNumber`,
- `call.phoneNumberId`.
"""
@@ -65,7 +64,6 @@ class ServerMessageSpeechUpdate(UniversalBaseModel):
This is the assistant that is currently active. This is provided for convenience.
This matches one of the following:
-
- `call.assistant`,
- `call.assistantId`,
- `call.squad[n].assistant`,
@@ -79,7 +77,6 @@ class ServerMessageSpeechUpdate(UniversalBaseModel):
This is the customer associated with the call.
This matches one of the following:
-
- `call.customer`,
- `call.customerId`.
"""
diff --git a/src/vapi/types/server_message_status_update.py b/src/vapi/types/server_message_status_update.py
index 126f3b6..38d6864 100644
--- a/src/vapi/types/server_message_status_update.py
+++ b/src/vapi/types/server_message_status_update.py
@@ -31,7 +31,6 @@ class ServerMessageStatusUpdate(UniversalBaseModel):
This is the phone number associated with the call.
This matches one of the following:
-
- `call.phoneNumber`,
- `call.phoneNumberId`.
"""
@@ -87,7 +86,6 @@ class ServerMessageStatusUpdate(UniversalBaseModel):
This is the assistant that is currently active. This is provided for convenience.
This matches one of the following:
-
- `call.assistant`,
- `call.assistantId`,
- `call.squad[n].assistant`,
@@ -101,7 +99,6 @@ class ServerMessageStatusUpdate(UniversalBaseModel):
This is the customer associated with the call.
This matches one of the following:
-
- `call.customer`,
- `call.customerId`.
"""
diff --git a/src/vapi/types/server_message_status_update_ended_reason.py b/src/vapi/types/server_message_status_update_ended_reason.py
index c1df2f6..29d41b8 100644
--- a/src/vapi/types/server_message_status_update_ended_reason.py
+++ b/src/vapi/types/server_message_status_update_ended_reason.py
@@ -4,32 +4,24 @@
ServerMessageStatusUpdateEndedReason = typing.Union[
typing.Literal[
- "assistant-error",
- "assistant-not-found",
- "db-error",
- "no-server-available",
- "license-check-failed",
- "pipeline-error-openai-llm-failed",
- "pipeline-error-azure-openai-llm-failed",
- "pipeline-error-groq-llm-failed",
- "pipeline-error-anthropic-llm-failed",
- "pipeline-error-vapi-llm-failed",
- "pipeline-error-vapi-400-bad-request-validation-failed",
- "pipeline-error-vapi-401-unauthorized",
- "pipeline-error-vapi-403-model-access-denied",
- "pipeline-error-vapi-429-exceeded-quota",
- "pipeline-error-vapi-500-server-error",
"pipeline-error-openai-voice-failed",
"pipeline-error-cartesia-voice-failed",
- "pipeline-error-deepgram-transcriber-failed",
"pipeline-error-deepgram-voice-failed",
- "pipeline-error-gladia-transcriber-failed",
"pipeline-error-eleven-labs-voice-failed",
"pipeline-error-playht-voice-failed",
"pipeline-error-lmnt-voice-failed",
"pipeline-error-azure-voice-failed",
"pipeline-error-rime-ai-voice-failed",
"pipeline-error-neets-voice-failed",
+ "db-error",
+ "assistant-not-found",
+ "license-check-failed",
+ "pipeline-error-vapi-llm-failed",
+ "pipeline-error-vapi-400-bad-request-validation-failed",
+ "pipeline-error-vapi-401-unauthorized",
+ "pipeline-error-vapi-403-model-access-denied",
+ "pipeline-error-vapi-429-exceeded-quota",
+ "pipeline-error-vapi-500-server-error",
"pipeline-no-available-model",
"worker-shutdown",
"unknown-error",
@@ -42,6 +34,16 @@
"vapifault-transport-never-connected",
"vapifault-web-call-worker-setup-failed",
"vapifault-transport-connected-but-call-not-active",
+ "vapifault-call-started-but-connection-to-transport-missing",
+ "pipeline-error-deepgram-transcriber-failed",
+ "pipeline-error-gladia-transcriber-failed",
+ "pipeline-error-assembly-ai-transcriber-failed",
+ "pipeline-error-openai-llm-failed",
+ "pipeline-error-azure-openai-llm-failed",
+ "pipeline-error-groq-llm-failed",
+ "pipeline-error-google-llm-failed",
+ "pipeline-error-xai-llm-failed",
+ "pipeline-error-inflection-ai-llm-failed",
"assistant-not-invalid",
"assistant-not-provided",
"call-start-error-neither-assistant-nor-server-set",
@@ -68,6 +70,21 @@
"pipeline-error-openai-403-model-access-denied",
"pipeline-error-openai-429-exceeded-quota",
"pipeline-error-openai-500-server-error",
+ "pipeline-error-google-400-bad-request-validation-failed",
+ "pipeline-error-google-401-unauthorized",
+ "pipeline-error-google-403-model-access-denied",
+ "pipeline-error-google-429-exceeded-quota",
+ "pipeline-error-google-500-server-error",
+ "pipeline-error-xai-400-bad-request-validation-failed",
+ "pipeline-error-xai-401-unauthorized",
+ "pipeline-error-xai-403-model-access-denied",
+ "pipeline-error-xai-429-exceeded-quota",
+ "pipeline-error-xai-500-server-error",
+ "pipeline-error-inflection-ai-400-bad-request-validation-failed",
+ "pipeline-error-inflection-ai-401-unauthorized",
+ "pipeline-error-inflection-ai-403-model-access-denied",
+ "pipeline-error-inflection-ai-429-exceeded-quota",
+ "pipeline-error-inflection-ai-500-server-error",
"pipeline-error-azure-openai-400-bad-request-validation-failed",
"pipeline-error-azure-openai-401-unauthorized",
"pipeline-error-azure-openai-403-model-access-denied",
@@ -83,6 +100,7 @@
"pipeline-error-anthropic-403-model-access-denied",
"pipeline-error-anthropic-429-exceeded-quota",
"pipeline-error-anthropic-500-server-error",
+ "pipeline-error-anthropic-llm-failed",
"pipeline-error-together-ai-400-bad-request-validation-failed",
"pipeline-error-together-ai-401-unauthorized",
"pipeline-error-together-ai-403-model-access-denied",
@@ -125,12 +143,12 @@
"pipeline-error-custom-llm-429-exceeded-quota",
"pipeline-error-custom-llm-500-server-error",
"pipeline-error-custom-llm-llm-failed",
+ "pipeline-error-custom-voice-failed",
"pipeline-error-cartesia-socket-hang-up",
"pipeline-error-cartesia-requested-payment",
"pipeline-error-cartesia-500-server-error",
"pipeline-error-cartesia-503-server-error",
"pipeline-error-cartesia-522-server-error",
- "pipeline-error-custom-voice-failed",
"pipeline-error-eleven-labs-voice-not-found",
"pipeline-error-eleven-labs-quota-exceeded",
"pipeline-error-eleven-labs-unauthorized-access",
@@ -151,10 +169,12 @@
"pipeline-error-eleven-labs-voice-not-allowed-for-free-users",
"pipeline-error-eleven-labs-500-server-error",
"pipeline-error-eleven-labs-max-character-limit-exceeded",
+ "pipeline-error-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification",
"pipeline-error-playht-request-timed-out",
"pipeline-error-playht-invalid-voice",
"pipeline-error-playht-unexpected-error",
"pipeline-error-playht-out-of-credits",
+ "pipeline-error-playht-invalid-emotion",
"pipeline-error-playht-voice-must-be-a-valid-voice-manifest-uri",
"pipeline-error-playht-401-unauthorized",
"pipeline-error-playht-403-forbidden-out-of-characters",
@@ -162,16 +182,21 @@
"pipeline-error-playht-429-exceeded-quota",
"pipeline-error-playht-502-gateway-error",
"pipeline-error-playht-504-gateway-error",
- "pipeline-error-deepgram-403-model-access-denied",
- "pipeline-error-deepgram-404-not-found",
- "pipeline-error-deepgram-400-no-such-model-language-tier-combination",
- "pipeline-error-deepgram-500-returning-invalid-json",
- "sip-gateway-failed-to-connect-call",
+ "pipeline-error-deepgram-returning-403-model-access-denied",
+ "pipeline-error-deepgram-returning-401-invalid-credentials",
+ "pipeline-error-deepgram-returning-404-not-found",
+ "pipeline-error-deepgram-returning-400-no-such-model-language-tier-combination",
+ "pipeline-error-deepgram-returning-500-invalid-json",
+ "pipeline-error-deepgram-returning-502-network-error",
+ "pipeline-error-deepgram-returning-502-bad-gateway-ehostunreach",
+ "pipeline-error-tavus-video-failed",
+ "pipeline-error-custom-transcriber-failed",
"silence-timed-out",
+ "sip-gateway-failed-to-connect-call",
"twilio-failed-to-connect-call",
"twilio-reported-customer-misdialed",
- "voicemail",
"vonage-rejected",
+ "voicemail",
],
typing.Any,
]
diff --git a/src/vapi/types/server_message_tool_calls.py b/src/vapi/types/server_message_tool_calls.py
index 0cf696d..d394f04 100644
--- a/src/vapi/types/server_message_tool_calls.py
+++ b/src/vapi/types/server_message_tool_calls.py
@@ -28,7 +28,6 @@ class ServerMessageToolCalls(UniversalBaseModel):
This is the phone number associated with the call.
This matches one of the following:
-
- `call.phoneNumber`,
- `call.phoneNumberId`.
"""
@@ -62,7 +61,6 @@ class ServerMessageToolCalls(UniversalBaseModel):
This is the assistant that is currently active. This is provided for convenience.
This matches one of the following:
-
- `call.assistant`,
- `call.assistantId`,
- `call.squad[n].assistant`,
@@ -76,7 +74,6 @@ class ServerMessageToolCalls(UniversalBaseModel):
This is the customer associated with the call.
This matches one of the following:
-
- `call.customer`,
- `call.customerId`.
"""
diff --git a/src/vapi/types/server_message_tool_calls_tool_with_tool_call_list_item.py b/src/vapi/types/server_message_tool_calls_tool_with_tool_call_list_item.py
index 3b9a29e..a1e859d 100644
--- a/src/vapi/types/server_message_tool_calls_tool_with_tool_call_list_item.py
+++ b/src/vapi/types/server_message_tool_calls_tool_with_tool_call_list_item.py
@@ -6,5 +6,10 @@
from .make_tool_with_tool_call import MakeToolWithToolCall
ServerMessageToolCallsToolWithToolCallListItem = typing.Union[
- FunctionToolWithToolCall, GhlToolWithToolCall, MakeToolWithToolCall
+ FunctionToolWithToolCall,
+ GhlToolWithToolCall,
+ MakeToolWithToolCall,
+ typing.Optional[typing.Any],
+ typing.Optional[typing.Any],
+ typing.Optional[typing.Any],
]
diff --git a/src/vapi/types/server_message_transcript.py b/src/vapi/types/server_message_transcript.py
index df94623..c35b6fc 100644
--- a/src/vapi/types/server_message_transcript.py
+++ b/src/vapi/types/server_message_transcript.py
@@ -28,7 +28,6 @@ class ServerMessageTranscript(UniversalBaseModel):
This is the phone number associated with the call.
This matches one of the following:
-
- `call.phoneNumber`,
- `call.phoneNumberId`.
"""
@@ -55,7 +54,6 @@ class ServerMessageTranscript(UniversalBaseModel):
This is the assistant that is currently active. This is provided for convenience.
This matches one of the following:
-
- `call.assistant`,
- `call.assistantId`,
- `call.squad[n].assistant`,
@@ -69,7 +67,6 @@ class ServerMessageTranscript(UniversalBaseModel):
This is the customer associated with the call.
This matches one of the following:
-
- `call.customer`,
- `call.customerId`.
"""
diff --git a/src/vapi/types/server_message_transfer_destination_request.py b/src/vapi/types/server_message_transfer_destination_request.py
index a1c0c4e..20c2359 100644
--- a/src/vapi/types/server_message_transfer_destination_request.py
+++ b/src/vapi/types/server_message_transfer_destination_request.py
@@ -26,7 +26,6 @@ class ServerMessageTransferDestinationRequest(UniversalBaseModel):
This is the phone number associated with the call.
This matches one of the following:
-
- `call.phoneNumber`,
- `call.phoneNumberId`.
"""
@@ -53,7 +52,6 @@ class ServerMessageTransferDestinationRequest(UniversalBaseModel):
This is the assistant that is currently active. This is provided for convenience.
This matches one of the following:
-
- `call.assistant`,
- `call.assistantId`,
- `call.squad[n].assistant`,
@@ -67,7 +65,6 @@ class ServerMessageTransferDestinationRequest(UniversalBaseModel):
This is the customer associated with the call.
This matches one of the following:
-
- `call.customer`,
- `call.customerId`.
"""
diff --git a/src/vapi/types/server_message_transfer_update.py b/src/vapi/types/server_message_transfer_update.py
index 644c214..1ca02dd 100644
--- a/src/vapi/types/server_message_transfer_update.py
+++ b/src/vapi/types/server_message_transfer_update.py
@@ -27,7 +27,6 @@ class ServerMessageTransferUpdate(UniversalBaseModel):
This is the phone number associated with the call.
This matches one of the following:
-
- `call.phoneNumber`,
- `call.phoneNumberId`.
"""
@@ -59,7 +58,6 @@ class ServerMessageTransferUpdate(UniversalBaseModel):
This is the assistant that is currently active. This is provided for convenience.
This matches one of the following:
-
- `call.assistant`,
- `call.assistantId`,
- `call.squad[n].assistant`,
@@ -73,7 +71,6 @@ class ServerMessageTransferUpdate(UniversalBaseModel):
This is the customer associated with the call.
This matches one of the following:
-
- `call.customer`,
- `call.customerId`.
"""
@@ -101,6 +98,20 @@ class ServerMessageTransferUpdate(UniversalBaseModel):
This is the assistant that the call is being transferred from. This is only sent if `destination.type` is "assistant".
"""
+ to_step_record: typing_extensions.Annotated[
+ typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]], FieldMetadata(alias="toStepRecord")
+ ] = pydantic.Field(default=None)
+ """
+ This is the step that the conversation moved to.
+ """
+
+ from_step_record: typing_extensions.Annotated[
+ typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]], FieldMetadata(alias="fromStepRecord")
+ ] = pydantic.Field(default=None)
+ """
+ This is the step that the conversation moved from. =
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/server_message_user_interrupted.py b/src/vapi/types/server_message_user_interrupted.py
index 146f491..95b69e5 100644
--- a/src/vapi/types/server_message_user_interrupted.py
+++ b/src/vapi/types/server_message_user_interrupted.py
@@ -26,7 +26,6 @@ class ServerMessageUserInterrupted(UniversalBaseModel):
This is the phone number associated with the call.
This matches one of the following:
-
- `call.phoneNumber`,
- `call.phoneNumberId`.
"""
@@ -53,7 +52,6 @@ class ServerMessageUserInterrupted(UniversalBaseModel):
This is the assistant that is currently active. This is provided for convenience.
This matches one of the following:
-
- `call.assistant`,
- `call.assistantId`,
- `call.squad[n].assistant`,
@@ -67,7 +65,6 @@ class ServerMessageUserInterrupted(UniversalBaseModel):
This is the customer associated with the call.
This matches one of the following:
-
- `call.customer`,
- `call.customerId`.
"""
diff --git a/src/vapi/types/server_message_voice_input.py b/src/vapi/types/server_message_voice_input.py
index c767c92..490288f 100644
--- a/src/vapi/types/server_message_voice_input.py
+++ b/src/vapi/types/server_message_voice_input.py
@@ -26,7 +26,6 @@ class ServerMessageVoiceInput(UniversalBaseModel):
This is the phone number associated with the call.
This matches one of the following:
-
- `call.phoneNumber`,
- `call.phoneNumberId`.
"""
@@ -53,7 +52,6 @@ class ServerMessageVoiceInput(UniversalBaseModel):
This is the assistant that is currently active. This is provided for convenience.
This matches one of the following:
-
- `call.assistant`,
- `call.assistantId`,
- `call.squad[n].assistant`,
@@ -67,7 +65,6 @@ class ServerMessageVoiceInput(UniversalBaseModel):
This is the customer associated with the call.
This matches one of the following:
-
- `call.customer`,
- `call.customerId`.
"""
diff --git a/src/vapi/types/server_message_voice_request.py b/src/vapi/types/server_message_voice_request.py
index 5edecb4..388475d 100644
--- a/src/vapi/types/server_message_voice_request.py
+++ b/src/vapi/types/server_message_voice_request.py
@@ -26,7 +26,6 @@ class ServerMessageVoiceRequest(UniversalBaseModel):
This is the phone number associated with the call.
This matches one of the following:
-
- `call.phoneNumber`,
- `call.phoneNumberId`.
"""
@@ -41,16 +40,15 @@ class ServerMessageVoiceRequest(UniversalBaseModel):
Content-Type: application/json
{
- "messsage": {
- "type": "voice-request",
- "text": "Hello, world!",
- "sampleRate": 24000,
- ...other metadata about the call...
- }
+ "messsage": {
+ "type": "voice-request",
+ "text": "Hello, world!",
+ "sampleRate": 24000,
+ ...other metadata about the call...
+ }
}
The expected response is 1-channel 16-bit raw PCM audio at the sample rate specified in the request. Here is how the response will be piped to the transport:
-
```
response.on('data', (chunk: Buffer) => {
outputStream.write(chunk);
@@ -75,7 +73,6 @@ class ServerMessageVoiceRequest(UniversalBaseModel):
This is the assistant that is currently active. This is provided for convenience.
This matches one of the following:
-
- `call.assistant`,
- `call.assistantId`,
- `call.squad[n].assistant`,
@@ -89,7 +86,6 @@ class ServerMessageVoiceRequest(UniversalBaseModel):
This is the customer associated with the call.
This matches one of the following:
-
- `call.customer`,
- `call.customerId`.
"""
diff --git a/src/vapi/types/sip_authentication.py b/src/vapi/types/sip_authentication.py
new file mode 100644
index 0000000..feaf967
--- /dev/null
+++ b/src/vapi/types/sip_authentication.py
@@ -0,0 +1,32 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class SipAuthentication(UniversalBaseModel):
+ realm: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This will be expected in the `realm` field of the `authorization` header of the SIP INVITE. Defaults to sip.vapi.ai.
+ """
+
+ username: str = pydantic.Field()
+ """
+ This will be expected in the `username` field of the `authorization` header of the SIP INVITE.
+ """
+
+ password: str = pydantic.Field()
+ """
+ This will be expected to generate the `response` field of the `authorization` header of the SIP INVITE, through digest authentication.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/start_speaking_plan.py b/src/vapi/types/start_speaking_plan.py
index 280eb8d..a7b8f3d 100644
--- a/src/vapi/types/start_speaking_plan.py
+++ b/src/vapi/types/start_speaking_plan.py
@@ -5,6 +5,7 @@
import typing
from ..core.serialization import FieldMetadata
import pydantic
+from .start_speaking_plan_custom_endpointing_rules_item import StartSpeakingPlanCustomEndpointingRulesItem
from .transcription_endpointing_plan import TranscriptionEndpointingPlan
from ..core.pydantic_utilities import IS_PYDANTIC_V2
@@ -16,14 +17,12 @@ class StartSpeakingPlan(UniversalBaseModel):
"""
This is how long assistant waits before speaking. Defaults to 0.4.
- This is the minimum it will wait but if there is latency is the pipeline, this minimum will be exceeded. This is really a stopgap in case the pipeline is moving too fast.
+ This is the minimum it will wait but if there is latency is the pipeline, this minimum will be exceeded. This is intended as a stopgap in case the pipeline is moving too fast.
Example:
-
- If model generates tokens and voice generates bytes within 100ms, the pipeline still waits 300ms before outputting speech.
Usage:
-
- If the customer is taking long pauses, set this to a higher value.
- If the assistant is accidentally jumping in too much, set this to a higher value.
@@ -34,15 +33,37 @@ class StartSpeakingPlan(UniversalBaseModel):
typing.Optional[bool], FieldMetadata(alias="smartEndpointingEnabled")
] = pydantic.Field(default=None)
"""
- This determines if a customer speech is considered done (endpointing) using the VAP model on customer's speech. This is good for middle-of-thought detection.
+ This determines if a customer speech is considered done (endpointing) using a Vapi custom-trained model on customer's speech. This is good for middle-of-thought detection.
Once an endpoint is triggered, the request is sent to `assistant.model`.
- Default `false` since experimental.
+ Usage:
+ - If your conversations are long-form and you want assistant to wait smartly even if customer pauses for a bit to think, you can use this instead.
+
+ This overrides `transcriptionEndpointingPlan`.
@default false
"""
+ custom_endpointing_rules: typing_extensions.Annotated[
+ typing.Optional[typing.List[StartSpeakingPlanCustomEndpointingRulesItem]],
+ FieldMetadata(alias="customEndpointingRules"),
+ ] = pydantic.Field(default=None)
+ """
+ These are the custom endpointing rules to set an endpointing timeout based on a regex on the customer's speech or the assistant's last message.
+
+ Usage:
+ - If you have yes/no questions like "are you interested in a loan?", you can set a shorter timeout.
+ - If you have questions where the customer may pause to look up information like "what's my account number?", you can set a longer timeout.
+ - If you want to wait longer while customer is enumerating a list of numbers, you can set a longer timeout.
+
+ These override `transcriptionEndpointingPlan` and `smartEndpointingEnabled` when a rule is matched.
+
+ The rules are evaluated in order and the first one that matches will be used.
+
+ @default []
+ """
+
transcription_endpointing_plan: typing_extensions.Annotated[
typing.Optional[TranscriptionEndpointingPlan], FieldMetadata(alias="transcriptionEndpointingPlan")
] = pydantic.Field(default=None)
diff --git a/src/vapi/types/start_speaking_plan_custom_endpointing_rules_item.py b/src/vapi/types/start_speaking_plan_custom_endpointing_rules_item.py
new file mode 100644
index 0000000..921344a
--- /dev/null
+++ b/src/vapi/types/start_speaking_plan_custom_endpointing_rules_item.py
@@ -0,0 +1,10 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+from .assistant_custom_endpointing_rule import AssistantCustomEndpointingRule
+from .customer_custom_endpointing_rule import CustomerCustomEndpointingRule
+from .both_custom_endpointing_rule import BothCustomEndpointingRule
+
+StartSpeakingPlanCustomEndpointingRulesItem = typing.Union[
+ AssistantCustomEndpointingRule, CustomerCustomEndpointingRule, BothCustomEndpointingRule
+]
diff --git a/src/vapi/types/stop_speaking_plan.py b/src/vapi/types/stop_speaking_plan.py
index 4d22a7e..d2ce666 100644
--- a/src/vapi/types/stop_speaking_plan.py
+++ b/src/vapi/types/stop_speaking_plan.py
@@ -33,7 +33,6 @@ class StopSpeakingPlan(UniversalBaseModel):
This is the seconds customer has to speak before the assistant stops talking. This uses the VAD (Voice Activity Detection) spike to determine if the customer has started speaking.
Considerations:
-
- A lower value might be more responsive but could potentially pick up non-speech sounds.
- A higher value reduces false positives but might slightly delay the detection of speech onset.
diff --git a/src/vapi/types/structured_data_plan.py b/src/vapi/types/structured_data_plan.py
index cf5a06a..d208c1e 100644
--- a/src/vapi/types/structured_data_plan.py
+++ b/src/vapi/types/structured_data_plan.py
@@ -14,12 +14,21 @@ class StructuredDataPlan(UniversalBaseModel):
"""
These are the messages used to generate the structured data.
- @default: ` [ { "role": "system", "content": "You are an expert data extractor. You will be given a transcript of a call. Extract structured data per the JSON Schema. DO NOT return anything except the structured data.\n\nJson Schema:\\n{{schema}}\n\nOnly respond with the JSON." }, { "role": "user", "content": "Here is the transcript:\n\n{{transcript}}\n\n" } ]`
+ @default: ```
+ [
+ {
+ "role": "system",
+ "content": "You are an expert data extractor. You will be given a transcript of a call. Extract structured data per the JSON Schema. DO NOT return anything except the structured data.\n\nJson Schema:\\n{{schema}}\n\nOnly respond with the JSON."
+ },
+ {
+ "role": "user",
+ "content": "Here is the transcript:\n\n{{transcript}}\n\n"
+ }
+ ]```
You can customize by providing any messages you want.
Here are the template variables available:
-
- {{transcript}}: the transcript of the call from `call.artifact.transcript`- {{systemPrompt}}: the system prompt of the call from `assistant.model.messages[type=system].content`- {{schema}}: the schema of the structured data from `structuredDataPlan.schema`
"""
@@ -28,7 +37,6 @@ class StructuredDataPlan(UniversalBaseModel):
This determines whether structured data is generated and stored in `call.analysis.structuredData`. Defaults to false.
Usage:
-
- If you want to extract structured data, set this to true and provide a `schema`.
@default false
@@ -50,7 +58,6 @@ class StructuredDataPlan(UniversalBaseModel):
This is how long the request is tried before giving up. When request times out, `call.analysis.structuredData` will be empty.
Usage:
-
- To guarantee the structured data is generated, set this value high. Note, this will delay the end of call report in cases where model is slow to respond.
@default 5 seconds
diff --git a/src/vapi/types/subscription.py b/src/vapi/types/subscription.py
new file mode 100644
index 0000000..186b13e
--- /dev/null
+++ b/src/vapi/types/subscription.py
@@ -0,0 +1,225 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import pydantic
+import typing_extensions
+import datetime as dt
+from ..core.serialization import FieldMetadata
+from .subscription_type import SubscriptionType
+from .subscription_status import SubscriptionStatus
+import typing
+from .auto_reload_plan import AutoReloadPlan
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class Subscription(UniversalBaseModel):
+ id: str = pydantic.Field()
+ """
+ This is the unique identifier for the subscription.
+ """
+
+ created_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="createdAt")] = pydantic.Field()
+ """
+ This is the timestamp when the subscription was created.
+ """
+
+ updated_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="updatedAt")] = pydantic.Field()
+ """
+ This is the timestamp when the subscription was last updated.
+ """
+
+ type: SubscriptionType = pydantic.Field()
+ """
+ This is the type / tier of the subscription.
+ """
+
+ status: SubscriptionStatus = pydantic.Field()
+ """
+ This is the status of the subscription. Past due subscriptions are subscriptions
+ with past due payments.
+ """
+
+ credits: str = pydantic.Field()
+ """
+ This is the number of credits the subscription currently has.
+
+ Note: This is a string to avoid floating point precision issues.
+ """
+
+ concurrency_limit: typing_extensions.Annotated[float, FieldMetadata(alias="concurrencyLimit")] = pydantic.Field()
+ """
+ This is the total concurrency limit for the subscription.
+ """
+
+ concurrency_limit_included: typing_extensions.Annotated[float, FieldMetadata(alias="concurrencyLimitIncluded")] = (
+ pydantic.Field()
+ )
+ """
+ This is the default concurrency limit for the subscription.
+ """
+
+ concurrency_limit_purchased: typing_extensions.Annotated[
+ float, FieldMetadata(alias="concurrencyLimitPurchased")
+ ] = pydantic.Field()
+ """
+ This is the purchased add-on concurrency limit for the subscription.
+ """
+
+ monthly_charge_schedule_id: typing_extensions.Annotated[
+ typing.Optional[float], FieldMetadata(alias="monthlyChargeScheduleId")
+ ] = pydantic.Field(default=None)
+ """
+ This is the ID of the monthly job that charges for subscription add ons and phone numbers.
+ """
+
+ monthly_credit_check_schedule_id: typing_extensions.Annotated[
+ typing.Optional[float], FieldMetadata(alias="monthlyCreditCheckScheduleId")
+ ] = pydantic.Field(default=None)
+ """
+ This is the ID of the monthly job that checks whether the credit balance of the subscription
+ is sufficient for the monthly charge.
+ """
+
+ stripe_customer_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="stripeCustomerId")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the Stripe customer ID.
+ """
+
+ stripe_payment_method_id: typing_extensions.Annotated[
+ typing.Optional[str], FieldMetadata(alias="stripePaymentMethodId")
+ ] = pydantic.Field(default=None)
+ """
+ This is the Stripe payment ID.
+ """
+
+ slack_support_enabled: typing_extensions.Annotated[
+ typing.Optional[bool], FieldMetadata(alias="slackSupportEnabled")
+ ] = pydantic.Field(default=None)
+ """
+ If this flag is true, then the user has purchased slack support.
+ """
+
+ slack_channel_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="slackChannelId")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ If this subscription has a slack support subscription, the slack channel's ID will be stored here.
+ """
+
+ hipaa_enabled: typing_extensions.Annotated[typing.Optional[bool], FieldMetadata(alias="hipaaEnabled")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the HIPAA enabled flag for the subscription. It determines whether orgs under this
+ subscription have the option to enable HIPAA compliance.
+ """
+
+ hipaa_common_paper_agreement_id: typing_extensions.Annotated[
+ typing.Optional[str], FieldMetadata(alias="hipaaCommonPaperAgreementId")
+ ] = pydantic.Field(default=None)
+ """
+ This is the ID for the Common Paper agreement outlining the HIPAA contract.
+ """
+
+ stripe_payment_method_fingerprint: typing_extensions.Annotated[
+ typing.Optional[str], FieldMetadata(alias="stripePaymentMethodFingerprint")
+ ] = pydantic.Field(default=None)
+ """
+ This is the Stripe fingerprint of the payment method (card). It allows us
+ to detect users who try to abuse our system through multiple sign-ups.
+ """
+
+ stripe_customer_email: typing_extensions.Annotated[
+ typing.Optional[str], FieldMetadata(alias="stripeCustomerEmail")
+ ] = pydantic.Field(default=None)
+ """
+ This is the stripe customer's email.
+ """
+
+ referred_by_email: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="referredByEmail")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the email of the referrer for the subscription.
+ """
+
+ auto_reload_plan: typing_extensions.Annotated[
+ typing.Optional[AutoReloadPlan], FieldMetadata(alias="autoReloadPlan")
+ ] = pydantic.Field(default=None)
+ """
+ This is the auto reload plan configured for the subscription.
+ """
+
+ minutes_included: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="minutesIncluded")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ The number of minutes included in the subscription. Enterprise only.
+ """
+
+ minutes_used: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="minutesUsed")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ The number of minutes used in the subscription. Enterprise only.
+ """
+
+ minutes_overage_cost: typing_extensions.Annotated[
+ typing.Optional[float], FieldMetadata(alias="minutesOverageCost")
+ ] = pydantic.Field(default=None)
+ """
+ The per minute charge on minutes that exceed the included minutes. Enterprise only.
+ """
+
+ providers_included: typing_extensions.Annotated[
+ typing.Optional[typing.List[str]], FieldMetadata(alias="providersIncluded")
+ ] = pydantic.Field(default=None)
+ """
+ The list of providers included in the subscription. Enterprise only.
+ """
+
+ outbound_calls_daily_limit: typing_extensions.Annotated[
+ typing.Optional[float], FieldMetadata(alias="outboundCallsDailyLimit")
+ ] = pydantic.Field(default=None)
+ """
+ The maximum number of outbound calls this subscription may make in a day. Resets every night.
+ """
+
+ outbound_calls_counter: typing_extensions.Annotated[
+ typing.Optional[float], FieldMetadata(alias="outboundCallsCounter")
+ ] = pydantic.Field(default=None)
+ """
+ The current number of outbound calls the subscription has made in the current day.
+ """
+
+ outbound_calls_counter_next_reset_at: typing_extensions.Annotated[
+ typing.Optional[dt.datetime], FieldMetadata(alias="outboundCallsCounterNextResetAt")
+ ] = pydantic.Field(default=None)
+ """
+ This is the timestamp at which the outbound calls counter is scheduled to reset at.
+ """
+
+ coupon_ids: typing_extensions.Annotated[typing.Optional[typing.List[str]], FieldMetadata(alias="couponIds")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the IDs of the coupons applicable to this subscription.
+ """
+
+ coupon_usage_left: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="couponUsageLeft")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the number of credits left obtained from a coupon.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/subscription_concurrency_line_buy_dto.py b/src/vapi/types/subscription_concurrency_line_buy_dto.py
new file mode 100644
index 0000000..2bde4a9
--- /dev/null
+++ b/src/vapi/types/subscription_concurrency_line_buy_dto.py
@@ -0,0 +1,22 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+import typing
+
+
+class SubscriptionConcurrencyLineBuyDto(UniversalBaseModel):
+ quantity: float = pydantic.Field()
+ """
+ This is the number of concurrency lines to purchase.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/subscription_concurrency_line_remove_dto.py b/src/vapi/types/subscription_concurrency_line_remove_dto.py
new file mode 100644
index 0000000..c221446
--- /dev/null
+++ b/src/vapi/types/subscription_concurrency_line_remove_dto.py
@@ -0,0 +1,22 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+import typing
+
+
+class SubscriptionConcurrencyLineRemoveDto(UniversalBaseModel):
+ quantity: float = pydantic.Field()
+ """
+ This is the number of concurrency lines to remove.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/subscription_coupon_add_dto.py b/src/vapi/types/subscription_coupon_add_dto.py
new file mode 100644
index 0000000..e6435c7
--- /dev/null
+++ b/src/vapi/types/subscription_coupon_add_dto.py
@@ -0,0 +1,29 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing_extensions
+from ..core.serialization import FieldMetadata
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+import typing
+
+
+class SubscriptionCouponAddDto(UniversalBaseModel):
+ org_id: typing_extensions.Annotated[str, FieldMetadata(alias="orgId")] = pydantic.Field()
+ """
+ This is the ID of the org within the subscription which the coupon will take effect on.
+ """
+
+ coupon_code: typing_extensions.Annotated[str, FieldMetadata(alias="couponCode")] = pydantic.Field()
+ """
+ This is the code of the coupon to apply to the subscription.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/subscription_monthly_charge.py b/src/vapi/types/subscription_monthly_charge.py
new file mode 100644
index 0000000..8862c45
--- /dev/null
+++ b/src/vapi/types/subscription_monthly_charge.py
@@ -0,0 +1,29 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing_extensions
+from ..core.serialization import FieldMetadata
+import pydantic
+import typing
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class SubscriptionMonthlyCharge(UniversalBaseModel):
+ monthly_charge: typing_extensions.Annotated[float, FieldMetadata(alias="monthlyCharge")] = pydantic.Field()
+ """
+ This is the monthly charge for the subscription.
+ """
+
+ costs: typing.List[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field()
+ """
+ These are the different costs that make up the monthly charge.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/subscription_status.py b/src/vapi/types/subscription_status.py
new file mode 100644
index 0000000..e41f442
--- /dev/null
+++ b/src/vapi/types/subscription_status.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+SubscriptionStatus = typing.Union[typing.Literal["active", "frozen"], typing.Any]
diff --git a/src/vapi/types/subscription_type.py b/src/vapi/types/subscription_type.py
new file mode 100644
index 0000000..0dcaa8e
--- /dev/null
+++ b/src/vapi/types/subscription_type.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+SubscriptionType = typing.Union[typing.Literal["trial", "pay-as-you-go", "enterprise"], typing.Any]
diff --git a/src/vapi/types/success_evaluation_plan.py b/src/vapi/types/success_evaluation_plan.py
index d2b428b..34c0059 100644
--- a/src/vapi/types/success_evaluation_plan.py
+++ b/src/vapi/types/success_evaluation_plan.py
@@ -15,7 +15,6 @@ class SuccessEvaluationPlan(UniversalBaseModel):
This enforces the rubric of the evaluation. The output is stored in `call.analysis.successEvaluation`.
Options include:
-
- 'NumericScale': A scale of 1 to 10.
- 'DescriptiveScale': A scale of Excellent, Good, Fair, Poor.
- 'Checklist': A checklist of criteria and their status.
@@ -32,12 +31,25 @@ class SuccessEvaluationPlan(UniversalBaseModel):
"""
These are the messages used to generate the success evaluation.
- @default: ` [ { "role": "system", "content": "You are an expert call evaluator. You will be given a transcript of a call and the system prompt of the AI participant. Determine if the call was successful based on the objectives inferred from the system prompt. DO NOT return anything except the result.\n\nRubric:\\n{{rubric}}\n\nOnly respond with the result." }, { "role": "user", "content": "Here is the transcript:\n\n{{transcript}}\n\n" }, { "role": "user", "content": "Here was the system prompt of the call:\n\n{{systemPrompt}}\n\n" } ]`
+ @default: ```
+ [
+ {
+ "role": "system",
+ "content": "You are an expert call evaluator. You will be given a transcript of a call and the system prompt of the AI participant. Determine if the call was successful based on the objectives inferred from the system prompt. DO NOT return anything except the result.\n\nRubric:\\n{{rubric}}\n\nOnly respond with the result."
+ },
+ {
+ "role": "user",
+ "content": "Here is the transcript:\n\n{{transcript}}\n\n"
+ },
+ {
+ "role": "user",
+ "content": "Here was the system prompt of the call:\n\n{{systemPrompt}}\n\n"
+ }
+ ]```
You can customize by providing any messages you want.
Here are the template variables available:
-
- {{transcript}}: the transcript of the call from `call.artifact.transcript`- {{systemPrompt}}: the system prompt of the call from `assistant.model.messages[type=system].content`- {{rubric}}: the rubric of the success evaluation from `successEvaluationPlan.rubric`
"""
@@ -46,7 +58,6 @@ class SuccessEvaluationPlan(UniversalBaseModel):
This determines whether a success evaluation is generated and stored in `call.analysis.successEvaluation`. Defaults to true.
Usage:
-
- If you want to disable the success evaluation, set this to false.
@default true
@@ -59,7 +70,6 @@ class SuccessEvaluationPlan(UniversalBaseModel):
This is how long the request is tried before giving up. When request times out, `call.analysis.successEvaluation` will be empty.
Usage:
-
- To guarantee the success evaluation is generated, set this value high. Note, this will delay the end of call report in cases where model is slow to respond.
@default 5 seconds
diff --git a/src/vapi/types/summary_plan.py b/src/vapi/types/summary_plan.py
index 9d1c222..ecf3cbb 100644
--- a/src/vapi/types/summary_plan.py
+++ b/src/vapi/types/summary_plan.py
@@ -13,12 +13,21 @@ class SummaryPlan(UniversalBaseModel):
"""
These are the messages used to generate the summary.
- @default: ` [ { "role": "system", "content": "You are an expert note-taker. You will be given a transcript of a call. Summarize the call in 2-3 sentences. DO NOT return anything except the summary." }, { "role": "user", "content": "Here is the transcript:\n\n{{transcript}}\n\n" } ]`
+ @default: ```
+ [
+ {
+ "role": "system",
+ "content": "You are an expert note-taker. You will be given a transcript of a call. Summarize the call in 2-3 sentences. DO NOT return anything except the summary."
+ },
+ {
+ "role": "user",
+ "content": "Here is the transcript:\n\n{{transcript}}\n\n"
+ }
+ ]```
You can customize by providing any messages you want.
Here are the template variables available:
-
- {{transcript}}: The transcript of the call from `call.artifact.transcript`- {{systemPrompt}}: The system prompt of the call from `assistant.model.messages[type=system].content`
"""
@@ -27,7 +36,6 @@ class SummaryPlan(UniversalBaseModel):
This determines whether a summary is generated and stored in `call.analysis.summary`. Defaults to true.
Usage:
-
- If you want to disable the summary, set this to false.
@default true
@@ -40,7 +48,6 @@ class SummaryPlan(UniversalBaseModel):
This is how long the request is tried before giving up. When request times out, `call.analysis.summary` will be empty.
Usage:
-
- To guarantee the summary is generated, set this value high. Note, this will delay the end of call report in cases where model is slow to respond.
@default 5 seconds
diff --git a/src/vapi/types/sync_voice_library_dto_providers_item.py b/src/vapi/types/sync_voice_library_dto_providers_item.py
index 76b8a08..4588fe0 100644
--- a/src/vapi/types/sync_voice_library_dto_providers_item.py
+++ b/src/vapi/types/sync_voice_library_dto_providers_item.py
@@ -4,7 +4,17 @@
SyncVoiceLibraryDtoProvidersItem = typing.Union[
typing.Literal[
- "11labs", "azure", "cartesia", "custom-voice", "deepgram", "lmnt", "neets", "openai", "playht", "rime-ai"
+ "11labs",
+ "azure",
+ "cartesia",
+ "custom-voice",
+ "deepgram",
+ "lmnt",
+ "neets",
+ "openai",
+ "playht",
+ "rime-ai",
+ "tavus",
],
typing.Any,
]
diff --git a/src/vapi/types/tavus_conversation_properties.py b/src/vapi/types/tavus_conversation_properties.py
new file mode 100644
index 0000000..a47421a
--- /dev/null
+++ b/src/vapi/types/tavus_conversation_properties.py
@@ -0,0 +1,95 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing_extensions
+import typing
+from ..core.serialization import FieldMetadata
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class TavusConversationProperties(UniversalBaseModel):
+ max_call_duration: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="maxCallDuration")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ The maximum duration of the call in seconds. The default `maxCallDuration` is 3600 seconds (1 hour).
+ Once the time limit specified by this parameter has been reached, the conversation will automatically shut down.
+ """
+
+ participant_left_timeout: typing_extensions.Annotated[
+ typing.Optional[float], FieldMetadata(alias="participantLeftTimeout")
+ ] = pydantic.Field(default=None)
+ """
+ The duration in seconds after which the call will be automatically shut down once the last participant leaves.
+ """
+
+ participant_absent_timeout: typing_extensions.Annotated[
+ typing.Optional[float], FieldMetadata(alias="participantAbsentTimeout")
+ ] = pydantic.Field(default=None)
+ """
+ Starting from conversation creation, the duration in seconds after which the call will be automatically shut down if no participant joins the call.
+ Default is 300 seconds (5 minutes).
+ """
+
+ enable_recording: typing_extensions.Annotated[typing.Optional[bool], FieldMetadata(alias="enableRecording")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ If true, the user will be able to record the conversation.
+ """
+
+ enable_transcription: typing_extensions.Annotated[
+ typing.Optional[bool], FieldMetadata(alias="enableTranscription")
+ ] = pydantic.Field(default=None)
+ """
+ If true, the user will be able to transcribe the conversation.
+ You can find more instructions on displaying transcriptions if you are using your custom DailyJS components here.
+ You need to have an event listener on Daily that listens for `app-messages`.
+ """
+
+ apply_greenscreen: typing_extensions.Annotated[typing.Optional[bool], FieldMetadata(alias="applyGreenscreen")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ If true, the background will be replaced with a greenscreen (RGB values: `[0, 255, 155]`).
+ You can use WebGL on the frontend to make the greenscreen transparent or change its color.
+ """
+
+ language: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ The language of the conversation. Please provide the **full language name**, not the two-letter code.
+ If you are using your own TTS voice, please ensure it supports the language you provide.
+ If you are using a stock replica or default persona, please note that only ElevenLabs and Cartesia supported languages are available.
+ You can find a full list of supported languages for Cartesia here, for ElevenLabs here, and for PlayHT here.
+ """
+
+ recording_s_3_bucket_name: typing_extensions.Annotated[
+ typing.Optional[str], FieldMetadata(alias="recordingS3BucketName")
+ ] = pydantic.Field(default=None)
+ """
+ The name of the S3 bucket where the recording will be stored.
+ """
+
+ recording_s_3_bucket_region: typing_extensions.Annotated[
+ typing.Optional[str], FieldMetadata(alias="recordingS3BucketRegion")
+ ] = pydantic.Field(default=None)
+ """
+ The region of the S3 bucket where the recording will be stored.
+ """
+
+ aws_assume_role_arn: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="awsAssumeRoleArn")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ The ARN of the role that will be assumed to access the S3 bucket.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/tavus_credential.py b/src/vapi/types/tavus_credential.py
new file mode 100644
index 0000000..2afeb5e
--- /dev/null
+++ b/src/vapi/types/tavus_credential.py
@@ -0,0 +1,51 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import typing_extensions
+from ..core.serialization import FieldMetadata
+import pydantic
+import datetime as dt
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class TavusCredential(UniversalBaseModel):
+ provider: typing.Literal["tavus"] = "tavus"
+ api_key: typing_extensions.Annotated[str, FieldMetadata(alias="apiKey")] = pydantic.Field()
+ """
+ This is not returned in the API.
+ """
+
+ id: str = pydantic.Field()
+ """
+ This is the unique identifier for the credential.
+ """
+
+ org_id: typing_extensions.Annotated[str, FieldMetadata(alias="orgId")] = pydantic.Field()
+ """
+ This is the unique identifier for the org that this credential belongs to.
+ """
+
+ created_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="createdAt")] = pydantic.Field()
+ """
+ This is the ISO 8601 date-time string of when the credential was created.
+ """
+
+ updated_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="updatedAt")] = pydantic.Field()
+ """
+ This is the ISO 8601 date-time string of when the assistant was last updated.
+ """
+
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/tavus_voice.py b/src/vapi/types/tavus_voice.py
new file mode 100644
index 0000000..39801e7
--- /dev/null
+++ b/src/vapi/types/tavus_voice.py
@@ -0,0 +1,87 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import pydantic
+import typing_extensions
+from .tavus_voice_voice_id import TavusVoiceVoiceId
+from ..core.serialization import FieldMetadata
+from .chunk_plan import ChunkPlan
+from .tavus_conversation_properties import TavusConversationProperties
+from .fallback_plan import FallbackPlan
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class TavusVoice(UniversalBaseModel):
+ provider: typing.Literal["tavus"] = pydantic.Field(default="tavus")
+ """
+ This is the voice provider that will be used.
+ """
+
+ voice_id: typing_extensions.Annotated[TavusVoiceVoiceId, FieldMetadata(alias="voiceId")] = pydantic.Field()
+ """
+ This is the provider-specific ID that will be used.
+ """
+
+ chunk_plan: typing_extensions.Annotated[typing.Optional[ChunkPlan], FieldMetadata(alias="chunkPlan")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the plan for chunking the model output before it is sent to the voice provider.
+ """
+
+ persona_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="personaId")] = pydantic.Field(
+ default=None
+ )
+ """
+ This is the unique identifier for the persona that the replica will use in the conversation.
+ """
+
+ callback_url: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="callbackUrl")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the url that will receive webhooks with updates regarding the conversation state.
+ """
+
+ conversation_name: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="conversationName")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the name for the conversation.
+ """
+
+ conversational_context: typing_extensions.Annotated[
+ typing.Optional[str], FieldMetadata(alias="conversationalContext")
+ ] = pydantic.Field(default=None)
+ """
+ This is the context that will be appended to any context provided in the persona, if one is provided.
+ """
+
+ custom_greeting: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="customGreeting")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the custom greeting that the replica will give once a participant joines the conversation.
+ """
+
+ properties: typing.Optional[TavusConversationProperties] = pydantic.Field(default=None)
+ """
+ These are optional properties used to customize the conversation.
+ """
+
+ fallback_plan: typing_extensions.Annotated[typing.Optional[FallbackPlan], FieldMetadata(alias="fallbackPlan")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the plan for voice provider fallbacks in the event that the primary voice provider fails.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/tavus_voice_voice_id.py b/src/vapi/types/tavus_voice_voice_id.py
new file mode 100644
index 0000000..c9544c9
--- /dev/null
+++ b/src/vapi/types/tavus_voice_voice_id.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+TavusVoiceVoiceId = typing.Union[typing.Literal["r52da2535a"], str]
diff --git a/src/vapi/types/text_content.py b/src/vapi/types/text_content.py
new file mode 100644
index 0000000..6603f0c
--- /dev/null
+++ b/src/vapi/types/text_content.py
@@ -0,0 +1,22 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+from .text_content_language import TextContentLanguage
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+import pydantic
+
+
+class TextContent(UniversalBaseModel):
+ type: typing.Literal["text"] = "text"
+ text: str
+ language: TextContentLanguage
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/text_content_language.py b/src/vapi/types/text_content_language.py
new file mode 100644
index 0000000..15978e6
--- /dev/null
+++ b/src/vapi/types/text_content_language.py
@@ -0,0 +1,194 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+TextContentLanguage = typing.Union[
+ typing.Literal[
+ "aa",
+ "ab",
+ "ae",
+ "af",
+ "ak",
+ "am",
+ "an",
+ "ar",
+ "as",
+ "av",
+ "ay",
+ "az",
+ "ba",
+ "be",
+ "bg",
+ "bh",
+ "bi",
+ "bm",
+ "bn",
+ "bo",
+ "br",
+ "bs",
+ "ca",
+ "ce",
+ "ch",
+ "co",
+ "cr",
+ "cs",
+ "cu",
+ "cv",
+ "cy",
+ "da",
+ "de",
+ "dv",
+ "dz",
+ "ee",
+ "el",
+ "en",
+ "eo",
+ "es",
+ "et",
+ "eu",
+ "fa",
+ "ff",
+ "fi",
+ "fj",
+ "fo",
+ "fr",
+ "fy",
+ "ga",
+ "gd",
+ "gl",
+ "gn",
+ "gu",
+ "gv",
+ "ha",
+ "he",
+ "hi",
+ "ho",
+ "hr",
+ "ht",
+ "hu",
+ "hy",
+ "hz",
+ "ia",
+ "id",
+ "ie",
+ "ig",
+ "ii",
+ "ik",
+ "io",
+ "is",
+ "it",
+ "iu",
+ "ja",
+ "jv",
+ "ka",
+ "kg",
+ "ki",
+ "kj",
+ "kk",
+ "kl",
+ "km",
+ "kn",
+ "ko",
+ "kr",
+ "ks",
+ "ku",
+ "kv",
+ "kw",
+ "ky",
+ "la",
+ "lb",
+ "lg",
+ "li",
+ "ln",
+ "lo",
+ "lt",
+ "lu",
+ "lv",
+ "mg",
+ "mh",
+ "mi",
+ "mk",
+ "ml",
+ "mn",
+ "mr",
+ "ms",
+ "mt",
+ "my",
+ "na",
+ "nb",
+ "nd",
+ "ne",
+ "ng",
+ "nl",
+ "nn",
+ "no",
+ "nr",
+ "nv",
+ "ny",
+ "oc",
+ "oj",
+ "om",
+ "or",
+ "os",
+ "pa",
+ "pi",
+ "pl",
+ "ps",
+ "pt",
+ "qu",
+ "rm",
+ "rn",
+ "ro",
+ "ru",
+ "rw",
+ "sa",
+ "sc",
+ "sd",
+ "se",
+ "sg",
+ "si",
+ "sk",
+ "sl",
+ "sm",
+ "sn",
+ "so",
+ "sq",
+ "sr",
+ "ss",
+ "st",
+ "su",
+ "sv",
+ "sw",
+ "ta",
+ "te",
+ "tg",
+ "th",
+ "ti",
+ "tk",
+ "tl",
+ "tn",
+ "to",
+ "tr",
+ "ts",
+ "tt",
+ "tw",
+ "ty",
+ "ug",
+ "uk",
+ "ur",
+ "uz",
+ "ve",
+ "vi",
+ "vo",
+ "wa",
+ "wo",
+ "xh",
+ "yi",
+ "yue",
+ "yo",
+ "za",
+ "zh",
+ "zu",
+ ],
+ typing.Any,
+]
diff --git a/src/vapi/types/text_editor_tool.py b/src/vapi/types/text_editor_tool.py
new file mode 100644
index 0000000..56e65fd
--- /dev/null
+++ b/src/vapi/types/text_editor_tool.py
@@ -0,0 +1,94 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing_extensions
+import typing
+from ..core.serialization import FieldMetadata
+import pydantic
+from .text_editor_tool_messages_item import TextEditorToolMessagesItem
+import datetime as dt
+from .open_ai_function import OpenAiFunction
+from .server import Server
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class TextEditorTool(UniversalBaseModel):
+ async_: typing_extensions.Annotated[typing.Optional[bool], FieldMetadata(alias="async")] = pydantic.Field(
+ default=None
+ )
+ """
+ This determines if the tool is async.
+
+ If async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.
+
+ If sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.
+
+ Defaults to synchronous (`false`).
+ """
+
+ messages: typing.Optional[typing.List[TextEditorToolMessagesItem]] = pydantic.Field(default=None)
+ """
+ These are the messages that will be spoken to the user as the tool is running.
+
+ For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
+ """
+
+ type: typing.Literal["textEditor"] = "textEditor"
+ sub_type: typing_extensions.Annotated[typing.Literal["text_editor_20241022"], FieldMetadata(alias="subType")] = (
+ pydantic.Field(default="text_editor_20241022")
+ )
+ """
+ The sub type of tool.
+ """
+
+ id: str = pydantic.Field()
+ """
+ This is the unique identifier for the tool.
+ """
+
+ org_id: typing_extensions.Annotated[str, FieldMetadata(alias="orgId")] = pydantic.Field()
+ """
+ This is the unique identifier for the organization that this tool belongs to.
+ """
+
+ created_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="createdAt")] = pydantic.Field()
+ """
+ This is the ISO 8601 date-time string of when the tool was created.
+ """
+
+ updated_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="updatedAt")] = pydantic.Field()
+ """
+ This is the ISO 8601 date-time string of when the tool was last updated.
+ """
+
+ function: typing.Optional[OpenAiFunction] = pydantic.Field(default=None)
+ """
+ This is the function definition of the tool.
+
+ For `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.
+
+ An example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument "reason". Then, in `messages` array, you can have many "request-complete" messages. One of these messages will be triggered if the `messages[].conditions` matches the "reason" argument.
+ """
+
+ server: typing.Optional[Server] = pydantic.Field(default=None)
+ """
+ This is the server that will be hit when this tool is requested by the model.
+
+ All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
+
+ This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
+ """
+
+ name: typing.Literal["str_replace_editor"] = pydantic.Field(default="str_replace_editor")
+ """
+ The name of the tool, fixed to 'str_replace_editor'
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/text_editor_tool_messages_item.py b/src/vapi/types/text_editor_tool_messages_item.py
new file mode 100644
index 0000000..6d59f98
--- /dev/null
+++ b/src/vapi/types/text_editor_tool_messages_item.py
@@ -0,0 +1,9 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+from .tool_message_start import ToolMessageStart
+from .tool_message_complete import ToolMessageComplete
+from .tool_message_failed import ToolMessageFailed
+from .tool_message_delayed import ToolMessageDelayed
+
+TextEditorToolMessagesItem = typing.Union[ToolMessageStart, ToolMessageComplete, ToolMessageFailed, ToolMessageDelayed]
diff --git a/src/vapi/types/together_ai_credential.py b/src/vapi/types/together_ai_credential.py
index eded171..cd61f11 100644
--- a/src/vapi/types/together_ai_credential.py
+++ b/src/vapi/types/together_ai_credential.py
@@ -36,6 +36,11 @@ class TogetherAiCredential(UniversalBaseModel):
This is the ISO 8601 date-time string of when the assistant was last updated.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/together_ai_model.py b/src/vapi/types/together_ai_model.py
index 94d8126..97cffc4 100644
--- a/src/vapi/types/together_ai_model.py
+++ b/src/vapi/types/together_ai_model.py
@@ -7,7 +7,7 @@
from .together_ai_model_tools_item import TogetherAiModelToolsItem
import typing_extensions
from ..core.serialization import FieldMetadata
-from .knowledge_base import KnowledgeBase
+from .create_custom_knowledge_base_dto import CreateCustomKnowledgeBaseDto
from ..core.pydantic_utilities import IS_PYDANTIC_V2
@@ -33,6 +33,20 @@ class TogetherAiModel(UniversalBaseModel):
Both `tools` and `toolIds` can be used together.
"""
+ knowledge_base: typing_extensions.Annotated[
+ typing.Optional[CreateCustomKnowledgeBaseDto], FieldMetadata(alias="knowledgeBase")
+ ] = pydantic.Field(default=None)
+ """
+ These are the options for the knowledge base.
+ """
+
+ knowledge_base_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="knowledgeBaseId")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the ID of the knowledge base the model will use.
+ """
+
provider: typing.Literal["together-ai"] = "together-ai"
model: str = pydantic.Field()
"""
@@ -44,13 +58,6 @@ class TogetherAiModel(UniversalBaseModel):
This is the temperature that will be used for calls. Default is 0 to leverage caching for lower latency.
"""
- knowledge_base: typing_extensions.Annotated[
- typing.Optional[KnowledgeBase], FieldMetadata(alias="knowledgeBase")
- ] = pydantic.Field(default=None)
- """
- These are the options for the knowledge base.
- """
-
max_tokens: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="maxTokens")] = pydantic.Field(
default=None
)
diff --git a/src/vapi/types/tool_call_block.py b/src/vapi/types/tool_call_block.py
index 33c905c..5dd0a37 100644
--- a/src/vapi/types/tool_call_block.py
+++ b/src/vapi/types/tool_call_block.py
@@ -25,7 +25,6 @@ class ToolCallBlock(UniversalBaseModel):
This is the input schema for the block. This is the input the block needs to run. It's given to the block as `steps[0].input`
These are accessible as variables:
-
- ({{input.propertyName}}) in context of the block execution (step)
- ({{stepName.input.propertyName}}) in context of the workflow
"""
@@ -37,13 +36,11 @@ class ToolCallBlock(UniversalBaseModel):
This is the output schema for the block. This is the output the block will return to the workflow (`{{stepName.output}}`).
These are accessible as variables:
-
- ({{output.propertyName}}) in context of the block execution (step)
- ({{stepName.output.propertyName}}) in context of the workflow (read caveat #1)
- ({{blockName.output.propertyName}}) in context of the workflow (read caveat #2)
Caveats:
-
1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.output.propertyName}} will reference the latest usage of the step.
2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.output.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow with steps.
"""
diff --git a/src/vapi/types/tool_call_result.py b/src/vapi/types/tool_call_result.py
index ddabef7..7184c6c 100644
--- a/src/vapi/types/tool_call_result.py
+++ b/src/vapi/types/tool_call_result.py
@@ -15,7 +15,6 @@ class ToolCallResult(UniversalBaseModel):
This is the message that will be spoken to the user.
If this is not returned, assistant will speak:
-
1. a `request-complete` or `request-failed` message from `tool.messages`, if it exists
2. a response generated by the model, if not
"""
@@ -35,7 +34,6 @@ class ToolCallResult(UniversalBaseModel):
This is the result if the tool call was successful. This is added to the conversation history.
Further, if this is returned, assistant will speak:
-
1. the `message`, if it exists and is of type `request-complete`
2. a `request-complete` message from `tool.messages`, if it exists
3. a response generated by the model, if neither exist
@@ -46,7 +44,6 @@ class ToolCallResult(UniversalBaseModel):
This is the error if the tool call was not successful. This is added to the conversation history.
Further, if this is returned, assistant will speak:
-
1. the `message`, if it exists and is of type `request-failed`
2. a `request-failed` message from `tool.messages`, if it exists
3. a response generated by the model, if neither exist
diff --git a/src/vapi/types/tool_message_complete.py b/src/vapi/types/tool_message_complete.py
index 96ccf10..6295bff 100644
--- a/src/vapi/types/tool_message_complete.py
+++ b/src/vapi/types/tool_message_complete.py
@@ -2,6 +2,7 @@
from ..core.pydantic_utilities import UniversalBaseModel
import typing
+from .text_content import TextContent
import pydantic
from .tool_message_complete_role import ToolMessageCompleteRole
import typing_extensions
@@ -11,6 +12,17 @@
class ToolMessageComplete(UniversalBaseModel):
+ contents: typing.Optional[typing.List[TextContent]] = pydantic.Field(default=None)
+ """
+ This is an alternative to the `content` property. It allows to specify variants of the same content, one per language.
+
+ Usage:
+ - If your assistants are multilingual, you can provide content for each language.
+ - If you don't provide content for a language, the first item in the array will be automatically translated to the active language at that moment.
+
+ This will override the `content` property.
+ """
+
type: typing.Literal["request-complete"] = pydantic.Field(default="request-complete")
"""
This message is triggered when the tool call is complete.
@@ -29,17 +41,17 @@ class ToolMessageComplete(UniversalBaseModel):
When role=assistant, `content` is said out loud.
When role=system, `content` is passed to the model in a system message. Example:
- system: default one
- assistant:
- user:
- assistant:
- user:
- assistant:
- user:
- assistant: tool called
- tool: your server response
- <--- system prompt as hint
- ---> model generates response which is spoken
+ system: default one
+ assistant:
+ user:
+ assistant:
+ user:
+ assistant:
+ user:
+ assistant: tool called
+ tool: your server response
+ <--- system prompt as hint
+ ---> model generates response which is spoken
This is useful when you want to provide a hint to the model about what to say next.
"""
@@ -54,7 +66,7 @@ class ToolMessageComplete(UniversalBaseModel):
@default false
"""
- content: str = pydantic.Field()
+ content: typing.Optional[str] = pydantic.Field(default=None)
"""
This is the content that the assistant says when this message is triggered.
"""
diff --git a/src/vapi/types/tool_message_delayed.py b/src/vapi/types/tool_message_delayed.py
index 1a8b9ad..a902c47 100644
--- a/src/vapi/types/tool_message_delayed.py
+++ b/src/vapi/types/tool_message_delayed.py
@@ -2,6 +2,7 @@
from ..core.pydantic_utilities import UniversalBaseModel
import typing
+from .text_content import TextContent
import pydantic
import typing_extensions
from ..core.serialization import FieldMetadata
@@ -10,12 +11,22 @@
class ToolMessageDelayed(UniversalBaseModel):
+ contents: typing.Optional[typing.List[TextContent]] = pydantic.Field(default=None)
+ """
+ This is an alternative to the `content` property. It allows to specify variants of the same content, one per language.
+
+ Usage:
+ - If your assistants are multilingual, you can provide content for each language.
+ - If you don't provide content for a language, the first item in the array will be automatically translated to the active language at that moment.
+
+ This will override the `content` property.
+ """
+
type: typing.Literal["request-response-delayed"] = pydantic.Field(default="request-response-delayed")
"""
This message is triggered when the tool call is delayed.
There are the two things that can trigger this message:
-
1. The user talks with the assistant while your server is processing the request. Default is "Sorry, a few more seconds."
2. The server doesn't respond within `timingMilliseconds`.
@@ -29,7 +40,7 @@ class ToolMessageDelayed(UniversalBaseModel):
The number of milliseconds to wait for the server response before saying this message.
"""
- content: str = pydantic.Field()
+ content: typing.Optional[str] = pydantic.Field(default=None)
"""
This is the content that the assistant says when this message is triggered.
"""
diff --git a/src/vapi/types/tool_message_failed.py b/src/vapi/types/tool_message_failed.py
index bea0139..31b666f 100644
--- a/src/vapi/types/tool_message_failed.py
+++ b/src/vapi/types/tool_message_failed.py
@@ -2,6 +2,7 @@
from ..core.pydantic_utilities import UniversalBaseModel
import typing
+from .text_content import TextContent
import pydantic
import typing_extensions
from ..core.serialization import FieldMetadata
@@ -10,6 +11,17 @@
class ToolMessageFailed(UniversalBaseModel):
+ contents: typing.Optional[typing.List[TextContent]] = pydantic.Field(default=None)
+ """
+ This is an alternative to the `content` property. It allows to specify variants of the same content, one per language.
+
+ Usage:
+ - If your assistants are multilingual, you can provide content for each language.
+ - If you don't provide content for a language, the first item in the array will be automatically translated to the active language at that moment.
+
+ This will override the `content` property.
+ """
+
type: typing.Literal["request-failed"] = pydantic.Field(default="request-failed")
"""
This message is triggered when the tool call fails.
@@ -30,7 +42,7 @@ class ToolMessageFailed(UniversalBaseModel):
@default false
"""
- content: str = pydantic.Field()
+ content: typing.Optional[str] = pydantic.Field(default=None)
"""
This is the content that the assistant says when this message is triggered.
"""
diff --git a/src/vapi/types/tool_message_start.py b/src/vapi/types/tool_message_start.py
index 9b5971e..1e33ad0 100644
--- a/src/vapi/types/tool_message_start.py
+++ b/src/vapi/types/tool_message_start.py
@@ -2,12 +2,24 @@
from ..core.pydantic_utilities import UniversalBaseModel
import typing
+from .text_content import TextContent
import pydantic
from .condition import Condition
from ..core.pydantic_utilities import IS_PYDANTIC_V2
class ToolMessageStart(UniversalBaseModel):
+ contents: typing.Optional[typing.List[TextContent]] = pydantic.Field(default=None)
+ """
+ This is an alternative to the `content` property. It allows to specify variants of the same content, one per language.
+
+ Usage:
+ - If your assistants are multilingual, you can provide content for each language.
+ - If you don't provide content for a language, the first item in the array will be automatically translated to the active language at that moment.
+
+ This will override the `content` property.
+ """
+
type: typing.Literal["request-start"] = pydantic.Field(default="request-start")
"""
This message is triggered when the tool call starts.
@@ -17,7 +29,7 @@ class ToolMessageStart(UniversalBaseModel):
If this message is not provided, one of the default filler messages "Hold on a sec", "One moment", "Just a sec", "Give me a moment" or "This'll just take a sec" will be used.
"""
- content: str = pydantic.Field()
+ content: typing.Optional[str] = pydantic.Field(default=None)
"""
This is the content that the assistant says when this message is triggered.
"""
diff --git a/src/vapi/types/transcriber_cost.py b/src/vapi/types/transcriber_cost.py
index acdffef..3edab36 100644
--- a/src/vapi/types/transcriber_cost.py
+++ b/src/vapi/types/transcriber_cost.py
@@ -17,7 +17,6 @@ class TranscriberCost(UniversalBaseModel):
This is the transcriber that was used during the call.
This matches one of the below:
-
- `call.assistant.transcriber`,
- `call.assistantId->transcriber`,
- `call.squad[n].assistant.transcriber`,
diff --git a/src/vapi/types/transcript_plan.py b/src/vapi/types/transcript_plan.py
index 09746cd..8ddd5dc 100644
--- a/src/vapi/types/transcript_plan.py
+++ b/src/vapi/types/transcript_plan.py
@@ -23,9 +23,7 @@ class TranscriptPlan(UniversalBaseModel):
This is the name of the assistant in the transcript. Defaults to 'AI'.
Usage:
-
- If you want to change the name of the assistant in the transcript, set this. Example, here is what the transcript would look like with `assistantName` set to 'Buyer':
-
```
User: Hello, how are you?
Buyer: I'm fine.
@@ -43,9 +41,7 @@ class TranscriptPlan(UniversalBaseModel):
This is the name of the user in the transcript. Defaults to 'User'.
Usage:
-
- If you want to change the name of the user in the transcript, set this. Example, here is what the transcript would look like with `userName` set to 'Seller':
-
```
Seller: Hello, how are you?
AI: I'm fine.
diff --git a/src/vapi/types/transfer_destination_assistant.py b/src/vapi/types/transfer_destination_assistant.py
index 30281f8..a6d0e31 100644
--- a/src/vapi/types/transfer_destination_assistant.py
+++ b/src/vapi/types/transfer_destination_assistant.py
@@ -2,63 +2,96 @@
from ..core.pydantic_utilities import UniversalBaseModel
import typing
+from .transfer_destination_assistant_message import TransferDestinationAssistantMessage
+import pydantic
import typing_extensions
from .transfer_mode import TransferMode
from ..core.serialization import FieldMetadata
-import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2
class TransferDestinationAssistant(UniversalBaseModel):
+ message: typing.Optional[TransferDestinationAssistantMessage] = pydantic.Field(default=None)
+ """
+ This is spoken to the customer before connecting them to the destination.
+
+ Usage:
+ - If this is not provided and transfer tool messages is not provided, default is "Transferring the call now".
+ - If set to "", nothing is spoken. This is useful when you want to silently transfer. This is especially useful when transferring between assistants in a squad. In this scenario, you likely also want to set `assistant.firstMessageMode=assistant-speaks-first-with-model-generated-message` for the destination assistant.
+
+ This accepts a string or a ToolMessageStart class. Latter is useful if you want to specify multiple messages for different languages through the `contents` field.
+ """
+
type: typing.Literal["assistant"] = "assistant"
transfer_mode: typing_extensions.Annotated[typing.Optional[TransferMode], FieldMetadata(alias="transferMode")] = (
pydantic.Field(default=None)
)
"""
- This is the mode to use for the transfer. Default is `rolling-history`.
+ This is the mode to use for the transfer. Defaults to `rolling-history`.
- `rolling-history`: This is the default mode. It keeps the entire conversation history and appends the new assistant's system message on transfer.
Example:
Pre-transfer:
- system: assistant1 system message
- assistant: assistant1 first message
- user: hey, good morning
- assistant: how can i help?
- user: i need help with my account
- assistant: (destination.message)
+ system: assistant1 system message
+ assistant: assistant1 first message
+ user: hey, good morning
+ assistant: how can i help?
+ user: i need help with my account
+ assistant: (destination.message)
Post-transfer:
- system: assistant1 system message
- assistant: assistant1 first message
- user: hey, good morning
- assistant: how can i help?
- user: i need help with my account
- assistant: (destination.message)
- system: assistant2 system message
- assistant: assistant2 first message (or model generated if firstMessageMode is set to `assistant-speaks-first-with-model-generated-message`)
+ system: assistant1 system message
+ assistant: assistant1 first message
+ user: hey, good morning
+ assistant: how can i help?
+ user: i need help with my account
+ assistant: (destination.message)
+ system: assistant2 system message
+ assistant: assistant2 first message (or model generated if firstMessageMode is set to `assistant-speaks-first-with-model-generated-message`)
- `swap-system-message-in-history`: This replaces the original system message with the new assistant's system message on transfer.
Example:
Pre-transfer:
- system: assistant1 system message
- assistant: assistant1 first message
- user: hey, good morning
- assistant: how can i help?
- user: i need help with my account
- assistant: (destination.message)
+ system: assistant1 system message
+ assistant: assistant1 first message
+ user: hey, good morning
+ assistant: how can i help?
+ user: i need help with my account
+ assistant: (destination.message)
+
+ Post-transfer:
+ system: assistant2 system message
+ assistant: assistant1 first message
+ user: hey, good morning
+ assistant: how can i help?
+ user: i need help with my account
+ assistant: (destination.message)
+ assistant: assistant2 first message (or model generated if firstMessageMode is set to `assistant-speaks-first-with-model-generated-message`)
+
+ - `delete-history`: This deletes the entire conversation history on transfer.
+
+ Example:
+
+ Pre-transfer:
+ system: assistant1 system message
+ assistant: assistant1 first message
+ user: hey, good morning
+ assistant: how can i help?
+ user: i need help with my account
+ assistant: (destination.message)
Post-transfer:
- system: assistant2 system message
- assistant: assistant1 first message
- user: hey, good morning
- assistant: how can i help?
- user: i need help with my account
- assistant: (destination.message)
- assistant: assistant2 first message (or model generated if firstMessageMode is set to `assistant-speaks-first-with-model-generated-message`)
+ system: assistant2 system message
+ assistant: assistant2 first message
+ user: Yes, please
+ assistant: how can i help?
+ user: i need help with my account
+
+ @default 'rolling-history'
"""
assistant_name: typing_extensions.Annotated[str, FieldMetadata(alias="assistantName")] = pydantic.Field()
@@ -66,15 +99,6 @@ class TransferDestinationAssistant(UniversalBaseModel):
This is the assistant to transfer the call to.
"""
- message: typing.Optional[str] = pydantic.Field(default=None)
- """
- This is the message to say before transferring the call to the destination.
-
- If this is not provided and transfer tool messages is not provided, default is "Transferring the call now".
-
- If set to "", nothing is spoken. This is useful when you want to silently transfer. This is especially useful when transferring between assistants in a squad. In this scenario, you likely also want to set `assistant.firstMessageMode=assistant-speaks-first-with-model-generated-message` for the destination assistant.
- """
-
description: typing.Optional[str] = pydantic.Field(default=None)
"""
This is the description of the destination, used by the AI to choose when and how to transfer the call.
diff --git a/src/vapi/types/transfer_destination_assistant_message.py b/src/vapi/types/transfer_destination_assistant_message.py
new file mode 100644
index 0000000..1f2464c
--- /dev/null
+++ b/src/vapi/types/transfer_destination_assistant_message.py
@@ -0,0 +1,6 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+from .custom_message import CustomMessage
+
+TransferDestinationAssistantMessage = typing.Union[str, CustomMessage]
diff --git a/src/vapi/types/transfer_destination_number.py b/src/vapi/types/transfer_destination_number.py
index 82c6d6a..0081eee 100644
--- a/src/vapi/types/transfer_destination_number.py
+++ b/src/vapi/types/transfer_destination_number.py
@@ -2,13 +2,26 @@
from ..core.pydantic_utilities import UniversalBaseModel
import typing
+from .transfer_destination_number_message import TransferDestinationNumberMessage
+import pydantic
import typing_extensions
from ..core.serialization import FieldMetadata
-import pydantic
+from .transfer_plan import TransferPlan
from ..core.pydantic_utilities import IS_PYDANTIC_V2
class TransferDestinationNumber(UniversalBaseModel):
+ message: typing.Optional[TransferDestinationNumberMessage] = pydantic.Field(default=None)
+ """
+ This is spoken to the customer before connecting them to the destination.
+
+ Usage:
+ - If this is not provided and transfer tool messages is not provided, default is "Transferring the call now".
+ - If set to "", nothing is spoken. This is useful when you want to silently transfer. This is especially useful when transferring between assistants in a squad. In this scenario, you likely also want to set `assistant.firstMessageMode=assistant-speaks-first-with-model-generated-message` for the destination assistant.
+
+ This accepts a string or a ToolMessageStart class. Latter is useful if you want to specify multiple messages for different languages through the `contents` field.
+ """
+
type: typing.Literal["number"] = "number"
number_e_164_check_enabled: typing_extensions.Annotated[
typing.Optional[bool], FieldMetadata(alias="numberE164CheckEnabled")
@@ -17,7 +30,6 @@ class TransferDestinationNumber(UniversalBaseModel):
This is the flag to toggle the E164 check for the `number` field. This is an advanced property which should be used if you know your use case requires it.
Use cases:
-
- `false`: To allow non-E164 numbers like `+001234567890`, `1234`, or `abc`. This is useful for dialing out to non-E164 numbers on your SIP trunks.
- `true` (default): To allow only E164 numbers like `+14155551234`. This is standard for PSTN calls.
@@ -43,7 +55,6 @@ class TransferDestinationNumber(UniversalBaseModel):
This is the caller ID to use when transferring the call to the `number`.
Usage:
-
- If not provided, the caller ID will be the number the call is coming from. Example, +14151111111 calls in to and the assistant transfers out to +16470000000. +16470000000 will see +14151111111 as the caller.
- To change this behavior, provide a `callerId`.
- Set to '{{customer.number}}' to always use the customer's number as the caller ID.
@@ -53,13 +64,13 @@ class TransferDestinationNumber(UniversalBaseModel):
For Twilio, you can read up more here: https://www.twilio.com/docs/voice/twiml/dial#callerid
"""
- message: typing.Optional[str] = pydantic.Field(default=None)
+ transfer_plan: typing_extensions.Annotated[typing.Optional[TransferPlan], FieldMetadata(alias="transferPlan")] = (
+ pydantic.Field(default=None)
+ )
"""
- This is the message to say before transferring the call to the destination.
-
- If this is not provided and transfer tool messages is not provided, default is "Transferring the call now".
+ This configures how transfer is executed and the experience of the destination party receiving the call. Defaults to `blind-transfer`.
- If set to "", nothing is spoken. This is useful when you want to silently transfer. This is especially useful when transferring between assistants in a squad. In this scenario, you likely also want to set `assistant.firstMessageMode=assistant-speaks-first-with-model-generated-message` for the destination assistant.
+ @default `transferPlan.mode='blind-transfer'`
"""
description: typing.Optional[str] = pydantic.Field(default=None)
diff --git a/src/vapi/types/transfer_destination_number_message.py b/src/vapi/types/transfer_destination_number_message.py
new file mode 100644
index 0000000..fbecf32
--- /dev/null
+++ b/src/vapi/types/transfer_destination_number_message.py
@@ -0,0 +1,6 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+from .custom_message import CustomMessage
+
+TransferDestinationNumberMessage = typing.Union[str, CustomMessage]
diff --git a/src/vapi/types/transfer_destination_sip.py b/src/vapi/types/transfer_destination_sip.py
index 7fead77..01ac6ea 100644
--- a/src/vapi/types/transfer_destination_sip.py
+++ b/src/vapi/types/transfer_destination_sip.py
@@ -2,26 +2,46 @@
from ..core.pydantic_utilities import UniversalBaseModel
import typing
+from .transfer_destination_sip_message import TransferDestinationSipMessage
+import pydantic
import typing_extensions
from ..core.serialization import FieldMetadata
-import pydantic
+from .transfer_plan import TransferPlan
from ..core.pydantic_utilities import IS_PYDANTIC_V2
class TransferDestinationSip(UniversalBaseModel):
+ message: typing.Optional[TransferDestinationSipMessage] = pydantic.Field(default=None)
+ """
+ This is spoken to the customer before connecting them to the destination.
+
+ Usage:
+ - If this is not provided and transfer tool messages is not provided, default is "Transferring the call now".
+ - If set to "", nothing is spoken. This is useful when you want to silently transfer. This is especially useful when transferring between assistants in a squad. In this scenario, you likely also want to set `assistant.firstMessageMode=assistant-speaks-first-with-model-generated-message` for the destination assistant.
+
+ This accepts a string or a ToolMessageStart class. Latter is useful if you want to specify multiple messages for different languages through the `contents` field.
+ """
+
type: typing.Literal["sip"] = "sip"
sip_uri: typing_extensions.Annotated[str, FieldMetadata(alias="sipUri")] = pydantic.Field()
"""
This is the SIP URI to transfer the call to.
"""
- message: typing.Optional[str] = pydantic.Field(default=None)
+ transfer_plan: typing_extensions.Annotated[typing.Optional[TransferPlan], FieldMetadata(alias="transferPlan")] = (
+ pydantic.Field(default=None)
+ )
"""
- This is the message to say before transferring the call to the destination.
-
- If this is not provided and transfer tool messages is not provided, default is "Transferring the call now".
+ This configures how transfer is executed and the experience of the destination party receiving the call. Defaults to `blind-transfer`.
- If set to "", nothing is spoken. This is useful when you want to silently transfer. This is especially useful when transferring between assistants in a squad. In this scenario, you likely also want to set `assistant.firstMessageMode=assistant-speaks-first-with-model-generated-message` for the destination assistant.
+ @default `transferPlan.mode='blind-transfer'`
+ """
+
+ sip_headers: typing_extensions.Annotated[
+ typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]], FieldMetadata(alias="sipHeaders")
+ ] = pydantic.Field(default=None)
+ """
+ These are custom headers to be added to SIP refer during transfer call.
"""
description: typing.Optional[str] = pydantic.Field(default=None)
diff --git a/src/vapi/types/transfer_destination_sip_message.py b/src/vapi/types/transfer_destination_sip_message.py
new file mode 100644
index 0000000..01dbf4b
--- /dev/null
+++ b/src/vapi/types/transfer_destination_sip_message.py
@@ -0,0 +1,6 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+from .custom_message import CustomMessage
+
+TransferDestinationSipMessage = typing.Union[str, CustomMessage]
diff --git a/src/vapi/types/transfer_destination_step.py b/src/vapi/types/transfer_destination_step.py
index af9b5a9..5646324 100644
--- a/src/vapi/types/transfer_destination_step.py
+++ b/src/vapi/types/transfer_destination_step.py
@@ -2,26 +2,29 @@
from ..core.pydantic_utilities import UniversalBaseModel
import typing
+from .transfer_destination_step_message import TransferDestinationStepMessage
+import pydantic
import typing_extensions
from ..core.serialization import FieldMetadata
-import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2
class TransferDestinationStep(UniversalBaseModel):
- type: typing.Literal["step"] = "step"
- step_name: typing_extensions.Annotated[str, FieldMetadata(alias="stepName")] = pydantic.Field()
+ message: typing.Optional[TransferDestinationStepMessage] = pydantic.Field(default=None)
"""
- This is the step to transfer to.
+ This is spoken to the customer before connecting them to the destination.
+
+ Usage:
+ - If this is not provided and transfer tool messages is not provided, default is "Transferring the call now".
+ - If set to "", nothing is spoken. This is useful when you want to silently transfer. This is especially useful when transferring between assistants in a squad. In this scenario, you likely also want to set `assistant.firstMessageMode=assistant-speaks-first-with-model-generated-message` for the destination assistant.
+
+ This accepts a string or a ToolMessageStart class. Latter is useful if you want to specify multiple messages for different languages through the `contents` field.
"""
- message: typing.Optional[str] = pydantic.Field(default=None)
+ type: typing.Literal["step"] = "step"
+ step_name: typing_extensions.Annotated[str, FieldMetadata(alias="stepName")] = pydantic.Field()
"""
- This is the message to say before transferring the call to the destination.
-
- If this is not provided and transfer tool messages is not provided, default is "Transferring the call now".
-
- If set to "", nothing is spoken. This is useful when you want to silently transfer. This is especially useful when transferring between assistants in a squad. In this scenario, you likely also want to set `assistant.firstMessageMode=assistant-speaks-first-with-model-generated-message` for the destination assistant.
+ This is the step to transfer to.
"""
description: typing.Optional[str] = pydantic.Field(default=None)
diff --git a/src/vapi/types/transfer_destination_step_message.py b/src/vapi/types/transfer_destination_step_message.py
new file mode 100644
index 0000000..71caf7b
--- /dev/null
+++ b/src/vapi/types/transfer_destination_step_message.py
@@ -0,0 +1,6 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+from .custom_message import CustomMessage
+
+TransferDestinationStepMessage = typing.Union[str, CustomMessage]
diff --git a/src/vapi/types/transfer_plan.py b/src/vapi/types/transfer_plan.py
new file mode 100644
index 0000000..b7a1f84
--- /dev/null
+++ b/src/vapi/types/transfer_plan.py
@@ -0,0 +1,55 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+from .transfer_plan_mode import TransferPlanMode
+import pydantic
+import typing
+from .transfer_plan_message import TransferPlanMessage
+import typing_extensions
+from .summary_plan import SummaryPlan
+from ..core.serialization import FieldMetadata
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class TransferPlan(UniversalBaseModel):
+ mode: TransferPlanMode = pydantic.Field()
+ """
+ This configures how transfer is executed and the experience of the destination party receiving the call.
+
+ Usage:
+ - `blind-transfer`: The assistant forwards the call to the destination without any message or summary.
+ - `blind-transfer-add-summary-to-sip-header`: The assistant forwards the call to the destination and adds a SIP header X-Transfer-Summary to the call to include the summary.
+ - `warm-transfer-say-message`: The assistant dials the destination, delivers the `message` to the destination party, connects the customer, and leaves the call.
+ - `warm-transfer-say-summary`: The assistant dials the destination, provides a summary of the call to the destination party, connects the customer, and leaves the call.
+ - `warm-transfer-wait-for-operator-to-speak-first-and-then-say-message`: The assistant dials the destination, waits for the operator to speak, delivers the `message` to the destination party, and then connects the customer.
+ - `warm-transfer-wait-for-operator-to-speak-first-and-then-say-summary`: The assistant dials the destination, waits for the operator to speak, provides a summary of the call to the destination party, and then connects the customer.
+
+ @default 'blind-transfer'
+ """
+
+ message: typing.Optional[TransferPlanMessage] = pydantic.Field(default=None)
+ """
+ This is the message the assistant will deliver to the destination party before connecting the customer.
+
+ Usage:
+ - Used only when `mode` is `warm-transfer-say-message` or `warm-transfer-wait-for-operator-to-speak-first-and-then-say-message`.
+ """
+
+ summary_plan: typing_extensions.Annotated[typing.Optional[SummaryPlan], FieldMetadata(alias="summaryPlan")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the plan for generating a summary of the call to present to the destination party.
+
+ Usage:
+ - Used only when `mode` is `warm-transfer-say-summary` or `warm-transfer-wait-for-operator-to-speak-first-and-then-say-summary`.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/transfer_plan_message.py b/src/vapi/types/transfer_plan_message.py
new file mode 100644
index 0000000..6348ff5
--- /dev/null
+++ b/src/vapi/types/transfer_plan_message.py
@@ -0,0 +1,6 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+from .custom_message import CustomMessage
+
+TransferPlanMessage = typing.Union[str, CustomMessage]
diff --git a/src/vapi/types/transfer_plan_mode.py b/src/vapi/types/transfer_plan_mode.py
new file mode 100644
index 0000000..8a28634
--- /dev/null
+++ b/src/vapi/types/transfer_plan_mode.py
@@ -0,0 +1,15 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+TransferPlanMode = typing.Union[
+ typing.Literal[
+ "blind-transfer",
+ "blind-transfer-add-summary-to-sip-header",
+ "warm-transfer-say-message",
+ "warm-transfer-say-summary",
+ "warm-transfer-wait-for-operator-to-speak-first-and-then-say-message",
+ "warm-transfer-wait-for-operator-to-speak-first-and-then-say-summary",
+ ],
+ typing.Any,
+]
diff --git a/src/vapi/types/transport.py b/src/vapi/types/transport.py
new file mode 100644
index 0000000..51cb19f
--- /dev/null
+++ b/src/vapi/types/transport.py
@@ -0,0 +1,34 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+from .transport_provider import TransportProvider
+import pydantic
+import typing_extensions
+from ..core.serialization import FieldMetadata
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class Transport(UniversalBaseModel):
+ provider: typing.Optional[TransportProvider] = pydantic.Field(default=None)
+ """
+ This is the provider used for the call.
+ """
+
+ assistant_video_enabled: typing_extensions.Annotated[
+ typing.Optional[bool], FieldMetadata(alias="assistantVideoEnabled")
+ ] = pydantic.Field(default=None)
+ """
+ This is determines whether the assistant will have video enabled.
+
+ Only relevant for `webCall` type.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/transport_cost.py b/src/vapi/types/transport_cost.py
index 59643de..2793bbb 100644
--- a/src/vapi/types/transport_cost.py
+++ b/src/vapi/types/transport_cost.py
@@ -3,6 +3,7 @@
from ..core.pydantic_utilities import UniversalBaseModel
import typing
import pydantic
+from .transport_cost_provider import TransportCostProvider
from ..core.pydantic_utilities import IS_PYDANTIC_V2
@@ -12,6 +13,7 @@ class TransportCost(UniversalBaseModel):
This is the type of cost, always 'transport' for this class.
"""
+ provider: typing.Optional[TransportCostProvider] = None
minutes: float = pydantic.Field()
"""
This is the minutes of `transport` usage. This should match `call.endedAt` - `call.startedAt`.
diff --git a/src/vapi/types/transport_cost_provider.py b/src/vapi/types/transport_cost_provider.py
new file mode 100644
index 0000000..0987ee9
--- /dev/null
+++ b/src/vapi/types/transport_cost_provider.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+TransportCostProvider = typing.Union[typing.Literal["twilio", "vonage", "vapi"], typing.Any]
diff --git a/src/vapi/types/transport_provider.py b/src/vapi/types/transport_provider.py
new file mode 100644
index 0000000..094df37
--- /dev/null
+++ b/src/vapi/types/transport_provider.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+TransportProvider = typing.Union[typing.Literal["twilio", "vonage", "vapi", "daily"], typing.Any]
diff --git a/src/vapi/types/trieve_knowledge_base.py b/src/vapi/types/trieve_knowledge_base.py
new file mode 100644
index 0000000..9eea2e3
--- /dev/null
+++ b/src/vapi/types/trieve_knowledge_base.py
@@ -0,0 +1,62 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import pydantic
+import typing_extensions
+from .trieve_knowledge_base_vector_store_search_plan import TrieveKnowledgeBaseVectorStoreSearchPlan
+from ..core.serialization import FieldMetadata
+from .trieve_knowledge_base_vector_store_create_plan import TrieveKnowledgeBaseVectorStoreCreatePlan
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class TrieveKnowledgeBase(UniversalBaseModel):
+ provider: typing.Literal["trieve"] = "trieve"
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of the knowledge base.
+ """
+
+ vector_store_search_plan: typing_extensions.Annotated[
+ TrieveKnowledgeBaseVectorStoreSearchPlan, FieldMetadata(alias="vectorStoreSearchPlan")
+ ] = pydantic.Field()
+ """
+ This is the plan on how to search the vector store while a call is going on.
+ """
+
+ vector_store_create_plan: typing_extensions.Annotated[
+ typing.Optional[TrieveKnowledgeBaseVectorStoreCreatePlan], FieldMetadata(alias="vectorStoreCreatePlan")
+ ] = pydantic.Field(default=None)
+ """
+ This is the plan if you want us to create a new vector store on your behalf. To use an existing vector store from your account, use `vectoreStoreProviderId`
+ """
+
+ vector_store_provider_id: typing_extensions.Annotated[
+ typing.Optional[str], FieldMetadata(alias="vectorStoreProviderId")
+ ] = pydantic.Field(default=None)
+ """
+ This is an vector store that you already have on your account with the provider. To create a new vector store, use vectorStoreCreatePlan.
+
+ Usage:
+ - To bring your own vector store from Trieve, go to https://trieve.ai
+ - Create a dataset, and use the datasetId here.
+ """
+
+ id: str = pydantic.Field()
+ """
+ This is the id of the knowledge base.
+ """
+
+ org_id: typing_extensions.Annotated[str, FieldMetadata(alias="orgId")] = pydantic.Field()
+ """
+ This is the org id of the knowledge base.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/trieve_knowledge_base_vector_store_create_plan.py b/src/vapi/types/trieve_knowledge_base_vector_store_create_plan.py
new file mode 100644
index 0000000..091d9ec
--- /dev/null
+++ b/src/vapi/types/trieve_knowledge_base_vector_store_create_plan.py
@@ -0,0 +1,45 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing_extensions
+import typing
+from ..core.serialization import FieldMetadata
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class TrieveKnowledgeBaseVectorStoreCreatePlan(UniversalBaseModel):
+ file_ids: typing_extensions.Annotated[typing.List[str], FieldMetadata(alias="fileIds")] = pydantic.Field()
+ """
+ These are the file ids that will be used to create the vector store. To upload files, use the `POST /files` endpoint.
+ """
+
+ target_splits_per_chunk: typing_extensions.Annotated[
+ typing.Optional[float], FieldMetadata(alias="targetSplitsPerChunk")
+ ] = pydantic.Field(default=None)
+ """
+ This is an optional field which allows you to specify the number of splits you want per chunk. If not specified, the default 20 is used. However, you may want to use a different number.
+ """
+
+ split_delimiters: typing_extensions.Annotated[
+ typing.Optional[typing.List[str]], FieldMetadata(alias="splitDelimiters")
+ ] = pydantic.Field(default=None)
+ """
+ This is an optional field which allows you to specify the delimiters to use when splitting the file before chunking the text. If not specified, the default [.!?\n] are used to split into sentences. However, you may want to use spaces or other delimiters.
+ """
+
+ rebalance_chunks: typing_extensions.Annotated[typing.Optional[bool], FieldMetadata(alias="rebalanceChunks")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is an optional field which allows you to specify whether or not to rebalance the chunks created from the file. If not specified, the default true is used. If true, Trieve will evenly distribute remainder splits across chunks such that 66 splits with a target_splits_per_chunk of 20 will result in 3 chunks with 22 splits each.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/trieve_knowledge_base_vector_store_search_plan.py b/src/vapi/types/trieve_knowledge_base_vector_store_search_plan.py
new file mode 100644
index 0000000..278901b
--- /dev/null
+++ b/src/vapi/types/trieve_knowledge_base_vector_store_search_plan.py
@@ -0,0 +1,43 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing_extensions
+import typing
+from ..core.serialization import FieldMetadata
+import pydantic
+from .trieve_knowledge_base_vector_store_search_plan_search_type import (
+ TrieveKnowledgeBaseVectorStoreSearchPlanSearchType,
+)
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class TrieveKnowledgeBaseVectorStoreSearchPlan(UniversalBaseModel):
+ remove_stop_words: typing_extensions.Annotated[typing.Optional[bool], FieldMetadata(alias="removeStopWords")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ If true, stop words (specified in server/src/stop-words.txt in the git repo) will be removed. This will preserve queries that are entirely stop words.
+ """
+
+ score_threshold: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="scoreThreshold")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the score threshold to filter out chunks with a score below the threshold for cosine distance metric. For Manhattan Distance, Euclidean Distance, and Dot Product, it will filter out scores above the threshold distance. This threshold applies before weight and bias modifications. If not specified, this defaults to no threshold. A threshold of 0 will default to no threshold.
+ """
+
+ search_type: typing_extensions.Annotated[
+ TrieveKnowledgeBaseVectorStoreSearchPlanSearchType, FieldMetadata(alias="searchType")
+ ] = pydantic.Field()
+ """
+ This is the search method used when searching for relevant chunks from the vector store.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/trieve_knowledge_base_vector_store_search_plan_search_type.py b/src/vapi/types/trieve_knowledge_base_vector_store_search_plan_search_type.py
new file mode 100644
index 0000000..924a3a0
--- /dev/null
+++ b/src/vapi/types/trieve_knowledge_base_vector_store_search_plan_search_type.py
@@ -0,0 +1,7 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+TrieveKnowledgeBaseVectorStoreSearchPlanSearchType = typing.Union[
+ typing.Literal["fulltext", "semantic", "hybrid", "bm25"], typing.Any
+]
diff --git a/src/vapi/types/twilio_credential.py b/src/vapi/types/twilio_credential.py
index 30ea1cc..b4aba4f 100644
--- a/src/vapi/types/twilio_credential.py
+++ b/src/vapi/types/twilio_credential.py
@@ -36,6 +36,11 @@ class TwilioCredential(UniversalBaseModel):
This is the ISO 8601 date-time string of when the assistant was last updated.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
account_sid: typing_extensions.Annotated[str, FieldMetadata(alias="accountSid")]
if IS_PYDANTIC_V2:
diff --git a/src/vapi/types/twilio_phone_number.py b/src/vapi/types/twilio_phone_number.py
index ddd93fe..e1a3029 100644
--- a/src/vapi/types/twilio_phone_number.py
+++ b/src/vapi/types/twilio_phone_number.py
@@ -16,7 +16,6 @@ class TwilioPhoneNumber(UniversalBaseModel):
] = pydantic.Field(default=None)
"""
This is the fallback destination an inbound call will be transferred to if:
-
1. `assistantId` is not set
2. `squadId` is not set
3. and, `assistant-request` message to the `serverUrl` fails
diff --git a/src/vapi/types/twilio_voicemail_detection.py b/src/vapi/types/twilio_voicemail_detection.py
index 9d8b240..6e479f0 100644
--- a/src/vapi/types/twilio_voicemail_detection.py
+++ b/src/vapi/types/twilio_voicemail_detection.py
@@ -71,7 +71,6 @@ class TwilioVoicemailDetection(UniversalBaseModel):
The number of milliseconds of silence after speech activity at which point the speech activity is considered complete. Default is 1200 milliseconds.
Increasing this value will typically be used to better address the short voicemail greeting scenarios. For short voicemails, there is typically 1000-2000ms of audio followed by 1200-2400ms of silence and then additional audio before the beep. Increasing the MachineDetectionSpeechEndThreshold to ~2500ms will treat the 1200-2400ms of silence as a gap in the greeting but not the end of the greeting and will result in a machine detection. The downsides of such a change include:
-
- Increasing the delay for human detection by the amount you increase this parameter, e.g., a change of 1200ms to 2500ms increases human detection delay by 1300ms.
- Cases where a human has two utterances separated by a period of silence (e.g. a "Hello", then 2000ms of silence, and another "Hello") may be interpreted as a machine.
diff --git a/src/vapi/types/update_anthropic_credential_dto.py b/src/vapi/types/update_anthropic_credential_dto.py
index 74a4b61..dcb2499 100644
--- a/src/vapi/types/update_anthropic_credential_dto.py
+++ b/src/vapi/types/update_anthropic_credential_dto.py
@@ -15,6 +15,11 @@ class UpdateAnthropicCredentialDto(UniversalBaseModel):
This is not returned in the API.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/update_anyscale_credential_dto.py b/src/vapi/types/update_anyscale_credential_dto.py
index 0f33436..2c0e78c 100644
--- a/src/vapi/types/update_anyscale_credential_dto.py
+++ b/src/vapi/types/update_anyscale_credential_dto.py
@@ -15,6 +15,11 @@ class UpdateAnyscaleCredentialDto(UniversalBaseModel):
This is not returned in the API.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/update_assembly_ai_credential_dto.py b/src/vapi/types/update_assembly_ai_credential_dto.py
new file mode 100644
index 0000000..8d9f613
--- /dev/null
+++ b/src/vapi/types/update_assembly_ai_credential_dto.py
@@ -0,0 +1,30 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import typing_extensions
+from ..core.serialization import FieldMetadata
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class UpdateAssemblyAiCredentialDto(UniversalBaseModel):
+ provider: typing.Literal["assembly-ai"] = "assembly-ai"
+ api_key: typing_extensions.Annotated[str, FieldMetadata(alias="apiKey")] = pydantic.Field()
+ """
+ This is not returned in the API.
+ """
+
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/update_azure_credential_dto.py b/src/vapi/types/update_azure_credential_dto.py
new file mode 100644
index 0000000..e5dab61
--- /dev/null
+++ b/src/vapi/types/update_azure_credential_dto.py
@@ -0,0 +1,43 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import pydantic
+from .update_azure_credential_dto_region import UpdateAzureCredentialDtoRegion
+import typing_extensions
+from ..core.serialization import FieldMetadata
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class UpdateAzureCredentialDto(UniversalBaseModel):
+ provider: typing.Literal["azure"] = "azure"
+ service: typing.Literal["speech"] = pydantic.Field(default="speech")
+ """
+ This is the service being used in Azure.
+ """
+
+ region: typing.Optional[UpdateAzureCredentialDtoRegion] = pydantic.Field(default=None)
+ """
+ This is the region of the Azure resource.
+ """
+
+ api_key: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="apiKey")] = pydantic.Field(
+ default=None
+ )
+ """
+ This is not returned in the API.
+ """
+
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/update_azure_credential_dto_region.py b/src/vapi/types/update_azure_credential_dto_region.py
new file mode 100644
index 0000000..26e09f5
--- /dev/null
+++ b/src/vapi/types/update_azure_credential_dto_region.py
@@ -0,0 +1,25 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+UpdateAzureCredentialDtoRegion = typing.Union[
+ typing.Literal[
+ "australia",
+ "canada",
+ "eastus2",
+ "eastus",
+ "france",
+ "india",
+ "japan",
+ "uaenorth",
+ "northcentralus",
+ "norway",
+ "southcentralus",
+ "sweden",
+ "switzerland",
+ "uk",
+ "westus",
+ "westus3",
+ ],
+ typing.Any,
+]
diff --git a/src/vapi/types/update_azure_open_ai_credential_dto.py b/src/vapi/types/update_azure_open_ai_credential_dto.py
index f71bf52..942b591 100644
--- a/src/vapi/types/update_azure_open_ai_credential_dto.py
+++ b/src/vapi/types/update_azure_open_ai_credential_dto.py
@@ -20,6 +20,10 @@ class UpdateAzureOpenAiCredentialDto(UniversalBaseModel):
"""
open_ai_endpoint: typing_extensions.Annotated[str, FieldMetadata(alias="openAIEndpoint")]
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
diff --git a/src/vapi/types/update_azure_open_ai_credential_dto_models_item.py b/src/vapi/types/update_azure_open_ai_credential_dto_models_item.py
index 529eb2a..0ba8bfe 100644
--- a/src/vapi/types/update_azure_open_ai_credential_dto_models_item.py
+++ b/src/vapi/types/update_azure_open_ai_credential_dto_models_item.py
@@ -4,6 +4,7 @@
UpdateAzureOpenAiCredentialDtoModelsItem = typing.Union[
typing.Literal[
+ "gpt-4o-2024-08-06",
"gpt-4o-mini-2024-07-18",
"gpt-4o-2024-05-13",
"gpt-4-turbo-2024-04-09",
diff --git a/src/vapi/types/update_azure_open_ai_credential_dto_region.py b/src/vapi/types/update_azure_open_ai_credential_dto_region.py
index 874a5bb..7fdb9ee 100644
--- a/src/vapi/types/update_azure_open_ai_credential_dto_region.py
+++ b/src/vapi/types/update_azure_open_ai_credential_dto_region.py
@@ -11,6 +11,7 @@
"france",
"india",
"japan",
+ "uaenorth",
"northcentralus",
"norway",
"southcentralus",
diff --git a/src/vapi/types/update_byo_sip_trunk_credential_dto.py b/src/vapi/types/update_byo_sip_trunk_credential_dto.py
index 3bec860..e01aaa6 100644
--- a/src/vapi/types/update_byo_sip_trunk_credential_dto.py
+++ b/src/vapi/types/update_byo_sip_trunk_credential_dto.py
@@ -22,11 +22,6 @@ class UpdateByoSipTrunkCredentialDto(UniversalBaseModel):
This is the list of SIP trunk's gateways.
"""
- name: typing.Optional[str] = pydantic.Field(default=None)
- """
- This is the name of the SIP trunk. This is just for your reference.
- """
-
outbound_authentication_plan: typing_extensions.Annotated[
typing.Optional[SipTrunkOutboundAuthenticationPlan], FieldMetadata(alias="outboundAuthenticationPlan")
] = pydantic.Field(default=None)
@@ -41,12 +36,25 @@ class UpdateByoSipTrunkCredentialDto(UniversalBaseModel):
This ensures the outbound origination attempts have a leading plus. Defaults to false to match conventional telecom behavior.
Usage:
-
- Vonage/Twilio requires leading plus for all outbound calls. Set this to true.
@default false
"""
+ tech_prefix: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="techPrefix")] = pydantic.Field(
+ default=None
+ )
+ """
+ This can be used to configure the tech prefix on outbound calls. This is an advanced property.
+ """
+
+ sip_diversion_header: typing_extensions.Annotated[
+ typing.Optional[str], FieldMetadata(alias="sipDiversionHeader")
+ ] = pydantic.Field(default=None)
+ """
+ This can be used to enable the SIP diversion header for authenticating the calling number if the SIP trunk supports it. This is an advanced property.
+ """
+
sbc_configuration: typing_extensions.Annotated[
typing.Optional[SbcConfiguration], FieldMetadata(alias="sbcConfiguration")
] = pydantic.Field(default=None)
@@ -54,6 +62,11 @@ class UpdateByoSipTrunkCredentialDto(UniversalBaseModel):
This is an advanced configuration for enterprise deployments. This uses the onprem SBC to trunk into the SIP trunk's `gateways`, rather than the managed SBC provided by Vapi.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/update_cartesia_credential_dto.py b/src/vapi/types/update_cartesia_credential_dto.py
index d3adc83..c6a5725 100644
--- a/src/vapi/types/update_cartesia_credential_dto.py
+++ b/src/vapi/types/update_cartesia_credential_dto.py
@@ -15,6 +15,11 @@ class UpdateCartesiaCredentialDto(UniversalBaseModel):
This is not returned in the API.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/update_custom_llm_credential_dto.py b/src/vapi/types/update_custom_llm_credential_dto.py
index 68e1daa..22b4579 100644
--- a/src/vapi/types/update_custom_llm_credential_dto.py
+++ b/src/vapi/types/update_custom_llm_credential_dto.py
@@ -5,6 +5,7 @@
import typing_extensions
from ..core.serialization import FieldMetadata
import pydantic
+from .o_auth_2_authentication_plan import OAuth2AuthenticationPlan
from ..core.pydantic_utilities import IS_PYDANTIC_V2
@@ -15,6 +16,18 @@ class UpdateCustomLlmCredentialDto(UniversalBaseModel):
This is not returned in the API.
"""
+ authentication_plan: typing_extensions.Annotated[
+ typing.Optional[OAuth2AuthenticationPlan], FieldMetadata(alias="authenticationPlan")
+ ] = pydantic.Field(default=None)
+ """
+ This is the authentication plan. Currently supports OAuth2 RFC 6749. To use Bearer authentication, use apiKey
+ """
+
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/update_deep_infra_credential_dto.py b/src/vapi/types/update_deep_infra_credential_dto.py
index 59d154e..820f98a 100644
--- a/src/vapi/types/update_deep_infra_credential_dto.py
+++ b/src/vapi/types/update_deep_infra_credential_dto.py
@@ -15,6 +15,11 @@ class UpdateDeepInfraCredentialDto(UniversalBaseModel):
This is not returned in the API.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/update_deepgram_credential_dto.py b/src/vapi/types/update_deepgram_credential_dto.py
index 522ee9f..3f1c619 100644
--- a/src/vapi/types/update_deepgram_credential_dto.py
+++ b/src/vapi/types/update_deepgram_credential_dto.py
@@ -22,6 +22,11 @@ class UpdateDeepgramCredentialDto(UniversalBaseModel):
This can be used to point to an onprem Deepgram instance. Defaults to api.deepgram.com.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/update_eleven_labs_credential_dto.py b/src/vapi/types/update_eleven_labs_credential_dto.py
index 7cf9735..1e4ca32 100644
--- a/src/vapi/types/update_eleven_labs_credential_dto.py
+++ b/src/vapi/types/update_eleven_labs_credential_dto.py
@@ -15,6 +15,11 @@ class UpdateElevenLabsCredentialDto(UniversalBaseModel):
This is not returned in the API.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/update_gcp_credential_dto.py b/src/vapi/types/update_gcp_credential_dto.py
index 81bfba5..3b66904 100644
--- a/src/vapi/types/update_gcp_credential_dto.py
+++ b/src/vapi/types/update_gcp_credential_dto.py
@@ -2,21 +2,16 @@
from ..core.pydantic_utilities import UniversalBaseModel
import typing
-import pydantic
import typing_extensions
from .gcp_key import GcpKey
from ..core.serialization import FieldMetadata
+import pydantic
from .bucket_plan import BucketPlan
from ..core.pydantic_utilities import IS_PYDANTIC_V2
class UpdateGcpCredentialDto(UniversalBaseModel):
provider: typing.Literal["gcp"] = "gcp"
- name: typing.Optional[str] = pydantic.Field(default=None)
- """
- This is the name of the GCP credential. This is just for your reference.
- """
-
gcp_key: typing_extensions.Annotated[GcpKey, FieldMetadata(alias="gcpKey")] = pydantic.Field()
"""
This is the GCP key. This is the JSON that can be generated in the Google Cloud Console at https://console.cloud.google.com/iam-admin/serviceaccounts/details//keys.
@@ -31,6 +26,11 @@ class UpdateGcpCredentialDto(UniversalBaseModel):
This is the bucket plan that can be provided to store call artifacts in GCP.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/update_gladia_credential_dto.py b/src/vapi/types/update_gladia_credential_dto.py
index ceb3faa..b8d910e 100644
--- a/src/vapi/types/update_gladia_credential_dto.py
+++ b/src/vapi/types/update_gladia_credential_dto.py
@@ -15,6 +15,11 @@ class UpdateGladiaCredentialDto(UniversalBaseModel):
This is not returned in the API.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/update_go_high_level_credential_dto.py b/src/vapi/types/update_go_high_level_credential_dto.py
index 60718a1..6fe228f 100644
--- a/src/vapi/types/update_go_high_level_credential_dto.py
+++ b/src/vapi/types/update_go_high_level_credential_dto.py
@@ -15,6 +15,11 @@ class UpdateGoHighLevelCredentialDto(UniversalBaseModel):
This is not returned in the API.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/update_google_credential_dto.py b/src/vapi/types/update_google_credential_dto.py
new file mode 100644
index 0000000..3e1e5ba
--- /dev/null
+++ b/src/vapi/types/update_google_credential_dto.py
@@ -0,0 +1,34 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import pydantic
+import typing_extensions
+from ..core.serialization import FieldMetadata
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class UpdateGoogleCredentialDto(UniversalBaseModel):
+ provider: typing.Literal["google"] = pydantic.Field(default="google")
+ """
+ This is the key for Gemini in Google AI Studio. Get it from here: https://aistudio.google.com/app/apikey
+ """
+
+ api_key: typing_extensions.Annotated[str, FieldMetadata(alias="apiKey")] = pydantic.Field()
+ """
+ This is not returned in the API.
+ """
+
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/update_groq_credential_dto.py b/src/vapi/types/update_groq_credential_dto.py
index 1fc0441..b2dee50 100644
--- a/src/vapi/types/update_groq_credential_dto.py
+++ b/src/vapi/types/update_groq_credential_dto.py
@@ -15,6 +15,11 @@ class UpdateGroqCredentialDto(UniversalBaseModel):
This is not returned in the API.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/update_inflection_ai_credential_dto.py b/src/vapi/types/update_inflection_ai_credential_dto.py
new file mode 100644
index 0000000..82f16bf
--- /dev/null
+++ b/src/vapi/types/update_inflection_ai_credential_dto.py
@@ -0,0 +1,34 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import pydantic
+import typing_extensions
+from ..core.serialization import FieldMetadata
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class UpdateInflectionAiCredentialDto(UniversalBaseModel):
+ provider: typing.Literal["inflection-ai"] = pydantic.Field(default="inflection-ai")
+ """
+ This is the api key for Pi in InflectionAI's console. Get it from here: https://developers.inflection.ai/keys, billing will need to be setup
+ """
+
+ api_key: typing_extensions.Annotated[str, FieldMetadata(alias="apiKey")] = pydantic.Field()
+ """
+ This is not returned in the API.
+ """
+
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/update_langfuse_credential_dto.py b/src/vapi/types/update_langfuse_credential_dto.py
new file mode 100644
index 0000000..59dff71
--- /dev/null
+++ b/src/vapi/types/update_langfuse_credential_dto.py
@@ -0,0 +1,40 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import typing_extensions
+from ..core.serialization import FieldMetadata
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class UpdateLangfuseCredentialDto(UniversalBaseModel):
+ provider: typing.Literal["langfuse"] = "langfuse"
+ public_key: typing_extensions.Annotated[str, FieldMetadata(alias="publicKey")] = pydantic.Field()
+ """
+ The public key for Langfuse project. Eg: pk-lf-...
+ """
+
+ api_key: typing_extensions.Annotated[str, FieldMetadata(alias="apiKey")] = pydantic.Field()
+ """
+ The secret key for Langfuse project. Eg: sk-lf-... .This is not returned in the API.
+ """
+
+ api_url: typing_extensions.Annotated[str, FieldMetadata(alias="apiUrl")] = pydantic.Field()
+ """
+ The host URL for Langfuse project. Eg: https://cloud.langfuse.com
+ """
+
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/update_lmnt_credential_dto.py b/src/vapi/types/update_lmnt_credential_dto.py
index e56727a..e72afa9 100644
--- a/src/vapi/types/update_lmnt_credential_dto.py
+++ b/src/vapi/types/update_lmnt_credential_dto.py
@@ -15,6 +15,11 @@ class UpdateLmntCredentialDto(UniversalBaseModel):
This is not returned in the API.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/update_make_credential_dto.py b/src/vapi/types/update_make_credential_dto.py
index e767111..4d886a0 100644
--- a/src/vapi/types/update_make_credential_dto.py
+++ b/src/vapi/types/update_make_credential_dto.py
@@ -25,6 +25,11 @@ class UpdateMakeCredentialDto(UniversalBaseModel):
This is not returned in the API.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/update_open_ai_credential_dto.py b/src/vapi/types/update_open_ai_credential_dto.py
index 023cdc8..32ed3fe 100644
--- a/src/vapi/types/update_open_ai_credential_dto.py
+++ b/src/vapi/types/update_open_ai_credential_dto.py
@@ -15,6 +15,11 @@ class UpdateOpenAiCredentialDto(UniversalBaseModel):
This is not returned in the API.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/update_open_router_credential_dto.py b/src/vapi/types/update_open_router_credential_dto.py
index c6f5ec8..fb6c029 100644
--- a/src/vapi/types/update_open_router_credential_dto.py
+++ b/src/vapi/types/update_open_router_credential_dto.py
@@ -15,6 +15,11 @@ class UpdateOpenRouterCredentialDto(UniversalBaseModel):
This is not returned in the API.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/update_org_dto.py b/src/vapi/types/update_org_dto.py
index ec2d05a..9700a9c 100644
--- a/src/vapi/types/update_org_dto.py
+++ b/src/vapi/types/update_org_dto.py
@@ -5,6 +5,7 @@
import typing
from ..core.serialization import FieldMetadata
import pydantic
+from .update_org_dto_channel import UpdateOrgDtoChannel
from ..core.pydantic_utilities import IS_PYDANTIC_V2
@@ -18,11 +19,23 @@ class UpdateOrgDto(UniversalBaseModel):
This is due to the compliance requirements of HIPAA. Other providers may not meet these requirements.
"""
+ subscription_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="subscriptionId")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the ID of the subscription the org belongs to.
+ """
+
name: typing.Optional[str] = pydantic.Field(default=None)
"""
This is the name of the org. This is just for your own reference.
"""
+ channel: typing.Optional[UpdateOrgDtoChannel] = pydantic.Field(default=None)
+ """
+ This is the channel of the org. There is the cluster the API traffic for the org will be directed.
+ """
+
billing_limit: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="billingLimit")] = (
pydantic.Field(default=None)
)
diff --git a/src/vapi/types/update_org_dto_channel.py b/src/vapi/types/update_org_dto_channel.py
new file mode 100644
index 0000000..1bd3989
--- /dev/null
+++ b/src/vapi/types/update_org_dto_channel.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+UpdateOrgDtoChannel = typing.Union[typing.Literal["default", "weekly"], typing.Any]
diff --git a/src/vapi/types/update_perplexity_ai_credential_dto.py b/src/vapi/types/update_perplexity_ai_credential_dto.py
index 62c91f8..8808502 100644
--- a/src/vapi/types/update_perplexity_ai_credential_dto.py
+++ b/src/vapi/types/update_perplexity_ai_credential_dto.py
@@ -15,6 +15,11 @@ class UpdatePerplexityAiCredentialDto(UniversalBaseModel):
This is not returned in the API.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/update_play_ht_credential_dto.py b/src/vapi/types/update_play_ht_credential_dto.py
index eb7c3e4..66d8a29 100644
--- a/src/vapi/types/update_play_ht_credential_dto.py
+++ b/src/vapi/types/update_play_ht_credential_dto.py
@@ -16,6 +16,10 @@ class UpdatePlayHtCredentialDto(UniversalBaseModel):
"""
user_id: typing_extensions.Annotated[str, FieldMetadata(alias="userId")]
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
diff --git a/src/vapi/types/update_rime_ai_credential_dto.py b/src/vapi/types/update_rime_ai_credential_dto.py
index 250ffab..5120c8f 100644
--- a/src/vapi/types/update_rime_ai_credential_dto.py
+++ b/src/vapi/types/update_rime_ai_credential_dto.py
@@ -15,6 +15,11 @@ class UpdateRimeAiCredentialDto(UniversalBaseModel):
This is not returned in the API.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/update_runpod_credential_dto.py b/src/vapi/types/update_runpod_credential_dto.py
index b060c80..53479fa 100644
--- a/src/vapi/types/update_runpod_credential_dto.py
+++ b/src/vapi/types/update_runpod_credential_dto.py
@@ -15,6 +15,11 @@ class UpdateRunpodCredentialDto(UniversalBaseModel):
This is not returned in the API.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/update_s_3_credential_dto.py b/src/vapi/types/update_s_3_credential_dto.py
index 196595b..de10164 100644
--- a/src/vapi/types/update_s_3_credential_dto.py
+++ b/src/vapi/types/update_s_3_credential_dto.py
@@ -41,6 +41,11 @@ class UpdateS3CredentialDto(UniversalBaseModel):
The path prefix for the uploaded recording. Ex. "recordings/"
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/update_tavus_credential_dto.py b/src/vapi/types/update_tavus_credential_dto.py
new file mode 100644
index 0000000..a661aa0
--- /dev/null
+++ b/src/vapi/types/update_tavus_credential_dto.py
@@ -0,0 +1,30 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import typing_extensions
+from ..core.serialization import FieldMetadata
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class UpdateTavusCredentialDto(UniversalBaseModel):
+ provider: typing.Literal["tavus"] = "tavus"
+ api_key: typing_extensions.Annotated[str, FieldMetadata(alias="apiKey")] = pydantic.Field()
+ """
+ This is not returned in the API.
+ """
+
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/update_together_ai_credential_dto.py b/src/vapi/types/update_together_ai_credential_dto.py
index bd55816..1c0207d 100644
--- a/src/vapi/types/update_together_ai_credential_dto.py
+++ b/src/vapi/types/update_together_ai_credential_dto.py
@@ -15,6 +15,11 @@ class UpdateTogetherAiCredentialDto(UniversalBaseModel):
This is not returned in the API.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/update_twilio_credential_dto.py b/src/vapi/types/update_twilio_credential_dto.py
index 33095af..26161d6 100644
--- a/src/vapi/types/update_twilio_credential_dto.py
+++ b/src/vapi/types/update_twilio_credential_dto.py
@@ -16,6 +16,10 @@ class UpdateTwilioCredentialDto(UniversalBaseModel):
"""
account_sid: typing_extensions.Annotated[str, FieldMetadata(alias="accountSid")]
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
diff --git a/src/vapi/types/update_vonage_credential_dto.py b/src/vapi/types/update_vonage_credential_dto.py
index 5d349d2..ba22eab 100644
--- a/src/vapi/types/update_vonage_credential_dto.py
+++ b/src/vapi/types/update_vonage_credential_dto.py
@@ -16,6 +16,10 @@ class UpdateVonageCredentialDto(UniversalBaseModel):
"""
api_key: typing_extensions.Annotated[str, FieldMetadata(alias="apiKey")]
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
diff --git a/src/vapi/types/update_x_ai_credential_dto.py b/src/vapi/types/update_x_ai_credential_dto.py
new file mode 100644
index 0000000..fe59dd9
--- /dev/null
+++ b/src/vapi/types/update_x_ai_credential_dto.py
@@ -0,0 +1,34 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import pydantic
+import typing_extensions
+from ..core.serialization import FieldMetadata
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class UpdateXAiCredentialDto(UniversalBaseModel):
+ provider: typing.Literal["xai"] = pydantic.Field(default="xai")
+ """
+ This is the api key for Grok in XAi's console. Get it from here: https://console.x.ai
+ """
+
+ api_key: typing_extensions.Annotated[str, FieldMetadata(alias="apiKey")] = pydantic.Field()
+ """
+ This is not returned in the API.
+ """
+
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/vapi_cost.py b/src/vapi/types/vapi_cost.py
index 9cebe4f..d962694 100644
--- a/src/vapi/types/vapi_cost.py
+++ b/src/vapi/types/vapi_cost.py
@@ -3,6 +3,9 @@
from ..core.pydantic_utilities import UniversalBaseModel
import typing
import pydantic
+import typing_extensions
+from .vapi_cost_sub_type import VapiCostSubType
+from ..core.serialization import FieldMetadata
from ..core.pydantic_utilities import IS_PYDANTIC_V2
@@ -12,6 +15,11 @@ class VapiCost(UniversalBaseModel):
This is the type of cost, always 'vapi' for this class.
"""
+ sub_type: typing_extensions.Annotated[VapiCostSubType, FieldMetadata(alias="subType")] = pydantic.Field()
+ """
+ This is the sub type of the cost.
+ """
+
minutes: float = pydantic.Field()
"""
This is the minutes of Vapi usage. This should match `call.endedAt` - `call.startedAt`.
diff --git a/src/vapi/types/vapi_cost_sub_type.py b/src/vapi/types/vapi_cost_sub_type.py
new file mode 100644
index 0000000..43603c6
--- /dev/null
+++ b/src/vapi/types/vapi_cost_sub_type.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+VapiCostSubType = typing.Union[typing.Literal["normal", "overage"], typing.Any]
diff --git a/src/vapi/types/vapi_model.py b/src/vapi/types/vapi_model.py
index 6f995fd..21479c3 100644
--- a/src/vapi/types/vapi_model.py
+++ b/src/vapi/types/vapi_model.py
@@ -11,8 +11,8 @@
from .vapi_model_tools_item import VapiModelToolsItem
import typing_extensions
from ..core.serialization import FieldMetadata
+from .create_custom_knowledge_base_dto import CreateCustomKnowledgeBaseDto
from .vapi_model_steps_item import VapiModelStepsItem
-from .knowledge_base import KnowledgeBase
from ..core.pydantic_utilities import IS_PYDANTIC_V2
from ..core.pydantic_utilities import update_forward_refs
@@ -39,6 +39,20 @@ class VapiModel(UniversalBaseModel):
Both `tools` and `toolIds` can be used together.
"""
+ knowledge_base: typing_extensions.Annotated[
+ typing.Optional[CreateCustomKnowledgeBaseDto], FieldMetadata(alias="knowledgeBase")
+ ] = pydantic.Field(default=None)
+ """
+ These are the options for the knowledge base.
+ """
+
+ knowledge_base_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="knowledgeBaseId")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the ID of the knowledge base the model will use.
+ """
+
steps: typing.Optional[typing.List[VapiModelStepsItem]] = None
provider: typing.Literal["vapi"] = "vapi"
model: str = pydantic.Field()
@@ -51,13 +65,6 @@ class VapiModel(UniversalBaseModel):
This is the temperature that will be used for calls. Default is 0 to leverage caching for lower latency.
"""
- knowledge_base: typing_extensions.Annotated[
- typing.Optional[KnowledgeBase], FieldMetadata(alias="knowledgeBase")
- ] = pydantic.Field(default=None)
- """
- These are the options for the knowledge base.
- """
-
max_tokens: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="maxTokens")] = pydantic.Field(
default=None
)
diff --git a/src/vapi/types/vapi_phone_number.py b/src/vapi/types/vapi_phone_number.py
index 3850fc8..323df1f 100644
--- a/src/vapi/types/vapi_phone_number.py
+++ b/src/vapi/types/vapi_phone_number.py
@@ -7,6 +7,7 @@
from ..core.serialization import FieldMetadata
import pydantic
import datetime as dt
+from .sip_authentication import SipAuthentication
from ..core.pydantic_utilities import IS_PYDANTIC_V2
@@ -16,7 +17,6 @@ class VapiPhoneNumber(UniversalBaseModel):
] = pydantic.Field(default=None)
"""
This is the fallback destination an inbound call will be transferred to if:
-
1. `assistantId` is not set
2. `squadId` is not set
3. and, `assistant-request` message to the `serverUrl` fails
@@ -95,6 +95,13 @@ class VapiPhoneNumber(UniversalBaseModel):
This is case-insensitive.
"""
+ authentication: typing.Optional[SipAuthentication] = pydantic.Field(default=None)
+ """
+ This enables authentication for incoming SIP INVITE requests to the `sipUri`.
+
+ If not set, any username/password to the 401 challenge of the SIP INVITE will be accepted.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/vapi/types/voice_cost.py b/src/vapi/types/voice_cost.py
index 4e3c91f..959f938 100644
--- a/src/vapi/types/voice_cost.py
+++ b/src/vapi/types/voice_cost.py
@@ -17,7 +17,6 @@ class VoiceCost(UniversalBaseModel):
This is the voice that was used during the call.
This matches one of the following:
-
- `call.assistant.voice`,
- `call.assistantId->voice`,
- `call.squad[n].assistant.voice`,
diff --git a/src/vapi/types/vonage_credential.py b/src/vapi/types/vonage_credential.py
index efb8d55..1ab104d 100644
--- a/src/vapi/types/vonage_credential.py
+++ b/src/vapi/types/vonage_credential.py
@@ -52,6 +52,11 @@ class VonageCredential(UniversalBaseModel):
Only relevant for Vonage credentials.
"""
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
api_key: typing_extensions.Annotated[str, FieldMetadata(alias="apiKey")]
if IS_PYDANTIC_V2:
diff --git a/src/vapi/types/vonage_phone_number.py b/src/vapi/types/vonage_phone_number.py
index 4c746ae..ab3aeac 100644
--- a/src/vapi/types/vonage_phone_number.py
+++ b/src/vapi/types/vonage_phone_number.py
@@ -16,7 +16,6 @@ class VonagePhoneNumber(UniversalBaseModel):
] = pydantic.Field(default=None)
"""
This is the fallback destination an inbound call will be transferred to if:
-
1. `assistantId` is not set
2. `squadId` is not set
3. and, `assistant-request` message to the `serverUrl` fails
diff --git a/src/vapi/types/webhook_credential.py b/src/vapi/types/webhook_credential.py
new file mode 100644
index 0000000..327e76a
--- /dev/null
+++ b/src/vapi/types/webhook_credential.py
@@ -0,0 +1,62 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import typing_extensions
+from .o_auth_2_authentication_plan import OAuth2AuthenticationPlan
+from ..core.serialization import FieldMetadata
+import pydantic
+import datetime as dt
+from .oauth_2_authentication_session import Oauth2AuthenticationSession
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class WebhookCredential(UniversalBaseModel):
+ provider: typing.Literal["webhook"] = "webhook"
+ authentication_plan: typing_extensions.Annotated[
+ OAuth2AuthenticationPlan, FieldMetadata(alias="authenticationPlan")
+ ] = pydantic.Field()
+ """
+ This is the authentication plan. Currently supports OAuth2 RFC 6749.
+ """
+
+ id: str = pydantic.Field()
+ """
+ This is the unique identifier for the credential.
+ """
+
+ org_id: typing_extensions.Annotated[str, FieldMetadata(alias="orgId")] = pydantic.Field()
+ """
+ This is the unique identifier for the org that this credential belongs to.
+ """
+
+ created_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="createdAt")] = pydantic.Field()
+ """
+ This is the ISO 8601 date-time string of when the credential was created.
+ """
+
+ updated_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="updatedAt")] = pydantic.Field()
+ """
+ This is the ISO 8601 date-time string of when the assistant was last updated.
+ """
+
+ authentication_session: typing_extensions.Annotated[
+ Oauth2AuthenticationSession, FieldMetadata(alias="authenticationSession")
+ ] = pydantic.Field()
+ """
+ This is the authentication session for the credential. Available for credentials that have an authentication plan.
+ """
+
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/workflow_block.py b/src/vapi/types/workflow_block.py
index 88d24b1..e83e2fc 100644
--- a/src/vapi/types/workflow_block.py
+++ b/src/vapi/types/workflow_block.py
@@ -30,7 +30,6 @@ class WorkflowBlock(UniversalBaseModel):
This is the input schema for the block. This is the input the block needs to run. It's given to the block as `steps[0].input`
These are accessible as variables:
-
- ({{input.propertyName}}) in context of the block execution (step)
- ({{stepName.input.propertyName}}) in context of the workflow
"""
@@ -42,13 +41,11 @@ class WorkflowBlock(UniversalBaseModel):
This is the output schema for the block. This is the output the block will return to the workflow (`{{stepName.output}}`).
These are accessible as variables:
-
- ({{output.propertyName}}) in context of the block execution (step)
- ({{stepName.output.propertyName}}) in context of the workflow (read caveat #1)
- ({{blockName.output.propertyName}}) in context of the workflow (read caveat #2)
Caveats:
-
1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.output.propertyName}} will reference the latest usage of the step.
2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.output.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow with steps.
"""
diff --git a/src/vapi/types/x_ai_credential.py b/src/vapi/types/x_ai_credential.py
new file mode 100644
index 0000000..3722c1b
--- /dev/null
+++ b/src/vapi/types/x_ai_credential.py
@@ -0,0 +1,55 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+import pydantic
+import typing_extensions
+from ..core.serialization import FieldMetadata
+import datetime as dt
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class XAiCredential(UniversalBaseModel):
+ provider: typing.Literal["xai"] = pydantic.Field(default="xai")
+ """
+ This is the api key for Grok in XAi's console. Get it from here: https://console.x.ai
+ """
+
+ api_key: typing_extensions.Annotated[str, FieldMetadata(alias="apiKey")] = pydantic.Field()
+ """
+ This is not returned in the API.
+ """
+
+ id: str = pydantic.Field()
+ """
+ This is the unique identifier for the credential.
+ """
+
+ org_id: typing_extensions.Annotated[str, FieldMetadata(alias="orgId")] = pydantic.Field()
+ """
+ This is the unique identifier for the org that this credential belongs to.
+ """
+
+ created_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="createdAt")] = pydantic.Field()
+ """
+ This is the ISO 8601 date-time string of when the credential was created.
+ """
+
+ updated_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="updatedAt")] = pydantic.Field()
+ """
+ This is the ISO 8601 date-time string of when the assistant was last updated.
+ """
+
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ This is the name of credential. This is just for your reference.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/xai_model.py b/src/vapi/types/xai_model.py
new file mode 100644
index 0000000..4191a78
--- /dev/null
+++ b/src/vapi/types/xai_model.py
@@ -0,0 +1,97 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+from .open_ai_message import OpenAiMessage
+import pydantic
+from .xai_model_tools_item import XaiModelToolsItem
+import typing_extensions
+from ..core.serialization import FieldMetadata
+from .create_custom_knowledge_base_dto import CreateCustomKnowledgeBaseDto
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class XaiModel(UniversalBaseModel):
+ messages: typing.Optional[typing.List[OpenAiMessage]] = pydantic.Field(default=None)
+ """
+ This is the starting state for the conversation.
+ """
+
+ tools: typing.Optional[typing.List[XaiModelToolsItem]] = pydantic.Field(default=None)
+ """
+ These are the tools that the assistant can use during the call. To use existing tools, use `toolIds`.
+
+ Both `tools` and `toolIds` can be used together.
+ """
+
+ tool_ids: typing_extensions.Annotated[typing.Optional[typing.List[str]], FieldMetadata(alias="toolIds")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
+
+ Both `tools` and `toolIds` can be used together.
+ """
+
+ knowledge_base: typing_extensions.Annotated[
+ typing.Optional[CreateCustomKnowledgeBaseDto], FieldMetadata(alias="knowledgeBase")
+ ] = pydantic.Field(default=None)
+ """
+ These are the options for the knowledge base.
+ """
+
+ knowledge_base_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="knowledgeBaseId")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This is the ID of the knowledge base the model will use.
+ """
+
+ model: typing.Literal["grok-beta"] = pydantic.Field(default="grok-beta")
+ """
+ This is the name of the model. Ex. cognitivecomputations/dolphin-mixtral-8x7b
+ """
+
+ provider: typing.Literal["xai"] = "xai"
+ temperature: typing.Optional[float] = pydantic.Field(default=None)
+ """
+ This is the temperature that will be used for calls. Default is 0 to leverage caching for lower latency.
+ """
+
+ max_tokens: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="maxTokens")] = pydantic.Field(
+ default=None
+ )
+ """
+ This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250.
+ """
+
+ emotion_recognition_enabled: typing_extensions.Annotated[
+ typing.Optional[bool], FieldMetadata(alias="emotionRecognitionEnabled")
+ ] = pydantic.Field(default=None)
+ """
+ This determines whether we detect user's emotion while they speak and send it as an additional info to model.
+
+ Default `false` because the model is usually are good at understanding the user's emotion from text.
+
+ @default false
+ """
+
+ num_fast_turns: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="numFastTurns")] = (
+ pydantic.Field(default=None)
+ )
+ """
+ This sets how many turns at the start of the conversation to use a smaller, faster model from the same provider before switching to the primary model. Example, gpt-3.5-turbo if provider is openai.
+
+ Default is 0.
+
+ @default 0
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/vapi/types/xai_model_tools_item.py b/src/vapi/types/xai_model_tools_item.py
new file mode 100644
index 0000000..d829c1a
--- /dev/null
+++ b/src/vapi/types/xai_model_tools_item.py
@@ -0,0 +1,20 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+from .create_dtmf_tool_dto import CreateDtmfToolDto
+from .create_end_call_tool_dto import CreateEndCallToolDto
+from .create_voicemail_tool_dto import CreateVoicemailToolDto
+from .create_function_tool_dto import CreateFunctionToolDto
+from .create_ghl_tool_dto import CreateGhlToolDto
+from .create_make_tool_dto import CreateMakeToolDto
+from .create_transfer_call_tool_dto import CreateTransferCallToolDto
+
+XaiModelToolsItem = typing.Union[
+ CreateDtmfToolDto,
+ CreateEndCallToolDto,
+ CreateVoicemailToolDto,
+ CreateFunctionToolDto,
+ CreateGhlToolDto,
+ CreateMakeToolDto,
+ CreateTransferCallToolDto,
+]