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
@@ -304,7 +304,7 @@ module OpenAI
304
304
  # An array of tools the model may call while generating a response. You can
305
305
  # specify which tool to use by setting the `tool_choice` parameter.
306
306
  #
307
- # The two categories of tools you can provide the model are:
307
+ # We support the following categories of tools:
308
308
  #
309
309
  # - **Built-in tools**: Tools that are provided by OpenAI that extend the model's
310
310
  # capabilities, like
@@ -312,6 +312,9 @@ module OpenAI
312
312
  # [file search](https://platform.openai.com/docs/guides/tools-file-search).
313
313
  # Learn more about
314
314
  # [built-in tools](https://platform.openai.com/docs/guides/tools).
315
+ # - **MCP Tools**: Integrations with third-party systems via custom MCP servers or
316
+ # predefined connectors such as Google Drive and Notion. Learn more about
317
+ # [MCP Tools](https://platform.openai.com/docs/guides/tools-connectors-mcp).
315
318
  # - **Function calls (custom tools)**: Functions that are defined by you, enabling
316
319
  # the model to call your own code with strongly typed arguments and outputs.
317
320
  # Learn more about
@@ -330,8 +333,8 @@ module OpenAI
330
333
  OpenAI::Responses::Tool::ImageGeneration,
331
334
  OpenAI::Responses::Tool::LocalShell,
332
335
  OpenAI::Responses::CustomTool,
333
- OpenAI::Responses::Tool::WebSearchTool,
334
- OpenAI::Responses::WebSearchTool
336
+ OpenAI::Responses::WebSearchTool,
337
+ OpenAI::Responses::WebSearchPreviewTool
335
338
  )
336
339
  ]
337
340
  )
@@ -352,8 +355,8 @@ module OpenAI
352
355
  OpenAI::Responses::Tool::ImageGeneration::OrHash,
353
356
  OpenAI::Responses::Tool::LocalShell::OrHash,
354
357
  OpenAI::Responses::CustomTool::OrHash,
355
- OpenAI::Responses::Tool::WebSearchTool::OrHash,
356
- OpenAI::Responses::WebSearchTool::OrHash
358
+ OpenAI::Responses::WebSearchTool::OrHash,
359
+ OpenAI::Responses::WebSearchPreviewTool::OrHash
357
360
  )
358
361
  ]
359
362
  ).void
@@ -462,8 +465,8 @@ module OpenAI
462
465
  OpenAI::Responses::Tool::ImageGeneration::OrHash,
463
466
  OpenAI::Responses::Tool::LocalShell::OrHash,
464
467
  OpenAI::Responses::CustomTool::OrHash,
465
- OpenAI::Responses::Tool::WebSearchTool::OrHash,
466
- OpenAI::Responses::WebSearchTool::OrHash
468
+ OpenAI::Responses::WebSearchTool::OrHash,
469
+ OpenAI::Responses::WebSearchPreviewTool::OrHash
467
470
  )
468
471
  ],
469
472
  top_logprobs: T.nilable(Integer),
@@ -606,7 +609,7 @@ module OpenAI
606
609
  # An array of tools the model may call while generating a response. You can
607
610
  # specify which tool to use by setting the `tool_choice` parameter.
608
611
  #
609
- # The two categories of tools you can provide the model are:
612
+ # We support the following categories of tools:
610
613
  #
611
614
  # - **Built-in tools**: Tools that are provided by OpenAI that extend the model's
612
615
  # capabilities, like
@@ -614,6 +617,9 @@ module OpenAI
614
617
  # [file search](https://platform.openai.com/docs/guides/tools-file-search).
615
618
  # Learn more about
616
619
  # [built-in tools](https://platform.openai.com/docs/guides/tools).
620
+ # - **MCP Tools**: Integrations with third-party systems via custom MCP servers or
621
+ # predefined connectors such as Google Drive and Notion. Learn more about
622
+ # [MCP Tools](https://platform.openai.com/docs/guides/tools-connectors-mcp).
617
623
  # - **Function calls (custom tools)**: Functions that are defined by you, enabling
618
624
  # the model to call your own code with strongly typed arguments and outputs.
619
625
  # Learn more about
@@ -707,8 +713,8 @@ module OpenAI
707
713
  OpenAI::Responses::Tool::ImageGeneration,
708
714
  OpenAI::Responses::Tool::LocalShell,
709
715
  OpenAI::Responses::CustomTool,
710
- OpenAI::Responses::Tool::WebSearchTool,
711
- OpenAI::Responses::WebSearchTool
716
+ OpenAI::Responses::WebSearchTool,
717
+ OpenAI::Responses::WebSearchPreviewTool
712
718
  )
713
719
  ],
714
720
  top_logprobs: T.nilable(Integer),
@@ -18,357 +18,11 @@ module OpenAI
18
18
  OpenAI::Responses::Tool::ImageGeneration,
19
19
  OpenAI::Responses::Tool::LocalShell,
20
20
  OpenAI::Responses::CustomTool,
21
- OpenAI::Responses::Tool::WebSearchTool,
22
- OpenAI::Responses::WebSearchTool
21
+ OpenAI::Responses::WebSearchTool,
22
+ OpenAI::Responses::WebSearchPreviewTool
23
23
  )
24
24
  end
25
25
 
26
- class WebSearchTool < OpenAI::Internal::Type::BaseModel
27
- OrHash =
28
- T.type_alias do
29
- T.any(
30
- OpenAI::Responses::Tool::WebSearchTool,
31
- OpenAI::Internal::AnyHash
32
- )
33
- end
34
-
35
- # The type of the web search tool. One of `web_search` or `web_search_2025_08_26`.
36
- sig do
37
- returns(OpenAI::Responses::Tool::WebSearchTool::Type::OrSymbol)
38
- end
39
- attr_accessor :type
40
-
41
- # Filters for the search.
42
- sig do
43
- returns(T.nilable(OpenAI::Responses::Tool::WebSearchTool::Filters))
44
- end
45
- attr_reader :filters
46
-
47
- sig do
48
- params(
49
- filters:
50
- T.nilable(
51
- OpenAI::Responses::Tool::WebSearchTool::Filters::OrHash
52
- )
53
- ).void
54
- end
55
- attr_writer :filters
56
-
57
- # High level guidance for the amount of context window space to use for the
58
- # search. One of `low`, `medium`, or `high`. `medium` is the default.
59
- sig do
60
- returns(
61
- T.nilable(
62
- OpenAI::Responses::Tool::WebSearchTool::SearchContextSize::OrSymbol
63
- )
64
- )
65
- end
66
- attr_reader :search_context_size
67
-
68
- sig do
69
- params(
70
- search_context_size:
71
- OpenAI::Responses::Tool::WebSearchTool::SearchContextSize::OrSymbol
72
- ).void
73
- end
74
- attr_writer :search_context_size
75
-
76
- # The approximate location of the user.
77
- sig do
78
- returns(
79
- T.nilable(OpenAI::Responses::Tool::WebSearchTool::UserLocation)
80
- )
81
- end
82
- attr_reader :user_location
83
-
84
- sig do
85
- params(
86
- user_location:
87
- T.nilable(
88
- OpenAI::Responses::Tool::WebSearchTool::UserLocation::OrHash
89
- )
90
- ).void
91
- end
92
- attr_writer :user_location
93
-
94
- # Search the Internet for sources related to the prompt. Learn more about the
95
- # [web search tool](https://platform.openai.com/docs/guides/tools-web-search).
96
- sig do
97
- params(
98
- type: OpenAI::Responses::Tool::WebSearchTool::Type::OrSymbol,
99
- filters:
100
- T.nilable(
101
- OpenAI::Responses::Tool::WebSearchTool::Filters::OrHash
102
- ),
103
- search_context_size:
104
- OpenAI::Responses::Tool::WebSearchTool::SearchContextSize::OrSymbol,
105
- user_location:
106
- T.nilable(
107
- OpenAI::Responses::Tool::WebSearchTool::UserLocation::OrHash
108
- )
109
- ).returns(T.attached_class)
110
- end
111
- def self.new(
112
- # The type of the web search tool. One of `web_search` or `web_search_2025_08_26`.
113
- type:,
114
- # Filters for the search.
115
- filters: nil,
116
- # High level guidance for the amount of context window space to use for the
117
- # search. One of `low`, `medium`, or `high`. `medium` is the default.
118
- search_context_size: nil,
119
- # The approximate location of the user.
120
- user_location: nil
121
- )
122
- end
123
-
124
- sig do
125
- override.returns(
126
- {
127
- type: OpenAI::Responses::Tool::WebSearchTool::Type::OrSymbol,
128
- filters:
129
- T.nilable(OpenAI::Responses::Tool::WebSearchTool::Filters),
130
- search_context_size:
131
- OpenAI::Responses::Tool::WebSearchTool::SearchContextSize::OrSymbol,
132
- user_location:
133
- T.nilable(
134
- OpenAI::Responses::Tool::WebSearchTool::UserLocation
135
- )
136
- }
137
- )
138
- end
139
- def to_hash
140
- end
141
-
142
- # The type of the web search tool. One of `web_search` or `web_search_2025_08_26`.
143
- module Type
144
- extend OpenAI::Internal::Type::Enum
145
-
146
- TaggedSymbol =
147
- T.type_alias do
148
- T.all(Symbol, OpenAI::Responses::Tool::WebSearchTool::Type)
149
- end
150
- OrSymbol = T.type_alias { T.any(Symbol, String) }
151
-
152
- WEB_SEARCH =
153
- T.let(
154
- :web_search,
155
- OpenAI::Responses::Tool::WebSearchTool::Type::TaggedSymbol
156
- )
157
- WEB_SEARCH_2025_08_26 =
158
- T.let(
159
- :web_search_2025_08_26,
160
- OpenAI::Responses::Tool::WebSearchTool::Type::TaggedSymbol
161
- )
162
-
163
- sig do
164
- override.returns(
165
- T::Array[
166
- OpenAI::Responses::Tool::WebSearchTool::Type::TaggedSymbol
167
- ]
168
- )
169
- end
170
- def self.values
171
- end
172
- end
173
-
174
- class Filters < OpenAI::Internal::Type::BaseModel
175
- OrHash =
176
- T.type_alias do
177
- T.any(
178
- OpenAI::Responses::Tool::WebSearchTool::Filters,
179
- OpenAI::Internal::AnyHash
180
- )
181
- end
182
-
183
- # Allowed domains for the search. If not provided, all domains are allowed.
184
- # Subdomains of the provided domains are allowed as well.
185
- #
186
- # Example: `["pubmed.ncbi.nlm.nih.gov"]`
187
- sig { returns(T.nilable(T::Array[String])) }
188
- attr_accessor :allowed_domains
189
-
190
- # Filters for the search.
191
- sig do
192
- params(allowed_domains: T.nilable(T::Array[String])).returns(
193
- T.attached_class
194
- )
195
- end
196
- def self.new(
197
- # Allowed domains for the search. If not provided, all domains are allowed.
198
- # Subdomains of the provided domains are allowed as well.
199
- #
200
- # Example: `["pubmed.ncbi.nlm.nih.gov"]`
201
- allowed_domains: nil
202
- )
203
- end
204
-
205
- sig do
206
- override.returns({ allowed_domains: T.nilable(T::Array[String]) })
207
- end
208
- def to_hash
209
- end
210
- end
211
-
212
- # High level guidance for the amount of context window space to use for the
213
- # search. One of `low`, `medium`, or `high`. `medium` is the default.
214
- module SearchContextSize
215
- extend OpenAI::Internal::Type::Enum
216
-
217
- TaggedSymbol =
218
- T.type_alias do
219
- T.all(
220
- Symbol,
221
- OpenAI::Responses::Tool::WebSearchTool::SearchContextSize
222
- )
223
- end
224
- OrSymbol = T.type_alias { T.any(Symbol, String) }
225
-
226
- LOW =
227
- T.let(
228
- :low,
229
- OpenAI::Responses::Tool::WebSearchTool::SearchContextSize::TaggedSymbol
230
- )
231
- MEDIUM =
232
- T.let(
233
- :medium,
234
- OpenAI::Responses::Tool::WebSearchTool::SearchContextSize::TaggedSymbol
235
- )
236
- HIGH =
237
- T.let(
238
- :high,
239
- OpenAI::Responses::Tool::WebSearchTool::SearchContextSize::TaggedSymbol
240
- )
241
-
242
- sig do
243
- override.returns(
244
- T::Array[
245
- OpenAI::Responses::Tool::WebSearchTool::SearchContextSize::TaggedSymbol
246
- ]
247
- )
248
- end
249
- def self.values
250
- end
251
- end
252
-
253
- class UserLocation < OpenAI::Internal::Type::BaseModel
254
- OrHash =
255
- T.type_alias do
256
- T.any(
257
- OpenAI::Responses::Tool::WebSearchTool::UserLocation,
258
- OpenAI::Internal::AnyHash
259
- )
260
- end
261
-
262
- # Free text input for the city of the user, e.g. `San Francisco`.
263
- sig { returns(T.nilable(String)) }
264
- attr_accessor :city
265
-
266
- # The two-letter [ISO country code](https://en.wikipedia.org/wiki/ISO_3166-1) of
267
- # the user, e.g. `US`.
268
- sig { returns(T.nilable(String)) }
269
- attr_accessor :country
270
-
271
- # Free text input for the region of the user, e.g. `California`.
272
- sig { returns(T.nilable(String)) }
273
- attr_accessor :region
274
-
275
- # The [IANA timezone](https://timeapi.io/documentation/iana-timezones) of the
276
- # user, e.g. `America/Los_Angeles`.
277
- sig { returns(T.nilable(String)) }
278
- attr_accessor :timezone
279
-
280
- # The type of location approximation. Always `approximate`.
281
- sig do
282
- returns(
283
- T.nilable(
284
- OpenAI::Responses::Tool::WebSearchTool::UserLocation::Type::OrSymbol
285
- )
286
- )
287
- end
288
- attr_reader :type
289
-
290
- sig do
291
- params(
292
- type:
293
- OpenAI::Responses::Tool::WebSearchTool::UserLocation::Type::OrSymbol
294
- ).void
295
- end
296
- attr_writer :type
297
-
298
- # The approximate location of the user.
299
- sig do
300
- params(
301
- city: T.nilable(String),
302
- country: T.nilable(String),
303
- region: T.nilable(String),
304
- timezone: T.nilable(String),
305
- type:
306
- OpenAI::Responses::Tool::WebSearchTool::UserLocation::Type::OrSymbol
307
- ).returns(T.attached_class)
308
- end
309
- def self.new(
310
- # Free text input for the city of the user, e.g. `San Francisco`.
311
- city: nil,
312
- # The two-letter [ISO country code](https://en.wikipedia.org/wiki/ISO_3166-1) of
313
- # the user, e.g. `US`.
314
- country: nil,
315
- # Free text input for the region of the user, e.g. `California`.
316
- region: nil,
317
- # The [IANA timezone](https://timeapi.io/documentation/iana-timezones) of the
318
- # user, e.g. `America/Los_Angeles`.
319
- timezone: nil,
320
- # The type of location approximation. Always `approximate`.
321
- type: nil
322
- )
323
- end
324
-
325
- sig do
326
- override.returns(
327
- {
328
- city: T.nilable(String),
329
- country: T.nilable(String),
330
- region: T.nilable(String),
331
- timezone: T.nilable(String),
332
- type:
333
- OpenAI::Responses::Tool::WebSearchTool::UserLocation::Type::OrSymbol
334
- }
335
- )
336
- end
337
- def to_hash
338
- end
339
-
340
- # The type of location approximation. Always `approximate`.
341
- module Type
342
- extend OpenAI::Internal::Type::Enum
343
-
344
- TaggedSymbol =
345
- T.type_alias do
346
- T.all(
347
- Symbol,
348
- OpenAI::Responses::Tool::WebSearchTool::UserLocation::Type
349
- )
350
- end
351
- OrSymbol = T.type_alias { T.any(Symbol, String) }
352
-
353
- APPROXIMATE =
354
- T.let(
355
- :approximate,
356
- OpenAI::Responses::Tool::WebSearchTool::UserLocation::Type::TaggedSymbol
357
- )
358
-
359
- sig do
360
- override.returns(
361
- T::Array[
362
- OpenAI::Responses::Tool::WebSearchTool::UserLocation::Type::TaggedSymbol
363
- ]
364
- )
365
- end
366
- def self.values
367
- end
368
- end
369
- end
370
- end
371
-
372
26
  class Mcp < OpenAI::Internal::Type::BaseModel
373
27
  OrHash =
374
28
  T.type_alias do
@@ -0,0 +1,245 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Responses
6
+ class WebSearchPreviewTool < OpenAI::Internal::Type::BaseModel
7
+ OrHash =
8
+ T.type_alias do
9
+ T.any(
10
+ OpenAI::Responses::WebSearchPreviewTool,
11
+ OpenAI::Internal::AnyHash
12
+ )
13
+ end
14
+
15
+ # The type of the web search tool. One of `web_search_preview` or
16
+ # `web_search_preview_2025_03_11`.
17
+ sig { returns(OpenAI::Responses::WebSearchPreviewTool::Type::OrSymbol) }
18
+ attr_accessor :type
19
+
20
+ # High level guidance for the amount of context window space to use for the
21
+ # search. One of `low`, `medium`, or `high`. `medium` is the default.
22
+ sig do
23
+ returns(
24
+ T.nilable(
25
+ OpenAI::Responses::WebSearchPreviewTool::SearchContextSize::OrSymbol
26
+ )
27
+ )
28
+ end
29
+ attr_reader :search_context_size
30
+
31
+ sig do
32
+ params(
33
+ search_context_size:
34
+ OpenAI::Responses::WebSearchPreviewTool::SearchContextSize::OrSymbol
35
+ ).void
36
+ end
37
+ attr_writer :search_context_size
38
+
39
+ # The user's location.
40
+ sig do
41
+ returns(
42
+ T.nilable(OpenAI::Responses::WebSearchPreviewTool::UserLocation)
43
+ )
44
+ end
45
+ attr_reader :user_location
46
+
47
+ sig do
48
+ params(
49
+ user_location:
50
+ T.nilable(
51
+ OpenAI::Responses::WebSearchPreviewTool::UserLocation::OrHash
52
+ )
53
+ ).void
54
+ end
55
+ attr_writer :user_location
56
+
57
+ # This tool searches the web for relevant results to use in a response. Learn more
58
+ # about the
59
+ # [web search tool](https://platform.openai.com/docs/guides/tools-web-search).
60
+ sig do
61
+ params(
62
+ type: OpenAI::Responses::WebSearchPreviewTool::Type::OrSymbol,
63
+ search_context_size:
64
+ OpenAI::Responses::WebSearchPreviewTool::SearchContextSize::OrSymbol,
65
+ user_location:
66
+ T.nilable(
67
+ OpenAI::Responses::WebSearchPreviewTool::UserLocation::OrHash
68
+ )
69
+ ).returns(T.attached_class)
70
+ end
71
+ def self.new(
72
+ # The type of the web search tool. One of `web_search_preview` or
73
+ # `web_search_preview_2025_03_11`.
74
+ type:,
75
+ # High level guidance for the amount of context window space to use for the
76
+ # search. One of `low`, `medium`, or `high`. `medium` is the default.
77
+ search_context_size: nil,
78
+ # The user's location.
79
+ user_location: nil
80
+ )
81
+ end
82
+
83
+ sig do
84
+ override.returns(
85
+ {
86
+ type: OpenAI::Responses::WebSearchPreviewTool::Type::OrSymbol,
87
+ search_context_size:
88
+ OpenAI::Responses::WebSearchPreviewTool::SearchContextSize::OrSymbol,
89
+ user_location:
90
+ T.nilable(OpenAI::Responses::WebSearchPreviewTool::UserLocation)
91
+ }
92
+ )
93
+ end
94
+ def to_hash
95
+ end
96
+
97
+ # The type of the web search tool. One of `web_search_preview` or
98
+ # `web_search_preview_2025_03_11`.
99
+ module Type
100
+ extend OpenAI::Internal::Type::Enum
101
+
102
+ TaggedSymbol =
103
+ T.type_alias do
104
+ T.all(Symbol, OpenAI::Responses::WebSearchPreviewTool::Type)
105
+ end
106
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
107
+
108
+ WEB_SEARCH_PREVIEW =
109
+ T.let(
110
+ :web_search_preview,
111
+ OpenAI::Responses::WebSearchPreviewTool::Type::TaggedSymbol
112
+ )
113
+ WEB_SEARCH_PREVIEW_2025_03_11 =
114
+ T.let(
115
+ :web_search_preview_2025_03_11,
116
+ OpenAI::Responses::WebSearchPreviewTool::Type::TaggedSymbol
117
+ )
118
+
119
+ sig do
120
+ override.returns(
121
+ T::Array[
122
+ OpenAI::Responses::WebSearchPreviewTool::Type::TaggedSymbol
123
+ ]
124
+ )
125
+ end
126
+ def self.values
127
+ end
128
+ end
129
+
130
+ # High level guidance for the amount of context window space to use for the
131
+ # search. One of `low`, `medium`, or `high`. `medium` is the default.
132
+ module SearchContextSize
133
+ extend OpenAI::Internal::Type::Enum
134
+
135
+ TaggedSymbol =
136
+ T.type_alias do
137
+ T.all(
138
+ Symbol,
139
+ OpenAI::Responses::WebSearchPreviewTool::SearchContextSize
140
+ )
141
+ end
142
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
143
+
144
+ LOW =
145
+ T.let(
146
+ :low,
147
+ OpenAI::Responses::WebSearchPreviewTool::SearchContextSize::TaggedSymbol
148
+ )
149
+ MEDIUM =
150
+ T.let(
151
+ :medium,
152
+ OpenAI::Responses::WebSearchPreviewTool::SearchContextSize::TaggedSymbol
153
+ )
154
+ HIGH =
155
+ T.let(
156
+ :high,
157
+ OpenAI::Responses::WebSearchPreviewTool::SearchContextSize::TaggedSymbol
158
+ )
159
+
160
+ sig do
161
+ override.returns(
162
+ T::Array[
163
+ OpenAI::Responses::WebSearchPreviewTool::SearchContextSize::TaggedSymbol
164
+ ]
165
+ )
166
+ end
167
+ def self.values
168
+ end
169
+ end
170
+
171
+ class UserLocation < OpenAI::Internal::Type::BaseModel
172
+ OrHash =
173
+ T.type_alias do
174
+ T.any(
175
+ OpenAI::Responses::WebSearchPreviewTool::UserLocation,
176
+ OpenAI::Internal::AnyHash
177
+ )
178
+ end
179
+
180
+ # The type of location approximation. Always `approximate`.
181
+ sig { returns(Symbol) }
182
+ attr_accessor :type
183
+
184
+ # Free text input for the city of the user, e.g. `San Francisco`.
185
+ sig { returns(T.nilable(String)) }
186
+ attr_accessor :city
187
+
188
+ # The two-letter [ISO country code](https://en.wikipedia.org/wiki/ISO_3166-1) of
189
+ # the user, e.g. `US`.
190
+ sig { returns(T.nilable(String)) }
191
+ attr_accessor :country
192
+
193
+ # Free text input for the region of the user, e.g. `California`.
194
+ sig { returns(T.nilable(String)) }
195
+ attr_accessor :region
196
+
197
+ # The [IANA timezone](https://timeapi.io/documentation/iana-timezones) of the
198
+ # user, e.g. `America/Los_Angeles`.
199
+ sig { returns(T.nilable(String)) }
200
+ attr_accessor :timezone
201
+
202
+ # The user's location.
203
+ sig do
204
+ params(
205
+ city: T.nilable(String),
206
+ country: T.nilable(String),
207
+ region: T.nilable(String),
208
+ timezone: T.nilable(String),
209
+ type: Symbol
210
+ ).returns(T.attached_class)
211
+ end
212
+ def self.new(
213
+ # Free text input for the city of the user, e.g. `San Francisco`.
214
+ city: nil,
215
+ # The two-letter [ISO country code](https://en.wikipedia.org/wiki/ISO_3166-1) of
216
+ # the user, e.g. `US`.
217
+ country: nil,
218
+ # Free text input for the region of the user, e.g. `California`.
219
+ region: nil,
220
+ # The [IANA timezone](https://timeapi.io/documentation/iana-timezones) of the
221
+ # user, e.g. `America/Los_Angeles`.
222
+ timezone: nil,
223
+ # The type of location approximation. Always `approximate`.
224
+ type: :approximate
225
+ )
226
+ end
227
+
228
+ sig do
229
+ override.returns(
230
+ {
231
+ type: Symbol,
232
+ city: T.nilable(String),
233
+ country: T.nilable(String),
234
+ region: T.nilable(String),
235
+ timezone: T.nilable(String)
236
+ }
237
+ )
238
+ end
239
+ def to_hash
240
+ end
241
+ end
242
+ end
243
+ end
244
+ end
245
+ end