vapi-server-sdk 0.0.0a7__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (571) hide show
  1. vapi/__init__.py +1081 -0
  2. vapi/analytics/__init__.py +2 -0
  3. vapi/analytics/client.py +159 -0
  4. vapi/assistants/__init__.py +21 -0
  5. vapi/assistants/client.py +1593 -0
  6. vapi/assistants/types/__init__.py +19 -0
  7. vapi/assistants/types/update_assistant_dto_background_sound.py +5 -0
  8. vapi/assistants/types/update_assistant_dto_client_messages_item.py +23 -0
  9. vapi/assistants/types/update_assistant_dto_first_message_mode.py +10 -0
  10. vapi/assistants/types/update_assistant_dto_model.py +26 -0
  11. vapi/assistants/types/update_assistant_dto_server_messages_item.py +24 -0
  12. vapi/assistants/types/update_assistant_dto_transcriber.py +8 -0
  13. vapi/assistants/types/update_assistant_dto_voice.py +24 -0
  14. vapi/blocks/__init__.py +25 -0
  15. vapi/blocks/client.py +804 -0
  16. vapi/blocks/types/__init__.py +23 -0
  17. vapi/blocks/types/blocks_create_request.py +8 -0
  18. vapi/blocks/types/blocks_create_response.py +8 -0
  19. vapi/blocks/types/blocks_delete_response.py +8 -0
  20. vapi/blocks/types/blocks_get_response.py +8 -0
  21. vapi/blocks/types/blocks_list_response_item.py +8 -0
  22. vapi/blocks/types/blocks_update_response.py +8 -0
  23. vapi/blocks/types/update_block_dto_messages_item.py +7 -0
  24. vapi/blocks/types/update_block_dto_steps_item.py +7 -0
  25. vapi/blocks/types/update_block_dto_tool.py +20 -0
  26. vapi/calls/__init__.py +2 -0
  27. vapi/calls/client.py +776 -0
  28. vapi/client.py +172 -0
  29. vapi/core/__init__.py +50 -0
  30. vapi/core/api_error.py +15 -0
  31. vapi/core/client_wrapper.py +76 -0
  32. vapi/core/datetime_utils.py +28 -0
  33. vapi/core/file.py +62 -0
  34. vapi/core/http_client.py +487 -0
  35. vapi/core/jsonable_encoder.py +101 -0
  36. vapi/core/pagination.py +88 -0
  37. vapi/core/pydantic_utilities.py +296 -0
  38. vapi/core/query_encoder.py +58 -0
  39. vapi/core/remove_none_from_dict.py +11 -0
  40. vapi/core/request_options.py +32 -0
  41. vapi/core/serialization.py +272 -0
  42. vapi/environment.py +7 -0
  43. vapi/errors/__init__.py +5 -0
  44. vapi/errors/bad_request_error.py +9 -0
  45. vapi/files/__init__.py +2 -0
  46. vapi/files/client.py +544 -0
  47. vapi/logs/__init__.py +5 -0
  48. vapi/logs/client.py +367 -0
  49. vapi/logs/types/__init__.py +6 -0
  50. vapi/logs/types/logs_get_request_sort_order.py +5 -0
  51. vapi/logs/types/logs_get_request_type.py +5 -0
  52. vapi/phone_numbers/__init__.py +21 -0
  53. vapi/phone_numbers/client.py +735 -0
  54. vapi/phone_numbers/types/__init__.py +19 -0
  55. vapi/phone_numbers/types/phone_numbers_create_request.py +11 -0
  56. vapi/phone_numbers/types/phone_numbers_create_response.py +9 -0
  57. vapi/phone_numbers/types/phone_numbers_delete_response.py +9 -0
  58. vapi/phone_numbers/types/phone_numbers_get_response.py +9 -0
  59. vapi/phone_numbers/types/phone_numbers_list_response_item.py +9 -0
  60. vapi/phone_numbers/types/phone_numbers_update_response.py +9 -0
  61. vapi/phone_numbers/types/update_phone_number_dto_fallback_destination.py +7 -0
  62. vapi/py.typed +0 -0
  63. vapi/squads/__init__.py +2 -0
  64. vapi/squads/client.py +723 -0
  65. vapi/tools/__init__.py +21 -0
  66. vapi/tools/client.py +717 -0
  67. vapi/tools/types/__init__.py +19 -0
  68. vapi/tools/types/tools_create_request.py +20 -0
  69. vapi/tools/types/tools_create_response.py +12 -0
  70. vapi/tools/types/tools_delete_response.py +12 -0
  71. vapi/tools/types/tools_get_response.py +12 -0
  72. vapi/tools/types/tools_list_response_item.py +14 -0
  73. vapi/tools/types/tools_update_response.py +12 -0
  74. vapi/tools/types/update_tool_dto_messages_item.py +9 -0
  75. vapi/types/__init__.py +993 -0
  76. vapi/types/add_voice_to_provider_dto.py +34 -0
  77. vapi/types/analysis.py +38 -0
  78. vapi/types/analysis_cost.py +52 -0
  79. vapi/types/analysis_cost_analysis_type.py +5 -0
  80. vapi/types/analysis_cost_breakdown.py +80 -0
  81. vapi/types/analysis_plan.py +43 -0
  82. vapi/types/analytics_operation.py +34 -0
  83. vapi/types/analytics_operation_column.py +19 -0
  84. vapi/types/analytics_operation_operation.py +5 -0
  85. vapi/types/analytics_query.py +51 -0
  86. vapi/types/analytics_query_group_by_item.py +7 -0
  87. vapi/types/analytics_query_result.py +42 -0
  88. vapi/types/anthropic_credential.py +46 -0
  89. vapi/types/anthropic_model.py +91 -0
  90. vapi/types/anthropic_model_model.py +10 -0
  91. vapi/types/anthropic_model_tools_item.py +20 -0
  92. vapi/types/anyscale_credential.py +46 -0
  93. vapi/types/anyscale_model.py +90 -0
  94. vapi/types/anyscale_model_tools_item.py +20 -0
  95. vapi/types/artifact.py +66 -0
  96. vapi/types/artifact_messages_item.py +10 -0
  97. vapi/types/artifact_plan.py +70 -0
  98. vapi/types/assignment_mutation.py +85 -0
  99. vapi/types/assignment_mutation_conditions_item.py +7 -0
  100. vapi/types/assistant.py +330 -0
  101. vapi/types/assistant_background_sound.py +5 -0
  102. vapi/types/assistant_client_messages_item.py +23 -0
  103. vapi/types/assistant_first_message_mode.py +10 -0
  104. vapi/types/assistant_model.py +26 -0
  105. vapi/types/assistant_overrides.py +316 -0
  106. vapi/types/assistant_overrides_background_sound.py +5 -0
  107. vapi/types/assistant_overrides_client_messages_item.py +23 -0
  108. vapi/types/assistant_overrides_first_message_mode.py +10 -0
  109. vapi/types/assistant_overrides_model.py +26 -0
  110. vapi/types/assistant_overrides_server_messages_item.py +24 -0
  111. vapi/types/assistant_overrides_transcriber.py +8 -0
  112. vapi/types/assistant_overrides_voice.py +24 -0
  113. vapi/types/assistant_server_messages_item.py +24 -0
  114. vapi/types/assistant_transcriber.py +8 -0
  115. vapi/types/assistant_voice.py +24 -0
  116. vapi/types/azure_open_ai_credential.py +52 -0
  117. vapi/types/azure_open_ai_credential_models_item.py +17 -0
  118. vapi/types/azure_open_ai_credential_region.py +24 -0
  119. vapi/types/azure_voice.py +52 -0
  120. vapi/types/azure_voice_id.py +6 -0
  121. vapi/types/azure_voice_id_enum.py +5 -0
  122. vapi/types/block_complete_message.py +33 -0
  123. vapi/types/block_complete_message_conditions_item.py +7 -0
  124. vapi/types/block_start_message.py +33 -0
  125. vapi/types/block_start_message_conditions_item.py +7 -0
  126. vapi/types/bot_message.py +54 -0
  127. vapi/types/bucket_plan.py +72 -0
  128. vapi/types/buy_phone_number_dto.py +81 -0
  129. vapi/types/buy_phone_number_dto_fallback_destination.py +7 -0
  130. vapi/types/byo_phone_number.py +126 -0
  131. vapi/types/byo_phone_number_fallback_destination.py +7 -0
  132. vapi/types/byo_sip_trunk_credential.py +85 -0
  133. vapi/types/call.py +241 -0
  134. vapi/types/call_costs_item.py +11 -0
  135. vapi/types/call_destination.py +7 -0
  136. vapi/types/call_ended_reason.py +177 -0
  137. vapi/types/call_messages_item.py +10 -0
  138. vapi/types/call_paginated_response.py +32 -0
  139. vapi/types/call_phone_call_provider.py +5 -0
  140. vapi/types/call_phone_call_transport.py +5 -0
  141. vapi/types/call_status.py +5 -0
  142. vapi/types/call_type.py +5 -0
  143. vapi/types/callback_step.py +116 -0
  144. vapi/types/callback_step_block.py +11 -0
  145. vapi/types/cartesia_credential.py +46 -0
  146. vapi/types/cartesia_voice.py +58 -0
  147. vapi/types/cartesia_voice_language.py +5 -0
  148. vapi/types/cartesia_voice_model.py +5 -0
  149. vapi/types/chunk_plan.py +70 -0
  150. vapi/types/client_inbound_message.py +23 -0
  151. vapi/types/client_inbound_message_add_message.py +28 -0
  152. vapi/types/client_inbound_message_control.py +32 -0
  153. vapi/types/client_inbound_message_control_control.py +7 -0
  154. vapi/types/client_inbound_message_message.py +10 -0
  155. vapi/types/client_inbound_message_say.py +36 -0
  156. vapi/types/client_message.py +23 -0
  157. vapi/types/client_message_conversation_update.py +38 -0
  158. vapi/types/client_message_conversation_update_messages_item.py +12 -0
  159. vapi/types/client_message_hang.py +27 -0
  160. vapi/types/client_message_language_changed.py +27 -0
  161. vapi/types/client_message_message.py +28 -0
  162. vapi/types/client_message_metadata.py +27 -0
  163. vapi/types/client_message_model_output.py +27 -0
  164. vapi/types/client_message_speech_update.py +34 -0
  165. vapi/types/client_message_speech_update_role.py +5 -0
  166. vapi/types/client_message_speech_update_status.py +5 -0
  167. vapi/types/client_message_tool_calls.py +40 -0
  168. vapi/types/client_message_tool_calls_result.py +31 -0
  169. vapi/types/client_message_tool_calls_tool_with_tool_call_list_item.py +10 -0
  170. vapi/types/client_message_transcript.py +43 -0
  171. vapi/types/client_message_transcript_role.py +5 -0
  172. vapi/types/client_message_transcript_transcript_type.py +5 -0
  173. vapi/types/client_message_user_interrupted.py +22 -0
  174. vapi/types/client_message_voice_input.py +27 -0
  175. vapi/types/clone_voice_dto.py +37 -0
  176. vapi/types/condition.py +33 -0
  177. vapi/types/condition_operator.py +5 -0
  178. vapi/types/conversation_block.py +109 -0
  179. vapi/types/conversation_block_messages_item.py +7 -0
  180. vapi/types/cost_breakdown.py +78 -0
  181. vapi/types/create_anthropic_credential_dto.py +25 -0
  182. vapi/types/create_anyscale_credential_dto.py +25 -0
  183. vapi/types/create_assistant_dto.py +309 -0
  184. vapi/types/create_assistant_dto_background_sound.py +5 -0
  185. vapi/types/create_assistant_dto_client_messages_item.py +23 -0
  186. vapi/types/create_assistant_dto_first_message_mode.py +10 -0
  187. vapi/types/create_assistant_dto_model.py +26 -0
  188. vapi/types/create_assistant_dto_server_messages_item.py +24 -0
  189. vapi/types/create_assistant_dto_transcriber.py +8 -0
  190. vapi/types/create_assistant_dto_voice.py +24 -0
  191. vapi/types/create_azure_open_ai_credential_dto.py +31 -0
  192. vapi/types/create_azure_open_ai_credential_dto_models_item.py +17 -0
  193. vapi/types/create_azure_open_ai_credential_dto_region.py +24 -0
  194. vapi/types/create_byo_phone_number_dto.py +105 -0
  195. vapi/types/create_byo_phone_number_dto_fallback_destination.py +7 -0
  196. vapi/types/create_byo_sip_trunk_credential_dto.py +64 -0
  197. vapi/types/create_cartesia_credential_dto.py +25 -0
  198. vapi/types/create_conversation_block_dto.py +88 -0
  199. vapi/types/create_conversation_block_dto_messages_item.py +7 -0
  200. vapi/types/create_custom_llm_credential_dto.py +25 -0
  201. vapi/types/create_customer_dto.py +59 -0
  202. vapi/types/create_deep_infra_credential_dto.py +25 -0
  203. vapi/types/create_deepgram_credential_dto.py +32 -0
  204. vapi/types/create_dtmf_tool_dto.py +61 -0
  205. vapi/types/create_dtmf_tool_dto_messages_item.py +11 -0
  206. vapi/types/create_eleven_labs_credential_dto.py +25 -0
  207. vapi/types/create_end_call_tool_dto.py +61 -0
  208. vapi/types/create_end_call_tool_dto_messages_item.py +11 -0
  209. vapi/types/create_function_tool_dto.py +61 -0
  210. vapi/types/create_function_tool_dto_messages_item.py +11 -0
  211. vapi/types/create_gcp_credential_dto.py +41 -0
  212. vapi/types/create_ghl_tool_dto.py +63 -0
  213. vapi/types/create_ghl_tool_dto_messages_item.py +11 -0
  214. vapi/types/create_gladia_credential_dto.py +25 -0
  215. vapi/types/create_go_high_level_credential_dto.py +25 -0
  216. vapi/types/create_groq_credential_dto.py +25 -0
  217. vapi/types/create_lmnt_credential_dto.py +25 -0
  218. vapi/types/create_make_credential_dto.py +35 -0
  219. vapi/types/create_make_tool_dto.py +63 -0
  220. vapi/types/create_make_tool_dto_messages_item.py +11 -0
  221. vapi/types/create_open_ai_credential_dto.py +25 -0
  222. vapi/types/create_open_router_credential_dto.py +25 -0
  223. vapi/types/create_org_dto.py +63 -0
  224. vapi/types/create_outbound_call_dto.py +104 -0
  225. vapi/types/create_output_tool_dto.py +61 -0
  226. vapi/types/create_output_tool_dto_messages_item.py +11 -0
  227. vapi/types/create_perplexity_ai_credential_dto.py +25 -0
  228. vapi/types/create_play_ht_credential_dto.py +27 -0
  229. vapi/types/create_rime_ai_credential_dto.py +25 -0
  230. vapi/types/create_runpod_credential_dto.py +25 -0
  231. vapi/types/create_s_3_credential_dto.py +51 -0
  232. vapi/types/create_squad_dto.py +52 -0
  233. vapi/types/create_together_ai_credential_dto.py +25 -0
  234. vapi/types/create_token_dto.py +34 -0
  235. vapi/types/create_token_dto_tag.py +5 -0
  236. vapi/types/create_tool_call_block_dto.py +75 -0
  237. vapi/types/create_tool_call_block_dto_messages_item.py +7 -0
  238. vapi/types/create_tool_call_block_dto_tool.py +20 -0
  239. vapi/types/create_tool_template_dto.py +38 -0
  240. vapi/types/create_tool_template_dto_details.py +20 -0
  241. vapi/types/create_tool_template_dto_provider.py +5 -0
  242. vapi/types/create_tool_template_dto_provider_details.py +10 -0
  243. vapi/types/create_tool_template_dto_visibility.py +5 -0
  244. vapi/types/create_transfer_call_tool_dto.py +67 -0
  245. vapi/types/create_transfer_call_tool_dto_destinations_item.py +11 -0
  246. vapi/types/create_transfer_call_tool_dto_messages_item.py +11 -0
  247. vapi/types/create_twilio_credential_dto.py +27 -0
  248. vapi/types/create_twilio_phone_number_dto.py +92 -0
  249. vapi/types/create_twilio_phone_number_dto_fallback_destination.py +7 -0
  250. vapi/types/create_vapi_phone_number_dto.py +84 -0
  251. vapi/types/create_vapi_phone_number_dto_fallback_destination.py +7 -0
  252. vapi/types/create_voicemail_tool_dto.py +65 -0
  253. vapi/types/create_voicemail_tool_dto_messages_item.py +11 -0
  254. vapi/types/create_vonage_credential_dto.py +27 -0
  255. vapi/types/create_vonage_phone_number_dto.py +87 -0
  256. vapi/types/create_vonage_phone_number_dto_fallback_destination.py +7 -0
  257. vapi/types/create_web_call_dto.py +63 -0
  258. vapi/types/create_workflow_block_dto.py +78 -0
  259. vapi/types/create_workflow_block_dto_messages_item.py +7 -0
  260. vapi/types/create_workflow_block_dto_steps_item.py +10 -0
  261. vapi/types/custom_llm_credential.py +46 -0
  262. vapi/types/custom_llm_model.py +115 -0
  263. vapi/types/custom_llm_model_metadata_send_mode.py +5 -0
  264. vapi/types/custom_llm_model_tools_item.py +20 -0
  265. vapi/types/deep_infra_credential.py +46 -0
  266. vapi/types/deep_infra_model.py +90 -0
  267. vapi/types/deep_infra_model_tools_item.py +20 -0
  268. vapi/types/deepgram_credential.py +53 -0
  269. vapi/types/deepgram_transcriber.py +68 -0
  270. vapi/types/deepgram_transcriber_language.py +65 -0
  271. vapi/types/deepgram_transcriber_model.py +37 -0
  272. vapi/types/deepgram_voice.py +47 -0
  273. vapi/types/deepgram_voice_id.py +6 -0
  274. vapi/types/deepgram_voice_id_enum.py +10 -0
  275. vapi/types/dtmf_tool.py +82 -0
  276. vapi/types/dtmf_tool_messages_item.py +9 -0
  277. vapi/types/eleven_labs_credential.py +46 -0
  278. vapi/types/eleven_labs_voice.py +98 -0
  279. vapi/types/eleven_labs_voice_id.py +6 -0
  280. vapi/types/eleven_labs_voice_id_enum.py +24 -0
  281. vapi/types/eleven_labs_voice_model.py +8 -0
  282. vapi/types/end_call_tool.py +82 -0
  283. vapi/types/end_call_tool_messages_item.py +9 -0
  284. vapi/types/error.py +19 -0
  285. vapi/types/exact_replacement.py +40 -0
  286. vapi/types/file.py +57 -0
  287. vapi/types/file_status.py +5 -0
  288. vapi/types/format_plan.py +64 -0
  289. vapi/types/format_plan_replacements_item.py +7 -0
  290. vapi/types/function_tool.py +82 -0
  291. vapi/types/function_tool_messages_item.py +9 -0
  292. vapi/types/function_tool_provider_details.py +35 -0
  293. vapi/types/function_tool_with_tool_call.py +67 -0
  294. vapi/types/function_tool_with_tool_call_messages_item.py +11 -0
  295. vapi/types/gcp_credential.py +62 -0
  296. vapi/types/gcp_key.py +78 -0
  297. vapi/types/ghl_tool.py +85 -0
  298. vapi/types/ghl_tool_messages_item.py +9 -0
  299. vapi/types/ghl_tool_metadata.py +22 -0
  300. vapi/types/ghl_tool_provider_details.py +41 -0
  301. vapi/types/ghl_tool_with_tool_call.py +69 -0
  302. vapi/types/ghl_tool_with_tool_call_messages_item.py +11 -0
  303. vapi/types/gladia_credential.py +46 -0
  304. vapi/types/gladia_transcriber.py +56 -0
  305. vapi/types/gladia_transcriber_language.py +109 -0
  306. vapi/types/gladia_transcriber_language_behaviour.py +7 -0
  307. vapi/types/gladia_transcriber_model.py +5 -0
  308. vapi/types/go_high_level_credential.py +46 -0
  309. vapi/types/groq_credential.py +46 -0
  310. vapi/types/groq_model.py +91 -0
  311. vapi/types/groq_model_model.py +19 -0
  312. vapi/types/groq_model_tools_item.py +20 -0
  313. vapi/types/handoff_step.py +116 -0
  314. vapi/types/handoff_step_block.py +11 -0
  315. vapi/types/import_twilio_phone_number_dto.py +91 -0
  316. vapi/types/import_twilio_phone_number_dto_fallback_destination.py +7 -0
  317. vapi/types/import_vonage_phone_number_dto.py +88 -0
  318. vapi/types/import_vonage_phone_number_dto_fallback_destination.py +7 -0
  319. vapi/types/invite_user_dto.py +21 -0
  320. vapi/types/invite_user_dto_role.py +5 -0
  321. vapi/types/json_schema.py +57 -0
  322. vapi/types/json_schema_type.py +5 -0
  323. vapi/types/knowledge_base.py +23 -0
  324. vapi/types/lmnt_credential.py +46 -0
  325. vapi/types/lmnt_voice.py +52 -0
  326. vapi/types/lmnt_voice_id.py +6 -0
  327. vapi/types/lmnt_voice_id_enum.py +5 -0
  328. vapi/types/log.py +164 -0
  329. vapi/types/log_request_http_method.py +5 -0
  330. vapi/types/log_resource.py +7 -0
  331. vapi/types/log_type.py +5 -0
  332. vapi/types/logs_paginated_response.py +22 -0
  333. vapi/types/make_credential.py +56 -0
  334. vapi/types/make_tool.py +85 -0
  335. vapi/types/make_tool_messages_item.py +9 -0
  336. vapi/types/make_tool_metadata.py +22 -0
  337. vapi/types/make_tool_provider_details.py +40 -0
  338. vapi/types/make_tool_with_tool_call.py +69 -0
  339. vapi/types/make_tool_with_tool_call_messages_item.py +11 -0
  340. vapi/types/message_plan.py +51 -0
  341. vapi/types/metrics.py +44 -0
  342. vapi/types/model_based_condition.py +54 -0
  343. vapi/types/model_cost.py +53 -0
  344. vapi/types/monitor.py +33 -0
  345. vapi/types/monitor_plan.py +43 -0
  346. vapi/types/neets_voice.py +47 -0
  347. vapi/types/neets_voice_id.py +6 -0
  348. vapi/types/neets_voice_id_enum.py +5 -0
  349. vapi/types/open_ai_credential.py +46 -0
  350. vapi/types/open_ai_function.py +35 -0
  351. vapi/types/open_ai_function_parameters.py +35 -0
  352. vapi/types/open_ai_message.py +21 -0
  353. vapi/types/open_ai_message_role.py +5 -0
  354. vapi/types/open_ai_model.py +106 -0
  355. vapi/types/open_ai_model_fallback_models_item.py +26 -0
  356. vapi/types/open_ai_model_model.py +26 -0
  357. vapi/types/open_ai_model_tools_item.py +20 -0
  358. vapi/types/open_ai_voice.py +52 -0
  359. vapi/types/open_ai_voice_id.py +5 -0
  360. vapi/types/open_router_credential.py +46 -0
  361. vapi/types/open_router_model.py +90 -0
  362. vapi/types/open_router_model_tools_item.py +20 -0
  363. vapi/types/org.py +120 -0
  364. vapi/types/org_plan.py +28 -0
  365. vapi/types/output_tool.py +82 -0
  366. vapi/types/output_tool_messages_item.py +9 -0
  367. vapi/types/pagination_meta.py +23 -0
  368. vapi/types/perplexity_ai_credential.py +46 -0
  369. vapi/types/perplexity_ai_model.py +90 -0
  370. vapi/types/perplexity_ai_model_tools_item.py +20 -0
  371. vapi/types/play_ht_credential.py +48 -0
  372. vapi/types/play_ht_voice.py +84 -0
  373. vapi/types/play_ht_voice_emotion.py +21 -0
  374. vapi/types/play_ht_voice_id.py +6 -0
  375. vapi/types/play_ht_voice_id_enum.py +8 -0
  376. vapi/types/punctuation_boundary.py +7 -0
  377. vapi/types/regex_option.py +34 -0
  378. vapi/types/regex_option_type.py +5 -0
  379. vapi/types/regex_replacement.py +48 -0
  380. vapi/types/rime_ai_credential.py +46 -0
  381. vapi/types/rime_ai_voice.py +58 -0
  382. vapi/types/rime_ai_voice_id.py +6 -0
  383. vapi/types/rime_ai_voice_id_enum.py +90 -0
  384. vapi/types/rime_ai_voice_model.py +5 -0
  385. vapi/types/rule_based_condition.py +96 -0
  386. vapi/types/rule_based_condition_operator.py +5 -0
  387. vapi/types/runpod_credential.py +46 -0
  388. vapi/types/s_3_credential.py +72 -0
  389. vapi/types/sbc_configuration.py +17 -0
  390. vapi/types/server.py +40 -0
  391. vapi/types/server_message.py +40 -0
  392. vapi/types/server_message_assistant_request.py +96 -0
  393. vapi/types/server_message_assistant_request_phone_number.py +11 -0
  394. vapi/types/server_message_conversation_update.py +110 -0
  395. vapi/types/server_message_conversation_update_messages_item.py +12 -0
  396. vapi/types/server_message_conversation_update_phone_number.py +11 -0
  397. vapi/types/server_message_end_of_call_report.py +134 -0
  398. vapi/types/server_message_end_of_call_report_costs_item.py +13 -0
  399. vapi/types/server_message_end_of_call_report_ended_reason.py +177 -0
  400. vapi/types/server_message_end_of_call_report_phone_number.py +11 -0
  401. vapi/types/server_message_hang.py +101 -0
  402. vapi/types/server_message_hang_phone_number.py +11 -0
  403. vapi/types/server_message_language_changed.py +101 -0
  404. vapi/types/server_message_language_changed_phone_number.py +11 -0
  405. vapi/types/server_message_message.py +38 -0
  406. vapi/types/server_message_model_output.py +101 -0
  407. vapi/types/server_message_model_output_phone_number.py +11 -0
  408. vapi/types/server_message_phone_call_control.py +110 -0
  409. vapi/types/server_message_phone_call_control_destination.py +7 -0
  410. vapi/types/server_message_phone_call_control_phone_number.py +11 -0
  411. vapi/types/server_message_phone_call_control_request.py +5 -0
  412. vapi/types/server_message_response.py +39 -0
  413. vapi/types/server_message_response_assistant_request.py +80 -0
  414. vapi/types/server_message_response_assistant_request_destination.py +7 -0
  415. vapi/types/server_message_response_message_response.py +14 -0
  416. vapi/types/server_message_response_tool_calls.py +28 -0
  417. vapi/types/server_message_response_transfer_destination_request.py +32 -0
  418. vapi/types/server_message_response_transfer_destination_request_destination.py +11 -0
  419. vapi/types/server_message_response_voice_request.py +44 -0
  420. vapi/types/server_message_speech_update.py +108 -0
  421. vapi/types/server_message_speech_update_phone_number.py +11 -0
  422. vapi/types/server_message_speech_update_role.py +5 -0
  423. vapi/types/server_message_speech_update_status.py +5 -0
  424. vapi/types/server_message_status_update.py +145 -0
  425. vapi/types/server_message_status_update_destination.py +7 -0
  426. vapi/types/server_message_status_update_ended_reason.py +177 -0
  427. vapi/types/server_message_status_update_messages_item.py +12 -0
  428. vapi/types/server_message_status_update_phone_number.py +11 -0
  429. vapi/types/server_message_status_update_status.py +7 -0
  430. vapi/types/server_message_tool_calls.py +112 -0
  431. vapi/types/server_message_tool_calls_phone_number.py +11 -0
  432. vapi/types/server_message_tool_calls_tool_with_tool_call_list_item.py +10 -0
  433. vapi/types/server_message_transcript.py +115 -0
  434. vapi/types/server_message_transcript_phone_number.py +11 -0
  435. vapi/types/server_message_transcript_role.py +5 -0
  436. vapi/types/server_message_transcript_transcript_type.py +5 -0
  437. vapi/types/server_message_transfer_destination_request.py +98 -0
  438. vapi/types/server_message_transfer_destination_request_phone_number.py +11 -0
  439. vapi/types/server_message_transfer_update.py +116 -0
  440. vapi/types/server_message_transfer_update_destination.py +11 -0
  441. vapi/types/server_message_transfer_update_phone_number.py +11 -0
  442. vapi/types/server_message_user_interrupted.py +96 -0
  443. vapi/types/server_message_user_interrupted_phone_number.py +11 -0
  444. vapi/types/server_message_voice_input.py +101 -0
  445. vapi/types/server_message_voice_input_phone_number.py +11 -0
  446. vapi/types/server_message_voice_request.py +128 -0
  447. vapi/types/server_message_voice_request_phone_number.py +11 -0
  448. vapi/types/sip_trunk_gateway.py +79 -0
  449. vapi/types/sip_trunk_gateway_outbound_protocol.py +5 -0
  450. vapi/types/sip_trunk_outbound_authentication_plan.py +35 -0
  451. vapi/types/sip_trunk_outbound_sip_register_plan.py +21 -0
  452. vapi/types/squad.py +73 -0
  453. vapi/types/squad_member_dto.py +60 -0
  454. vapi/types/start_speaking_plan.py +62 -0
  455. vapi/types/step_destination.py +28 -0
  456. vapi/types/step_destination_conditions_item.py +7 -0
  457. vapi/types/stop_speaking_plan.py +65 -0
  458. vapi/types/structured_data_plan.py +66 -0
  459. vapi/types/success_evaluation_plan.py +75 -0
  460. vapi/types/success_evaluation_plan_rubric.py +17 -0
  461. vapi/types/summary_plan.py +56 -0
  462. vapi/types/sync_voice_library_dto.py +23 -0
  463. vapi/types/sync_voice_library_dto_providers_item.py +10 -0
  464. vapi/types/system_message.py +39 -0
  465. vapi/types/talkscriber_transcriber.py +33 -0
  466. vapi/types/talkscriber_transcriber_language.py +109 -0
  467. vapi/types/template.py +58 -0
  468. vapi/types/template_details.py +20 -0
  469. vapi/types/template_provider.py +5 -0
  470. vapi/types/template_provider_details.py +8 -0
  471. vapi/types/template_visibility.py +5 -0
  472. vapi/types/time_range.py +47 -0
  473. vapi/types/time_range_step.py +8 -0
  474. vapi/types/together_ai_credential.py +46 -0
  475. vapi/types/together_ai_model.py +90 -0
  476. vapi/types/together_ai_model_tools_item.py +20 -0
  477. vapi/types/token.py +62 -0
  478. vapi/types/token_restrictions.py +53 -0
  479. vapi/types/token_tag.py +5 -0
  480. vapi/types/tool_call.py +33 -0
  481. vapi/types/tool_call_block.py +96 -0
  482. vapi/types/tool_call_block_messages_item.py +7 -0
  483. vapi/types/tool_call_block_tool.py +20 -0
  484. vapi/types/tool_call_function.py +27 -0
  485. vapi/types/tool_call_message.py +46 -0
  486. vapi/types/tool_call_result.py +62 -0
  487. vapi/types/tool_call_result_message.py +49 -0
  488. vapi/types/tool_call_result_message_item.py +7 -0
  489. vapi/types/tool_message_complete.py +74 -0
  490. vapi/types/tool_message_complete_role.py +5 -0
  491. vapi/types/tool_message_delayed.py +49 -0
  492. vapi/types/tool_message_failed.py +50 -0
  493. vapi/types/tool_message_start.py +37 -0
  494. vapi/types/tool_template_metadata.py +23 -0
  495. vapi/types/tool_template_setup.py +24 -0
  496. vapi/types/transcriber_cost.py +46 -0
  497. vapi/types/transcript_plan.py +66 -0
  498. vapi/types/transcription_endpointing_plan.py +52 -0
  499. vapi/types/transfer_call_tool.py +88 -0
  500. vapi/types/transfer_call_tool_destinations_item.py +11 -0
  501. vapi/types/transfer_call_tool_messages_item.py +11 -0
  502. vapi/types/transfer_destination_assistant.py +90 -0
  503. vapi/types/transfer_destination_number.py +77 -0
  504. vapi/types/transfer_destination_sip.py +39 -0
  505. vapi/types/transfer_destination_step.py +39 -0
  506. vapi/types/transfer_mode.py +5 -0
  507. vapi/types/transport_configuration_twilio.py +55 -0
  508. vapi/types/transport_configuration_twilio_recording_channels.py +5 -0
  509. vapi/types/transport_cost.py +32 -0
  510. vapi/types/twilio_credential.py +48 -0
  511. vapi/types/twilio_phone_number.py +113 -0
  512. vapi/types/twilio_phone_number_fallback_destination.py +7 -0
  513. vapi/types/twilio_voicemail_detection.py +107 -0
  514. vapi/types/twilio_voicemail_detection_voicemail_detection_types_item.py +10 -0
  515. vapi/types/update_anthropic_credential_dto.py +25 -0
  516. vapi/types/update_anyscale_credential_dto.py +25 -0
  517. vapi/types/update_azure_open_ai_credential_dto.py +31 -0
  518. vapi/types/update_azure_open_ai_credential_dto_models_item.py +17 -0
  519. vapi/types/update_azure_open_ai_credential_dto_region.py +24 -0
  520. vapi/types/update_byo_sip_trunk_credential_dto.py +64 -0
  521. vapi/types/update_cartesia_credential_dto.py +25 -0
  522. vapi/types/update_custom_llm_credential_dto.py +25 -0
  523. vapi/types/update_deep_infra_credential_dto.py +25 -0
  524. vapi/types/update_deepgram_credential_dto.py +32 -0
  525. vapi/types/update_eleven_labs_credential_dto.py +25 -0
  526. vapi/types/update_gcp_credential_dto.py +41 -0
  527. vapi/types/update_gladia_credential_dto.py +25 -0
  528. vapi/types/update_go_high_level_credential_dto.py +25 -0
  529. vapi/types/update_groq_credential_dto.py +25 -0
  530. vapi/types/update_lmnt_credential_dto.py +25 -0
  531. vapi/types/update_make_credential_dto.py +35 -0
  532. vapi/types/update_open_ai_credential_dto.py +25 -0
  533. vapi/types/update_open_router_credential_dto.py +25 -0
  534. vapi/types/update_org_dto.py +63 -0
  535. vapi/types/update_perplexity_ai_credential_dto.py +25 -0
  536. vapi/types/update_play_ht_credential_dto.py +27 -0
  537. vapi/types/update_rime_ai_credential_dto.py +25 -0
  538. vapi/types/update_runpod_credential_dto.py +25 -0
  539. vapi/types/update_s_3_credential_dto.py +51 -0
  540. vapi/types/update_together_ai_credential_dto.py +25 -0
  541. vapi/types/update_tool_template_dto.py +38 -0
  542. vapi/types/update_tool_template_dto_details.py +20 -0
  543. vapi/types/update_tool_template_dto_provider.py +5 -0
  544. vapi/types/update_tool_template_dto_provider_details.py +10 -0
  545. vapi/types/update_tool_template_dto_visibility.py +5 -0
  546. vapi/types/update_twilio_credential_dto.py +27 -0
  547. vapi/types/update_user_role_dto.py +23 -0
  548. vapi/types/update_user_role_dto_role.py +5 -0
  549. vapi/types/update_vonage_credential_dto.py +27 -0
  550. vapi/types/user.py +47 -0
  551. vapi/types/user_message.py +49 -0
  552. vapi/types/vapi_cost.py +32 -0
  553. vapi/types/vapi_model.py +102 -0
  554. vapi/types/vapi_model_steps_item.py +7 -0
  555. vapi/types/vapi_model_tools_item.py +20 -0
  556. vapi/types/vapi_phone_number.py +105 -0
  557. vapi/types/vapi_phone_number_fallback_destination.py +7 -0
  558. vapi/types/voice_cost.py +46 -0
  559. vapi/types/voice_library.py +126 -0
  560. vapi/types/voice_library_gender.py +5 -0
  561. vapi/types/voice_library_voice_response.py +27 -0
  562. vapi/types/vonage_credential.py +64 -0
  563. vapi/types/vonage_phone_number.py +108 -0
  564. vapi/types/vonage_phone_number_fallback_destination.py +7 -0
  565. vapi/types/workflow_block.py +99 -0
  566. vapi/types/workflow_block_messages_item.py +7 -0
  567. vapi/types/workflow_block_steps_item.py +7 -0
  568. vapi/version.py +3 -0
  569. vapi_server_sdk-0.0.0a7.dist-info/METADATA +179 -0
  570. vapi_server_sdk-0.0.0a7.dist-info/RECORD +571 -0
  571. vapi_server_sdk-0.0.0a7.dist-info/WHEEL +4 -0
@@ -0,0 +1,735 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+ from ..core.client_wrapper import SyncClientWrapper
5
+ import datetime as dt
6
+ from ..core.request_options import RequestOptions
7
+ from .types.phone_numbers_list_response_item import PhoneNumbersListResponseItem
8
+ from ..core.datetime_utils import serialize_datetime
9
+ from ..core.pydantic_utilities import parse_obj_as
10
+ from json.decoder import JSONDecodeError
11
+ from ..core.api_error import ApiError
12
+ from .types.phone_numbers_create_request import PhoneNumbersCreateRequest
13
+ from .types.phone_numbers_create_response import PhoneNumbersCreateResponse
14
+ from ..core.serialization import convert_and_respect_annotation_metadata
15
+ from .types.phone_numbers_get_response import PhoneNumbersGetResponse
16
+ from ..core.jsonable_encoder import jsonable_encoder
17
+ from .types.phone_numbers_delete_response import PhoneNumbersDeleteResponse
18
+ from .types.update_phone_number_dto_fallback_destination import UpdatePhoneNumberDtoFallbackDestination
19
+ from .types.phone_numbers_update_response import PhoneNumbersUpdateResponse
20
+ from ..core.client_wrapper import AsyncClientWrapper
21
+
22
+ # this is used as the default value for optional parameters
23
+ OMIT = typing.cast(typing.Any, ...)
24
+
25
+
26
+ class PhoneNumbersClient:
27
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
28
+ self._client_wrapper = client_wrapper
29
+
30
+ def list(
31
+ self,
32
+ *,
33
+ limit: typing.Optional[float] = None,
34
+ created_at_gt: typing.Optional[dt.datetime] = None,
35
+ created_at_lt: typing.Optional[dt.datetime] = None,
36
+ created_at_ge: typing.Optional[dt.datetime] = None,
37
+ created_at_le: typing.Optional[dt.datetime] = None,
38
+ updated_at_gt: typing.Optional[dt.datetime] = None,
39
+ updated_at_lt: typing.Optional[dt.datetime] = None,
40
+ updated_at_ge: typing.Optional[dt.datetime] = None,
41
+ updated_at_le: typing.Optional[dt.datetime] = None,
42
+ request_options: typing.Optional[RequestOptions] = None,
43
+ ) -> typing.List[PhoneNumbersListResponseItem]:
44
+ """
45
+ Parameters
46
+ ----------
47
+ limit : typing.Optional[float]
48
+ This is the maximum number of items to return. Defaults to 100.
49
+
50
+ created_at_gt : typing.Optional[dt.datetime]
51
+ This will return items where the createdAt is greater than the specified value.
52
+
53
+ created_at_lt : typing.Optional[dt.datetime]
54
+ This will return items where the createdAt is less than the specified value.
55
+
56
+ created_at_ge : typing.Optional[dt.datetime]
57
+ This will return items where the createdAt is greater than or equal to the specified value.
58
+
59
+ created_at_le : typing.Optional[dt.datetime]
60
+ This will return items where the createdAt is less than or equal to the specified value.
61
+
62
+ updated_at_gt : typing.Optional[dt.datetime]
63
+ This will return items where the updatedAt is greater than the specified value.
64
+
65
+ updated_at_lt : typing.Optional[dt.datetime]
66
+ This will return items where the updatedAt is less than the specified value.
67
+
68
+ updated_at_ge : typing.Optional[dt.datetime]
69
+ This will return items where the updatedAt is greater than or equal to the specified value.
70
+
71
+ updated_at_le : typing.Optional[dt.datetime]
72
+ This will return items where the updatedAt is less than or equal to the specified value.
73
+
74
+ request_options : typing.Optional[RequestOptions]
75
+ Request-specific configuration.
76
+
77
+ Returns
78
+ -------
79
+ typing.List[PhoneNumbersListResponseItem]
80
+
81
+
82
+ Examples
83
+ --------
84
+ from vapi import Vapi
85
+
86
+ client = Vapi(
87
+ token="YOUR_TOKEN",
88
+ )
89
+ client.phone_numbers.list()
90
+ """
91
+ _response = self._client_wrapper.httpx_client.request(
92
+ "phone-number",
93
+ method="GET",
94
+ params={
95
+ "limit": limit,
96
+ "createdAtGt": serialize_datetime(created_at_gt) if created_at_gt is not None else None,
97
+ "createdAtLt": serialize_datetime(created_at_lt) if created_at_lt is not None else None,
98
+ "createdAtGe": serialize_datetime(created_at_ge) if created_at_ge is not None else None,
99
+ "createdAtLe": serialize_datetime(created_at_le) if created_at_le is not None else None,
100
+ "updatedAtGt": serialize_datetime(updated_at_gt) if updated_at_gt is not None else None,
101
+ "updatedAtLt": serialize_datetime(updated_at_lt) if updated_at_lt is not None else None,
102
+ "updatedAtGe": serialize_datetime(updated_at_ge) if updated_at_ge is not None else None,
103
+ "updatedAtLe": serialize_datetime(updated_at_le) if updated_at_le is not None else None,
104
+ },
105
+ request_options=request_options,
106
+ )
107
+ try:
108
+ if 200 <= _response.status_code < 300:
109
+ return typing.cast(
110
+ typing.List[PhoneNumbersListResponseItem],
111
+ parse_obj_as(
112
+ type_=typing.List[PhoneNumbersListResponseItem], # type: ignore
113
+ object_=_response.json(),
114
+ ),
115
+ )
116
+ _response_json = _response.json()
117
+ except JSONDecodeError:
118
+ raise ApiError(status_code=_response.status_code, body=_response.text)
119
+ raise ApiError(status_code=_response.status_code, body=_response_json)
120
+
121
+ def create(
122
+ self, *, request: PhoneNumbersCreateRequest, request_options: typing.Optional[RequestOptions] = None
123
+ ) -> PhoneNumbersCreateResponse:
124
+ """
125
+ Parameters
126
+ ----------
127
+ request : PhoneNumbersCreateRequest
128
+
129
+ request_options : typing.Optional[RequestOptions]
130
+ Request-specific configuration.
131
+
132
+ Returns
133
+ -------
134
+ PhoneNumbersCreateResponse
135
+
136
+
137
+ Examples
138
+ --------
139
+ from vapi import CreateByoPhoneNumberDto, Vapi
140
+
141
+ client = Vapi(
142
+ token="YOUR_TOKEN",
143
+ )
144
+ client.phone_numbers.create(
145
+ request=CreateByoPhoneNumberDto(
146
+ credential_id="credentialId",
147
+ ),
148
+ )
149
+ """
150
+ _response = self._client_wrapper.httpx_client.request(
151
+ "phone-number",
152
+ method="POST",
153
+ json=convert_and_respect_annotation_metadata(
154
+ object_=request, annotation=PhoneNumbersCreateRequest, direction="write"
155
+ ),
156
+ request_options=request_options,
157
+ omit=OMIT,
158
+ )
159
+ try:
160
+ if 200 <= _response.status_code < 300:
161
+ return typing.cast(
162
+ PhoneNumbersCreateResponse,
163
+ parse_obj_as(
164
+ type_=PhoneNumbersCreateResponse, # type: ignore
165
+ object_=_response.json(),
166
+ ),
167
+ )
168
+ _response_json = _response.json()
169
+ except JSONDecodeError:
170
+ raise ApiError(status_code=_response.status_code, body=_response.text)
171
+ raise ApiError(status_code=_response.status_code, body=_response_json)
172
+
173
+ def get(self, id: str, *, request_options: typing.Optional[RequestOptions] = None) -> PhoneNumbersGetResponse:
174
+ """
175
+ Parameters
176
+ ----------
177
+ id : str
178
+
179
+ request_options : typing.Optional[RequestOptions]
180
+ Request-specific configuration.
181
+
182
+ Returns
183
+ -------
184
+ PhoneNumbersGetResponse
185
+
186
+
187
+ Examples
188
+ --------
189
+ from vapi import Vapi
190
+
191
+ client = Vapi(
192
+ token="YOUR_TOKEN",
193
+ )
194
+ client.phone_numbers.get(
195
+ id="id",
196
+ )
197
+ """
198
+ _response = self._client_wrapper.httpx_client.request(
199
+ f"phone-number/{jsonable_encoder(id)}",
200
+ method="GET",
201
+ request_options=request_options,
202
+ )
203
+ try:
204
+ if 200 <= _response.status_code < 300:
205
+ return typing.cast(
206
+ PhoneNumbersGetResponse,
207
+ parse_obj_as(
208
+ type_=PhoneNumbersGetResponse, # type: ignore
209
+ object_=_response.json(),
210
+ ),
211
+ )
212
+ _response_json = _response.json()
213
+ except JSONDecodeError:
214
+ raise ApiError(status_code=_response.status_code, body=_response.text)
215
+ raise ApiError(status_code=_response.status_code, body=_response_json)
216
+
217
+ def delete(self, id: str, *, request_options: typing.Optional[RequestOptions] = None) -> PhoneNumbersDeleteResponse:
218
+ """
219
+ Parameters
220
+ ----------
221
+ id : str
222
+
223
+ request_options : typing.Optional[RequestOptions]
224
+ Request-specific configuration.
225
+
226
+ Returns
227
+ -------
228
+ PhoneNumbersDeleteResponse
229
+
230
+
231
+ Examples
232
+ --------
233
+ from vapi import Vapi
234
+
235
+ client = Vapi(
236
+ token="YOUR_TOKEN",
237
+ )
238
+ client.phone_numbers.delete(
239
+ id="id",
240
+ )
241
+ """
242
+ _response = self._client_wrapper.httpx_client.request(
243
+ f"phone-number/{jsonable_encoder(id)}",
244
+ method="DELETE",
245
+ request_options=request_options,
246
+ )
247
+ try:
248
+ if 200 <= _response.status_code < 300:
249
+ return typing.cast(
250
+ PhoneNumbersDeleteResponse,
251
+ parse_obj_as(
252
+ type_=PhoneNumbersDeleteResponse, # type: ignore
253
+ object_=_response.json(),
254
+ ),
255
+ )
256
+ _response_json = _response.json()
257
+ except JSONDecodeError:
258
+ raise ApiError(status_code=_response.status_code, body=_response.text)
259
+ raise ApiError(status_code=_response.status_code, body=_response_json)
260
+
261
+ def update(
262
+ self,
263
+ id: str,
264
+ *,
265
+ fallback_destination: typing.Optional[UpdatePhoneNumberDtoFallbackDestination] = OMIT,
266
+ name: typing.Optional[str] = OMIT,
267
+ assistant_id: typing.Optional[str] = OMIT,
268
+ squad_id: typing.Optional[str] = OMIT,
269
+ server_url: typing.Optional[str] = OMIT,
270
+ server_url_secret: typing.Optional[str] = OMIT,
271
+ request_options: typing.Optional[RequestOptions] = None,
272
+ ) -> PhoneNumbersUpdateResponse:
273
+ """
274
+ Parameters
275
+ ----------
276
+ id : str
277
+
278
+ fallback_destination : typing.Optional[UpdatePhoneNumberDtoFallbackDestination]
279
+ This is the fallback destination an inbound call will be transferred to if:
280
+ 1. `assistantId` is not set
281
+ 2. `squadId` is not set
282
+ 3. and, `assistant-request` message to the `serverUrl` fails
283
+
284
+ If this is not set and above conditions are met, the inbound call is hung up with an error message.
285
+
286
+ name : typing.Optional[str]
287
+ This is the name of the phone number. This is just for your own reference.
288
+
289
+ assistant_id : typing.Optional[str]
290
+ This is the assistant that will be used for incoming calls to this phone number.
291
+
292
+ 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.
293
+
294
+ squad_id : typing.Optional[str]
295
+ This is the squad that will be used for incoming calls to this phone number.
296
+
297
+ 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.
298
+
299
+ server_url : typing.Optional[str]
300
+ This is the server URL where messages will be sent for calls on this number. This includes the `assistant-request` message.
301
+
302
+ You can see the shape of the messages sent in `ServerMessage`.
303
+
304
+ This overrides the `org.serverUrl`. Order of precedence: tool.server.url > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl.
305
+
306
+ server_url_secret : typing.Optional[str]
307
+ This is the secret Vapi will send with every message to your server. It's sent as a header called x-vapi-secret.
308
+
309
+ Same precedence logic as serverUrl.
310
+
311
+ request_options : typing.Optional[RequestOptions]
312
+ Request-specific configuration.
313
+
314
+ Returns
315
+ -------
316
+ PhoneNumbersUpdateResponse
317
+
318
+
319
+ Examples
320
+ --------
321
+ from vapi import Vapi
322
+
323
+ client = Vapi(
324
+ token="YOUR_TOKEN",
325
+ )
326
+ client.phone_numbers.update(
327
+ id="id",
328
+ )
329
+ """
330
+ _response = self._client_wrapper.httpx_client.request(
331
+ f"phone-number/{jsonable_encoder(id)}",
332
+ method="PATCH",
333
+ json={
334
+ "fallbackDestination": convert_and_respect_annotation_metadata(
335
+ object_=fallback_destination, annotation=UpdatePhoneNumberDtoFallbackDestination, direction="write"
336
+ ),
337
+ "name": name,
338
+ "assistantId": assistant_id,
339
+ "squadId": squad_id,
340
+ "serverUrl": server_url,
341
+ "serverUrlSecret": server_url_secret,
342
+ },
343
+ request_options=request_options,
344
+ omit=OMIT,
345
+ )
346
+ try:
347
+ if 200 <= _response.status_code < 300:
348
+ return typing.cast(
349
+ PhoneNumbersUpdateResponse,
350
+ parse_obj_as(
351
+ type_=PhoneNumbersUpdateResponse, # type: ignore
352
+ object_=_response.json(),
353
+ ),
354
+ )
355
+ _response_json = _response.json()
356
+ except JSONDecodeError:
357
+ raise ApiError(status_code=_response.status_code, body=_response.text)
358
+ raise ApiError(status_code=_response.status_code, body=_response_json)
359
+
360
+
361
+ class AsyncPhoneNumbersClient:
362
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
363
+ self._client_wrapper = client_wrapper
364
+
365
+ async def list(
366
+ self,
367
+ *,
368
+ limit: typing.Optional[float] = None,
369
+ created_at_gt: typing.Optional[dt.datetime] = None,
370
+ created_at_lt: typing.Optional[dt.datetime] = None,
371
+ created_at_ge: typing.Optional[dt.datetime] = None,
372
+ created_at_le: typing.Optional[dt.datetime] = None,
373
+ updated_at_gt: typing.Optional[dt.datetime] = None,
374
+ updated_at_lt: typing.Optional[dt.datetime] = None,
375
+ updated_at_ge: typing.Optional[dt.datetime] = None,
376
+ updated_at_le: typing.Optional[dt.datetime] = None,
377
+ request_options: typing.Optional[RequestOptions] = None,
378
+ ) -> typing.List[PhoneNumbersListResponseItem]:
379
+ """
380
+ Parameters
381
+ ----------
382
+ limit : typing.Optional[float]
383
+ This is the maximum number of items to return. Defaults to 100.
384
+
385
+ created_at_gt : typing.Optional[dt.datetime]
386
+ This will return items where the createdAt is greater than the specified value.
387
+
388
+ created_at_lt : typing.Optional[dt.datetime]
389
+ This will return items where the createdAt is less than the specified value.
390
+
391
+ created_at_ge : typing.Optional[dt.datetime]
392
+ This will return items where the createdAt is greater than or equal to the specified value.
393
+
394
+ created_at_le : typing.Optional[dt.datetime]
395
+ This will return items where the createdAt is less than or equal to the specified value.
396
+
397
+ updated_at_gt : typing.Optional[dt.datetime]
398
+ This will return items where the updatedAt is greater than the specified value.
399
+
400
+ updated_at_lt : typing.Optional[dt.datetime]
401
+ This will return items where the updatedAt is less than the specified value.
402
+
403
+ updated_at_ge : typing.Optional[dt.datetime]
404
+ This will return items where the updatedAt is greater than or equal to the specified value.
405
+
406
+ updated_at_le : typing.Optional[dt.datetime]
407
+ This will return items where the updatedAt is less than or equal to the specified value.
408
+
409
+ request_options : typing.Optional[RequestOptions]
410
+ Request-specific configuration.
411
+
412
+ Returns
413
+ -------
414
+ typing.List[PhoneNumbersListResponseItem]
415
+
416
+
417
+ Examples
418
+ --------
419
+ import asyncio
420
+
421
+ from vapi import AsyncVapi
422
+
423
+ client = AsyncVapi(
424
+ token="YOUR_TOKEN",
425
+ )
426
+
427
+
428
+ async def main() -> None:
429
+ await client.phone_numbers.list()
430
+
431
+
432
+ asyncio.run(main())
433
+ """
434
+ _response = await self._client_wrapper.httpx_client.request(
435
+ "phone-number",
436
+ method="GET",
437
+ params={
438
+ "limit": limit,
439
+ "createdAtGt": serialize_datetime(created_at_gt) if created_at_gt is not None else None,
440
+ "createdAtLt": serialize_datetime(created_at_lt) if created_at_lt is not None else None,
441
+ "createdAtGe": serialize_datetime(created_at_ge) if created_at_ge is not None else None,
442
+ "createdAtLe": serialize_datetime(created_at_le) if created_at_le is not None else None,
443
+ "updatedAtGt": serialize_datetime(updated_at_gt) if updated_at_gt is not None else None,
444
+ "updatedAtLt": serialize_datetime(updated_at_lt) if updated_at_lt is not None else None,
445
+ "updatedAtGe": serialize_datetime(updated_at_ge) if updated_at_ge is not None else None,
446
+ "updatedAtLe": serialize_datetime(updated_at_le) if updated_at_le is not None else None,
447
+ },
448
+ request_options=request_options,
449
+ )
450
+ try:
451
+ if 200 <= _response.status_code < 300:
452
+ return typing.cast(
453
+ typing.List[PhoneNumbersListResponseItem],
454
+ parse_obj_as(
455
+ type_=typing.List[PhoneNumbersListResponseItem], # type: ignore
456
+ object_=_response.json(),
457
+ ),
458
+ )
459
+ _response_json = _response.json()
460
+ except JSONDecodeError:
461
+ raise ApiError(status_code=_response.status_code, body=_response.text)
462
+ raise ApiError(status_code=_response.status_code, body=_response_json)
463
+
464
+ async def create(
465
+ self, *, request: PhoneNumbersCreateRequest, request_options: typing.Optional[RequestOptions] = None
466
+ ) -> PhoneNumbersCreateResponse:
467
+ """
468
+ Parameters
469
+ ----------
470
+ request : PhoneNumbersCreateRequest
471
+
472
+ request_options : typing.Optional[RequestOptions]
473
+ Request-specific configuration.
474
+
475
+ Returns
476
+ -------
477
+ PhoneNumbersCreateResponse
478
+
479
+
480
+ Examples
481
+ --------
482
+ import asyncio
483
+
484
+ from vapi import AsyncVapi, CreateByoPhoneNumberDto
485
+
486
+ client = AsyncVapi(
487
+ token="YOUR_TOKEN",
488
+ )
489
+
490
+
491
+ async def main() -> None:
492
+ await client.phone_numbers.create(
493
+ request=CreateByoPhoneNumberDto(
494
+ credential_id="credentialId",
495
+ ),
496
+ )
497
+
498
+
499
+ asyncio.run(main())
500
+ """
501
+ _response = await self._client_wrapper.httpx_client.request(
502
+ "phone-number",
503
+ method="POST",
504
+ json=convert_and_respect_annotation_metadata(
505
+ object_=request, annotation=PhoneNumbersCreateRequest, direction="write"
506
+ ),
507
+ request_options=request_options,
508
+ omit=OMIT,
509
+ )
510
+ try:
511
+ if 200 <= _response.status_code < 300:
512
+ return typing.cast(
513
+ PhoneNumbersCreateResponse,
514
+ parse_obj_as(
515
+ type_=PhoneNumbersCreateResponse, # type: ignore
516
+ object_=_response.json(),
517
+ ),
518
+ )
519
+ _response_json = _response.json()
520
+ except JSONDecodeError:
521
+ raise ApiError(status_code=_response.status_code, body=_response.text)
522
+ raise ApiError(status_code=_response.status_code, body=_response_json)
523
+
524
+ async def get(self, id: str, *, request_options: typing.Optional[RequestOptions] = None) -> PhoneNumbersGetResponse:
525
+ """
526
+ Parameters
527
+ ----------
528
+ id : str
529
+
530
+ request_options : typing.Optional[RequestOptions]
531
+ Request-specific configuration.
532
+
533
+ Returns
534
+ -------
535
+ PhoneNumbersGetResponse
536
+
537
+
538
+ Examples
539
+ --------
540
+ import asyncio
541
+
542
+ from vapi import AsyncVapi
543
+
544
+ client = AsyncVapi(
545
+ token="YOUR_TOKEN",
546
+ )
547
+
548
+
549
+ async def main() -> None:
550
+ await client.phone_numbers.get(
551
+ id="id",
552
+ )
553
+
554
+
555
+ asyncio.run(main())
556
+ """
557
+ _response = await self._client_wrapper.httpx_client.request(
558
+ f"phone-number/{jsonable_encoder(id)}",
559
+ method="GET",
560
+ request_options=request_options,
561
+ )
562
+ try:
563
+ if 200 <= _response.status_code < 300:
564
+ return typing.cast(
565
+ PhoneNumbersGetResponse,
566
+ parse_obj_as(
567
+ type_=PhoneNumbersGetResponse, # type: ignore
568
+ object_=_response.json(),
569
+ ),
570
+ )
571
+ _response_json = _response.json()
572
+ except JSONDecodeError:
573
+ raise ApiError(status_code=_response.status_code, body=_response.text)
574
+ raise ApiError(status_code=_response.status_code, body=_response_json)
575
+
576
+ async def delete(
577
+ self, id: str, *, request_options: typing.Optional[RequestOptions] = None
578
+ ) -> PhoneNumbersDeleteResponse:
579
+ """
580
+ Parameters
581
+ ----------
582
+ id : str
583
+
584
+ request_options : typing.Optional[RequestOptions]
585
+ Request-specific configuration.
586
+
587
+ Returns
588
+ -------
589
+ PhoneNumbersDeleteResponse
590
+
591
+
592
+ Examples
593
+ --------
594
+ import asyncio
595
+
596
+ from vapi import AsyncVapi
597
+
598
+ client = AsyncVapi(
599
+ token="YOUR_TOKEN",
600
+ )
601
+
602
+
603
+ async def main() -> None:
604
+ await client.phone_numbers.delete(
605
+ id="id",
606
+ )
607
+
608
+
609
+ asyncio.run(main())
610
+ """
611
+ _response = await self._client_wrapper.httpx_client.request(
612
+ f"phone-number/{jsonable_encoder(id)}",
613
+ method="DELETE",
614
+ request_options=request_options,
615
+ )
616
+ try:
617
+ if 200 <= _response.status_code < 300:
618
+ return typing.cast(
619
+ PhoneNumbersDeleteResponse,
620
+ parse_obj_as(
621
+ type_=PhoneNumbersDeleteResponse, # type: ignore
622
+ object_=_response.json(),
623
+ ),
624
+ )
625
+ _response_json = _response.json()
626
+ except JSONDecodeError:
627
+ raise ApiError(status_code=_response.status_code, body=_response.text)
628
+ raise ApiError(status_code=_response.status_code, body=_response_json)
629
+
630
+ async def update(
631
+ self,
632
+ id: str,
633
+ *,
634
+ fallback_destination: typing.Optional[UpdatePhoneNumberDtoFallbackDestination] = OMIT,
635
+ name: typing.Optional[str] = OMIT,
636
+ assistant_id: typing.Optional[str] = OMIT,
637
+ squad_id: typing.Optional[str] = OMIT,
638
+ server_url: typing.Optional[str] = OMIT,
639
+ server_url_secret: typing.Optional[str] = OMIT,
640
+ request_options: typing.Optional[RequestOptions] = None,
641
+ ) -> PhoneNumbersUpdateResponse:
642
+ """
643
+ Parameters
644
+ ----------
645
+ id : str
646
+
647
+ fallback_destination : typing.Optional[UpdatePhoneNumberDtoFallbackDestination]
648
+ This is the fallback destination an inbound call will be transferred to if:
649
+ 1. `assistantId` is not set
650
+ 2. `squadId` is not set
651
+ 3. and, `assistant-request` message to the `serverUrl` fails
652
+
653
+ If this is not set and above conditions are met, the inbound call is hung up with an error message.
654
+
655
+ name : typing.Optional[str]
656
+ This is the name of the phone number. This is just for your own reference.
657
+
658
+ assistant_id : typing.Optional[str]
659
+ This is the assistant that will be used for incoming calls to this phone number.
660
+
661
+ 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.
662
+
663
+ squad_id : typing.Optional[str]
664
+ This is the squad that will be used for incoming calls to this phone number.
665
+
666
+ 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.
667
+
668
+ server_url : typing.Optional[str]
669
+ This is the server URL where messages will be sent for calls on this number. This includes the `assistant-request` message.
670
+
671
+ You can see the shape of the messages sent in `ServerMessage`.
672
+
673
+ This overrides the `org.serverUrl`. Order of precedence: tool.server.url > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl.
674
+
675
+ server_url_secret : typing.Optional[str]
676
+ This is the secret Vapi will send with every message to your server. It's sent as a header called x-vapi-secret.
677
+
678
+ Same precedence logic as serverUrl.
679
+
680
+ request_options : typing.Optional[RequestOptions]
681
+ Request-specific configuration.
682
+
683
+ Returns
684
+ -------
685
+ PhoneNumbersUpdateResponse
686
+
687
+
688
+ Examples
689
+ --------
690
+ import asyncio
691
+
692
+ from vapi import AsyncVapi
693
+
694
+ client = AsyncVapi(
695
+ token="YOUR_TOKEN",
696
+ )
697
+
698
+
699
+ async def main() -> None:
700
+ await client.phone_numbers.update(
701
+ id="id",
702
+ )
703
+
704
+
705
+ asyncio.run(main())
706
+ """
707
+ _response = await self._client_wrapper.httpx_client.request(
708
+ f"phone-number/{jsonable_encoder(id)}",
709
+ method="PATCH",
710
+ json={
711
+ "fallbackDestination": convert_and_respect_annotation_metadata(
712
+ object_=fallback_destination, annotation=UpdatePhoneNumberDtoFallbackDestination, direction="write"
713
+ ),
714
+ "name": name,
715
+ "assistantId": assistant_id,
716
+ "squadId": squad_id,
717
+ "serverUrl": server_url,
718
+ "serverUrlSecret": server_url_secret,
719
+ },
720
+ request_options=request_options,
721
+ omit=OMIT,
722
+ )
723
+ try:
724
+ if 200 <= _response.status_code < 300:
725
+ return typing.cast(
726
+ PhoneNumbersUpdateResponse,
727
+ parse_obj_as(
728
+ type_=PhoneNumbersUpdateResponse, # type: ignore
729
+ object_=_response.json(),
730
+ ),
731
+ )
732
+ _response_json = _response.json()
733
+ except JSONDecodeError:
734
+ raise ApiError(status_code=_response.status_code, body=_response.text)
735
+ raise ApiError(status_code=_response.status_code, body=_response_json)