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
@@ -0,0 +1,103 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Realtime
6
+ class RealtimeResponseStatus < OpenAI::Internal::Type::BaseModel
7
+ # @!attribute error
8
+ # A description of the error that caused the response to fail, populated when the
9
+ # `status` is `failed`.
10
+ #
11
+ # @return [OpenAI::Models::Realtime::RealtimeResponseStatus::Error, nil]
12
+ optional :error, -> { OpenAI::Realtime::RealtimeResponseStatus::Error }
13
+
14
+ # @!attribute reason
15
+ # The reason the Response did not complete. For a `cancelled` Response, one of
16
+ # `turn_detected` (the server VAD detected a new start of speech) or
17
+ # `client_cancelled` (the client sent a cancel event). For an `incomplete`
18
+ # Response, one of `max_output_tokens` or `content_filter` (the server-side safety
19
+ # filter activated and cut off the response).
20
+ #
21
+ # @return [Symbol, OpenAI::Models::Realtime::RealtimeResponseStatus::Reason, nil]
22
+ optional :reason, enum: -> { OpenAI::Realtime::RealtimeResponseStatus::Reason }
23
+
24
+ # @!attribute type
25
+ # The type of error that caused the response to fail, corresponding with the
26
+ # `status` field (`completed`, `cancelled`, `incomplete`, `failed`).
27
+ #
28
+ # @return [Symbol, OpenAI::Models::Realtime::RealtimeResponseStatus::Type, nil]
29
+ optional :type, enum: -> { OpenAI::Realtime::RealtimeResponseStatus::Type }
30
+
31
+ # @!method initialize(error: nil, reason: nil, type: nil)
32
+ # Some parameter documentations has been truncated, see
33
+ # {OpenAI::Models::Realtime::RealtimeResponseStatus} for more details.
34
+ #
35
+ # Additional details about the status.
36
+ #
37
+ # @param error [OpenAI::Models::Realtime::RealtimeResponseStatus::Error] A description of the error that caused the response to fail,
38
+ #
39
+ # @param reason [Symbol, OpenAI::Models::Realtime::RealtimeResponseStatus::Reason] The reason the Response did not complete. For a `cancelled` Response,
40
+ #
41
+ # @param type [Symbol, OpenAI::Models::Realtime::RealtimeResponseStatus::Type] The type of error that caused the response to fail, corresponding
42
+
43
+ # @see OpenAI::Models::Realtime::RealtimeResponseStatus#error
44
+ class Error < OpenAI::Internal::Type::BaseModel
45
+ # @!attribute code
46
+ # Error code, if any.
47
+ #
48
+ # @return [String, nil]
49
+ optional :code, String
50
+
51
+ # @!attribute type
52
+ # The type of error.
53
+ #
54
+ # @return [String, nil]
55
+ optional :type, String
56
+
57
+ # @!method initialize(code: nil, type: nil)
58
+ # A description of the error that caused the response to fail, populated when the
59
+ # `status` is `failed`.
60
+ #
61
+ # @param code [String] Error code, if any.
62
+ #
63
+ # @param type [String] The type of error.
64
+ end
65
+
66
+ # The reason the Response did not complete. For a `cancelled` Response, one of
67
+ # `turn_detected` (the server VAD detected a new start of speech) or
68
+ # `client_cancelled` (the client sent a cancel event). For an `incomplete`
69
+ # Response, one of `max_output_tokens` or `content_filter` (the server-side safety
70
+ # filter activated and cut off the response).
71
+ #
72
+ # @see OpenAI::Models::Realtime::RealtimeResponseStatus#reason
73
+ module Reason
74
+ extend OpenAI::Internal::Type::Enum
75
+
76
+ TURN_DETECTED = :turn_detected
77
+ CLIENT_CANCELLED = :client_cancelled
78
+ MAX_OUTPUT_TOKENS = :max_output_tokens
79
+ CONTENT_FILTER = :content_filter
80
+
81
+ # @!method self.values
82
+ # @return [Array<Symbol>]
83
+ end
84
+
85
+ # The type of error that caused the response to fail, corresponding with the
86
+ # `status` field (`completed`, `cancelled`, `incomplete`, `failed`).
87
+ #
88
+ # @see OpenAI::Models::Realtime::RealtimeResponseStatus#type
89
+ module Type
90
+ extend OpenAI::Internal::Type::Enum
91
+
92
+ COMPLETED = :completed
93
+ CANCELLED = :cancelled
94
+ INCOMPLETE = :incomplete
95
+ FAILED = :failed
96
+
97
+ # @!method self.values
98
+ # @return [Array<Symbol>]
99
+ end
100
+ end
101
+ end
102
+ end
103
+ end
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Realtime
6
+ class RealtimeResponseUsage < OpenAI::Internal::Type::BaseModel
7
+ # @!attribute input_token_details
8
+ # Details about the input tokens used in the Response.
9
+ #
10
+ # @return [OpenAI::Models::Realtime::RealtimeResponseUsageInputTokenDetails, nil]
11
+ optional :input_token_details, -> { OpenAI::Realtime::RealtimeResponseUsageInputTokenDetails }
12
+
13
+ # @!attribute input_tokens
14
+ # The number of input tokens used in the Response, including text and audio
15
+ # tokens.
16
+ #
17
+ # @return [Integer, nil]
18
+ optional :input_tokens, Integer
19
+
20
+ # @!attribute output_token_details
21
+ # Details about the output tokens used in the Response.
22
+ #
23
+ # @return [OpenAI::Models::Realtime::RealtimeResponseUsageOutputTokenDetails, nil]
24
+ optional :output_token_details, -> { OpenAI::Realtime::RealtimeResponseUsageOutputTokenDetails }
25
+
26
+ # @!attribute output_tokens
27
+ # The number of output tokens sent in the Response, including text and audio
28
+ # tokens.
29
+ #
30
+ # @return [Integer, nil]
31
+ optional :output_tokens, Integer
32
+
33
+ # @!attribute total_tokens
34
+ # The total number of tokens in the Response including input and output text and
35
+ # audio tokens.
36
+ #
37
+ # @return [Integer, nil]
38
+ optional :total_tokens, Integer
39
+
40
+ # @!method initialize(input_token_details: nil, input_tokens: nil, output_token_details: nil, output_tokens: nil, total_tokens: nil)
41
+ # Some parameter documentations has been truncated, see
42
+ # {OpenAI::Models::Realtime::RealtimeResponseUsage} for more details.
43
+ #
44
+ # Usage statistics for the Response, this will correspond to billing. A Realtime
45
+ # API session will maintain a conversation context and append new Items to the
46
+ # Conversation, thus output from previous turns (text and audio tokens) will
47
+ # become the input for later turns.
48
+ #
49
+ # @param input_token_details [OpenAI::Models::Realtime::RealtimeResponseUsageInputTokenDetails] Details about the input tokens used in the Response.
50
+ #
51
+ # @param input_tokens [Integer] The number of input tokens used in the Response, including text and
52
+ #
53
+ # @param output_token_details [OpenAI::Models::Realtime::RealtimeResponseUsageOutputTokenDetails] Details about the output tokens used in the Response.
54
+ #
55
+ # @param output_tokens [Integer] The number of output tokens sent in the Response, including text and
56
+ #
57
+ # @param total_tokens [Integer] The total number of tokens in the Response including input and output
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Realtime
6
+ class RealtimeResponseUsageInputTokenDetails < OpenAI::Internal::Type::BaseModel
7
+ # @!attribute audio_tokens
8
+ # The number of audio tokens used in the Response.
9
+ #
10
+ # @return [Integer, nil]
11
+ optional :audio_tokens, Integer
12
+
13
+ # @!attribute cached_tokens
14
+ # The number of cached tokens used in the Response.
15
+ #
16
+ # @return [Integer, nil]
17
+ optional :cached_tokens, Integer
18
+
19
+ # @!attribute text_tokens
20
+ # The number of text tokens used in the Response.
21
+ #
22
+ # @return [Integer, nil]
23
+ optional :text_tokens, Integer
24
+
25
+ # @!method initialize(audio_tokens: nil, cached_tokens: nil, text_tokens: nil)
26
+ # Details about the input tokens used in the Response.
27
+ #
28
+ # @param audio_tokens [Integer] The number of audio tokens used in the Response.
29
+ #
30
+ # @param cached_tokens [Integer] The number of cached tokens used in the Response.
31
+ #
32
+ # @param text_tokens [Integer] The number of text tokens used in the Response.
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Realtime
6
+ class RealtimeResponseUsageOutputTokenDetails < OpenAI::Internal::Type::BaseModel
7
+ # @!attribute audio_tokens
8
+ # The number of audio tokens used in the Response.
9
+ #
10
+ # @return [Integer, nil]
11
+ optional :audio_tokens, Integer
12
+
13
+ # @!attribute text_tokens
14
+ # The number of text tokens used in the Response.
15
+ #
16
+ # @return [Integer, nil]
17
+ optional :text_tokens, Integer
18
+
19
+ # @!method initialize(audio_tokens: nil, text_tokens: nil)
20
+ # Details about the output tokens used in the Response.
21
+ #
22
+ # @param audio_tokens [Integer] The number of audio tokens used in the Response.
23
+ #
24
+ # @param text_tokens [Integer] The number of text tokens used in the Response.
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,369 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Realtime
6
+ # A realtime server event.
7
+ module RealtimeServerEvent
8
+ extend OpenAI::Internal::Type::Union
9
+
10
+ discriminator :type
11
+
12
+ # Returned when a conversation is created. Emitted right after session creation.
13
+ variant :"conversation.created", -> { OpenAI::Realtime::ConversationCreatedEvent }
14
+
15
+ # Returned when a conversation item is created. There are several scenarios that produce this event:
16
+ # - The server is generating a Response, which if successful will produce
17
+ # either one or two Items, which will be of type `message`
18
+ # (role `assistant`) or type `function_call`.
19
+ # - The input audio buffer has been committed, either by the client or the
20
+ # server (in `server_vad` mode). The server will take the content of the
21
+ # input audio buffer and add it to a new user message Item.
22
+ # - The client has sent a `conversation.item.create` event to add a new Item
23
+ # to the Conversation.
24
+ variant :"conversation.item.created", -> { OpenAI::Realtime::ConversationItemCreatedEvent }
25
+
26
+ # Returned when an item in the conversation is deleted by the client with a
27
+ # `conversation.item.delete` event. This event is used to synchronize the
28
+ # server's understanding of the conversation history with the client's view.
29
+ variant :"conversation.item.deleted", -> { OpenAI::Realtime::ConversationItemDeletedEvent }
30
+
31
+ # This event is the output of audio transcription for user audio written to the
32
+ # user audio buffer. Transcription begins when the input audio buffer is
33
+ # committed by the client or server (in `server_vad` mode). Transcription runs
34
+ # asynchronously with Response creation, so this event may come before or after
35
+ # the Response events.
36
+ #
37
+ # Realtime API models accept audio natively, and thus input transcription is a
38
+ # separate process run on a separate ASR (Automatic Speech Recognition) model.
39
+ # The transcript may diverge somewhat from the model's interpretation, and
40
+ # should be treated as a rough guide.
41
+ variant :"conversation.item.input_audio_transcription.completed",
42
+ -> { OpenAI::Realtime::ConversationItemInputAudioTranscriptionCompletedEvent }
43
+
44
+ # Returned when the text value of an input audio transcription content part is updated.
45
+ variant :"conversation.item.input_audio_transcription.delta",
46
+ -> { OpenAI::Realtime::ConversationItemInputAudioTranscriptionDeltaEvent }
47
+
48
+ # Returned when input audio transcription is configured, and a transcription
49
+ # request for a user message failed. These events are separate from other
50
+ # `error` events so that the client can identify the related Item.
51
+ variant :"conversation.item.input_audio_transcription.failed",
52
+ -> { OpenAI::Realtime::ConversationItemInputAudioTranscriptionFailedEvent }
53
+
54
+ # Returned when a conversation item is retrieved with `conversation.item.retrieve`.
55
+ variant :"conversation.item.retrieved",
56
+ -> { OpenAI::Realtime::RealtimeServerEvent::ConversationItemRetrieved }
57
+
58
+ # Returned when an earlier assistant audio message item is truncated by the
59
+ # client with a `conversation.item.truncate` event. This event is used to
60
+ # synchronize the server's understanding of the audio with the client's playback.
61
+ #
62
+ # This action will truncate the audio and remove the server-side text transcript
63
+ # to ensure there is no text in the context that hasn't been heard by the user.
64
+ variant :"conversation.item.truncated", -> { OpenAI::Realtime::ConversationItemTruncatedEvent }
65
+
66
+ # Returned when an error occurs, which could be a client problem or a server
67
+ # problem. Most errors are recoverable and the session will stay open, we
68
+ # recommend to implementors to monitor and log error messages by default.
69
+ variant :error, -> { OpenAI::Realtime::RealtimeErrorEvent }
70
+
71
+ # Returned when the input audio buffer is cleared by the client with a
72
+ # `input_audio_buffer.clear` event.
73
+ variant :"input_audio_buffer.cleared", -> { OpenAI::Realtime::InputAudioBufferClearedEvent }
74
+
75
+ # Returned when an input audio buffer is committed, either by the client or
76
+ # automatically in server VAD mode. The `item_id` property is the ID of the user
77
+ # message item that will be created, thus a `conversation.item.created` event
78
+ # will also be sent to the client.
79
+ variant :"input_audio_buffer.committed", -> { OpenAI::Realtime::InputAudioBufferCommittedEvent }
80
+
81
+ # Sent by the server when in `server_vad` mode to indicate that speech has been
82
+ # detected in the audio buffer. This can happen any time audio is added to the
83
+ # buffer (unless speech is already detected). The client may want to use this
84
+ # event to interrupt audio playback or provide visual feedback to the user.
85
+ #
86
+ # The client should expect to receive a `input_audio_buffer.speech_stopped` event
87
+ # when speech stops. The `item_id` property is the ID of the user message item
88
+ # that will be created when speech stops and will also be included in the
89
+ # `input_audio_buffer.speech_stopped` event (unless the client manually commits
90
+ # the audio buffer during VAD activation).
91
+ variant :"input_audio_buffer.speech_started", -> { OpenAI::Realtime::InputAudioBufferSpeechStartedEvent }
92
+
93
+ # Returned in `server_vad` mode when the server detects the end of speech in
94
+ # the audio buffer. The server will also send an `conversation.item.created`
95
+ # event with the user message item that is created from the audio buffer.
96
+ variant :"input_audio_buffer.speech_stopped", -> { OpenAI::Realtime::InputAudioBufferSpeechStoppedEvent }
97
+
98
+ # Emitted at the beginning of a Response to indicate the updated rate limits.
99
+ # When a Response is created some tokens will be "reserved" for the output
100
+ # tokens, the rate limits shown here reflect that reservation, which is then
101
+ # adjusted accordingly once the Response is completed.
102
+ variant :"rate_limits.updated", -> { OpenAI::Realtime::RateLimitsUpdatedEvent }
103
+
104
+ # Returned when the model-generated audio is updated.
105
+ variant :"response.output_audio.delta", -> { OpenAI::Realtime::ResponseAudioDeltaEvent }
106
+
107
+ # Returned when the model-generated audio is done. Also emitted when a Response
108
+ # is interrupted, incomplete, or cancelled.
109
+ variant :"response.output_audio.done", -> { OpenAI::Realtime::ResponseAudioDoneEvent }
110
+
111
+ # Returned when the model-generated transcription of audio output is updated.
112
+ variant :"response.output_audio_transcript.delta",
113
+ -> { OpenAI::Realtime::ResponseAudioTranscriptDeltaEvent }
114
+
115
+ # Returned when the model-generated transcription of audio output is done
116
+ # streaming. Also emitted when a Response is interrupted, incomplete, or
117
+ # cancelled.
118
+ variant :"response.output_audio_transcript.done",
119
+ -> { OpenAI::Realtime::ResponseAudioTranscriptDoneEvent }
120
+
121
+ # Returned when a new content part is added to an assistant message item during
122
+ # response generation.
123
+ variant :"response.content_part.added", -> { OpenAI::Realtime::ResponseContentPartAddedEvent }
124
+
125
+ # Returned when a content part is done streaming in an assistant message item.
126
+ # Also emitted when a Response is interrupted, incomplete, or cancelled.
127
+ variant :"response.content_part.done", -> { OpenAI::Realtime::ResponseContentPartDoneEvent }
128
+
129
+ # Returned when a new Response is created. The first event of response creation,
130
+ # where the response is in an initial state of `in_progress`.
131
+ variant :"response.created", -> { OpenAI::Realtime::ResponseCreatedEvent }
132
+
133
+ # Returned when a Response is done streaming. Always emitted, no matter the
134
+ # final state. The Response object included in the `response.done` event will
135
+ # include all output Items in the Response but will omit the raw audio data.
136
+ variant :"response.done", -> { OpenAI::Realtime::ResponseDoneEvent }
137
+
138
+ # Returned when the model-generated function call arguments are updated.
139
+ variant :"response.function_call_arguments.delta",
140
+ -> { OpenAI::Realtime::ResponseFunctionCallArgumentsDeltaEvent }
141
+
142
+ # Returned when the model-generated function call arguments are done streaming.
143
+ # Also emitted when a Response is interrupted, incomplete, or cancelled.
144
+ variant :"response.function_call_arguments.done",
145
+ -> { OpenAI::Realtime::ResponseFunctionCallArgumentsDoneEvent }
146
+
147
+ # Returned when a new Item is created during Response generation.
148
+ variant :"response.output_item.added", -> { OpenAI::Realtime::ResponseOutputItemAddedEvent }
149
+
150
+ # Returned when an Item is done streaming. Also emitted when a Response is
151
+ # interrupted, incomplete, or cancelled.
152
+ variant :"response.output_item.done", -> { OpenAI::Realtime::ResponseOutputItemDoneEvent }
153
+
154
+ # Returned when the text value of an "output_text" content part is updated.
155
+ variant :"response.output_text.delta", -> { OpenAI::Realtime::ResponseTextDeltaEvent }
156
+
157
+ # Returned when the text value of an "output_text" content part is done streaming. Also
158
+ # emitted when a Response is interrupted, incomplete, or cancelled.
159
+ variant :"response.output_text.done", -> { OpenAI::Realtime::ResponseTextDoneEvent }
160
+
161
+ # Returned when a Session is created. Emitted automatically when a new
162
+ # connection is established as the first server event. This event will contain
163
+ # the default Session configuration.
164
+ variant :"session.created", -> { OpenAI::Realtime::SessionCreatedEvent }
165
+
166
+ # Returned when a session is updated with a `session.update` event, unless
167
+ # there is an error.
168
+ variant :"session.updated", -> { OpenAI::Realtime::SessionUpdatedEvent }
169
+
170
+ # Returned when a transcription session is updated with a `transcription_session.update` event, unless
171
+ # there is an error.
172
+ variant :"transcription_session.updated", -> { OpenAI::Realtime::TranscriptionSessionUpdatedEvent }
173
+
174
+ # Returned when a transcription session is created.
175
+ variant :"transcription_session.created", -> { OpenAI::Realtime::TranscriptionSessionCreated }
176
+
177
+ # **WebRTC Only:** Emitted when the server begins streaming audio to the client. This event is
178
+ # emitted after an audio content part has been added (`response.content_part.added`)
179
+ # to the response.
180
+ # [Learn more](https://platform.openai.com/docs/guides/realtime-conversations#client-and-server-events-for-audio-in-webrtc).
181
+ variant :"output_audio_buffer.started",
182
+ -> { OpenAI::Realtime::RealtimeServerEvent::OutputAudioBufferStarted }
183
+
184
+ # **WebRTC Only:** Emitted when the output audio buffer has been completely drained on the server,
185
+ # and no more audio is forthcoming. This event is emitted after the full response
186
+ # data has been sent to the client (`response.done`).
187
+ # [Learn more](https://platform.openai.com/docs/guides/realtime-conversations#client-and-server-events-for-audio-in-webrtc).
188
+ variant :"output_audio_buffer.stopped",
189
+ -> { OpenAI::Realtime::RealtimeServerEvent::OutputAudioBufferStopped }
190
+
191
+ # **WebRTC Only:** Emitted when the output audio buffer is cleared. This happens either in VAD
192
+ # mode when the user has interrupted (`input_audio_buffer.speech_started`),
193
+ # or when the client has emitted the `output_audio_buffer.clear` event to manually
194
+ # cut off the current audio response.
195
+ # [Learn more](https://platform.openai.com/docs/guides/realtime-conversations#client-and-server-events-for-audio-in-webrtc).
196
+ variant :"output_audio_buffer.cleared",
197
+ -> { OpenAI::Realtime::RealtimeServerEvent::OutputAudioBufferCleared }
198
+
199
+ # Returned when a conversation item is added.
200
+ variant :"conversation.item.added", -> { OpenAI::Realtime::ConversationItemAdded }
201
+
202
+ # Returned when a conversation item is finalized.
203
+ variant :"conversation.item.done", -> { OpenAI::Realtime::ConversationItemDone }
204
+
205
+ # Returned when the server VAD timeout is triggered for the input audio buffer.
206
+ variant :"input_audio_buffer.timeout_triggered", -> { OpenAI::Realtime::InputAudioBufferTimeoutTriggered }
207
+
208
+ # Returned when an input audio transcription segment is identified for an item.
209
+ variant :"conversation.item.input_audio_transcription.segment",
210
+ -> { OpenAI::Realtime::ConversationItemInputAudioTranscriptionSegment }
211
+
212
+ # Returned when listing MCP tools is in progress for an item.
213
+ variant :"mcp_list_tools.in_progress", -> { OpenAI::Realtime::McpListToolsInProgress }
214
+
215
+ # Returned when listing MCP tools has completed for an item.
216
+ variant :"mcp_list_tools.completed", -> { OpenAI::Realtime::McpListToolsCompleted }
217
+
218
+ # Returned when listing MCP tools has failed for an item.
219
+ variant :"mcp_list_tools.failed", -> { OpenAI::Realtime::McpListToolsFailed }
220
+
221
+ # Returned when MCP tool call arguments are updated during response generation.
222
+ variant :"response.mcp_call_arguments.delta", -> { OpenAI::Realtime::ResponseMcpCallArgumentsDelta }
223
+
224
+ # Returned when MCP tool call arguments are finalized during response generation.
225
+ variant :"response.mcp_call_arguments.done", -> { OpenAI::Realtime::ResponseMcpCallArgumentsDone }
226
+
227
+ # Returned when an MCP tool call has started and is in progress.
228
+ variant :"response.mcp_call.in_progress", -> { OpenAI::Realtime::ResponseMcpCallInProgress }
229
+
230
+ # Returned when an MCP tool call has completed successfully.
231
+ variant :"response.mcp_call.completed", -> { OpenAI::Realtime::ResponseMcpCallCompleted }
232
+
233
+ # Returned when an MCP tool call has failed.
234
+ variant :"response.mcp_call.failed", -> { OpenAI::Realtime::ResponseMcpCallFailed }
235
+
236
+ class ConversationItemRetrieved < OpenAI::Internal::Type::BaseModel
237
+ # @!attribute event_id
238
+ # The unique ID of the server event.
239
+ #
240
+ # @return [String]
241
+ required :event_id, String
242
+
243
+ # @!attribute item
244
+ # A single item within a Realtime conversation.
245
+ #
246
+ # @return [OpenAI::Models::Realtime::RealtimeConversationItemSystemMessage, OpenAI::Models::Realtime::RealtimeConversationItemUserMessage, OpenAI::Models::Realtime::RealtimeConversationItemAssistantMessage, OpenAI::Models::Realtime::RealtimeConversationItemFunctionCall, OpenAI::Models::Realtime::RealtimeConversationItemFunctionCallOutput, OpenAI::Models::Realtime::RealtimeMcpApprovalResponse, OpenAI::Models::Realtime::RealtimeMcpListTools, OpenAI::Models::Realtime::RealtimeMcpToolCall, OpenAI::Models::Realtime::RealtimeMcpApprovalRequest]
247
+ required :item, union: -> { OpenAI::Realtime::ConversationItem }
248
+
249
+ # @!attribute type
250
+ # The event type, must be `conversation.item.retrieved`.
251
+ #
252
+ # @return [Symbol, :"conversation.item.retrieved"]
253
+ required :type, const: :"conversation.item.retrieved"
254
+
255
+ # @!method initialize(event_id:, item:, type: :"conversation.item.retrieved")
256
+ # Returned when a conversation item is retrieved with
257
+ # `conversation.item.retrieve`.
258
+ #
259
+ # @param event_id [String] The unique ID of the server event.
260
+ #
261
+ # @param item [OpenAI::Models::Realtime::RealtimeConversationItemSystemMessage, OpenAI::Models::Realtime::RealtimeConversationItemUserMessage, OpenAI::Models::Realtime::RealtimeConversationItemAssistantMessage, OpenAI::Models::Realtime::RealtimeConversationItemFunctionCall, OpenAI::Models::Realtime::RealtimeConversationItemFunctionCallOutput, OpenAI::Models::Realtime::RealtimeMcpApprovalResponse, OpenAI::Models::Realtime::RealtimeMcpListTools, OpenAI::Models::Realtime::RealtimeMcpToolCall, OpenAI::Models::Realtime::RealtimeMcpApprovalRequest] A single item within a Realtime conversation.
262
+ #
263
+ # @param type [Symbol, :"conversation.item.retrieved"] The event type, must be `conversation.item.retrieved`.
264
+ end
265
+
266
+ class OutputAudioBufferStarted < OpenAI::Internal::Type::BaseModel
267
+ # @!attribute event_id
268
+ # The unique ID of the server event.
269
+ #
270
+ # @return [String]
271
+ required :event_id, String
272
+
273
+ # @!attribute response_id
274
+ # The unique ID of the response that produced the audio.
275
+ #
276
+ # @return [String]
277
+ required :response_id, String
278
+
279
+ # @!attribute type
280
+ # The event type, must be `output_audio_buffer.started`.
281
+ #
282
+ # @return [Symbol, :"output_audio_buffer.started"]
283
+ required :type, const: :"output_audio_buffer.started"
284
+
285
+ # @!method initialize(event_id:, response_id:, type: :"output_audio_buffer.started")
286
+ # **WebRTC Only:** Emitted when the server begins streaming audio to the client.
287
+ # This event is emitted after an audio content part has been added
288
+ # (`response.content_part.added`) to the response.
289
+ # [Learn more](https://platform.openai.com/docs/guides/realtime-conversations#client-and-server-events-for-audio-in-webrtc).
290
+ #
291
+ # @param event_id [String] The unique ID of the server event.
292
+ #
293
+ # @param response_id [String] The unique ID of the response that produced the audio.
294
+ #
295
+ # @param type [Symbol, :"output_audio_buffer.started"] The event type, must be `output_audio_buffer.started`.
296
+ end
297
+
298
+ class OutputAudioBufferStopped < OpenAI::Internal::Type::BaseModel
299
+ # @!attribute event_id
300
+ # The unique ID of the server event.
301
+ #
302
+ # @return [String]
303
+ required :event_id, String
304
+
305
+ # @!attribute response_id
306
+ # The unique ID of the response that produced the audio.
307
+ #
308
+ # @return [String]
309
+ required :response_id, String
310
+
311
+ # @!attribute type
312
+ # The event type, must be `output_audio_buffer.stopped`.
313
+ #
314
+ # @return [Symbol, :"output_audio_buffer.stopped"]
315
+ required :type, const: :"output_audio_buffer.stopped"
316
+
317
+ # @!method initialize(event_id:, response_id:, type: :"output_audio_buffer.stopped")
318
+ # **WebRTC Only:** Emitted when the output audio buffer has been completely
319
+ # drained on the server, and no more audio is forthcoming. This event is emitted
320
+ # after the full response data has been sent to the client (`response.done`).
321
+ # [Learn more](https://platform.openai.com/docs/guides/realtime-conversations#client-and-server-events-for-audio-in-webrtc).
322
+ #
323
+ # @param event_id [String] The unique ID of the server event.
324
+ #
325
+ # @param response_id [String] The unique ID of the response that produced the audio.
326
+ #
327
+ # @param type [Symbol, :"output_audio_buffer.stopped"] The event type, must be `output_audio_buffer.stopped`.
328
+ end
329
+
330
+ class OutputAudioBufferCleared < OpenAI::Internal::Type::BaseModel
331
+ # @!attribute event_id
332
+ # The unique ID of the server event.
333
+ #
334
+ # @return [String]
335
+ required :event_id, String
336
+
337
+ # @!attribute response_id
338
+ # The unique ID of the response that produced the audio.
339
+ #
340
+ # @return [String]
341
+ required :response_id, String
342
+
343
+ # @!attribute type
344
+ # The event type, must be `output_audio_buffer.cleared`.
345
+ #
346
+ # @return [Symbol, :"output_audio_buffer.cleared"]
347
+ required :type, const: :"output_audio_buffer.cleared"
348
+
349
+ # @!method initialize(event_id:, response_id:, type: :"output_audio_buffer.cleared")
350
+ # **WebRTC Only:** Emitted when the output audio buffer is cleared. This happens
351
+ # either in VAD mode when the user has interrupted
352
+ # (`input_audio_buffer.speech_started`), or when the client has emitted the
353
+ # `output_audio_buffer.clear` event to manually cut off the current audio
354
+ # response.
355
+ # [Learn more](https://platform.openai.com/docs/guides/realtime-conversations#client-and-server-events-for-audio-in-webrtc).
356
+ #
357
+ # @param event_id [String] The unique ID of the server event.
358
+ #
359
+ # @param response_id [String] The unique ID of the response that produced the audio.
360
+ #
361
+ # @param type [Symbol, :"output_audio_buffer.cleared"] The event type, must be `output_audio_buffer.cleared`.
362
+ end
363
+
364
+ # @!method self.variants
365
+ # @return [Array(OpenAI::Models::Realtime::ConversationCreatedEvent, OpenAI::Models::Realtime::ConversationItemCreatedEvent, OpenAI::Models::Realtime::ConversationItemDeletedEvent, OpenAI::Models::Realtime::ConversationItemInputAudioTranscriptionCompletedEvent, OpenAI::Models::Realtime::ConversationItemInputAudioTranscriptionDeltaEvent, OpenAI::Models::Realtime::ConversationItemInputAudioTranscriptionFailedEvent, OpenAI::Models::Realtime::RealtimeServerEvent::ConversationItemRetrieved, OpenAI::Models::Realtime::ConversationItemTruncatedEvent, OpenAI::Models::Realtime::RealtimeErrorEvent, OpenAI::Models::Realtime::InputAudioBufferClearedEvent, OpenAI::Models::Realtime::InputAudioBufferCommittedEvent, OpenAI::Models::Realtime::InputAudioBufferSpeechStartedEvent, OpenAI::Models::Realtime::InputAudioBufferSpeechStoppedEvent, OpenAI::Models::Realtime::RateLimitsUpdatedEvent, OpenAI::Models::Realtime::ResponseAudioDeltaEvent, OpenAI::Models::Realtime::ResponseAudioDoneEvent, OpenAI::Models::Realtime::ResponseAudioTranscriptDeltaEvent, OpenAI::Models::Realtime::ResponseAudioTranscriptDoneEvent, OpenAI::Models::Realtime::ResponseContentPartAddedEvent, OpenAI::Models::Realtime::ResponseContentPartDoneEvent, OpenAI::Models::Realtime::ResponseCreatedEvent, OpenAI::Models::Realtime::ResponseDoneEvent, OpenAI::Models::Realtime::ResponseFunctionCallArgumentsDeltaEvent, OpenAI::Models::Realtime::ResponseFunctionCallArgumentsDoneEvent, OpenAI::Models::Realtime::ResponseOutputItemAddedEvent, OpenAI::Models::Realtime::ResponseOutputItemDoneEvent, OpenAI::Models::Realtime::ResponseTextDeltaEvent, OpenAI::Models::Realtime::ResponseTextDoneEvent, OpenAI::Models::Realtime::SessionCreatedEvent, OpenAI::Models::Realtime::SessionUpdatedEvent, OpenAI::Models::Realtime::TranscriptionSessionUpdatedEvent, OpenAI::Models::Realtime::TranscriptionSessionCreated, OpenAI::Models::Realtime::RealtimeServerEvent::OutputAudioBufferStarted, OpenAI::Models::Realtime::RealtimeServerEvent::OutputAudioBufferStopped, OpenAI::Models::Realtime::RealtimeServerEvent::OutputAudioBufferCleared, OpenAI::Models::Realtime::ConversationItemAdded, OpenAI::Models::Realtime::ConversationItemDone, OpenAI::Models::Realtime::InputAudioBufferTimeoutTriggered, OpenAI::Models::Realtime::ConversationItemInputAudioTranscriptionSegment, OpenAI::Models::Realtime::McpListToolsInProgress, OpenAI::Models::Realtime::McpListToolsCompleted, OpenAI::Models::Realtime::McpListToolsFailed, OpenAI::Models::Realtime::ResponseMcpCallArgumentsDelta, OpenAI::Models::Realtime::ResponseMcpCallArgumentsDone, OpenAI::Models::Realtime::ResponseMcpCallInProgress, OpenAI::Models::Realtime::ResponseMcpCallCompleted, OpenAI::Models::Realtime::ResponseMcpCallFailed)]
366
+ end
367
+ end
368
+ end
369
+ end