vapi_server_sdk 0.0.0.pre.alpha7 → 0.2.0

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 (356) hide show
  1. checksums.yaml +4 -4
  2. data/lib/requests.rb +2 -10
  3. data/lib/types_export.rb +184 -26
  4. data/lib/vapi_server_sdk/analytics/client.rb +14 -43
  5. data/lib/vapi_server_sdk/assistants/client.rb +57 -60
  6. data/lib/vapi_server_sdk/assistants/types/update_assistant_dto_client_messages_item.rb +1 -0
  7. data/lib/vapi_server_sdk/assistants/types/update_assistant_dto_model.rb +39 -0
  8. data/lib/vapi_server_sdk/assistants/types/update_assistant_dto_server_messages_item.rb +1 -0
  9. data/lib/vapi_server_sdk/assistants/types/update_assistant_dto_transcriber.rb +27 -1
  10. data/lib/vapi_server_sdk/assistants/types/update_assistant_dto_voice.rb +26 -0
  11. data/lib/vapi_server_sdk/calls/client.rb +58 -28
  12. data/lib/vapi_server_sdk/knowledge_bases/client.rb +394 -0
  13. data/lib/vapi_server_sdk/knowledge_bases/types/knowledge_bases_create_request.rb +96 -0
  14. data/lib/vapi_server_sdk/knowledge_bases/types/knowledge_bases_create_response.rb +96 -0
  15. data/lib/vapi_server_sdk/knowledge_bases/types/knowledge_bases_delete_response.rb +96 -0
  16. data/lib/vapi_server_sdk/knowledge_bases/types/knowledge_bases_get_response.rb +96 -0
  17. data/lib/vapi_server_sdk/knowledge_bases/types/knowledge_bases_list_response_item.rb +96 -0
  18. data/lib/vapi_server_sdk/knowledge_bases/types/knowledge_bases_update_response.rb +96 -0
  19. data/lib/vapi_server_sdk/logs/client.rb +10 -6
  20. data/lib/vapi_server_sdk/squads/client.rb +56 -32
  21. data/lib/vapi_server_sdk/tools/client.rb +4 -0
  22. data/lib/vapi_server_sdk/tools/types/tools_create_request.rb +39 -0
  23. data/lib/vapi_server_sdk/tools/types/tools_create_response.rb +39 -0
  24. data/lib/vapi_server_sdk/tools/types/tools_delete_response.rb +39 -0
  25. data/lib/vapi_server_sdk/tools/types/tools_get_response.rb +39 -0
  26. data/lib/vapi_server_sdk/tools/types/tools_list_response_item.rb +39 -0
  27. data/lib/vapi_server_sdk/tools/types/tools_update_response.rb +39 -0
  28. data/lib/vapi_server_sdk/types/analytics_query_dto.rb +59 -0
  29. data/lib/vapi_server_sdk/types/anthropic_credential.rb +13 -3
  30. data/lib/vapi_server_sdk/types/anthropic_model.rb +21 -13
  31. data/lib/vapi_server_sdk/types/anthropic_model_model.rb +2 -0
  32. data/lib/vapi_server_sdk/types/anyscale_credential.rb +13 -3
  33. data/lib/vapi_server_sdk/types/anyscale_model.rb +21 -13
  34. data/lib/vapi_server_sdk/types/assembly_ai_credential.rb +111 -0
  35. data/lib/vapi_server_sdk/types/assembly_ai_transcriber.rb +97 -0
  36. data/lib/vapi_server_sdk/types/assistant.rb +42 -64
  37. data/lib/vapi_server_sdk/types/assistant_client_messages_item.rb +1 -0
  38. data/lib/vapi_server_sdk/types/assistant_custom_endpointing_rule.rb +100 -0
  39. data/lib/vapi_server_sdk/types/assistant_model.rb +39 -0
  40. data/lib/vapi_server_sdk/types/assistant_overrides.rb +57 -65
  41. data/lib/vapi_server_sdk/types/assistant_overrides_client_messages_item.rb +1 -0
  42. data/lib/vapi_server_sdk/types/assistant_overrides_model.rb +39 -0
  43. data/lib/vapi_server_sdk/types/assistant_overrides_server_messages_item.rb +1 -0
  44. data/lib/vapi_server_sdk/types/assistant_overrides_transcriber.rb +27 -1
  45. data/lib/vapi_server_sdk/types/assistant_overrides_voice.rb +26 -0
  46. data/lib/vapi_server_sdk/types/assistant_server_messages_item.rb +1 -0
  47. data/lib/vapi_server_sdk/types/assistant_transcriber.rb +27 -1
  48. data/lib/vapi_server_sdk/types/assistant_voice.rb +26 -0
  49. data/lib/vapi_server_sdk/types/auto_reload_plan.rb +65 -0
  50. data/lib/vapi_server_sdk/types/auto_reload_plan_dto.rb +65 -0
  51. data/lib/vapi_server_sdk/types/azure_credential.rb +129 -0
  52. data/lib/vapi_server_sdk/types/azure_credential_region.rb +23 -0
  53. data/lib/vapi_server_sdk/types/azure_open_ai_credential.rb +12 -2
  54. data/lib/vapi_server_sdk/types/azure_open_ai_credential_models_item.rb +1 -0
  55. data/lib/vapi_server_sdk/types/azure_open_ai_credential_region.rb +1 -0
  56. data/lib/vapi_server_sdk/types/azure_voice.rb +25 -21
  57. data/lib/vapi_server_sdk/types/bash_tool.rb +194 -0
  58. data/lib/vapi_server_sdk/types/bash_tool_messages_item.rb +120 -0
  59. data/lib/vapi_server_sdk/types/block_complete_message.rb +29 -4
  60. data/lib/vapi_server_sdk/types/block_start_message.rb +29 -4
  61. data/lib/vapi_server_sdk/types/both_custom_endpointing_rule.rb +126 -0
  62. data/lib/vapi_server_sdk/types/byo_sip_trunk_credential.rb +29 -9
  63. data/lib/vapi_server_sdk/types/call.rb +15 -1
  64. data/lib/vapi_server_sdk/types/call_ended_reason.rb +49 -24
  65. data/lib/vapi_server_sdk/types/call_log_privileged.rb +88 -0
  66. data/lib/vapi_server_sdk/types/call_log_privileged_level.rb +12 -0
  67. data/lib/vapi_server_sdk/types/call_logs_paginated_response.rb +75 -0
  68. data/lib/vapi_server_sdk/types/cartesia_credential.rb +13 -3
  69. data/lib/vapi_server_sdk/types/cartesia_voice.rb +25 -21
  70. data/lib/vapi_server_sdk/types/cartesia_voice_language.rb +9 -1
  71. data/lib/vapi_server_sdk/types/client_inbound_message_add_message.rb +25 -3
  72. data/lib/vapi_server_sdk/types/client_inbound_message_message.rb +13 -0
  73. data/lib/vapi_server_sdk/types/client_inbound_message_transfer.rb +63 -0
  74. data/lib/vapi_server_sdk/types/client_inbound_message_transfer_destination.rb +96 -0
  75. data/lib/vapi_server_sdk/types/{client_message_language_changed.rb → client_message_language_change_detected.rb} +5 -5
  76. data/lib/vapi_server_sdk/types/client_message_message.rb +22 -9
  77. data/lib/vapi_server_sdk/types/client_message_tool_calls_tool_with_tool_call_list_item.rb +77 -77
  78. data/lib/vapi_server_sdk/types/client_message_transfer_update.rb +116 -0
  79. data/lib/vapi_server_sdk/types/client_message_transfer_update_destination.rb +122 -0
  80. data/lib/vapi_server_sdk/types/computer_tool.rb +218 -0
  81. data/lib/vapi_server_sdk/types/computer_tool_messages_item.rb +120 -0
  82. data/lib/vapi_server_sdk/types/condition.rb +9 -9
  83. data/lib/vapi_server_sdk/types/create_anthropic_credential_dto.rb +11 -2
  84. data/lib/vapi_server_sdk/types/create_anyscale_credential_dto.rb +11 -2
  85. data/lib/vapi_server_sdk/types/create_assembly_ai_credential_dto.rb +74 -0
  86. data/lib/vapi_server_sdk/types/create_assistant_dto.rb +43 -65
  87. data/lib/vapi_server_sdk/types/create_assistant_dto_client_messages_item.rb +1 -0
  88. data/lib/vapi_server_sdk/types/create_assistant_dto_model.rb +39 -0
  89. data/lib/vapi_server_sdk/types/create_assistant_dto_server_messages_item.rb +1 -0
  90. data/lib/vapi_server_sdk/types/create_assistant_dto_transcriber.rb +27 -1
  91. data/lib/vapi_server_sdk/types/create_assistant_dto_voice.rb +26 -0
  92. data/lib/vapi_server_sdk/types/create_azure_credential_dto.rb +95 -0
  93. data/lib/vapi_server_sdk/types/create_azure_credential_dto_region.rb +23 -0
  94. data/lib/vapi_server_sdk/types/create_azure_open_ai_credential_dto.rb +13 -3
  95. data/lib/vapi_server_sdk/types/create_azure_open_ai_credential_dto_models_item.rb +1 -0
  96. data/lib/vapi_server_sdk/types/create_azure_open_ai_credential_dto_region.rb +1 -0
  97. data/lib/vapi_server_sdk/types/create_bash_tool_dto.rb +161 -0
  98. data/lib/vapi_server_sdk/types/create_bash_tool_dto_messages_item.rb +120 -0
  99. data/lib/vapi_server_sdk/types/create_byo_sip_trunk_credential_dto.rb +31 -11
  100. data/lib/vapi_server_sdk/types/create_cartesia_credential_dto.rb +11 -2
  101. data/lib/vapi_server_sdk/types/create_computer_tool_dto.rb +185 -0
  102. data/lib/vapi_server_sdk/types/create_computer_tool_dto_messages_item.rb +120 -0
  103. data/lib/vapi_server_sdk/types/create_custom_knowledge_base_dto.rb +137 -0
  104. data/lib/vapi_server_sdk/types/create_custom_llm_credential_dto.rb +31 -2
  105. data/lib/vapi_server_sdk/types/create_deep_infra_credential_dto.rb +11 -2
  106. data/lib/vapi_server_sdk/types/create_deepgram_credential_dto.rb +9 -2
  107. data/lib/vapi_server_sdk/types/create_eleven_labs_credential_dto.rb +11 -2
  108. data/lib/vapi_server_sdk/types/create_gcp_credential_dto.rb +10 -10
  109. data/lib/vapi_server_sdk/types/create_gladia_credential_dto.rb +11 -2
  110. data/lib/vapi_server_sdk/types/create_go_high_level_credential_dto.rb +11 -2
  111. data/lib/vapi_server_sdk/types/create_google_credential_dto.rb +76 -0
  112. data/lib/vapi_server_sdk/types/create_groq_credential_dto.rb +11 -2
  113. data/lib/vapi_server_sdk/types/create_inflection_ai_credential_dto.rb +76 -0
  114. data/lib/vapi_server_sdk/types/create_langfuse_credential_dto.rb +96 -0
  115. data/lib/vapi_server_sdk/types/create_lmnt_credential_dto.rb +11 -2
  116. data/lib/vapi_server_sdk/types/create_make_credential_dto.rb +17 -2
  117. data/lib/vapi_server_sdk/types/create_open_ai_credential_dto.rb +11 -2
  118. data/lib/vapi_server_sdk/types/create_open_router_credential_dto.rb +11 -2
  119. data/lib/vapi_server_sdk/types/create_org_dto.rb +21 -2
  120. data/lib/vapi_server_sdk/types/create_org_dto_channel.rb +10 -0
  121. data/lib/vapi_server_sdk/types/create_perplexity_ai_credential_dto.rb +11 -2
  122. data/lib/vapi_server_sdk/types/create_play_ht_credential_dto.rb +11 -2
  123. data/lib/vapi_server_sdk/types/create_rime_ai_credential_dto.rb +11 -2
  124. data/lib/vapi_server_sdk/types/create_runpod_credential_dto.rb +11 -2
  125. data/lib/vapi_server_sdk/types/create_s_3_credential_dto.rb +13 -3
  126. data/lib/vapi_server_sdk/types/{knowledge_base.rb → create_tavus_credential_dto.rb} +21 -21
  127. data/lib/vapi_server_sdk/types/create_text_editor_tool_dto.rb +161 -0
  128. data/lib/vapi_server_sdk/types/create_text_editor_tool_dto_messages_item.rb +120 -0
  129. data/lib/vapi_server_sdk/types/create_together_ai_credential_dto.rb +11 -2
  130. data/lib/vapi_server_sdk/types/create_trieve_knowledge_base_dto.rb +109 -0
  131. data/lib/vapi_server_sdk/types/create_twilio_credential_dto.rb +16 -2
  132. data/lib/vapi_server_sdk/types/create_vapi_phone_number_dto.rb +20 -2
  133. data/lib/vapi_server_sdk/types/create_vonage_credential_dto.rb +16 -2
  134. data/lib/vapi_server_sdk/types/create_webhook_credential_dto.rb +84 -0
  135. data/lib/vapi_server_sdk/types/create_x_ai_credential_dto.rb +76 -0
  136. data/lib/vapi_server_sdk/types/credits_buy_dto.rb +55 -0
  137. data/lib/vapi_server_sdk/types/custom_knowledge_base.rb +154 -0
  138. data/lib/vapi_server_sdk/types/custom_llm_credential.rb +46 -3
  139. data/lib/vapi_server_sdk/types/custom_llm_model.rb +23 -15
  140. data/lib/vapi_server_sdk/types/custom_message.rb +92 -0
  141. data/lib/vapi_server_sdk/types/custom_transcriber.rb +125 -0
  142. data/lib/vapi_server_sdk/types/custom_voice.rb +132 -0
  143. data/lib/vapi_server_sdk/types/customer_custom_endpointing_rule.rb +100 -0
  144. data/lib/vapi_server_sdk/types/deep_infra_credential.rb +13 -3
  145. data/lib/vapi_server_sdk/types/deep_infra_model.rb +21 -13
  146. data/lib/vapi_server_sdk/types/deepgram_credential.rb +9 -1
  147. data/lib/vapi_server_sdk/types/deepgram_transcriber.rb +69 -11
  148. data/lib/vapi_server_sdk/types/deepgram_voice.rb +17 -17
  149. data/lib/vapi_server_sdk/types/eleven_labs_credential.rb +13 -3
  150. data/lib/vapi_server_sdk/types/eleven_labs_voice.rb +28 -24
  151. data/lib/vapi_server_sdk/types/fallback_azure_voice.rb +100 -0
  152. data/lib/vapi_server_sdk/types/fallback_azure_voice_id.rb +53 -0
  153. data/lib/vapi_server_sdk/types/fallback_azure_voice_voice_id.rb +9 -0
  154. data/lib/vapi_server_sdk/types/fallback_cartesia_voice.rb +100 -0
  155. data/lib/vapi_server_sdk/types/fallback_cartesia_voice_language.rb +23 -0
  156. data/lib/vapi_server_sdk/types/fallback_cartesia_voice_model.rb +10 -0
  157. data/lib/vapi_server_sdk/types/fallback_custom_voice.rb +117 -0
  158. data/lib/vapi_server_sdk/types/fallback_deepgram_voice.rb +81 -0
  159. data/lib/vapi_server_sdk/types/fallback_deepgram_voice_id.rb +53 -0
  160. data/lib/vapi_server_sdk/types/fallback_deepgram_voice_id_enum.rb +18 -0
  161. data/lib/vapi_server_sdk/types/fallback_eleven_labs_voice.rb +164 -0
  162. data/lib/vapi_server_sdk/types/fallback_eleven_labs_voice_id.rb +54 -0
  163. data/lib/vapi_server_sdk/types/fallback_eleven_labs_voice_id_enum.rb +21 -0
  164. data/lib/vapi_server_sdk/types/fallback_eleven_labs_voice_model.rb +12 -0
  165. data/lib/vapi_server_sdk/types/fallback_lmnt_voice.rb +88 -0
  166. data/lib/vapi_server_sdk/types/fallback_lmnt_voice_id.rb +53 -0
  167. data/lib/vapi_server_sdk/types/fallback_lmnt_voice_id_enum.rb +8 -0
  168. data/lib/vapi_server_sdk/types/fallback_neets_voice.rb +81 -0
  169. data/lib/vapi_server_sdk/types/fallback_neets_voice_id.rb +53 -0
  170. data/lib/vapi_server_sdk/types/fallback_neets_voice_id_enum.rb +7 -0
  171. data/lib/vapi_server_sdk/types/fallback_open_ai_voice.rb +87 -0
  172. data/lib/vapi_server_sdk/types/fallback_open_ai_voice_id.rb +20 -0
  173. data/lib/vapi_server_sdk/types/fallback_plan.rb +61 -0
  174. data/lib/vapi_server_sdk/types/fallback_plan_voices_item.rb +211 -0
  175. data/lib/vapi_server_sdk/types/fallback_play_ht_voice.rb +172 -0
  176. data/lib/vapi_server_sdk/types/fallback_play_ht_voice_emotion.rb +19 -0
  177. data/lib/vapi_server_sdk/types/fallback_play_ht_voice_id.rb +53 -0
  178. data/lib/vapi_server_sdk/types/fallback_play_ht_voice_id_enum.rb +16 -0
  179. data/lib/vapi_server_sdk/types/fallback_play_ht_voice_language.rb +44 -0
  180. data/lib/vapi_server_sdk/types/fallback_play_ht_voice_model.rb +10 -0
  181. data/lib/vapi_server_sdk/types/fallback_rime_ai_voice.rb +96 -0
  182. data/lib/vapi_server_sdk/types/fallback_rime_ai_voice_id.rb +53 -0
  183. data/lib/vapi_server_sdk/types/fallback_rime_ai_voice_id_enum.rb +87 -0
  184. data/lib/vapi_server_sdk/types/fallback_rime_ai_voice_model.rb +9 -0
  185. data/lib/vapi_server_sdk/types/fallback_tavus_voice.rb +147 -0
  186. data/lib/vapi_server_sdk/types/fallback_tavus_voice_voice_id.rb +53 -0
  187. data/lib/vapi_server_sdk/types/format_plan.rb +0 -2
  188. data/lib/vapi_server_sdk/types/function_tool_with_tool_call.rb +10 -1
  189. data/lib/vapi_server_sdk/types/gcp_credential.rb +2 -2
  190. data/lib/vapi_server_sdk/types/ghl_tool_with_tool_call.rb +9 -1
  191. data/lib/vapi_server_sdk/types/gladia_credential.rb +13 -3
  192. data/lib/vapi_server_sdk/types/go_high_level_credential.rb +13 -3
  193. data/lib/vapi_server_sdk/types/google_credential.rb +113 -0
  194. data/lib/vapi_server_sdk/types/google_model.rb +178 -0
  195. data/lib/vapi_server_sdk/types/google_model_model.rb +12 -0
  196. data/lib/vapi_server_sdk/types/google_model_tools_item.rb +159 -0
  197. data/lib/vapi_server_sdk/types/groq_credential.rb +13 -3
  198. data/lib/vapi_server_sdk/types/groq_model.rb +21 -13
  199. data/lib/vapi_server_sdk/types/hipaa_buy_dto.rb +65 -0
  200. data/lib/vapi_server_sdk/types/inflection_ai_credential.rb +113 -0
  201. data/lib/vapi_server_sdk/types/inflection_ai_model.rb +177 -0
  202. data/lib/vapi_server_sdk/types/inflection_ai_model_tools_item.rb +159 -0
  203. data/lib/vapi_server_sdk/types/invite_user_dto.rb +9 -9
  204. data/lib/vapi_server_sdk/types/knowledge_base_response_document.rb +74 -0
  205. data/lib/vapi_server_sdk/types/langfuse_credential.rb +130 -0
  206. data/lib/vapi_server_sdk/types/lmnt_credential.rb +13 -3
  207. data/lib/vapi_server_sdk/types/lmnt_voice.rb +18 -14
  208. data/lib/vapi_server_sdk/types/log.rb +12 -4
  209. data/lib/vapi_server_sdk/types/log_resource.rb +8 -0
  210. data/lib/vapi_server_sdk/types/make_credential.rb +13 -3
  211. data/lib/vapi_server_sdk/types/make_tool_with_tool_call.rb +9 -1
  212. data/lib/vapi_server_sdk/types/neets_voice.rb +17 -17
  213. data/lib/vapi_server_sdk/types/o_auth_2_authentication_plan.rb +79 -0
  214. data/lib/vapi_server_sdk/types/oauth_2_authentication_session.rb +68 -0
  215. data/lib/vapi_server_sdk/types/open_ai_credential.rb +13 -3
  216. data/lib/vapi_server_sdk/types/open_ai_function.rb +30 -4
  217. data/lib/vapi_server_sdk/types/open_ai_model.rb +23 -15
  218. data/lib/vapi_server_sdk/types/open_ai_model_fallback_models_item.rb +2 -0
  219. data/lib/vapi_server_sdk/types/open_ai_model_model.rb +2 -0
  220. data/lib/vapi_server_sdk/types/open_ai_voice.rb +22 -14
  221. data/lib/vapi_server_sdk/types/open_ai_voice_id.rb +7 -0
  222. data/lib/vapi_server_sdk/types/open_router_credential.rb +13 -3
  223. data/lib/vapi_server_sdk/types/open_router_model.rb +21 -13
  224. data/lib/vapi_server_sdk/types/org.rb +35 -2
  225. data/lib/vapi_server_sdk/types/org_channel.rb +10 -0
  226. data/lib/vapi_server_sdk/types/org_with_org_user.rb +262 -0
  227. data/lib/vapi_server_sdk/types/org_with_org_user_channel.rb +10 -0
  228. data/lib/vapi_server_sdk/types/org_with_org_user_role.rb +9 -0
  229. data/lib/vapi_server_sdk/types/payment.rb +167 -0
  230. data/lib/vapi_server_sdk/types/payment_retry_dto.rb +55 -0
  231. data/lib/vapi_server_sdk/types/payment_status.rb +11 -0
  232. data/lib/vapi_server_sdk/types/payments_paginated_response.rb +75 -0
  233. data/lib/vapi_server_sdk/types/perplexity_ai_credential.rb +13 -3
  234. data/lib/vapi_server_sdk/types/perplexity_ai_model.rb +21 -13
  235. data/lib/vapi_server_sdk/types/phone_number_paginated_response.rb +75 -0
  236. data/lib/vapi_server_sdk/types/phone_number_paginated_response_results_item.rb +121 -0
  237. data/lib/vapi_server_sdk/types/play_ht_credential.rb +13 -2
  238. data/lib/vapi_server_sdk/types/play_ht_voice.rb +37 -15
  239. data/lib/vapi_server_sdk/types/play_ht_voice_language.rb +44 -0
  240. data/lib/vapi_server_sdk/types/play_ht_voice_model.rb +10 -0
  241. data/lib/vapi_server_sdk/types/regex_option.rb +2 -2
  242. data/lib/vapi_server_sdk/types/regex_option_type.rb +1 -1
  243. data/lib/vapi_server_sdk/types/regex_replacement.rb +14 -4
  244. data/lib/vapi_server_sdk/types/rime_ai_credential.rb +13 -3
  245. data/lib/vapi_server_sdk/types/rime_ai_voice.rb +18 -14
  246. data/lib/vapi_server_sdk/types/runpod_credential.rb +13 -3
  247. data/lib/vapi_server_sdk/types/s_3_credential.rb +13 -3
  248. data/lib/vapi_server_sdk/types/server.rb +16 -2
  249. data/lib/vapi_server_sdk/types/server_message_end_of_call_report_ended_reason.rb +49 -24
  250. data/lib/vapi_server_sdk/types/server_message_knowledge_base_request.rb +195 -0
  251. data/lib/vapi_server_sdk/types/server_message_knowledge_base_request_messages_item.rb +97 -0
  252. data/lib/vapi_server_sdk/types/{server_message_language_changed_phone_number.rb → server_message_knowledge_base_request_phone_number.rb} +8 -8
  253. data/lib/vapi_server_sdk/types/{server_message_language_changed.rb → server_message_language_change_detected.rb} +10 -10
  254. data/lib/vapi_server_sdk/types/server_message_language_change_detected_phone_number.rb +125 -0
  255. data/lib/vapi_server_sdk/types/server_message_message.rb +22 -9
  256. data/lib/vapi_server_sdk/types/server_message_response_knowledge_base_request.rb +81 -0
  257. data/lib/vapi_server_sdk/types/server_message_response_message_response.rb +14 -0
  258. data/lib/vapi_server_sdk/types/server_message_status_update_ended_reason.rb +49 -24
  259. data/lib/vapi_server_sdk/types/server_message_tool_calls_tool_with_tool_call_list_item.rb +77 -77
  260. data/lib/vapi_server_sdk/types/server_message_transfer_update.rb +18 -2
  261. data/lib/vapi_server_sdk/types/sip_authentication.rb +80 -0
  262. data/lib/vapi_server_sdk/types/start_speaking_plan.rb +54 -10
  263. data/lib/vapi_server_sdk/types/start_speaking_plan_custom_endpointing_rules_item.rb +108 -0
  264. data/lib/vapi_server_sdk/types/structured_data_plan.rb +28 -10
  265. data/lib/vapi_server_sdk/types/subscription.rb +336 -0
  266. data/lib/vapi_server_sdk/types/subscription_concurrency_line_buy_dto.rb +55 -0
  267. data/lib/vapi_server_sdk/types/subscription_concurrency_line_remove_dto.rb +55 -0
  268. data/lib/vapi_server_sdk/types/subscription_coupon_add_dto.rb +67 -0
  269. data/lib/vapi_server_sdk/types/subscription_monthly_charge.rb +65 -0
  270. data/lib/vapi_server_sdk/types/subscription_status.rb +10 -0
  271. data/lib/vapi_server_sdk/types/subscription_type.rb +10 -0
  272. data/lib/vapi_server_sdk/types/success_evaluation_plan.rb +38 -16
  273. data/lib/vapi_server_sdk/types/summary_plan.rb +26 -8
  274. data/lib/vapi_server_sdk/types/sync_voice_library_dto_providers_item.rb +1 -0
  275. data/lib/vapi_server_sdk/types/tavus_conversation_properties.rb +173 -0
  276. data/lib/vapi_server_sdk/types/tavus_credential.rb +111 -0
  277. data/lib/vapi_server_sdk/types/tavus_voice.rb +163 -0
  278. data/lib/vapi_server_sdk/types/tavus_voice_voice_id.rb +53 -0
  279. data/lib/vapi_server_sdk/types/text_content.rb +73 -0
  280. data/lib/vapi_server_sdk/types/text_content_language.rb +191 -0
  281. data/lib/vapi_server_sdk/types/text_editor_tool.rb +194 -0
  282. data/lib/vapi_server_sdk/types/text_editor_tool_messages_item.rb +120 -0
  283. data/lib/vapi_server_sdk/types/together_ai_credential.rb +13 -3
  284. data/lib/vapi_server_sdk/types/together_ai_model.rb +21 -13
  285. data/lib/vapi_server_sdk/types/tool_message_complete.rb +29 -3
  286. data/lib/vapi_server_sdk/types/tool_message_delayed.rb +30 -3
  287. data/lib/vapi_server_sdk/types/tool_message_failed.rb +30 -3
  288. data/lib/vapi_server_sdk/types/tool_message_start.rb +29 -4
  289. data/lib/vapi_server_sdk/types/transfer_destination_assistant.rb +79 -33
  290. data/lib/vapi_server_sdk/types/transfer_destination_assistant_message.rb +65 -0
  291. data/lib/vapi_server_sdk/types/transfer_destination_number.rb +56 -24
  292. data/lib/vapi_server_sdk/types/transfer_destination_number_message.rb +65 -0
  293. data/lib/vapi_server_sdk/types/transfer_destination_sip.rb +60 -15
  294. data/lib/vapi_server_sdk/types/transfer_destination_sip_message.rb +65 -0
  295. data/lib/vapi_server_sdk/types/transfer_destination_step.rb +28 -14
  296. data/lib/vapi_server_sdk/types/transfer_destination_step_message.rb +65 -0
  297. data/lib/vapi_server_sdk/types/transfer_plan.rb +141 -0
  298. data/lib/vapi_server_sdk/types/transfer_plan_message.rb +58 -0
  299. data/lib/vapi_server_sdk/types/transfer_plan_mode.rb +32 -0
  300. data/lib/vapi_server_sdk/types/transport.rb +70 -0
  301. data/lib/vapi_server_sdk/types/transport_cost.rb +12 -2
  302. data/lib/vapi_server_sdk/types/transport_cost_provider.rb +9 -0
  303. data/lib/vapi_server_sdk/types/transport_provider.rb +11 -0
  304. data/lib/vapi_server_sdk/types/trieve_knowledge_base.rb +125 -0
  305. data/lib/vapi_server_sdk/types/trieve_knowledge_base_vector_store_create_plan.rb +109 -0
  306. data/lib/vapi_server_sdk/types/trieve_knowledge_base_vector_store_search_plan.rb +95 -0
  307. data/lib/vapi_server_sdk/types/trieve_knowledge_base_vector_store_search_plan_search_type.rb +12 -0
  308. data/lib/vapi_server_sdk/types/twilio_credential.rb +12 -2
  309. data/lib/vapi_server_sdk/types/update_anthropic_credential_dto.rb +11 -2
  310. data/lib/vapi_server_sdk/types/update_anyscale_credential_dto.rb +11 -2
  311. data/lib/vapi_server_sdk/types/update_assembly_ai_credential_dto.rb +74 -0
  312. data/lib/vapi_server_sdk/types/update_azure_credential_dto.rb +95 -0
  313. data/lib/vapi_server_sdk/types/update_azure_credential_dto_region.rb +23 -0
  314. data/lib/vapi_server_sdk/types/update_azure_open_ai_credential_dto.rb +13 -3
  315. data/lib/vapi_server_sdk/types/update_azure_open_ai_credential_dto_models_item.rb +1 -0
  316. data/lib/vapi_server_sdk/types/update_azure_open_ai_credential_dto_region.rb +1 -0
  317. data/lib/vapi_server_sdk/types/update_byo_sip_trunk_credential_dto.rb +31 -11
  318. data/lib/vapi_server_sdk/types/update_cartesia_credential_dto.rb +11 -2
  319. data/lib/vapi_server_sdk/types/update_custom_llm_credential_dto.rb +31 -2
  320. data/lib/vapi_server_sdk/types/update_deep_infra_credential_dto.rb +11 -2
  321. data/lib/vapi_server_sdk/types/update_deepgram_credential_dto.rb +9 -2
  322. data/lib/vapi_server_sdk/types/update_eleven_labs_credential_dto.rb +11 -2
  323. data/lib/vapi_server_sdk/types/update_gcp_credential_dto.rb +10 -10
  324. data/lib/vapi_server_sdk/types/update_gladia_credential_dto.rb +11 -2
  325. data/lib/vapi_server_sdk/types/update_go_high_level_credential_dto.rb +11 -2
  326. data/lib/vapi_server_sdk/types/update_google_credential_dto.rb +76 -0
  327. data/lib/vapi_server_sdk/types/update_groq_credential_dto.rb +11 -2
  328. data/lib/vapi_server_sdk/types/update_inflection_ai_credential_dto.rb +76 -0
  329. data/lib/vapi_server_sdk/types/update_langfuse_credential_dto.rb +96 -0
  330. data/lib/vapi_server_sdk/types/update_lmnt_credential_dto.rb +11 -2
  331. data/lib/vapi_server_sdk/types/update_make_credential_dto.rb +17 -2
  332. data/lib/vapi_server_sdk/types/update_open_ai_credential_dto.rb +11 -2
  333. data/lib/vapi_server_sdk/types/update_open_router_credential_dto.rb +11 -2
  334. data/lib/vapi_server_sdk/types/update_org_dto.rb +21 -2
  335. data/lib/vapi_server_sdk/types/update_org_dto_channel.rb +10 -0
  336. data/lib/vapi_server_sdk/types/update_perplexity_ai_credential_dto.rb +11 -2
  337. data/lib/vapi_server_sdk/types/update_play_ht_credential_dto.rb +11 -2
  338. data/lib/vapi_server_sdk/types/update_rime_ai_credential_dto.rb +11 -2
  339. data/lib/vapi_server_sdk/types/update_runpod_credential_dto.rb +11 -2
  340. data/lib/vapi_server_sdk/types/update_s_3_credential_dto.rb +13 -3
  341. data/lib/vapi_server_sdk/types/update_tavus_credential_dto.rb +74 -0
  342. data/lib/vapi_server_sdk/types/update_together_ai_credential_dto.rb +11 -2
  343. data/lib/vapi_server_sdk/types/update_twilio_credential_dto.rb +16 -2
  344. data/lib/vapi_server_sdk/types/update_vonage_credential_dto.rb +16 -2
  345. data/lib/vapi_server_sdk/types/update_x_ai_credential_dto.rb +76 -0
  346. data/lib/vapi_server_sdk/types/vapi_cost.rb +10 -2
  347. data/lib/vapi_server_sdk/types/vapi_cost_sub_type.rb +9 -0
  348. data/lib/vapi_server_sdk/types/vapi_model.rb +24 -16
  349. data/lib/vapi_server_sdk/types/vapi_phone_number.rb +20 -2
  350. data/lib/vapi_server_sdk/types/vonage_credential.rb +12 -2
  351. data/lib/vapi_server_sdk/types/webhook_credential.rb +134 -0
  352. data/lib/vapi_server_sdk/types/x_ai_credential.rb +113 -0
  353. data/lib/vapi_server_sdk/types/xai_model.rb +177 -0
  354. data/lib/vapi_server_sdk/types/xai_model_tools_item.rb +159 -0
  355. data/lib/vapi_server_sdk.rb +7 -0
  356. metadata +167 -8
@@ -7,22 +7,6 @@ require_relative "make_tool_with_tool_call"
7
7
 
8
8
  module Vapi
9
9
  class ServerMessageToolCallsToolWithToolCallListItem
10
- # @return [Object]
11
- attr_reader :member
12
- # @return [String]
13
- attr_reader :discriminant
14
-
15
- private_class_method :new
16
- alias kind_of? is_a?
17
-
18
- # @param member [Object]
19
- # @param discriminant [String]
20
- # @return [Vapi::ServerMessageToolCallsToolWithToolCallListItem]
21
- def initialize(member:, discriminant:)
22
- @member = member
23
- @discriminant = discriminant
24
- end
25
-
26
10
  # Deserialize a JSON object to an instance of
27
11
  # ServerMessageToolCallsToolWithToolCallListItem
28
12
  #
@@ -30,34 +14,55 @@ module Vapi
30
14
  # @return [Vapi::ServerMessageToolCallsToolWithToolCallListItem]
31
15
  def self.from_json(json_object:)
32
16
  struct = JSON.parse(json_object, object_class: OpenStruct)
33
- member = case struct.type
34
- when "function"
35
- Vapi::FunctionToolWithToolCall.from_json(json_object: json_object)
36
- when "ghl"
37
- Vapi::GhlToolWithToolCall.from_json(json_object: json_object)
38
- when "make"
39
- Vapi::MakeToolWithToolCall.from_json(json_object: json_object)
40
- else
41
- Vapi::FunctionToolWithToolCall.from_json(json_object: json_object)
42
- end
43
- new(member: member, discriminant: struct.type)
44
- end
17
+ begin
18
+ Vapi::FunctionToolWithToolCall.validate_raw(obj: struct)
19
+ return Vapi::FunctionToolWithToolCall.from_json(json_object: struct) unless struct.nil?
45
20
 
46
- # For Union Types, to_json functionality is delegated to the wrapped member.
47
- #
48
- # @return [String]
49
- def to_json(*_args)
50
- case @discriminant
51
- when "function"
52
- { **@member.to_json, type: @discriminant }.to_json
53
- when "ghl"
54
- { **@member.to_json, type: @discriminant }.to_json
55
- when "make"
56
- { **@member.to_json, type: @discriminant }.to_json
57
- else
58
- { "type": @discriminant, value: @member }.to_json
21
+ return nil
22
+ rescue StandardError
23
+ # noop
24
+ end
25
+ begin
26
+ Vapi::GhlToolWithToolCall.validate_raw(obj: struct)
27
+ return Vapi::GhlToolWithToolCall.from_json(json_object: struct) unless struct.nil?
28
+
29
+ return nil
30
+ rescue StandardError
31
+ # noop
59
32
  end
60
- @member.to_json
33
+ begin
34
+ Vapi::MakeToolWithToolCall.validate_raw(obj: struct)
35
+ return Vapi::MakeToolWithToolCall.from_json(json_object: struct) unless struct.nil?
36
+
37
+ return nil
38
+ rescue StandardError
39
+ # noop
40
+ end
41
+ begin
42
+ struct.is_a?(Object) != false || raise("Passed value for field struct is not the expected type, validation failed.")
43
+ return struct unless struct.nil?
44
+
45
+ return nil
46
+ rescue StandardError
47
+ # noop
48
+ end
49
+ begin
50
+ struct.is_a?(Object) != false || raise("Passed value for field struct is not the expected type, validation failed.")
51
+ return struct unless struct.nil?
52
+
53
+ return nil
54
+ rescue StandardError
55
+ # noop
56
+ end
57
+ begin
58
+ struct.is_a?(Object) != false || raise("Passed value for field struct is not the expected type, validation failed.")
59
+ return struct unless struct.nil?
60
+
61
+ return nil
62
+ rescue StandardError
63
+ # noop
64
+ end
65
+ struct
61
66
  end
62
67
 
63
68
  # Leveraged for Union-type generation, validate_raw attempts to parse the given
@@ -67,42 +72,37 @@ module Vapi
67
72
  # @param obj [Object]
68
73
  # @return [Void]
69
74
  def self.validate_raw(obj:)
70
- case obj.type
71
- when "function"
72
- Vapi::FunctionToolWithToolCall.validate_raw(obj: obj)
73
- when "ghl"
74
- Vapi::GhlToolWithToolCall.validate_raw(obj: obj)
75
- when "make"
76
- Vapi::MakeToolWithToolCall.validate_raw(obj: obj)
77
- else
78
- raise("Passed value matched no type within the union, validation failed.")
75
+ begin
76
+ return Vapi::FunctionToolWithToolCall.validate_raw(obj: obj)
77
+ rescue StandardError
78
+ # noop
79
79
  end
80
- end
81
-
82
- # For Union Types, is_a? functionality is delegated to the wrapped member.
83
- #
84
- # @param obj [Object]
85
- # @return [Boolean]
86
- def is_a?(obj)
87
- @member.is_a?(obj)
88
- end
89
-
90
- # @param member [Vapi::FunctionToolWithToolCall]
91
- # @return [Vapi::ServerMessageToolCallsToolWithToolCallListItem]
92
- def self.function(member:)
93
- new(member: member, discriminant: "function")
94
- end
95
-
96
- # @param member [Vapi::GhlToolWithToolCall]
97
- # @return [Vapi::ServerMessageToolCallsToolWithToolCallListItem]
98
- def self.ghl(member:)
99
- new(member: member, discriminant: "ghl")
100
- end
101
-
102
- # @param member [Vapi::MakeToolWithToolCall]
103
- # @return [Vapi::ServerMessageToolCallsToolWithToolCallListItem]
104
- def self.make(member:)
105
- new(member: member, discriminant: "make")
80
+ begin
81
+ return Vapi::GhlToolWithToolCall.validate_raw(obj: obj)
82
+ rescue StandardError
83
+ # noop
84
+ end
85
+ begin
86
+ return Vapi::MakeToolWithToolCall.validate_raw(obj: obj)
87
+ rescue StandardError
88
+ # noop
89
+ end
90
+ begin
91
+ return obj.is_a?(Object) != false || raise("Passed value for field obj is not the expected type, validation failed.")
92
+ rescue StandardError
93
+ # noop
94
+ end
95
+ begin
96
+ return obj.is_a?(Object) != false || raise("Passed value for field obj is not the expected type, validation failed.")
97
+ rescue StandardError
98
+ # noop
99
+ end
100
+ begin
101
+ return obj.is_a?(Object) != false || raise("Passed value for field obj is not the expected type, validation failed.")
102
+ rescue StandardError
103
+ # noop
104
+ end
105
+ raise("Passed value matched no type within the union, validation failed.")
106
106
  end
107
107
  end
108
108
  end
@@ -49,6 +49,10 @@ module Vapi
49
49
  # @return [Vapi::CreateAssistantDto] This is the assistant that the call is being transferred from. This is only sent
50
50
  # if `destination.type` is "assistant".
51
51
  attr_reader :from_assistant
52
+ # @return [Hash{String => Object}] This is the step that the conversation moved to.
53
+ attr_reader :to_step_record
54
+ # @return [Hash{String => Object}] This is the step that the conversation moved from. =
55
+ attr_reader :from_step_record
52
56
  # @return [OpenStruct] Additional properties unmapped to the current class definition
53
57
  attr_reader :additional_properties
54
58
  # @return [Object]
@@ -86,10 +90,12 @@ module Vapi
86
90
  # if `destination.type` is "assistant".
87
91
  # @param from_assistant [Vapi::CreateAssistantDto] This is the assistant that the call is being transferred from. This is only sent
88
92
  # if `destination.type` is "assistant".
93
+ # @param to_step_record [Hash{String => Object}] This is the step that the conversation moved to.
94
+ # @param from_step_record [Hash{String => Object}] This is the step that the conversation moved from. =
89
95
  # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
90
96
  # @return [Vapi::ServerMessageTransferUpdate]
91
97
  def initialize(phone_number: OMIT, destination: OMIT, timestamp: OMIT, artifact: OMIT, assistant: OMIT,
92
- customer: OMIT, call: OMIT, to_assistant: OMIT, from_assistant: OMIT, additional_properties: nil)
98
+ customer: OMIT, call: OMIT, to_assistant: OMIT, from_assistant: OMIT, to_step_record: OMIT, from_step_record: OMIT, additional_properties: nil)
93
99
  @phone_number = phone_number if phone_number != OMIT
94
100
  @destination = destination if destination != OMIT
95
101
  @timestamp = timestamp if timestamp != OMIT
@@ -99,6 +105,8 @@ module Vapi
99
105
  @call = call if call != OMIT
100
106
  @to_assistant = to_assistant if to_assistant != OMIT
101
107
  @from_assistant = from_assistant if from_assistant != OMIT
108
+ @to_step_record = to_step_record if to_step_record != OMIT
109
+ @from_step_record = from_step_record if from_step_record != OMIT
102
110
  @additional_properties = additional_properties
103
111
  @_field_set = {
104
112
  "phoneNumber": phone_number,
@@ -109,7 +117,9 @@ module Vapi
109
117
  "customer": customer,
110
118
  "call": call,
111
119
  "toAssistant": to_assistant,
112
- "fromAssistant": from_assistant
120
+ "fromAssistant": from_assistant,
121
+ "toStepRecord": to_step_record,
122
+ "fromStepRecord": from_step_record
113
123
  }.reject do |_k, v|
114
124
  v == OMIT
115
125
  end
@@ -171,6 +181,8 @@ module Vapi
171
181
  from_assistant = parsed_json["fromAssistant"].to_json
172
182
  from_assistant = Vapi::CreateAssistantDto.from_json(json_object: from_assistant)
173
183
  end
184
+ to_step_record = parsed_json["toStepRecord"]
185
+ from_step_record = parsed_json["fromStepRecord"]
174
186
  new(
175
187
  phone_number: phone_number,
176
188
  destination: destination,
@@ -181,6 +193,8 @@ module Vapi
181
193
  call: call,
182
194
  to_assistant: to_assistant,
183
195
  from_assistant: from_assistant,
196
+ to_step_record: to_step_record,
197
+ from_step_record: from_step_record,
184
198
  additional_properties: struct
185
199
  )
186
200
  end
@@ -208,6 +222,8 @@ module Vapi
208
222
  obj.call.nil? || Vapi::Call.validate_raw(obj: obj.call)
209
223
  obj.to_assistant.nil? || Vapi::CreateAssistantDto.validate_raw(obj: obj.to_assistant)
210
224
  obj.from_assistant.nil? || Vapi::CreateAssistantDto.validate_raw(obj: obj.from_assistant)
225
+ obj.to_step_record&.is_a?(Hash) != false || raise("Passed value for field obj.to_step_record is not the expected type, validation failed.")
226
+ obj.from_step_record&.is_a?(Hash) != false || raise("Passed value for field obj.from_step_record is not the expected type, validation failed.")
211
227
  end
212
228
  end
213
229
  end
@@ -0,0 +1,80 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "ostruct"
4
+ require "json"
5
+
6
+ module Vapi
7
+ class SipAuthentication
8
+ # @return [String] This will be expected in the `realm` field of the `authorization` header of the
9
+ # SIP INVITE. Defaults to sip.vapi.ai.
10
+ attr_reader :realm
11
+ # @return [String] This will be expected in the `username` field of the `authorization` header of
12
+ # the SIP INVITE.
13
+ attr_reader :username
14
+ # @return [String] This will be expected to generate the `response` field of the `authorization`
15
+ # header of the SIP INVITE, through digest authentication.
16
+ attr_reader :password
17
+ # @return [OpenStruct] Additional properties unmapped to the current class definition
18
+ attr_reader :additional_properties
19
+ # @return [Object]
20
+ attr_reader :_field_set
21
+ protected :_field_set
22
+
23
+ OMIT = Object.new
24
+
25
+ # @param realm [String] This will be expected in the `realm` field of the `authorization` header of the
26
+ # SIP INVITE. Defaults to sip.vapi.ai.
27
+ # @param username [String] This will be expected in the `username` field of the `authorization` header of
28
+ # the SIP INVITE.
29
+ # @param password [String] This will be expected to generate the `response` field of the `authorization`
30
+ # header of the SIP INVITE, through digest authentication.
31
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
32
+ # @return [Vapi::SipAuthentication]
33
+ def initialize(username:, password:, realm: OMIT, additional_properties: nil)
34
+ @realm = realm if realm != OMIT
35
+ @username = username
36
+ @password = password
37
+ @additional_properties = additional_properties
38
+ @_field_set = { "realm": realm, "username": username, "password": password }.reject do |_k, v|
39
+ v == OMIT
40
+ end
41
+ end
42
+
43
+ # Deserialize a JSON object to an instance of SipAuthentication
44
+ #
45
+ # @param json_object [String]
46
+ # @return [Vapi::SipAuthentication]
47
+ def self.from_json(json_object:)
48
+ struct = JSON.parse(json_object, object_class: OpenStruct)
49
+ parsed_json = JSON.parse(json_object)
50
+ realm = parsed_json["realm"]
51
+ username = parsed_json["username"]
52
+ password = parsed_json["password"]
53
+ new(
54
+ realm: realm,
55
+ username: username,
56
+ password: password,
57
+ additional_properties: struct
58
+ )
59
+ end
60
+
61
+ # Serialize an instance of SipAuthentication to a JSON object
62
+ #
63
+ # @return [String]
64
+ def to_json(*_args)
65
+ @_field_set&.to_json
66
+ end
67
+
68
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given
69
+ # hash and check each fields type against the current object's property
70
+ # definitions.
71
+ #
72
+ # @param obj [Object]
73
+ # @return [Void]
74
+ def self.validate_raw(obj:)
75
+ obj.realm&.is_a?(String) != false || raise("Passed value for field obj.realm is not the expected type, validation failed.")
76
+ obj.username.is_a?(String) != false || raise("Passed value for field obj.username is not the expected type, validation failed.")
77
+ obj.password.is_a?(String) != false || raise("Passed value for field obj.password is not the expected type, validation failed.")
78
+ end
79
+ end
80
+ end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative "start_speaking_plan_custom_endpointing_rules_item"
3
4
  require_relative "transcription_endpointing_plan"
4
5
  require "ostruct"
5
6
  require "json"
@@ -8,7 +9,7 @@ module Vapi
8
9
  class StartSpeakingPlan
9
10
  # @return [Float] This is how long assistant waits before speaking. Defaults to 0.4.
10
11
  # This is the minimum it will wait but if there is latency is the pipeline, this
11
- # minimum will be exceeded. This is really a stopgap in case the pipeline is
12
+ # minimum will be exceeded. This is intended as a stopgap in case the pipeline is
12
13
  # moving too fast.
13
14
  # Example:
14
15
  # - If model generates tokens and voice generates bytes within 100ms, the pipeline
@@ -19,12 +20,30 @@ module Vapi
19
20
  # value.
20
21
  # @default 0.4
21
22
  attr_reader :wait_seconds
22
- # @return [Boolean] This determines if a customer speech is considered done (endpointing) using the
23
- # VAP model on customer's speech. This is good for middle-of-thought detection.
23
+ # @return [Boolean] This determines if a customer speech is considered done (endpointing) using a
24
+ # Vapi custom-trained model on customer's speech. This is good for
25
+ # middle-of-thought detection.
24
26
  # Once an endpoint is triggered, the request is sent to `assistant.model`.
25
- # Default `false` since experimental.
27
+ # Usage:
28
+ # - If your conversations are long-form and you want assistant to wait smartly
29
+ # even if customer pauses for a bit to think, you can use this instead.
30
+ # This overrides `transcriptionEndpointingPlan`.
26
31
  # @default false
27
32
  attr_reader :smart_endpointing_enabled
33
+ # @return [Array<Vapi::StartSpeakingPlanCustomEndpointingRulesItem>] These are the custom endpointing rules to set an endpointing timeout based on a
34
+ # regex on the customer's speech or the assistant's last message.
35
+ # Usage:
36
+ # - If you have yes/no questions like "are you interested in a loan?", you can set
37
+ # a shorter timeout.
38
+ # - If you have questions where the customer may pause to look up information like
39
+ # "what's my account number?", you can set a longer timeout.
40
+ # - If you want to wait longer while customer is enumerating a list of numbers,
41
+ # you can set a longer timeout.
42
+ # These override `transcriptionEndpointingPlan` and `smartEndpointingEnabled` when
43
+ # a rule is matched.
44
+ # The rules are evaluated in order and the first one that matches will be used.
45
+ # @default []
46
+ attr_reader :custom_endpointing_rules
28
47
  # @return [Vapi::TranscriptionEndpointingPlan] This determines how a customer speech is considered done (endpointing) using the
29
48
  # transcription of customer's speech.
30
49
  # Once an endpoint is triggered, the request is sent to `assistant.model`.
@@ -39,7 +58,7 @@ module Vapi
39
58
 
40
59
  # @param wait_seconds [Float] This is how long assistant waits before speaking. Defaults to 0.4.
41
60
  # This is the minimum it will wait but if there is latency is the pipeline, this
42
- # minimum will be exceeded. This is really a stopgap in case the pipeline is
61
+ # minimum will be exceeded. This is intended as a stopgap in case the pipeline is
43
62
  # moving too fast.
44
63
  # Example:
45
64
  # - If model generates tokens and voice generates bytes within 100ms, the pipeline
@@ -49,25 +68,44 @@ module Vapi
49
68
  # - If the assistant is accidentally jumping in too much, set this to a higher
50
69
  # value.
51
70
  # @default 0.4
52
- # @param smart_endpointing_enabled [Boolean] This determines if a customer speech is considered done (endpointing) using the
53
- # VAP model on customer's speech. This is good for middle-of-thought detection.
71
+ # @param smart_endpointing_enabled [Boolean] This determines if a customer speech is considered done (endpointing) using a
72
+ # Vapi custom-trained model on customer's speech. This is good for
73
+ # middle-of-thought detection.
54
74
  # Once an endpoint is triggered, the request is sent to `assistant.model`.
55
- # Default `false` since experimental.
75
+ # Usage:
76
+ # - If your conversations are long-form and you want assistant to wait smartly
77
+ # even if customer pauses for a bit to think, you can use this instead.
78
+ # This overrides `transcriptionEndpointingPlan`.
56
79
  # @default false
80
+ # @param custom_endpointing_rules [Array<Vapi::StartSpeakingPlanCustomEndpointingRulesItem>] These are the custom endpointing rules to set an endpointing timeout based on a
81
+ # regex on the customer's speech or the assistant's last message.
82
+ # Usage:
83
+ # - If you have yes/no questions like "are you interested in a loan?", you can set
84
+ # a shorter timeout.
85
+ # - If you have questions where the customer may pause to look up information like
86
+ # "what's my account number?", you can set a longer timeout.
87
+ # - If you want to wait longer while customer is enumerating a list of numbers,
88
+ # you can set a longer timeout.
89
+ # These override `transcriptionEndpointingPlan` and `smartEndpointingEnabled` when
90
+ # a rule is matched.
91
+ # The rules are evaluated in order and the first one that matches will be used.
92
+ # @default []
57
93
  # @param transcription_endpointing_plan [Vapi::TranscriptionEndpointingPlan] This determines how a customer speech is considered done (endpointing) using the
58
94
  # transcription of customer's speech.
59
95
  # Once an endpoint is triggered, the request is sent to `assistant.model`.
60
96
  # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
61
97
  # @return [Vapi::StartSpeakingPlan]
62
- def initialize(wait_seconds: OMIT, smart_endpointing_enabled: OMIT, transcription_endpointing_plan: OMIT,
63
- additional_properties: nil)
98
+ def initialize(wait_seconds: OMIT, smart_endpointing_enabled: OMIT, custom_endpointing_rules: OMIT,
99
+ transcription_endpointing_plan: OMIT, additional_properties: nil)
64
100
  @wait_seconds = wait_seconds if wait_seconds != OMIT
65
101
  @smart_endpointing_enabled = smart_endpointing_enabled if smart_endpointing_enabled != OMIT
102
+ @custom_endpointing_rules = custom_endpointing_rules if custom_endpointing_rules != OMIT
66
103
  @transcription_endpointing_plan = transcription_endpointing_plan if transcription_endpointing_plan != OMIT
67
104
  @additional_properties = additional_properties
68
105
  @_field_set = {
69
106
  "waitSeconds": wait_seconds,
70
107
  "smartEndpointingEnabled": smart_endpointing_enabled,
108
+ "customEndpointingRules": custom_endpointing_rules,
71
109
  "transcriptionEndpointingPlan": transcription_endpointing_plan
72
110
  }.reject do |_k, v|
73
111
  v == OMIT
@@ -83,6 +121,10 @@ module Vapi
83
121
  parsed_json = JSON.parse(json_object)
84
122
  wait_seconds = parsed_json["waitSeconds"]
85
123
  smart_endpointing_enabled = parsed_json["smartEndpointingEnabled"]
124
+ custom_endpointing_rules = parsed_json["customEndpointingRules"]&.map do |item|
125
+ item = item.to_json
126
+ Vapi::StartSpeakingPlanCustomEndpointingRulesItem.from_json(json_object: item)
127
+ end
86
128
  if parsed_json["transcriptionEndpointingPlan"].nil?
87
129
  transcription_endpointing_plan = nil
88
130
  else
@@ -92,6 +134,7 @@ module Vapi
92
134
  new(
93
135
  wait_seconds: wait_seconds,
94
136
  smart_endpointing_enabled: smart_endpointing_enabled,
137
+ custom_endpointing_rules: custom_endpointing_rules,
95
138
  transcription_endpointing_plan: transcription_endpointing_plan,
96
139
  additional_properties: struct
97
140
  )
@@ -113,6 +156,7 @@ module Vapi
113
156
  def self.validate_raw(obj:)
114
157
  obj.wait_seconds&.is_a?(Float) != false || raise("Passed value for field obj.wait_seconds is not the expected type, validation failed.")
115
158
  obj.smart_endpointing_enabled&.is_a?(Boolean) != false || raise("Passed value for field obj.smart_endpointing_enabled is not the expected type, validation failed.")
159
+ obj.custom_endpointing_rules&.is_a?(Array) != false || raise("Passed value for field obj.custom_endpointing_rules is not the expected type, validation failed.")
116
160
  obj.transcription_endpointing_plan.nil? || Vapi::TranscriptionEndpointingPlan.validate_raw(obj: obj.transcription_endpointing_plan)
117
161
  end
118
162
  end
@@ -0,0 +1,108 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "json"
4
+ require_relative "assistant_custom_endpointing_rule"
5
+ require_relative "customer_custom_endpointing_rule"
6
+ require_relative "both_custom_endpointing_rule"
7
+
8
+ module Vapi
9
+ class StartSpeakingPlanCustomEndpointingRulesItem
10
+ # @return [Object]
11
+ attr_reader :member
12
+ # @return [String]
13
+ attr_reader :discriminant
14
+
15
+ private_class_method :new
16
+ alias kind_of? is_a?
17
+
18
+ # @param member [Object]
19
+ # @param discriminant [String]
20
+ # @return [Vapi::StartSpeakingPlanCustomEndpointingRulesItem]
21
+ def initialize(member:, discriminant:)
22
+ @member = member
23
+ @discriminant = discriminant
24
+ end
25
+
26
+ # Deserialize a JSON object to an instance of
27
+ # StartSpeakingPlanCustomEndpointingRulesItem
28
+ #
29
+ # @param json_object [String]
30
+ # @return [Vapi::StartSpeakingPlanCustomEndpointingRulesItem]
31
+ def self.from_json(json_object:)
32
+ struct = JSON.parse(json_object, object_class: OpenStruct)
33
+ member = case struct.type
34
+ when "assistant"
35
+ Vapi::AssistantCustomEndpointingRule.from_json(json_object: json_object)
36
+ when "customer"
37
+ Vapi::CustomerCustomEndpointingRule.from_json(json_object: json_object)
38
+ when "both"
39
+ Vapi::BothCustomEndpointingRule.from_json(json_object: json_object)
40
+ else
41
+ Vapi::AssistantCustomEndpointingRule.from_json(json_object: json_object)
42
+ end
43
+ new(member: member, discriminant: struct.type)
44
+ end
45
+
46
+ # For Union Types, to_json functionality is delegated to the wrapped member.
47
+ #
48
+ # @return [String]
49
+ def to_json(*_args)
50
+ case @discriminant
51
+ when "assistant"
52
+ { **@member.to_json, type: @discriminant }.to_json
53
+ when "customer"
54
+ { **@member.to_json, type: @discriminant }.to_json
55
+ when "both"
56
+ { **@member.to_json, type: @discriminant }.to_json
57
+ else
58
+ { "type": @discriminant, value: @member }.to_json
59
+ end
60
+ @member.to_json
61
+ end
62
+
63
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given
64
+ # hash and check each fields type against the current object's property
65
+ # definitions.
66
+ #
67
+ # @param obj [Object]
68
+ # @return [Void]
69
+ def self.validate_raw(obj:)
70
+ case obj.type
71
+ when "assistant"
72
+ Vapi::AssistantCustomEndpointingRule.validate_raw(obj: obj)
73
+ when "customer"
74
+ Vapi::CustomerCustomEndpointingRule.validate_raw(obj: obj)
75
+ when "both"
76
+ Vapi::BothCustomEndpointingRule.validate_raw(obj: obj)
77
+ else
78
+ raise("Passed value matched no type within the union, validation failed.")
79
+ end
80
+ end
81
+
82
+ # For Union Types, is_a? functionality is delegated to the wrapped member.
83
+ #
84
+ # @param obj [Object]
85
+ # @return [Boolean]
86
+ def is_a?(obj)
87
+ @member.is_a?(obj)
88
+ end
89
+
90
+ # @param member [Vapi::AssistantCustomEndpointingRule]
91
+ # @return [Vapi::StartSpeakingPlanCustomEndpointingRulesItem]
92
+ def self.assistant(member:)
93
+ new(member: member, discriminant: "assistant")
94
+ end
95
+
96
+ # @param member [Vapi::CustomerCustomEndpointingRule]
97
+ # @return [Vapi::StartSpeakingPlanCustomEndpointingRulesItem]
98
+ def self.customer(member:)
99
+ new(member: member, discriminant: "customer")
100
+ end
101
+
102
+ # @param member [Vapi::BothCustomEndpointingRule]
103
+ # @return [Vapi::StartSpeakingPlanCustomEndpointingRulesItem]
104
+ def self.both(member:)
105
+ new(member: member, discriminant: "both")
106
+ end
107
+ end
108
+ end
@@ -7,11 +7,20 @@ require "json"
7
7
  module Vapi
8
8
  class StructuredDataPlan
9
9
  # @return [Array<Hash{String => Object}>] These are the messages used to generate the structured data.
10
- # @default: ` [ { "role": "system", "content": "You are an expert data extractor.
11
- # You will be given a transcript of a call. Extract structured data per the JSON
12
- # Schema. DO NOT return anything except the structured data.\n\nJson
13
- # Schema:\\n{{schema}}\n\nOnly respond with the JSON." }, { "role": "user",
14
- # "content": "Here is the transcript:\n\n{{transcript}}\n\n" } ]`
10
+ # @default: ```
11
+ # [
12
+ # {
13
+ # "role": "system",
14
+ # "content": "You are an expert data extractor. You will be given a transcript
15
+ # of a call. Extract structured data per the JSON Schema. DO NOT return anything
16
+ # except the structured data.\n\nJson Schema:\\n{{schema}}\n\nOnly respond with
17
+ # the JSON."
18
+ # },
19
+ # {
20
+ # "role": "user",
21
+ # "content": "Here is the transcript:\n\n{{transcript}}\n\n"
22
+ # }
23
+ # ]```
15
24
  # You can customize by providing any messages you want.
16
25
  # Here are the template variables available:
17
26
  # - {{transcript}}: the transcript of the call from `call.artifact.transcript`-
@@ -47,11 +56,20 @@ module Vapi
47
56
  OMIT = Object.new
48
57
 
49
58
  # @param messages [Array<Hash{String => Object}>] These are the messages used to generate the structured data.
50
- # @default: ` [ { "role": "system", "content": "You are an expert data extractor.
51
- # You will be given a transcript of a call. Extract structured data per the JSON
52
- # Schema. DO NOT return anything except the structured data.\n\nJson
53
- # Schema:\\n{{schema}}\n\nOnly respond with the JSON." }, { "role": "user",
54
- # "content": "Here is the transcript:\n\n{{transcript}}\n\n" } ]`
59
+ # @default: ```
60
+ # [
61
+ # {
62
+ # "role": "system",
63
+ # "content": "You are an expert data extractor. You will be given a transcript
64
+ # of a call. Extract structured data per the JSON Schema. DO NOT return anything
65
+ # except the structured data.\n\nJson Schema:\\n{{schema}}\n\nOnly respond with
66
+ # the JSON."
67
+ # },
68
+ # {
69
+ # "role": "user",
70
+ # "content": "Here is the transcript:\n\n{{transcript}}\n\n"
71
+ # }
72
+ # ]```
55
73
  # You can customize by providing any messages you want.
56
74
  # Here are the template variables available:
57
75
  # - {{transcript}}: the transcript of the call from `call.artifact.transcript`-