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
@@ -10,132 +10,12 @@ module OpenAI
10
10
  | OpenAI::Responses::Tool::ImageGeneration
11
11
  | OpenAI::Responses::Tool::LocalShell
12
12
  | OpenAI::Responses::CustomTool
13
- | OpenAI::Responses::Tool::WebSearchTool
14
13
  | OpenAI::Responses::WebSearchTool
14
+ | OpenAI::Responses::WebSearchPreviewTool
15
15
 
16
16
  module Tool
17
17
  extend OpenAI::Internal::Type::Union
18
18
 
19
- type web_search_tool =
20
- {
21
- type: OpenAI::Models::Responses::Tool::WebSearchTool::type_,
22
- filters: OpenAI::Responses::Tool::WebSearchTool::Filters?,
23
- search_context_size: OpenAI::Models::Responses::Tool::WebSearchTool::search_context_size,
24
- user_location: OpenAI::Responses::Tool::WebSearchTool::UserLocation?
25
- }
26
-
27
- class WebSearchTool < OpenAI::Internal::Type::BaseModel
28
- attr_accessor type: OpenAI::Models::Responses::Tool::WebSearchTool::type_
29
-
30
- attr_accessor filters: OpenAI::Responses::Tool::WebSearchTool::Filters?
31
-
32
- attr_reader search_context_size: OpenAI::Models::Responses::Tool::WebSearchTool::search_context_size?
33
-
34
- def search_context_size=: (
35
- OpenAI::Models::Responses::Tool::WebSearchTool::search_context_size
36
- ) -> OpenAI::Models::Responses::Tool::WebSearchTool::search_context_size
37
-
38
- attr_accessor user_location: OpenAI::Responses::Tool::WebSearchTool::UserLocation?
39
-
40
- def initialize: (
41
- type: OpenAI::Models::Responses::Tool::WebSearchTool::type_,
42
- ?filters: OpenAI::Responses::Tool::WebSearchTool::Filters?,
43
- ?search_context_size: OpenAI::Models::Responses::Tool::WebSearchTool::search_context_size,
44
- ?user_location: OpenAI::Responses::Tool::WebSearchTool::UserLocation?
45
- ) -> void
46
-
47
- def to_hash: -> {
48
- type: OpenAI::Models::Responses::Tool::WebSearchTool::type_,
49
- filters: OpenAI::Responses::Tool::WebSearchTool::Filters?,
50
- search_context_size: OpenAI::Models::Responses::Tool::WebSearchTool::search_context_size,
51
- user_location: OpenAI::Responses::Tool::WebSearchTool::UserLocation?
52
- }
53
-
54
- type type_ = :web_search | :web_search_2025_08_26
55
-
56
- module Type
57
- extend OpenAI::Internal::Type::Enum
58
-
59
- WEB_SEARCH: :web_search
60
- WEB_SEARCH_2025_08_26: :web_search_2025_08_26
61
-
62
- def self?.values: -> ::Array[OpenAI::Models::Responses::Tool::WebSearchTool::type_]
63
- end
64
-
65
- type filters = { allowed_domains: ::Array[String]? }
66
-
67
- class Filters < OpenAI::Internal::Type::BaseModel
68
- attr_accessor allowed_domains: ::Array[String]?
69
-
70
- def initialize: (?allowed_domains: ::Array[String]?) -> void
71
-
72
- def to_hash: -> { allowed_domains: ::Array[String]? }
73
- end
74
-
75
- type search_context_size = :low | :medium | :high
76
-
77
- module SearchContextSize
78
- extend OpenAI::Internal::Type::Enum
79
-
80
- LOW: :low
81
- MEDIUM: :medium
82
- HIGH: :high
83
-
84
- def self?.values: -> ::Array[OpenAI::Models::Responses::Tool::WebSearchTool::search_context_size]
85
- end
86
-
87
- type user_location =
88
- {
89
- city: String?,
90
- country: String?,
91
- region: String?,
92
- timezone: String?,
93
- type: OpenAI::Models::Responses::Tool::WebSearchTool::UserLocation::type_
94
- }
95
-
96
- class UserLocation < OpenAI::Internal::Type::BaseModel
97
- attr_accessor city: String?
98
-
99
- attr_accessor country: String?
100
-
101
- attr_accessor region: String?
102
-
103
- attr_accessor timezone: String?
104
-
105
- attr_reader type: OpenAI::Models::Responses::Tool::WebSearchTool::UserLocation::type_?
106
-
107
- def type=: (
108
- OpenAI::Models::Responses::Tool::WebSearchTool::UserLocation::type_
109
- ) -> OpenAI::Models::Responses::Tool::WebSearchTool::UserLocation::type_
110
-
111
- def initialize: (
112
- ?city: String?,
113
- ?country: String?,
114
- ?region: String?,
115
- ?timezone: String?,
116
- ?type: OpenAI::Models::Responses::Tool::WebSearchTool::UserLocation::type_
117
- ) -> void
118
-
119
- def to_hash: -> {
120
- city: String?,
121
- country: String?,
122
- region: String?,
123
- timezone: String?,
124
- type: OpenAI::Models::Responses::Tool::WebSearchTool::UserLocation::type_
125
- }
126
-
127
- type type_ = :approximate
128
-
129
- module Type
130
- extend OpenAI::Internal::Type::Enum
131
-
132
- APPROXIMATE: :approximate
133
-
134
- def self?.values: -> ::Array[OpenAI::Models::Responses::Tool::WebSearchTool::UserLocation::type_]
135
- end
136
- end
137
- end
138
-
139
19
  type mcp =
140
20
  {
141
21
  server_label: String,
@@ -0,0 +1,96 @@
1
+ module OpenAI
2
+ module Models
3
+ module Responses
4
+ type web_search_preview_tool =
5
+ {
6
+ type: OpenAI::Models::Responses::WebSearchPreviewTool::type_,
7
+ search_context_size: OpenAI::Models::Responses::WebSearchPreviewTool::search_context_size,
8
+ user_location: OpenAI::Responses::WebSearchPreviewTool::UserLocation?
9
+ }
10
+
11
+ class WebSearchPreviewTool < OpenAI::Internal::Type::BaseModel
12
+ attr_accessor type: OpenAI::Models::Responses::WebSearchPreviewTool::type_
13
+
14
+ attr_reader search_context_size: OpenAI::Models::Responses::WebSearchPreviewTool::search_context_size?
15
+
16
+ def search_context_size=: (
17
+ OpenAI::Models::Responses::WebSearchPreviewTool::search_context_size
18
+ ) -> OpenAI::Models::Responses::WebSearchPreviewTool::search_context_size
19
+
20
+ attr_accessor user_location: OpenAI::Responses::WebSearchPreviewTool::UserLocation?
21
+
22
+ def initialize: (
23
+ type: OpenAI::Models::Responses::WebSearchPreviewTool::type_,
24
+ ?search_context_size: OpenAI::Models::Responses::WebSearchPreviewTool::search_context_size,
25
+ ?user_location: OpenAI::Responses::WebSearchPreviewTool::UserLocation?
26
+ ) -> void
27
+
28
+ def to_hash: -> {
29
+ type: OpenAI::Models::Responses::WebSearchPreviewTool::type_,
30
+ search_context_size: OpenAI::Models::Responses::WebSearchPreviewTool::search_context_size,
31
+ user_location: OpenAI::Responses::WebSearchPreviewTool::UserLocation?
32
+ }
33
+
34
+ type type_ = :web_search_preview | :web_search_preview_2025_03_11
35
+
36
+ module Type
37
+ extend OpenAI::Internal::Type::Enum
38
+
39
+ WEB_SEARCH_PREVIEW: :web_search_preview
40
+ WEB_SEARCH_PREVIEW_2025_03_11: :web_search_preview_2025_03_11
41
+
42
+ def self?.values: -> ::Array[OpenAI::Models::Responses::WebSearchPreviewTool::type_]
43
+ end
44
+
45
+ type search_context_size = :low | :medium | :high
46
+
47
+ module SearchContextSize
48
+ extend OpenAI::Internal::Type::Enum
49
+
50
+ LOW: :low
51
+ MEDIUM: :medium
52
+ HIGH: :high
53
+
54
+ def self?.values: -> ::Array[OpenAI::Models::Responses::WebSearchPreviewTool::search_context_size]
55
+ end
56
+
57
+ type user_location =
58
+ {
59
+ type: :approximate,
60
+ city: String?,
61
+ country: String?,
62
+ region: String?,
63
+ timezone: String?
64
+ }
65
+
66
+ class UserLocation < OpenAI::Internal::Type::BaseModel
67
+ attr_accessor type: :approximate
68
+
69
+ attr_accessor city: String?
70
+
71
+ attr_accessor country: String?
72
+
73
+ attr_accessor region: String?
74
+
75
+ attr_accessor timezone: String?
76
+
77
+ def initialize: (
78
+ ?city: String?,
79
+ ?country: String?,
80
+ ?region: String?,
81
+ ?timezone: String?,
82
+ ?type: :approximate
83
+ ) -> void
84
+
85
+ def to_hash: -> {
86
+ type: :approximate,
87
+ city: String?,
88
+ country: String?,
89
+ region: String?,
90
+ timezone: String?
91
+ }
92
+ end
93
+ end
94
+ end
95
+ end
96
+ end
@@ -4,6 +4,7 @@ module OpenAI
4
4
  type web_search_tool =
5
5
  {
6
6
  type: OpenAI::Models::Responses::WebSearchTool::type_,
7
+ filters: OpenAI::Responses::WebSearchTool::Filters?,
7
8
  search_context_size: OpenAI::Models::Responses::WebSearchTool::search_context_size,
8
9
  user_location: OpenAI::Responses::WebSearchTool::UserLocation?
9
10
  }
@@ -11,6 +12,8 @@ module OpenAI
11
12
  class WebSearchTool < OpenAI::Internal::Type::BaseModel
12
13
  attr_accessor type: OpenAI::Models::Responses::WebSearchTool::type_
13
14
 
15
+ attr_accessor filters: OpenAI::Responses::WebSearchTool::Filters?
16
+
14
17
  attr_reader search_context_size: OpenAI::Models::Responses::WebSearchTool::search_context_size?
15
18
 
16
19
  def search_context_size=: (
@@ -21,27 +24,39 @@ module OpenAI
21
24
 
22
25
  def initialize: (
23
26
  type: OpenAI::Models::Responses::WebSearchTool::type_,
27
+ ?filters: OpenAI::Responses::WebSearchTool::Filters?,
24
28
  ?search_context_size: OpenAI::Models::Responses::WebSearchTool::search_context_size,
25
29
  ?user_location: OpenAI::Responses::WebSearchTool::UserLocation?
26
30
  ) -> void
27
31
 
28
32
  def to_hash: -> {
29
33
  type: OpenAI::Models::Responses::WebSearchTool::type_,
34
+ filters: OpenAI::Responses::WebSearchTool::Filters?,
30
35
  search_context_size: OpenAI::Models::Responses::WebSearchTool::search_context_size,
31
36
  user_location: OpenAI::Responses::WebSearchTool::UserLocation?
32
37
  }
33
38
 
34
- type type_ = :web_search_preview | :web_search_preview_2025_03_11
39
+ type type_ = :web_search | :web_search_2025_08_26
35
40
 
36
41
  module Type
37
42
  extend OpenAI::Internal::Type::Enum
38
43
 
39
- WEB_SEARCH_PREVIEW: :web_search_preview
40
- WEB_SEARCH_PREVIEW_2025_03_11: :web_search_preview_2025_03_11
44
+ WEB_SEARCH: :web_search
45
+ WEB_SEARCH_2025_08_26: :web_search_2025_08_26
41
46
 
42
47
  def self?.values: -> ::Array[OpenAI::Models::Responses::WebSearchTool::type_]
43
48
  end
44
49
 
50
+ type filters = { allowed_domains: ::Array[String]? }
51
+
52
+ class Filters < OpenAI::Internal::Type::BaseModel
53
+ attr_accessor allowed_domains: ::Array[String]?
54
+
55
+ def initialize: (?allowed_domains: ::Array[String]?) -> void
56
+
57
+ def to_hash: -> { allowed_domains: ::Array[String]? }
58
+ end
59
+
45
60
  type search_context_size = :low | :medium | :high
46
61
 
47
62
  module SearchContextSize
@@ -56,16 +71,14 @@ module OpenAI
56
71
 
57
72
  type user_location =
58
73
  {
59
- type: :approximate,
60
74
  city: String?,
61
75
  country: String?,
62
76
  region: String?,
63
- timezone: String?
77
+ timezone: String?,
78
+ type: OpenAI::Models::Responses::WebSearchTool::UserLocation::type_
64
79
  }
65
80
 
66
81
  class UserLocation < OpenAI::Internal::Type::BaseModel
67
- attr_accessor type: :approximate
68
-
69
82
  attr_accessor city: String?
70
83
 
71
84
  attr_accessor country: String?
@@ -74,21 +87,37 @@ module OpenAI
74
87
 
75
88
  attr_accessor timezone: String?
76
89
 
90
+ attr_reader type: OpenAI::Models::Responses::WebSearchTool::UserLocation::type_?
91
+
92
+ def type=: (
93
+ OpenAI::Models::Responses::WebSearchTool::UserLocation::type_
94
+ ) -> OpenAI::Models::Responses::WebSearchTool::UserLocation::type_
95
+
77
96
  def initialize: (
78
97
  ?city: String?,
79
98
  ?country: String?,
80
99
  ?region: String?,
81
100
  ?timezone: String?,
82
- ?type: :approximate
101
+ ?type: OpenAI::Models::Responses::WebSearchTool::UserLocation::type_
83
102
  ) -> void
84
103
 
85
104
  def to_hash: -> {
86
- type: :approximate,
87
105
  city: String?,
88
106
  country: String?,
89
107
  region: String?,
90
- timezone: String?
108
+ timezone: String?,
109
+ type: OpenAI::Models::Responses::WebSearchTool::UserLocation::type_
91
110
  }
111
+
112
+ type type_ = :approximate
113
+
114
+ module Type
115
+ extend OpenAI::Internal::Type::Enum
116
+
117
+ APPROXIMATE: :approximate
118
+
119
+ def self?.values: -> ::Array[OpenAI::Models::Responses::WebSearchTool::UserLocation::type_]
120
+ end
92
121
  end
93
122
  end
94
123
  end
@@ -0,0 +1,90 @@
1
+ module OpenAI
2
+ module Models
3
+ module Webhooks
4
+ type realtime_call_incoming_webhook_event =
5
+ {
6
+ id: String,
7
+ created_at: Integer,
8
+ data: OpenAI::Webhooks::RealtimeCallIncomingWebhookEvent::Data,
9
+ type: :"realtime.call.incoming",
10
+ object: OpenAI::Models::Webhooks::RealtimeCallIncomingWebhookEvent::object
11
+ }
12
+
13
+ class RealtimeCallIncomingWebhookEvent < OpenAI::Internal::Type::BaseModel
14
+ attr_accessor id: String
15
+
16
+ attr_accessor created_at: Integer
17
+
18
+ attr_accessor data: OpenAI::Webhooks::RealtimeCallIncomingWebhookEvent::Data
19
+
20
+ attr_accessor type: :"realtime.call.incoming"
21
+
22
+ attr_reader object: OpenAI::Models::Webhooks::RealtimeCallIncomingWebhookEvent::object?
23
+
24
+ def object=: (
25
+ OpenAI::Models::Webhooks::RealtimeCallIncomingWebhookEvent::object
26
+ ) -> OpenAI::Models::Webhooks::RealtimeCallIncomingWebhookEvent::object
27
+
28
+ def initialize: (
29
+ id: String,
30
+ created_at: Integer,
31
+ data: OpenAI::Webhooks::RealtimeCallIncomingWebhookEvent::Data,
32
+ ?object: OpenAI::Models::Webhooks::RealtimeCallIncomingWebhookEvent::object,
33
+ ?type: :"realtime.call.incoming"
34
+ ) -> void
35
+
36
+ def to_hash: -> {
37
+ id: String,
38
+ created_at: Integer,
39
+ data: OpenAI::Webhooks::RealtimeCallIncomingWebhookEvent::Data,
40
+ type: :"realtime.call.incoming",
41
+ object: OpenAI::Models::Webhooks::RealtimeCallIncomingWebhookEvent::object
42
+ }
43
+
44
+ type data =
45
+ {
46
+ call_id: String,
47
+ sip_headers: ::Array[OpenAI::Webhooks::RealtimeCallIncomingWebhookEvent::Data::SipHeader]
48
+ }
49
+
50
+ class Data < OpenAI::Internal::Type::BaseModel
51
+ attr_accessor call_id: String
52
+
53
+ attr_accessor sip_headers: ::Array[OpenAI::Webhooks::RealtimeCallIncomingWebhookEvent::Data::SipHeader]
54
+
55
+ def initialize: (
56
+ call_id: String,
57
+ sip_headers: ::Array[OpenAI::Webhooks::RealtimeCallIncomingWebhookEvent::Data::SipHeader]
58
+ ) -> void
59
+
60
+ def to_hash: -> {
61
+ call_id: String,
62
+ sip_headers: ::Array[OpenAI::Webhooks::RealtimeCallIncomingWebhookEvent::Data::SipHeader]
63
+ }
64
+
65
+ type sip_header = { name: String, value: String }
66
+
67
+ class SipHeader < OpenAI::Internal::Type::BaseModel
68
+ attr_accessor name: String
69
+
70
+ attr_accessor value: String
71
+
72
+ def initialize: (name: String, value: String) -> void
73
+
74
+ def to_hash: -> { name: String, value: String }
75
+ end
76
+ end
77
+
78
+ type object = :event
79
+
80
+ module Object
81
+ extend OpenAI::Internal::Type::Enum
82
+
83
+ EVENT: :event
84
+
85
+ def self?.values: -> ::Array[OpenAI::Models::Webhooks::RealtimeCallIncomingWebhookEvent::object]
86
+ end
87
+ end
88
+ end
89
+ end
90
+ end
@@ -12,6 +12,7 @@ module OpenAI
12
12
  | OpenAI::Webhooks::FineTuningJobCancelledWebhookEvent
13
13
  | OpenAI::Webhooks::FineTuningJobFailedWebhookEvent
14
14
  | OpenAI::Webhooks::FineTuningJobSucceededWebhookEvent
15
+ | OpenAI::Webhooks::RealtimeCallIncomingWebhookEvent
15
16
  | OpenAI::Webhooks::ResponseCancelledWebhookEvent
16
17
  | OpenAI::Webhooks::ResponseCompletedWebhookEvent
17
18
  | OpenAI::Webhooks::ResponseFailedWebhookEvent
@@ -161,6 +161,8 @@ module OpenAI
161
161
 
162
162
  class OtherFileChunkingStrategyObject = OpenAI::Models::OtherFileChunkingStrategyObject
163
163
 
164
+ module Realtime = OpenAI::Models::Realtime
165
+
164
166
  class Reasoning = OpenAI::Models::Reasoning
165
167
 
166
168
  module ReasoningEffort = OpenAI::Models::ReasoningEffort
@@ -0,0 +1,15 @@
1
+ module OpenAI
2
+ module Resources
3
+ class Realtime
4
+ class ClientSecrets
5
+ def create: (
6
+ ?expires_after: OpenAI::Realtime::ClientSecretCreateParams::ExpiresAfter,
7
+ ?session: OpenAI::Models::Realtime::ClientSecretCreateParams::session,
8
+ ?request_options: OpenAI::request_opts
9
+ ) -> OpenAI::Models::Realtime::ClientSecretCreateResponse
10
+
11
+ def initialize: (client: OpenAI::Client) -> void
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,9 @@
1
+ module OpenAI
2
+ module Resources
3
+ class Realtime
4
+ attr_reader client_secrets: OpenAI::Resources::Realtime::ClientSecrets
5
+
6
+ def initialize: (client: OpenAI::Client) -> void
7
+ end
8
+ end
9
+ end
@@ -15,6 +15,7 @@ module OpenAI
15
15
  | OpenAI::Webhooks::FineTuningJobCancelledWebhookEvent
16
16
  | OpenAI::Webhooks::FineTuningJobFailedWebhookEvent
17
17
  | OpenAI::Webhooks::FineTuningJobSucceededWebhookEvent
18
+ | OpenAI::Webhooks::RealtimeCallIncomingWebhookEvent
18
19
  | OpenAI::Webhooks::ResponseCancelledWebhookEvent
19
20
  | OpenAI::Webhooks::ResponseCompletedWebhookEvent
20
21
  | OpenAI::Webhooks::ResponseFailedWebhookEvent