openai 0.20.0 → 0.21.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 (332) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +13 -0
  3. data/README.md +1 -1
  4. data/lib/openai/client.rb +4 -0
  5. data/lib/openai/internal/stream.rb +3 -2
  6. data/lib/openai/models/audio/speech_create_params.rb +6 -0
  7. data/lib/openai/models/chat/chat_completion_audio_param.rb +6 -0
  8. data/lib/openai/models/evals/run_cancel_response.rb +2 -2
  9. data/lib/openai/models/evals/run_create_params.rb +2 -2
  10. data/lib/openai/models/evals/run_create_response.rb +2 -2
  11. data/lib/openai/models/evals/run_list_response.rb +2 -2
  12. data/lib/openai/models/evals/run_retrieve_response.rb +2 -2
  13. data/lib/openai/models/realtime/client_secret_create_params.rb +93 -0
  14. data/lib/openai/models/realtime/client_secret_create_response.rb +300 -0
  15. data/lib/openai/models/realtime/conversation_created_event.rb +70 -0
  16. data/lib/openai/models/realtime/conversation_item.rb +44 -0
  17. data/lib/openai/models/realtime/conversation_item_added.rb +48 -0
  18. data/lib/openai/models/realtime/conversation_item_create_event.rb +57 -0
  19. data/lib/openai/models/realtime/conversation_item_created_event.rb +59 -0
  20. data/lib/openai/models/realtime/conversation_item_delete_event.rb +39 -0
  21. data/lib/openai/models/realtime/conversation_item_deleted_event.rb +38 -0
  22. data/lib/openai/models/realtime/conversation_item_done.rb +48 -0
  23. data/lib/openai/models/realtime/conversation_item_input_audio_transcription_completed_event.rb +189 -0
  24. data/lib/openai/models/realtime/conversation_item_input_audio_transcription_delta_event.rb +63 -0
  25. data/lib/openai/models/realtime/conversation_item_input_audio_transcription_failed_event.rb +96 -0
  26. data/lib/openai/models/realtime/conversation_item_input_audio_transcription_segment.rb +84 -0
  27. data/lib/openai/models/realtime/conversation_item_retrieve_event.rb +40 -0
  28. data/lib/openai/models/realtime/conversation_item_truncate_event.rb +68 -0
  29. data/lib/openai/models/realtime/conversation_item_truncated_event.rb +60 -0
  30. data/lib/openai/models/realtime/conversation_item_with_reference.rb +235 -0
  31. data/lib/openai/models/realtime/input_audio_buffer_append_event.rb +49 -0
  32. data/lib/openai/models/realtime/input_audio_buffer_clear_event.rb +29 -0
  33. data/lib/openai/models/realtime/input_audio_buffer_cleared_event.rb +29 -0
  34. data/lib/openai/models/realtime/input_audio_buffer_commit_event.rb +35 -0
  35. data/lib/openai/models/realtime/input_audio_buffer_committed_event.rb +51 -0
  36. data/lib/openai/models/realtime/input_audio_buffer_speech_started_event.rb +59 -0
  37. data/lib/openai/models/realtime/input_audio_buffer_speech_stopped_event.rb +51 -0
  38. data/lib/openai/models/realtime/input_audio_buffer_timeout_triggered.rb +52 -0
  39. data/lib/openai/models/realtime/log_prob_properties.rb +39 -0
  40. data/lib/openai/models/realtime/mcp_list_tools_completed.rb +36 -0
  41. data/lib/openai/models/realtime/mcp_list_tools_failed.rb +36 -0
  42. data/lib/openai/models/realtime/mcp_list_tools_in_progress.rb +36 -0
  43. data/lib/openai/models/realtime/output_audio_buffer_clear_event.rb +32 -0
  44. data/lib/openai/models/realtime/rate_limits_updated_event.rb +91 -0
  45. data/lib/openai/models/realtime/realtime_audio_config.rb +446 -0
  46. data/lib/openai/models/realtime/realtime_client_event.rb +123 -0
  47. data/lib/openai/models/realtime/realtime_client_secret_config.rb +64 -0
  48. data/lib/openai/models/realtime/realtime_conversation_item_assistant_message.rb +118 -0
  49. data/lib/openai/models/realtime/realtime_conversation_item_function_call.rb +94 -0
  50. data/lib/openai/models/realtime/realtime_conversation_item_function_call_output.rb +86 -0
  51. data/lib/openai/models/realtime/realtime_conversation_item_system_message.rb +118 -0
  52. data/lib/openai/models/realtime/realtime_conversation_item_user_message.rb +135 -0
  53. data/lib/openai/models/realtime/realtime_error.rb +55 -0
  54. data/lib/openai/models/realtime/realtime_error_event.rb +38 -0
  55. data/lib/openai/models/realtime/realtime_mcp_approval_request.rb +52 -0
  56. data/lib/openai/models/realtime/realtime_mcp_approval_response.rb +52 -0
  57. data/lib/openai/models/realtime/realtime_mcp_list_tools.rb +84 -0
  58. data/lib/openai/models/realtime/realtime_mcp_protocol_error.rb +29 -0
  59. data/lib/openai/models/realtime/realtime_mcp_tool_call.rb +94 -0
  60. data/lib/openai/models/realtime/realtime_mcp_tool_execution_error.rb +23 -0
  61. data/lib/openai/models/realtime/realtime_mcphttp_error.rb +29 -0
  62. data/lib/openai/models/realtime/realtime_response.rb +259 -0
  63. data/lib/openai/models/realtime/realtime_response_status.rb +103 -0
  64. data/lib/openai/models/realtime/realtime_response_usage.rb +61 -0
  65. data/lib/openai/models/realtime/realtime_response_usage_input_token_details.rb +36 -0
  66. data/lib/openai/models/realtime/realtime_response_usage_output_token_details.rb +28 -0
  67. data/lib/openai/models/realtime/realtime_server_event.rb +369 -0
  68. data/lib/openai/models/realtime/realtime_session.rb +696 -0
  69. data/lib/openai/models/realtime/realtime_session_create_request.rb +234 -0
  70. data/lib/openai/models/realtime/realtime_session_create_response.rb +579 -0
  71. data/lib/openai/models/realtime/realtime_tool_choice_config.rb +32 -0
  72. data/lib/openai/models/realtime/realtime_tools_config.rb +11 -0
  73. data/lib/openai/models/realtime/realtime_tools_config_union.rb +379 -0
  74. data/lib/openai/models/realtime/realtime_tracing_config.rb +61 -0
  75. data/lib/openai/models/realtime/realtime_transcription_session_create_request.rb +312 -0
  76. data/lib/openai/models/realtime/realtime_truncation.rb +67 -0
  77. data/lib/openai/models/realtime/response_audio_delta_event.rb +68 -0
  78. data/lib/openai/models/realtime/response_audio_done_event.rb +61 -0
  79. data/lib/openai/models/realtime/response_audio_transcript_delta_event.rb +68 -0
  80. data/lib/openai/models/realtime/response_audio_transcript_done_event.rb +70 -0
  81. data/lib/openai/models/realtime/response_cancel_event.rb +42 -0
  82. data/lib/openai/models/realtime/response_content_part_added_event.rb +120 -0
  83. data/lib/openai/models/realtime/response_content_part_done_event.rb +120 -0
  84. data/lib/openai/models/realtime/response_create_event.rb +391 -0
  85. data/lib/openai/models/realtime/response_created_event.rb +37 -0
  86. data/lib/openai/models/realtime/response_done_event.rb +38 -0
  87. data/lib/openai/models/realtime/response_function_call_arguments_delta_event.rb +72 -0
  88. data/lib/openai/models/realtime/response_function_call_arguments_done_event.rb +73 -0
  89. data/lib/openai/models/realtime/response_mcp_call_arguments_delta.rb +68 -0
  90. data/lib/openai/models/realtime/response_mcp_call_arguments_done.rb +60 -0
  91. data/lib/openai/models/realtime/response_mcp_call_completed.rb +44 -0
  92. data/lib/openai/models/realtime/response_mcp_call_failed.rb +44 -0
  93. data/lib/openai/models/realtime/response_mcp_call_in_progress.rb +44 -0
  94. data/lib/openai/models/realtime/response_output_item_added_event.rb +52 -0
  95. data/lib/openai/models/realtime/response_output_item_done_event.rb +53 -0
  96. data/lib/openai/models/realtime/response_text_delta_event.rb +68 -0
  97. data/lib/openai/models/realtime/response_text_done_event.rb +69 -0
  98. data/lib/openai/models/realtime/session_created_event.rb +38 -0
  99. data/lib/openai/models/realtime/session_update_event.rb +44 -0
  100. data/lib/openai/models/realtime/session_updated_event.rb +37 -0
  101. data/lib/openai/models/realtime/transcription_session_created.rb +278 -0
  102. data/lib/openai/models/realtime/transcription_session_update.rb +36 -0
  103. data/lib/openai/models/realtime/transcription_session_updated_event.rb +279 -0
  104. data/lib/openai/models/responses/response.rb +6 -3
  105. data/lib/openai/models/responses/response_create_params.rb +6 -3
  106. data/lib/openai/models/responses/tool.rb +3 -156
  107. data/lib/openai/models/responses/web_search_preview_tool.rb +124 -0
  108. data/lib/openai/models/responses/web_search_tool.rb +58 -21
  109. data/lib/openai/models/webhooks/realtime_call_incoming_webhook_event.rb +119 -0
  110. data/lib/openai/models/webhooks/unwrap_webhook_event.rb +4 -1
  111. data/lib/openai/models.rb +2 -0
  112. data/lib/openai/resources/realtime/client_secrets.rb +44 -0
  113. data/lib/openai/resources/realtime.rb +18 -0
  114. data/lib/openai/resources/responses.rb +2 -2
  115. data/lib/openai/resources/webhooks.rb +1 -1
  116. data/lib/openai/version.rb +1 -1
  117. data/lib/openai.rb +95 -0
  118. data/rbi/openai/client.rbi +3 -0
  119. data/rbi/openai/models/audio/speech_create_params.rbi +10 -0
  120. data/rbi/openai/models/chat/chat_completion_audio_param.rbi +10 -0
  121. data/rbi/openai/models/evals/run_cancel_response.rbi +4 -4
  122. data/rbi/openai/models/evals/run_create_params.rbi +8 -8
  123. data/rbi/openai/models/evals/run_create_response.rbi +4 -4
  124. data/rbi/openai/models/evals/run_list_response.rbi +4 -4
  125. data/rbi/openai/models/evals/run_retrieve_response.rbi +4 -4
  126. data/rbi/openai/models/realtime/client_secret_create_params.rbi +222 -0
  127. data/rbi/openai/models/realtime/client_secret_create_response.rbi +676 -0
  128. data/rbi/openai/models/realtime/conversation_created_event.rbi +164 -0
  129. data/rbi/openai/models/realtime/conversation_item.rbi +35 -0
  130. data/rbi/openai/models/realtime/conversation_item_added.rbi +105 -0
  131. data/rbi/openai/models/realtime/conversation_item_create_event.rbi +123 -0
  132. data/rbi/openai/models/realtime/conversation_item_created_event.rbi +117 -0
  133. data/rbi/openai/models/realtime/conversation_item_delete_event.rbi +57 -0
  134. data/rbi/openai/models/realtime/conversation_item_deleted_event.rbi +53 -0
  135. data/rbi/openai/models/realtime/conversation_item_done.rbi +105 -0
  136. data/rbi/openai/models/realtime/conversation_item_input_audio_transcription_completed_event.rbi +305 -0
  137. data/rbi/openai/models/realtime/conversation_item_input_audio_transcription_delta_event.rbi +93 -0
  138. data/rbi/openai/models/realtime/conversation_item_input_audio_transcription_failed_event.rbi +158 -0
  139. data/rbi/openai/models/realtime/conversation_item_input_audio_transcription_segment.rbi +107 -0
  140. data/rbi/openai/models/realtime/conversation_item_retrieve_event.rbi +58 -0
  141. data/rbi/openai/models/realtime/conversation_item_truncate_event.rbi +94 -0
  142. data/rbi/openai/models/realtime/conversation_item_truncated_event.rbi +80 -0
  143. data/rbi/openai/models/realtime/conversation_item_with_reference.rbi +549 -0
  144. data/rbi/openai/models/realtime/input_audio_buffer_append_event.rbi +65 -0
  145. data/rbi/openai/models/realtime/input_audio_buffer_clear_event.rbi +43 -0
  146. data/rbi/openai/models/realtime/input_audio_buffer_cleared_event.rbi +40 -0
  147. data/rbi/openai/models/realtime/input_audio_buffer_commit_event.rbi +49 -0
  148. data/rbi/openai/models/realtime/input_audio_buffer_committed_event.rbi +72 -0
  149. data/rbi/openai/models/realtime/input_audio_buffer_speech_started_event.rbi +82 -0
  150. data/rbi/openai/models/realtime/input_audio_buffer_speech_stopped_event.rbi +73 -0
  151. data/rbi/openai/models/realtime/input_audio_buffer_timeout_triggered.rbi +75 -0
  152. data/rbi/openai/models/realtime/log_prob_properties.rbi +55 -0
  153. data/rbi/openai/models/realtime/mcp_list_tools_completed.rbi +51 -0
  154. data/rbi/openai/models/realtime/mcp_list_tools_failed.rbi +51 -0
  155. data/rbi/openai/models/realtime/mcp_list_tools_in_progress.rbi +51 -0
  156. data/rbi/openai/models/realtime/output_audio_buffer_clear_event.rbi +46 -0
  157. data/rbi/openai/models/realtime/rate_limits_updated_event.rbi +187 -0
  158. data/rbi/openai/models/realtime/realtime_audio_config.rbi +1004 -0
  159. data/rbi/openai/models/realtime/realtime_client_event.rbi +38 -0
  160. data/rbi/openai/models/realtime/realtime_client_secret_config.rbi +147 -0
  161. data/rbi/openai/models/realtime/realtime_conversation_item_assistant_message.rbi +292 -0
  162. data/rbi/openai/models/realtime/realtime_conversation_item_function_call.rbi +199 -0
  163. data/rbi/openai/models/realtime/realtime_conversation_item_function_call_output.rbi +188 -0
  164. data/rbi/openai/models/realtime/realtime_conversation_item_system_message.rbi +292 -0
  165. data/rbi/openai/models/realtime/realtime_conversation_item_user_message.rbi +319 -0
  166. data/rbi/openai/models/realtime/realtime_error.rbi +72 -0
  167. data/rbi/openai/models/realtime/realtime_error_event.rbi +64 -0
  168. data/rbi/openai/models/realtime/realtime_mcp_approval_request.rbi +75 -0
  169. data/rbi/openai/models/realtime/realtime_mcp_approval_response.rbi +75 -0
  170. data/rbi/openai/models/realtime/realtime_mcp_list_tools.rbi +131 -0
  171. data/rbi/openai/models/realtime/realtime_mcp_protocol_error.rbi +40 -0
  172. data/rbi/openai/models/realtime/realtime_mcp_tool_call.rbi +145 -0
  173. data/rbi/openai/models/realtime/realtime_mcp_tool_execution_error.rbi +31 -0
  174. data/rbi/openai/models/realtime/realtime_mcphttp_error.rbi +40 -0
  175. data/rbi/openai/models/realtime/realtime_response.rbi +573 -0
  176. data/rbi/openai/models/realtime/realtime_response_status.rbi +233 -0
  177. data/rbi/openai/models/realtime/realtime_response_usage.rbi +121 -0
  178. data/rbi/openai/models/realtime/realtime_response_usage_input_token_details.rbi +68 -0
  179. data/rbi/openai/models/realtime/realtime_response_usage_output_token_details.rbi +51 -0
  180. data/rbi/openai/models/realtime/realtime_server_event.rbi +311 -0
  181. data/rbi/openai/models/realtime/realtime_session.rbi +1426 -0
  182. data/rbi/openai/models/realtime/realtime_session_create_request.rbi +560 -0
  183. data/rbi/openai/models/realtime/realtime_session_create_response.rbi +1249 -0
  184. data/rbi/openai/models/realtime/realtime_tool_choice_config.rbi +30 -0
  185. data/rbi/openai/models/realtime/realtime_tools_config.rbi +15 -0
  186. data/rbi/openai/models/realtime/realtime_tools_config_union.rbi +755 -0
  187. data/rbi/openai/models/realtime/realtime_tracing_config.rbi +95 -0
  188. data/rbi/openai/models/realtime/realtime_transcription_session_create_request.rbi +703 -0
  189. data/rbi/openai/models/realtime/realtime_truncation.rbi +117 -0
  190. data/rbi/openai/models/realtime/response_audio_delta_event.rbi +91 -0
  191. data/rbi/openai/models/realtime/response_audio_done_event.rbi +84 -0
  192. data/rbi/openai/models/realtime/response_audio_transcript_delta_event.rbi +91 -0
  193. data/rbi/openai/models/realtime/response_audio_transcript_done_event.rbi +93 -0
  194. data/rbi/openai/models/realtime/response_cancel_event.rbi +63 -0
  195. data/rbi/openai/models/realtime/response_content_part_added_event.rbi +219 -0
  196. data/rbi/openai/models/realtime/response_content_part_done_event.rbi +219 -0
  197. data/rbi/openai/models/realtime/response_create_event.rbi +863 -0
  198. data/rbi/openai/models/realtime/response_created_event.rbi +65 -0
  199. data/rbi/openai/models/realtime/response_done_event.rbi +66 -0
  200. data/rbi/openai/models/realtime/response_function_call_arguments_delta_event.rbi +91 -0
  201. data/rbi/openai/models/realtime/response_function_call_arguments_done_event.rbi +92 -0
  202. data/rbi/openai/models/realtime/response_mcp_call_arguments_delta.rbi +91 -0
  203. data/rbi/openai/models/realtime/response_mcp_call_arguments_done.rbi +83 -0
  204. data/rbi/openai/models/realtime/response_mcp_call_completed.rbi +67 -0
  205. data/rbi/openai/models/realtime/response_mcp_call_failed.rbi +67 -0
  206. data/rbi/openai/models/realtime/response_mcp_call_in_progress.rbi +67 -0
  207. data/rbi/openai/models/realtime/response_output_item_added_event.rbi +111 -0
  208. data/rbi/openai/models/realtime/response_output_item_done_event.rbi +112 -0
  209. data/rbi/openai/models/realtime/response_text_delta_event.rbi +91 -0
  210. data/rbi/openai/models/realtime/response_text_done_event.rbi +92 -0
  211. data/rbi/openai/models/realtime/session_created_event.rbi +64 -0
  212. data/rbi/openai/models/realtime/session_update_event.rbi +77 -0
  213. data/rbi/openai/models/realtime/session_updated_event.rbi +63 -0
  214. data/rbi/openai/models/realtime/transcription_session_created.rbi +653 -0
  215. data/rbi/openai/models/realtime/transcription_session_update.rbi +74 -0
  216. data/rbi/openai/models/realtime/transcription_session_updated_event.rbi +657 -0
  217. data/rbi/openai/models/responses/response.rbi +10 -4
  218. data/rbi/openai/models/responses/response_create_params.rbi +16 -10
  219. data/rbi/openai/models/responses/tool.rbi +2 -348
  220. data/rbi/openai/models/responses/web_search_preview_tool.rbi +245 -0
  221. data/rbi/openai/models/responses/web_search_tool.rbi +120 -23
  222. data/rbi/openai/models/webhooks/realtime_call_incoming_webhook_event.rbi +222 -0
  223. data/rbi/openai/models/webhooks/unwrap_webhook_event.rbi +1 -0
  224. data/rbi/openai/models.rbi +2 -0
  225. data/rbi/openai/resources/realtime/client_secrets.rbi +38 -0
  226. data/rbi/openai/resources/realtime.rbi +15 -0
  227. data/rbi/openai/resources/responses.rbi +12 -6
  228. data/rbi/openai/resources/webhooks.rbi +1 -0
  229. data/sig/openai/client.rbs +2 -0
  230. data/sig/openai/models/audio/speech_create_params.rbs +4 -0
  231. data/sig/openai/models/chat/chat_completion_audio_param.rbs +4 -0
  232. data/sig/openai/models/realtime/client_secret_create_params.rbs +89 -0
  233. data/sig/openai/models/realtime/client_secret_create_response.rbs +292 -0
  234. data/sig/openai/models/realtime/conversation_created_event.rbs +70 -0
  235. data/sig/openai/models/realtime/conversation_item.rbs +22 -0
  236. data/sig/openai/models/realtime/conversation_item_added.rbs +37 -0
  237. data/sig/openai/models/realtime/conversation_item_create_event.rbs +41 -0
  238. data/sig/openai/models/realtime/conversation_item_created_event.rbs +37 -0
  239. data/sig/openai/models/realtime/conversation_item_delete_event.rbs +30 -0
  240. data/sig/openai/models/realtime/conversation_item_deleted_event.rbs +32 -0
  241. data/sig/openai/models/realtime/conversation_item_done.rbs +37 -0
  242. data/sig/openai/models/realtime/conversation_item_input_audio_transcription_completed_event.rbs +136 -0
  243. data/sig/openai/models/realtime/conversation_item_input_audio_transcription_delta_event.rbs +51 -0
  244. data/sig/openai/models/realtime/conversation_item_input_audio_transcription_failed_event.rbs +77 -0
  245. data/sig/openai/models/realtime/conversation_item_input_audio_transcription_segment.rbs +62 -0
  246. data/sig/openai/models/realtime/conversation_item_retrieve_event.rbs +34 -0
  247. data/sig/openai/models/realtime/conversation_item_truncate_event.rbs +44 -0
  248. data/sig/openai/models/realtime/conversation_item_truncated_event.rbs +42 -0
  249. data/sig/openai/models/realtime/conversation_item_with_reference.rbs +207 -0
  250. data/sig/openai/models/realtime/input_audio_buffer_append_event.rbs +30 -0
  251. data/sig/openai/models/realtime/input_audio_buffer_clear_event.rbs +23 -0
  252. data/sig/openai/models/realtime/input_audio_buffer_cleared_event.rbs +24 -0
  253. data/sig/openai/models/realtime/input_audio_buffer_commit_event.rbs +23 -0
  254. data/sig/openai/models/realtime/input_audio_buffer_committed_event.rbs +37 -0
  255. data/sig/openai/models/realtime/input_audio_buffer_speech_started_event.rbs +37 -0
  256. data/sig/openai/models/realtime/input_audio_buffer_speech_stopped_event.rbs +37 -0
  257. data/sig/openai/models/realtime/input_audio_buffer_timeout_triggered.rbs +42 -0
  258. data/sig/openai/models/realtime/log_prob_properties.rbs +28 -0
  259. data/sig/openai/models/realtime/mcp_list_tools_completed.rbs +28 -0
  260. data/sig/openai/models/realtime/mcp_list_tools_failed.rbs +28 -0
  261. data/sig/openai/models/realtime/mcp_list_tools_in_progress.rbs +32 -0
  262. data/sig/openai/models/realtime/output_audio_buffer_clear_event.rbs +23 -0
  263. data/sig/openai/models/realtime/rate_limits_updated_event.rbs +85 -0
  264. data/sig/openai/models/realtime/realtime_audio_config.rbs +354 -0
  265. data/sig/openai/models/realtime/realtime_client_event.rbs +25 -0
  266. data/sig/openai/models/realtime/realtime_client_secret_config.rbs +60 -0
  267. data/sig/openai/models/realtime/realtime_conversation_item_assistant_message.rbs +117 -0
  268. data/sig/openai/models/realtime/realtime_conversation_item_function_call.rbs +86 -0
  269. data/sig/openai/models/realtime/realtime_conversation_item_function_call_output.rbs +79 -0
  270. data/sig/openai/models/realtime/realtime_conversation_item_system_message.rbs +117 -0
  271. data/sig/openai/models/realtime/realtime_conversation_item_user_message.rbs +132 -0
  272. data/sig/openai/models/realtime/realtime_error.rbs +42 -0
  273. data/sig/openai/models/realtime/realtime_error_event.rbs +32 -0
  274. data/sig/openai/models/realtime/realtime_mcp_approval_request.rbs +42 -0
  275. data/sig/openai/models/realtime/realtime_mcp_approval_response.rbs +42 -0
  276. data/sig/openai/models/realtime/realtime_mcp_list_tools.rbs +71 -0
  277. data/sig/openai/models/realtime/realtime_mcp_protocol_error.rbs +28 -0
  278. data/sig/openai/models/realtime/realtime_mcp_tool_call.rbs +68 -0
  279. data/sig/openai/models/realtime/realtime_mcp_tool_execution_error.rbs +18 -0
  280. data/sig/openai/models/realtime/realtime_mcphttp_error.rbs +24 -0
  281. data/sig/openai/models/realtime/realtime_response.rbs +210 -0
  282. data/sig/openai/models/realtime/realtime_response_status.rbs +90 -0
  283. data/sig/openai/models/realtime/realtime_response_usage.rbs +56 -0
  284. data/sig/openai/models/realtime/realtime_response_usage_input_token_details.rbs +34 -0
  285. data/sig/openai/models/realtime/realtime_response_usage_output_token_details.rbs +22 -0
  286. data/sig/openai/models/realtime/realtime_server_event.rbs +168 -0
  287. data/sig/openai/models/realtime/realtime_session.rbs +521 -0
  288. data/sig/openai/models/realtime/realtime_session_create_request.rbs +178 -0
  289. data/sig/openai/models/realtime/realtime_session_create_response.rbs +526 -0
  290. data/sig/openai/models/realtime/realtime_tool_choice_config.rbs +16 -0
  291. data/sig/openai/models/realtime/realtime_tools_config.rbs +10 -0
  292. data/sig/openai/models/realtime/realtime_tools_config_union.rbs +280 -0
  293. data/sig/openai/models/realtime/realtime_tracing_config.rbs +43 -0
  294. data/sig/openai/models/realtime/realtime_transcription_session_create_request.rbs +242 -0
  295. data/sig/openai/models/realtime/realtime_truncation.rbs +53 -0
  296. data/sig/openai/models/realtime/response_audio_delta_event.rbs +52 -0
  297. data/sig/openai/models/realtime/response_audio_done_event.rbs +47 -0
  298. data/sig/openai/models/realtime/response_audio_transcript_delta_event.rbs +52 -0
  299. data/sig/openai/models/realtime/response_audio_transcript_done_event.rbs +52 -0
  300. data/sig/openai/models/realtime/response_cancel_event.rbs +32 -0
  301. data/sig/openai/models/realtime/response_content_part_added_event.rbs +105 -0
  302. data/sig/openai/models/realtime/response_content_part_done_event.rbs +105 -0
  303. data/sig/openai/models/realtime/response_create_event.rbs +281 -0
  304. data/sig/openai/models/realtime/response_created_event.rbs +32 -0
  305. data/sig/openai/models/realtime/response_done_event.rbs +32 -0
  306. data/sig/openai/models/realtime/response_function_call_arguments_delta_event.rbs +52 -0
  307. data/sig/openai/models/realtime/response_function_call_arguments_done_event.rbs +52 -0
  308. data/sig/openai/models/realtime/response_mcp_call_arguments_delta.rbs +52 -0
  309. data/sig/openai/models/realtime/response_mcp_call_arguments_done.rbs +47 -0
  310. data/sig/openai/models/realtime/response_mcp_call_completed.rbs +37 -0
  311. data/sig/openai/models/realtime/response_mcp_call_failed.rbs +37 -0
  312. data/sig/openai/models/realtime/response_mcp_call_in_progress.rbs +37 -0
  313. data/sig/openai/models/realtime/response_output_item_added_event.rbs +42 -0
  314. data/sig/openai/models/realtime/response_output_item_done_event.rbs +42 -0
  315. data/sig/openai/models/realtime/response_text_delta_event.rbs +52 -0
  316. data/sig/openai/models/realtime/response_text_done_event.rbs +52 -0
  317. data/sig/openai/models/realtime/session_created_event.rbs +32 -0
  318. data/sig/openai/models/realtime/session_update_event.rbs +34 -0
  319. data/sig/openai/models/realtime/session_updated_event.rbs +32 -0
  320. data/sig/openai/models/realtime/transcription_session_created.rbs +282 -0
  321. data/sig/openai/models/realtime/transcription_session_update.rbs +34 -0
  322. data/sig/openai/models/realtime/transcription_session_updated_event.rbs +282 -0
  323. data/sig/openai/models/responses/tool.rbs +1 -121
  324. data/sig/openai/models/responses/web_search_preview_tool.rbs +96 -0
  325. data/sig/openai/models/responses/web_search_tool.rbs +39 -10
  326. data/sig/openai/models/webhooks/realtime_call_incoming_webhook_event.rbs +90 -0
  327. data/sig/openai/models/webhooks/unwrap_webhook_event.rbs +1 -0
  328. data/sig/openai/models.rbs +2 -0
  329. data/sig/openai/resources/realtime/client_secrets.rbs +15 -0
  330. data/sig/openai/resources/realtime.rbs +9 -0
  331. data/sig/openai/resources/webhooks.rbs +1 -0
  332. metadata +287 -2
@@ -9,11 +9,22 @@ module OpenAI
9
9
  T.any(OpenAI::Responses::WebSearchTool, OpenAI::Internal::AnyHash)
10
10
  end
11
11
 
12
- # The type of the web search tool. One of `web_search_preview` or
13
- # `web_search_preview_2025_03_11`.
12
+ # The type of the web search tool. One of `web_search` or `web_search_2025_08_26`.
14
13
  sig { returns(OpenAI::Responses::WebSearchTool::Type::OrSymbol) }
15
14
  attr_accessor :type
16
15
 
16
+ # Filters for the search.
17
+ sig { returns(T.nilable(OpenAI::Responses::WebSearchTool::Filters)) }
18
+ attr_reader :filters
19
+
20
+ sig do
21
+ params(
22
+ filters:
23
+ T.nilable(OpenAI::Responses::WebSearchTool::Filters::OrHash)
24
+ ).void
25
+ end
26
+ attr_writer :filters
27
+
17
28
  # High level guidance for the amount of context window space to use for the
18
29
  # search. One of `low`, `medium`, or `high`. `medium` is the default.
19
30
  sig do
@@ -33,7 +44,7 @@ module OpenAI
33
44
  end
34
45
  attr_writer :search_context_size
35
46
 
36
- # The user's location.
47
+ # The approximate location of the user.
37
48
  sig do
38
49
  returns(T.nilable(OpenAI::Responses::WebSearchTool::UserLocation))
39
50
  end
@@ -47,12 +58,13 @@ module OpenAI
47
58
  end
48
59
  attr_writer :user_location
49
60
 
50
- # This tool searches the web for relevant results to use in a response. Learn more
51
- # about the
61
+ # Search the Internet for sources related to the prompt. Learn more about the
52
62
  # [web search tool](https://platform.openai.com/docs/guides/tools-web-search).
53
63
  sig do
54
64
  params(
55
65
  type: OpenAI::Responses::WebSearchTool::Type::OrSymbol,
66
+ filters:
67
+ T.nilable(OpenAI::Responses::WebSearchTool::Filters::OrHash),
56
68
  search_context_size:
57
69
  OpenAI::Responses::WebSearchTool::SearchContextSize::OrSymbol,
58
70
  user_location:
@@ -60,13 +72,14 @@ module OpenAI
60
72
  ).returns(T.attached_class)
61
73
  end
62
74
  def self.new(
63
- # The type of the web search tool. One of `web_search_preview` or
64
- # `web_search_preview_2025_03_11`.
75
+ # The type of the web search tool. One of `web_search` or `web_search_2025_08_26`.
65
76
  type:,
77
+ # Filters for the search.
78
+ filters: nil,
66
79
  # High level guidance for the amount of context window space to use for the
67
80
  # search. One of `low`, `medium`, or `high`. `medium` is the default.
68
81
  search_context_size: nil,
69
- # The user's location.
82
+ # The approximate location of the user.
70
83
  user_location: nil
71
84
  )
72
85
  end
@@ -75,6 +88,7 @@ module OpenAI
75
88
  override.returns(
76
89
  {
77
90
  type: OpenAI::Responses::WebSearchTool::Type::OrSymbol,
91
+ filters: T.nilable(OpenAI::Responses::WebSearchTool::Filters),
78
92
  search_context_size:
79
93
  OpenAI::Responses::WebSearchTool::SearchContextSize::OrSymbol,
80
94
  user_location:
@@ -85,8 +99,7 @@ module OpenAI
85
99
  def to_hash
86
100
  end
87
101
 
88
- # The type of the web search tool. One of `web_search_preview` or
89
- # `web_search_preview_2025_03_11`.
102
+ # The type of the web search tool. One of `web_search` or `web_search_2025_08_26`.
90
103
  module Type
91
104
  extend OpenAI::Internal::Type::Enum
92
105
 
@@ -96,14 +109,14 @@ module OpenAI
96
109
  end
97
110
  OrSymbol = T.type_alias { T.any(Symbol, String) }
98
111
 
99
- WEB_SEARCH_PREVIEW =
112
+ WEB_SEARCH =
100
113
  T.let(
101
- :web_search_preview,
114
+ :web_search,
102
115
  OpenAI::Responses::WebSearchTool::Type::TaggedSymbol
103
116
  )
104
- WEB_SEARCH_PREVIEW_2025_03_11 =
117
+ WEB_SEARCH_2025_08_26 =
105
118
  T.let(
106
- :web_search_preview_2025_03_11,
119
+ :web_search_2025_08_26,
107
120
  OpenAI::Responses::WebSearchTool::Type::TaggedSymbol
108
121
  )
109
122
 
@@ -116,6 +129,44 @@ module OpenAI
116
129
  end
117
130
  end
118
131
 
132
+ class Filters < OpenAI::Internal::Type::BaseModel
133
+ OrHash =
134
+ T.type_alias do
135
+ T.any(
136
+ OpenAI::Responses::WebSearchTool::Filters,
137
+ OpenAI::Internal::AnyHash
138
+ )
139
+ end
140
+
141
+ # Allowed domains for the search. If not provided, all domains are allowed.
142
+ # Subdomains of the provided domains are allowed as well.
143
+ #
144
+ # Example: `["pubmed.ncbi.nlm.nih.gov"]`
145
+ sig { returns(T.nilable(T::Array[String])) }
146
+ attr_accessor :allowed_domains
147
+
148
+ # Filters for the search.
149
+ sig do
150
+ params(allowed_domains: T.nilable(T::Array[String])).returns(
151
+ T.attached_class
152
+ )
153
+ end
154
+ def self.new(
155
+ # Allowed domains for the search. If not provided, all domains are allowed.
156
+ # Subdomains of the provided domains are allowed as well.
157
+ #
158
+ # Example: `["pubmed.ncbi.nlm.nih.gov"]`
159
+ allowed_domains: nil
160
+ )
161
+ end
162
+
163
+ sig do
164
+ override.returns({ allowed_domains: T.nilable(T::Array[String]) })
165
+ end
166
+ def to_hash
167
+ end
168
+ end
169
+
119
170
  # High level guidance for the amount of context window space to use for the
120
171
  # search. One of `low`, `medium`, or `high`. `medium` is the default.
121
172
  module SearchContextSize
@@ -163,10 +214,6 @@ module OpenAI
163
214
  )
164
215
  end
165
216
 
166
- # The type of location approximation. Always `approximate`.
167
- sig { returns(Symbol) }
168
- attr_accessor :type
169
-
170
217
  # Free text input for the city of the user, e.g. `San Francisco`.
171
218
  sig { returns(T.nilable(String)) }
172
219
  attr_accessor :city
@@ -185,14 +232,33 @@ module OpenAI
185
232
  sig { returns(T.nilable(String)) }
186
233
  attr_accessor :timezone
187
234
 
188
- # The user's location.
235
+ # The type of location approximation. Always `approximate`.
236
+ sig do
237
+ returns(
238
+ T.nilable(
239
+ OpenAI::Responses::WebSearchTool::UserLocation::Type::OrSymbol
240
+ )
241
+ )
242
+ end
243
+ attr_reader :type
244
+
245
+ sig do
246
+ params(
247
+ type:
248
+ OpenAI::Responses::WebSearchTool::UserLocation::Type::OrSymbol
249
+ ).void
250
+ end
251
+ attr_writer :type
252
+
253
+ # The approximate location of the user.
189
254
  sig do
190
255
  params(
191
256
  city: T.nilable(String),
192
257
  country: T.nilable(String),
193
258
  region: T.nilable(String),
194
259
  timezone: T.nilable(String),
195
- type: Symbol
260
+ type:
261
+ OpenAI::Responses::WebSearchTool::UserLocation::Type::OrSymbol
196
262
  ).returns(T.attached_class)
197
263
  end
198
264
  def self.new(
@@ -207,23 +273,54 @@ module OpenAI
207
273
  # user, e.g. `America/Los_Angeles`.
208
274
  timezone: nil,
209
275
  # The type of location approximation. Always `approximate`.
210
- type: :approximate
276
+ type: nil
211
277
  )
212
278
  end
213
279
 
214
280
  sig do
215
281
  override.returns(
216
282
  {
217
- type: Symbol,
218
283
  city: T.nilable(String),
219
284
  country: T.nilable(String),
220
285
  region: T.nilable(String),
221
- timezone: T.nilable(String)
286
+ timezone: T.nilable(String),
287
+ type:
288
+ OpenAI::Responses::WebSearchTool::UserLocation::Type::OrSymbol
222
289
  }
223
290
  )
224
291
  end
225
292
  def to_hash
226
293
  end
294
+
295
+ # The type of location approximation. Always `approximate`.
296
+ module Type
297
+ extend OpenAI::Internal::Type::Enum
298
+
299
+ TaggedSymbol =
300
+ T.type_alias do
301
+ T.all(
302
+ Symbol,
303
+ OpenAI::Responses::WebSearchTool::UserLocation::Type
304
+ )
305
+ end
306
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
307
+
308
+ APPROXIMATE =
309
+ T.let(
310
+ :approximate,
311
+ OpenAI::Responses::WebSearchTool::UserLocation::Type::TaggedSymbol
312
+ )
313
+
314
+ sig do
315
+ override.returns(
316
+ T::Array[
317
+ OpenAI::Responses::WebSearchTool::UserLocation::Type::TaggedSymbol
318
+ ]
319
+ )
320
+ end
321
+ def self.values
322
+ end
323
+ end
227
324
  end
228
325
  end
229
326
  end
@@ -0,0 +1,222 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Webhooks
6
+ class RealtimeCallIncomingWebhookEvent < OpenAI::Internal::Type::BaseModel
7
+ OrHash =
8
+ T.type_alias do
9
+ T.any(
10
+ OpenAI::Webhooks::RealtimeCallIncomingWebhookEvent,
11
+ OpenAI::Internal::AnyHash
12
+ )
13
+ end
14
+
15
+ # The unique ID of the event.
16
+ sig { returns(String) }
17
+ attr_accessor :id
18
+
19
+ # The Unix timestamp (in seconds) of when the model response was completed.
20
+ sig { returns(Integer) }
21
+ attr_accessor :created_at
22
+
23
+ # Event data payload.
24
+ sig do
25
+ returns(OpenAI::Webhooks::RealtimeCallIncomingWebhookEvent::Data)
26
+ end
27
+ attr_reader :data
28
+
29
+ sig do
30
+ params(
31
+ data:
32
+ OpenAI::Webhooks::RealtimeCallIncomingWebhookEvent::Data::OrHash
33
+ ).void
34
+ end
35
+ attr_writer :data
36
+
37
+ # The type of the event. Always `realtime.call.incoming`.
38
+ sig { returns(Symbol) }
39
+ attr_accessor :type
40
+
41
+ # The object of the event. Always `event`.
42
+ sig do
43
+ returns(
44
+ T.nilable(
45
+ OpenAI::Webhooks::RealtimeCallIncomingWebhookEvent::Object::TaggedSymbol
46
+ )
47
+ )
48
+ end
49
+ attr_reader :object
50
+
51
+ sig do
52
+ params(
53
+ object:
54
+ OpenAI::Webhooks::RealtimeCallIncomingWebhookEvent::Object::OrSymbol
55
+ ).void
56
+ end
57
+ attr_writer :object
58
+
59
+ # Sent when Realtime API Receives a incoming SIP call.
60
+ sig do
61
+ params(
62
+ id: String,
63
+ created_at: Integer,
64
+ data:
65
+ OpenAI::Webhooks::RealtimeCallIncomingWebhookEvent::Data::OrHash,
66
+ object:
67
+ OpenAI::Webhooks::RealtimeCallIncomingWebhookEvent::Object::OrSymbol,
68
+ type: Symbol
69
+ ).returns(T.attached_class)
70
+ end
71
+ def self.new(
72
+ # The unique ID of the event.
73
+ id:,
74
+ # The Unix timestamp (in seconds) of when the model response was completed.
75
+ created_at:,
76
+ # Event data payload.
77
+ data:,
78
+ # The object of the event. Always `event`.
79
+ object: nil,
80
+ # The type of the event. Always `realtime.call.incoming`.
81
+ type: :"realtime.call.incoming"
82
+ )
83
+ end
84
+
85
+ sig do
86
+ override.returns(
87
+ {
88
+ id: String,
89
+ created_at: Integer,
90
+ data: OpenAI::Webhooks::RealtimeCallIncomingWebhookEvent::Data,
91
+ type: Symbol,
92
+ object:
93
+ OpenAI::Webhooks::RealtimeCallIncomingWebhookEvent::Object::TaggedSymbol
94
+ }
95
+ )
96
+ end
97
+ def to_hash
98
+ end
99
+
100
+ class Data < OpenAI::Internal::Type::BaseModel
101
+ OrHash =
102
+ T.type_alias do
103
+ T.any(
104
+ OpenAI::Webhooks::RealtimeCallIncomingWebhookEvent::Data,
105
+ OpenAI::Internal::AnyHash
106
+ )
107
+ end
108
+
109
+ # The unique ID of this call.
110
+ sig { returns(String) }
111
+ attr_accessor :call_id
112
+
113
+ # Headers from the SIP Invite.
114
+ sig do
115
+ returns(
116
+ T::Array[
117
+ OpenAI::Webhooks::RealtimeCallIncomingWebhookEvent::Data::SipHeader
118
+ ]
119
+ )
120
+ end
121
+ attr_accessor :sip_headers
122
+
123
+ # Event data payload.
124
+ sig do
125
+ params(
126
+ call_id: String,
127
+ sip_headers:
128
+ T::Array[
129
+ OpenAI::Webhooks::RealtimeCallIncomingWebhookEvent::Data::SipHeader::OrHash
130
+ ]
131
+ ).returns(T.attached_class)
132
+ end
133
+ def self.new(
134
+ # The unique ID of this call.
135
+ call_id:,
136
+ # Headers from the SIP Invite.
137
+ sip_headers:
138
+ )
139
+ end
140
+
141
+ sig do
142
+ override.returns(
143
+ {
144
+ call_id: String,
145
+ sip_headers:
146
+ T::Array[
147
+ OpenAI::Webhooks::RealtimeCallIncomingWebhookEvent::Data::SipHeader
148
+ ]
149
+ }
150
+ )
151
+ end
152
+ def to_hash
153
+ end
154
+
155
+ class SipHeader < OpenAI::Internal::Type::BaseModel
156
+ OrHash =
157
+ T.type_alias do
158
+ T.any(
159
+ OpenAI::Webhooks::RealtimeCallIncomingWebhookEvent::Data::SipHeader,
160
+ OpenAI::Internal::AnyHash
161
+ )
162
+ end
163
+
164
+ # Name of the SIP Header.
165
+ sig { returns(String) }
166
+ attr_accessor :name
167
+
168
+ # Value of the SIP Header.
169
+ sig { returns(String) }
170
+ attr_accessor :value
171
+
172
+ # A header from the SIP Invite.
173
+ sig do
174
+ params(name: String, value: String).returns(T.attached_class)
175
+ end
176
+ def self.new(
177
+ # Name of the SIP Header.
178
+ name:,
179
+ # Value of the SIP Header.
180
+ value:
181
+ )
182
+ end
183
+
184
+ sig { override.returns({ name: String, value: String }) }
185
+ def to_hash
186
+ end
187
+ end
188
+ end
189
+
190
+ # The object of the event. Always `event`.
191
+ module Object
192
+ extend OpenAI::Internal::Type::Enum
193
+
194
+ TaggedSymbol =
195
+ T.type_alias do
196
+ T.all(
197
+ Symbol,
198
+ OpenAI::Webhooks::RealtimeCallIncomingWebhookEvent::Object
199
+ )
200
+ end
201
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
202
+
203
+ EVENT =
204
+ T.let(
205
+ :event,
206
+ OpenAI::Webhooks::RealtimeCallIncomingWebhookEvent::Object::TaggedSymbol
207
+ )
208
+
209
+ sig do
210
+ override.returns(
211
+ T::Array[
212
+ OpenAI::Webhooks::RealtimeCallIncomingWebhookEvent::Object::TaggedSymbol
213
+ ]
214
+ )
215
+ end
216
+ def self.values
217
+ end
218
+ end
219
+ end
220
+ end
221
+ end
222
+ end
@@ -20,6 +20,7 @@ module OpenAI
20
20
  OpenAI::Webhooks::FineTuningJobCancelledWebhookEvent,
21
21
  OpenAI::Webhooks::FineTuningJobFailedWebhookEvent,
22
22
  OpenAI::Webhooks::FineTuningJobSucceededWebhookEvent,
23
+ OpenAI::Webhooks::RealtimeCallIncomingWebhookEvent,
23
24
  OpenAI::Webhooks::ResponseCancelledWebhookEvent,
24
25
  OpenAI::Webhooks::ResponseCompletedWebhookEvent,
25
26
  OpenAI::Webhooks::ResponseFailedWebhookEvent,
@@ -166,6 +166,8 @@ module OpenAI
166
166
  OtherFileChunkingStrategyObject =
167
167
  OpenAI::Models::OtherFileChunkingStrategyObject
168
168
 
169
+ Realtime = OpenAI::Models::Realtime
170
+
169
171
  Reasoning = OpenAI::Models::Reasoning
170
172
 
171
173
  ReasoningEffort = OpenAI::Models::ReasoningEffort
@@ -0,0 +1,38 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Resources
5
+ class Realtime
6
+ class ClientSecrets
7
+ # Create a Realtime session and client secret for either realtime or
8
+ # transcription.
9
+ sig do
10
+ params(
11
+ expires_after:
12
+ OpenAI::Realtime::ClientSecretCreateParams::ExpiresAfter::OrHash,
13
+ session:
14
+ T.any(
15
+ OpenAI::Realtime::RealtimeSessionCreateRequest::OrHash,
16
+ OpenAI::Realtime::RealtimeTranscriptionSessionCreateRequest::OrHash
17
+ ),
18
+ request_options: OpenAI::RequestOptions::OrHash
19
+ ).returns(OpenAI::Models::Realtime::ClientSecretCreateResponse)
20
+ end
21
+ def create(
22
+ # Configuration for the ephemeral token expiration.
23
+ expires_after: nil,
24
+ # Session configuration to use for the client secret. Choose either a realtime
25
+ # session or a transcription session.
26
+ session: nil,
27
+ request_options: {}
28
+ )
29
+ end
30
+
31
+ # @api private
32
+ sig { params(client: OpenAI::Client).returns(T.attached_class) }
33
+ def self.new(client:)
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,15 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Resources
5
+ class Realtime
6
+ sig { returns(OpenAI::Resources::Realtime::ClientSecrets) }
7
+ attr_reader :client_secrets
8
+
9
+ # @api private
10
+ sig { params(client: OpenAI::Client).returns(T.attached_class) }
11
+ def self.new(client:)
12
+ end
13
+ end
14
+ end
15
+ end
@@ -85,8 +85,8 @@ module OpenAI
85
85
  OpenAI::Responses::Tool::ImageGeneration::OrHash,
86
86
  OpenAI::Responses::Tool::LocalShell::OrHash,
87
87
  OpenAI::Responses::CustomTool::OrHash,
88
- OpenAI::Responses::Tool::WebSearchTool::OrHash,
89
- OpenAI::Responses::WebSearchTool::OrHash
88
+ OpenAI::Responses::WebSearchTool::OrHash,
89
+ OpenAI::Responses::WebSearchPreviewTool::OrHash
90
90
  )
91
91
  ],
92
92
  top_logprobs: T.nilable(Integer),
@@ -230,7 +230,7 @@ module OpenAI
230
230
  # An array of tools the model may call while generating a response. You can
231
231
  # specify which tool to use by setting the `tool_choice` parameter.
232
232
  #
233
- # The two categories of tools you can provide the model are:
233
+ # We support the following categories of tools:
234
234
  #
235
235
  # - **Built-in tools**: Tools that are provided by OpenAI that extend the model's
236
236
  # capabilities, like
@@ -238,6 +238,9 @@ module OpenAI
238
238
  # [file search](https://platform.openai.com/docs/guides/tools-file-search).
239
239
  # Learn more about
240
240
  # [built-in tools](https://platform.openai.com/docs/guides/tools).
241
+ # - **MCP Tools**: Integrations with third-party systems via custom MCP servers or
242
+ # predefined connectors such as Google Drive and Notion. Learn more about
243
+ # [MCP Tools](https://platform.openai.com/docs/guides/tools-connectors-mcp).
241
244
  # - **Function calls (custom tools)**: Functions that are defined by you, enabling
242
245
  # the model to call your own code with strongly typed arguments and outputs.
243
246
  # Learn more about
@@ -355,8 +358,8 @@ module OpenAI
355
358
  OpenAI::Responses::Tool::ImageGeneration::OrHash,
356
359
  OpenAI::Responses::Tool::LocalShell::OrHash,
357
360
  OpenAI::Responses::CustomTool::OrHash,
358
- OpenAI::Responses::Tool::WebSearchTool::OrHash,
359
- OpenAI::Responses::WebSearchTool::OrHash
361
+ OpenAI::Responses::WebSearchTool::OrHash,
362
+ OpenAI::Responses::WebSearchPreviewTool::OrHash
360
363
  )
361
364
  ],
362
365
  top_logprobs: T.nilable(Integer),
@@ -504,7 +507,7 @@ module OpenAI
504
507
  # An array of tools the model may call while generating a response. You can
505
508
  # specify which tool to use by setting the `tool_choice` parameter.
506
509
  #
507
- # The two categories of tools you can provide the model are:
510
+ # We support the following categories of tools:
508
511
  #
509
512
  # - **Built-in tools**: Tools that are provided by OpenAI that extend the model's
510
513
  # capabilities, like
@@ -512,6 +515,9 @@ module OpenAI
512
515
  # [file search](https://platform.openai.com/docs/guides/tools-file-search).
513
516
  # Learn more about
514
517
  # [built-in tools](https://platform.openai.com/docs/guides/tools).
518
+ # - **MCP Tools**: Integrations with third-party systems via custom MCP servers or
519
+ # predefined connectors such as Google Drive and Notion. Learn more about
520
+ # [MCP Tools](https://platform.openai.com/docs/guides/tools-connectors-mcp).
515
521
  # - **Function calls (custom tools)**: Functions that are defined by you, enabling
516
522
  # the model to call your own code with strongly typed arguments and outputs.
517
523
  # Learn more about
@@ -21,6 +21,7 @@ module OpenAI
21
21
  OpenAI::Webhooks::FineTuningJobCancelledWebhookEvent,
22
22
  OpenAI::Webhooks::FineTuningJobFailedWebhookEvent,
23
23
  OpenAI::Webhooks::FineTuningJobSucceededWebhookEvent,
24
+ OpenAI::Webhooks::RealtimeCallIncomingWebhookEvent,
24
25
  OpenAI::Webhooks::ResponseCancelledWebhookEvent,
25
26
  OpenAI::Webhooks::ResponseCompletedWebhookEvent,
26
27
  OpenAI::Webhooks::ResponseFailedWebhookEvent,
@@ -46,6 +46,8 @@ module OpenAI
46
46
 
47
47
  attr_reader responses: OpenAI::Resources::Responses
48
48
 
49
+ attr_reader realtime: OpenAI::Resources::Realtime
50
+
49
51
  attr_reader conversations: OpenAI::Resources::Conversations
50
52
 
51
53
  attr_reader evals: OpenAI::Resources::Evals
@@ -83,6 +83,8 @@ module OpenAI
83
83
  | :sage
84
84
  | :shimmer
85
85
  | :verse
86
+ | :marin
87
+ | :cedar
86
88
 
87
89
  module Voice
88
90
  extend OpenAI::Internal::Type::Union
@@ -97,6 +99,8 @@ module OpenAI
97
99
  SAGE: :sage
98
100
  SHIMMER: :shimmer
99
101
  VERSE: :verse
102
+ MARIN: :marin
103
+ CEDAR: :cedar
100
104
  end
101
105
 
102
106
  type response_format = :mp3 | :opus | :aac | :flac | :wav | :pcm
@@ -49,6 +49,8 @@ module OpenAI
49
49
  | :sage
50
50
  | :shimmer
51
51
  | :verse
52
+ | :marin
53
+ | :cedar
52
54
 
53
55
  module Voice
54
56
  extend OpenAI::Internal::Type::Union
@@ -63,6 +65,8 @@ module OpenAI
63
65
  SAGE: :sage
64
66
  SHIMMER: :shimmer
65
67
  VERSE: :verse
68
+ MARIN: :marin
69
+ CEDAR: :cedar
66
70
  end
67
71
  end
68
72
  end