openai 0.103.0 → 0.105.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 (407) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +98 -0
  3. data/README.md +23 -1
  4. data/lib/openai/client.rb +3 -386
  5. data/lib/openai/helpers/admin/organization/projects/api_keys.rb +42 -0
  6. data/lib/openai/helpers/agents/session_stream_resource.rb +60 -0
  7. data/lib/openai/helpers/beta/agents/artifacts.rb +18 -0
  8. data/lib/openai/helpers/beta/agents/files.rb +41 -0
  9. data/lib/openai/helpers/client_runtime.rb +391 -0
  10. data/lib/openai/helpers/files.rb +47 -0
  11. data/lib/openai/helpers/live/websocket.rb +8 -57
  12. data/lib/openai/helpers/models/chat/parsed.rb +32 -0
  13. data/lib/openai/helpers/models/responses/parsed.rb +30 -0
  14. data/lib/openai/helpers/models/responses/response.rb +32 -0
  15. data/lib/openai/helpers/models/webhooks/webhook_endpoint_with_secret.rb +20 -0
  16. data/lib/openai/helpers/realtime/client_extension.rb +1 -2
  17. data/lib/openai/helpers/realtime/connection_manager.rb +1 -1
  18. data/lib/openai/helpers/realtime/translation.rb +7 -50
  19. data/lib/openai/helpers/responses_websocket/client_extension.rb +1 -2
  20. data/lib/openai/helpers/streaming/chat_completion_resource.rb +36 -0
  21. data/lib/openai/helpers/streaming/response_stream.rb +1 -16
  22. data/lib/openai/helpers/streaming/response_stream_resource.rb +78 -0
  23. data/lib/openai/helpers/vector_stores/file_batches.rb +188 -0
  24. data/lib/openai/helpers/vector_stores/files.rb +198 -0
  25. data/lib/openai/helpers/websocket/client_request.rb +31 -6
  26. data/lib/openai/helpers/websocket/connection.rb +58 -0
  27. data/lib/openai/helpers/websocket/connection_manager.rb +4 -2
  28. data/lib/openai/helpers/websocket/protocol.rb +2 -1
  29. data/lib/openai/helpers/websocket/resource.rb +54 -0
  30. data/lib/openai/helpers/websocket/typed_connection.rb +95 -0
  31. data/lib/openai/helpers/websocket.rb +4 -0
  32. data/lib/openai/models/admin/organization/audit_log_list_response.rb +5 -3
  33. data/lib/openai/models/admin/organization/external_storage_configuration.rb +5 -3
  34. data/lib/openai/models/admin/organization/external_storage_create_params.rb +33 -3
  35. data/lib/openai/models/admin/organization/oci_external_storage_provider.rb +37 -0
  36. data/lib/openai/models/admin/organization/project_residency.rb +3 -0
  37. data/lib/openai/models/admin/organization/projects/api_key_update_params.rb +64 -0
  38. data/lib/openai/models/admin/organization/projects/api_key_update_scopes_params.rb +34 -0
  39. data/lib/openai/models/admin/organization/usage_decisions_params.rb +177 -0
  40. data/lib/openai/models/admin/organization/usage_decisions_response.rb +351 -0
  41. data/lib/openai/models/audio/speech_create_params.rb +6 -3
  42. data/lib/openai/models/audio/translation_create_response.rb +0 -1
  43. data/lib/openai/models/audio/voice.rb +17 -2
  44. data/lib/openai/models/audio/voice_create_params.rb +100 -3
  45. data/lib/openai/models/beta/agent_create_params.rb +4 -2
  46. data/lib/openai/models/beta/agent_list_params.rb +4 -4
  47. data/lib/openai/models/beta/agent_session.rb +37 -1
  48. data/lib/openai/models/beta/agent_update_params.rb +4 -2
  49. data/lib/openai/models/beta/agents/environment_list_params.rb +7 -7
  50. data/lib/openai/models/beta/agents/session_create_params.rb +39 -3
  51. data/lib/openai/models/beta/agents/session_list_params.rb +7 -10
  52. data/lib/openai/models/beta/agents/session_update_params.rb +33 -1
  53. data/lib/openai/models/beta/agents/sessions/artifact_list_params.rb +11 -11
  54. data/lib/openai/models/beta/agents/vault_list_params.rb +23 -13
  55. data/lib/openai/models/beta/agents/vault_status_filter.rb +1 -3
  56. data/lib/openai/models/beta/agents/vault_update_params.rb +47 -0
  57. data/lib/openai/models/beta/agents/vaults/credential_list_params.rb +23 -13
  58. data/lib/openai/models/beta/beta_response.rb +23 -2
  59. data/lib/openai/models/beta/beta_response_error.rb +19 -1
  60. data/lib/openai/models/beta/beta_response_input_item.rb +107 -1
  61. data/lib/openai/models/beta/beta_response_item.rb +107 -1
  62. data/lib/openai/models/beta/beta_response_output_item.rb +107 -1
  63. data/lib/openai/models/beta/beta_responses_client_event.rb +23 -2
  64. data/lib/openai/models/beta/response_compact_params.rb +21 -0
  65. data/lib/openai/models/beta/response_create_params.rb +23 -2
  66. data/lib/openai/models/beta/session_turn_error.rb +3 -0
  67. data/lib/openai/models/chat/chat_completion_audio_param.rb +3 -3
  68. data/lib/openai/models/chat/chat_completion_message.rb +0 -8
  69. data/lib/openai/models/chat/chat_completion_message_function_tool_call.rb +0 -8
  70. data/lib/openai/models/chat/completion_create_params.rb +5 -12
  71. data/lib/openai/models/chat_model.rb +21 -0
  72. data/lib/openai/models/conversations/conversation_item.rb +107 -1
  73. data/lib/openai/models/decision.rb +17 -2
  74. data/lib/openai/models/decision_create_params.rb +29 -12
  75. data/lib/openai/models/decision_input_image.rb +4 -3
  76. data/lib/openai/models/decision_input_message.rb +4 -4
  77. data/lib/openai/models/decision_input_part.rb +3 -2
  78. data/lib/openai/models/image_edit_completed_event.rb +15 -3
  79. data/lib/openai/models/image_edit_params.rb +28 -5
  80. data/lib/openai/models/image_edit_partial_image_event.rb +1 -2
  81. data/lib/openai/models/image_gen_completed_event.rb +15 -3
  82. data/lib/openai/models/image_gen_partial_image_event.rb +1 -2
  83. data/lib/openai/models/image_generate_params.rb +28 -5
  84. data/lib/openai/models/images_response.rb +15 -3
  85. data/lib/openai/models/live/built_in_voice.rb +1 -0
  86. data/lib/openai/models/live/client_event.rb +14 -2
  87. data/lib/openai/models/live/decision_create_event.rb +26 -0
  88. data/lib/openai/models/live/decision_event.rb +117 -0
  89. data/lib/openai/models/live/decision_item_create_event.rb +194 -0
  90. data/lib/openai/models/live/decision_item_created_event.rb +202 -0
  91. data/lib/openai/models/live/decision_item_delete_event.rb +38 -0
  92. data/lib/openai/models/live/decision_item_deleted_event.rb +46 -0
  93. data/lib/openai/models/live/decision_trigger.rb +244 -0
  94. data/lib/openai/models/live/decisions_delegation_config.rb +201 -0
  95. data/lib/openai/models/live/decisions_delegation_update_config.rb +208 -0
  96. data/lib/openai/models/live/delegation_created_event.rb +10 -10
  97. data/lib/openai/models/live/fork_client_event.rb +14 -2
  98. data/lib/openai/models/live/fork_server_event.rb +17 -2
  99. data/lib/openai/models/live/media_session_config.rb +47 -11
  100. data/lib/openai/models/live/output_audio_fixture_play_event.rb +48 -0
  101. data/lib/openai/models/live/output_audio_fixture_played_event.rb +42 -0
  102. data/lib/openai/models/live/output_audio_fixture_playing_event.rb +41 -0
  103. data/lib/openai/models/live/server_event.rb +17 -2
  104. data/lib/openai/models/live/session_accept_params.rb +47 -11
  105. data/lib/openai/models/live/session_config.rb +47 -11
  106. data/lib/openai/models/live/session_resource.rb +47 -11
  107. data/lib/openai/models/live/session_update_config.rb +38 -6
  108. data/lib/openai/models/live/session_update_event.rb +8 -8
  109. data/lib/openai/models/live/sideband_client_event.rb +57 -0
  110. data/lib/openai/models/live/sideband_server_event.rb +78 -0
  111. data/lib/openai/models/realtime/realtime_audio_config_output.rb +6 -3
  112. data/lib/openai/models/realtime/realtime_response_create_audio_output.rb +6 -3
  113. data/lib/openai/models/realtime/realtime_response_status.rb +10 -1
  114. data/lib/openai/models/response_format_json_schema.rb +1 -1
  115. data/lib/openai/models/responses/function_tool.rb +8 -6
  116. data/lib/openai/models/responses/response.rb +2 -23
  117. data/lib/openai/models/responses/response_compact_params.rb +21 -0
  118. data/lib/openai/models/responses/response_create_params.rb +3 -6
  119. data/lib/openai/models/responses/response_error.rb +19 -1
  120. data/lib/openai/models/responses/response_format_text_config.rb +0 -4
  121. data/lib/openai/models/responses/response_function_tool_call.rb +0 -8
  122. data/lib/openai/models/responses/response_input_item.rb +107 -1
  123. data/lib/openai/models/responses/response_item.rb +107 -1
  124. data/lib/openai/models/responses/response_output_item.rb +107 -1
  125. data/lib/openai/models/responses/response_output_text.rb +0 -8
  126. data/lib/openai/models/responses/responses_client_event.rb +2 -2
  127. data/lib/openai/models/safety/safety_alert.rb +12 -1
  128. data/lib/openai/models/video_create_error.rb +19 -1
  129. data/lib/openai/models/webhooks/unwrap_webhook_event.rb +4 -4
  130. data/lib/openai/models/webhooks/webhook_endpoint_with_secret.rb +0 -9
  131. data/lib/openai/resources/admin/organization/external_storage.rb +1 -1
  132. data/lib/openai/resources/admin/organization/projects/api_keys.rb +61 -0
  133. data/lib/openai/resources/admin/organization/usage.rb +67 -0
  134. data/lib/openai/resources/audio/speech.rb +2 -1
  135. data/lib/openai/resources/audio/voices.rb +10 -10
  136. data/lib/openai/resources/beta/agents/environments/files.rb +3 -31
  137. data/lib/openai/resources/beta/agents/environments.rb +3 -3
  138. data/lib/openai/resources/beta/agents/sessions/artifacts.rb +5 -11
  139. data/lib/openai/resources/beta/agents/sessions.rb +20 -56
  140. data/lib/openai/resources/beta/agents/vaults/credentials.rb +10 -6
  141. data/lib/openai/resources/beta/agents/vaults.rb +45 -6
  142. data/lib/openai/resources/beta/agents.rb +6 -4
  143. data/lib/openai/resources/beta/responses.rb +2 -2
  144. data/lib/openai/resources/chat/completions.rb +11 -37
  145. data/lib/openai/resources/decisions.rb +9 -15
  146. data/lib/openai/resources/files.rb +0 -39
  147. data/lib/openai/resources/images.rb +50 -12
  148. data/lib/openai/resources/live/forks.rb +19 -0
  149. data/lib/openai/resources/live/sideband.rb +19 -0
  150. data/lib/openai/resources/live.rb +19 -0
  151. data/lib/openai/resources/realtime/translations.rb +19 -0
  152. data/lib/openai/resources/realtime.rb +19 -0
  153. data/lib/openai/resources/responses.rb +44 -95
  154. data/lib/openai/resources/vector_stores/file_batches.rb +0 -178
  155. data/lib/openai/resources/vector_stores/files.rb +0 -188
  156. data/lib/openai/resources/webhooks.rb +13 -29
  157. data/lib/openai/version.rb +1 -1
  158. data/lib/openai.rb +31 -0
  159. data/rbi/openai/client.rbi +0 -103
  160. data/rbi/openai/helpers/admin/organization/projects/api_keys.rbi +25 -0
  161. data/rbi/openai/helpers/beta/agents/artifacts.rbi +25 -0
  162. data/rbi/openai/helpers/beta/agents/files.rbi +48 -0
  163. data/rbi/openai/helpers/client_runtime.rbi +108 -0
  164. data/rbi/openai/helpers/files.rbi +25 -0
  165. data/rbi/openai/helpers/models/chat/parsed.rbi +21 -0
  166. data/rbi/openai/helpers/models/responses/parsed.rbi +19 -0
  167. data/rbi/openai/helpers/models/responses/response.rbi +15 -0
  168. data/rbi/openai/helpers/streaming/response_stream.rbi +301 -0
  169. data/rbi/openai/helpers/vector_stores/file_batches.rbi +102 -0
  170. data/rbi/openai/helpers/vector_stores/files.rbi +122 -0
  171. data/rbi/openai/helpers/websocket.rbi +82 -0
  172. data/rbi/openai/models/admin/organization/audit_log_list_response.rbi +6 -3
  173. data/rbi/openai/models/admin/organization/external_storage_configuration.rbi +4 -2
  174. data/rbi/openai/models/admin/organization/external_storage_create_params.rbi +63 -4
  175. data/rbi/openai/models/admin/organization/oci_external_storage_provider.rbi +71 -0
  176. data/rbi/openai/models/admin/organization/project_residency.rbi +12 -0
  177. data/rbi/openai/models/admin/organization/projects/api_key_update_params.rbi +110 -0
  178. data/rbi/openai/models/admin/organization/projects/api_key_update_scopes_params.rbi +72 -0
  179. data/rbi/openai/models/admin/organization/usage_decisions_params.rbi +229 -0
  180. data/rbi/openai/models/admin/organization/usage_decisions_response.rbi +479 -0
  181. data/rbi/openai/models/audio/speech_create_params.rbi +6 -3
  182. data/rbi/openai/models/audio/voice.rbi +21 -2
  183. data/rbi/openai/models/audio/voice_create_params.rbi +149 -4
  184. data/rbi/openai/models/beta/agent_create_params.rbi +4 -2
  185. data/rbi/openai/models/beta/agent_list_params.rbi +8 -5
  186. data/rbi/openai/models/beta/agent_session.rbi +64 -1
  187. data/rbi/openai/models/beta/agent_update_params.rbi +4 -2
  188. data/rbi/openai/models/beta/agents/environment_list_params.rbi +7 -7
  189. data/rbi/openai/models/beta/agents/session_create_params.rbi +62 -2
  190. data/rbi/openai/models/beta/agents/session_list_params.rbi +11 -11
  191. data/rbi/openai/models/beta/agents/session_update_params.rbi +56 -0
  192. data/rbi/openai/models/beta/agents/sessions/artifact_list_params.rbi +19 -13
  193. data/rbi/openai/models/beta/agents/vault_list_params.rbi +30 -13
  194. data/rbi/openai/models/beta/agents/vault_status_filter.rbi +1 -3
  195. data/rbi/openai/models/beta/agents/vault_update_params.rbi +87 -0
  196. data/rbi/openai/models/beta/agents/vaults/credential_list_params.rbi +30 -13
  197. data/rbi/openai/models/beta/beta_response.rbi +2 -2
  198. data/rbi/openai/models/beta/beta_response_error.rbi +24 -3
  199. data/rbi/openai/models/beta/beta_response_input_item.rbi +191 -0
  200. data/rbi/openai/models/beta/beta_response_item.rbi +189 -0
  201. data/rbi/openai/models/beta/beta_response_output_item.rbi +191 -0
  202. data/rbi/openai/models/beta/beta_responses_client_event.rbi +2 -2
  203. data/rbi/openai/models/beta/response_create_params.rbi +2 -2
  204. data/rbi/openai/models/beta/session_turn_error.rbi +3 -0
  205. data/rbi/openai/models/chat/chat_completion_audio_param.rbi +3 -3
  206. data/rbi/openai/models/chat/chat_completion_message.rbi +0 -4
  207. data/rbi/openai/models/chat/chat_completion_message_function_tool_call.rbi +0 -4
  208. data/rbi/openai/models/chat/completion_create_params.rbi +63 -78
  209. data/rbi/openai/models/conversations/conversation_item.rbi +191 -0
  210. data/rbi/openai/models/decision.rbi +14 -1
  211. data/rbi/openai/models/decision_create_params.rbi +23 -12
  212. data/rbi/openai/models/decision_input_image.rbi +4 -3
  213. data/rbi/openai/models/decision_input_message.rbi +4 -4
  214. data/rbi/openai/models/decision_input_part.rbi +2 -1
  215. data/rbi/openai/models/image_edit_completed_event.rbi +16 -1
  216. data/rbi/openai/models/image_edit_params.rbi +26 -4
  217. data/rbi/openai/models/image_edit_partial_image_event.rbi +1 -0
  218. data/rbi/openai/models/image_gen_completed_event.rbi +16 -1
  219. data/rbi/openai/models/image_gen_partial_image_event.rbi +1 -0
  220. data/rbi/openai/models/image_generate_params.rbi +26 -4
  221. data/rbi/openai/models/images_response.rbi +15 -0
  222. data/rbi/openai/models/live/built_in_voice.rbi +1 -0
  223. data/rbi/openai/models/live/client_event.rbi +4 -0
  224. data/rbi/openai/models/live/decision_create_event.rbi +55 -0
  225. data/rbi/openai/models/live/decision_event.rbi +185 -0
  226. data/rbi/openai/models/live/decision_item_create_event.rbi +338 -0
  227. data/rbi/openai/models/live/decision_item_created_event.rbi +354 -0
  228. data/rbi/openai/models/live/decision_item_delete_event.rbi +66 -0
  229. data/rbi/openai/models/live/decision_item_deleted_event.rbi +77 -0
  230. data/rbi/openai/models/live/decision_trigger.rbi +465 -0
  231. data/rbi/openai/models/live/decisions_delegation_config.rbi +393 -0
  232. data/rbi/openai/models/live/decisions_delegation_update_config.rbi +412 -0
  233. data/rbi/openai/models/live/delegation_created_event.rbi +8 -10
  234. data/rbi/openai/models/live/fork_client_event.rbi +4 -0
  235. data/rbi/openai/models/live/fork_server_event.rbi +5 -0
  236. data/rbi/openai/models/live/media_session_config.rbi +95 -14
  237. data/rbi/openai/models/live/output_audio_fixture_play_event.rbi +76 -0
  238. data/rbi/openai/models/live/output_audio_fixture_played_event.rbi +73 -0
  239. data/rbi/openai/models/live/output_audio_fixture_playing_event.rbi +72 -0
  240. data/rbi/openai/models/live/server_event.rbi +5 -0
  241. data/rbi/openai/models/live/session_accept_params.rbi +88 -12
  242. data/rbi/openai/models/live/session_config.rbi +100 -14
  243. data/rbi/openai/models/live/session_resource.rbi +81 -10
  244. data/rbi/openai/models/live/session_update_config.rbi +86 -9
  245. data/rbi/openai/models/live/session_update_event.rbi +8 -8
  246. data/rbi/openai/models/live/sideband_client_event.rbi +40 -0
  247. data/rbi/openai/models/live/sideband_server_event.rbi +47 -0
  248. data/rbi/openai/models/realtime/realtime_audio_config_output.rbi +6 -3
  249. data/rbi/openai/models/realtime/realtime_response_create_audio_output.rbi +6 -3
  250. data/rbi/openai/models/realtime/realtime_response_status.rbi +13 -1
  251. data/rbi/openai/models/realtime/realtime_translation_input_audio_buffer_append_event.rbi +1 -1
  252. data/rbi/openai/models/realtime/realtime_translation_output_audio_delta_event.rbi +3 -3
  253. data/rbi/openai/models/realtime/realtime_translation_session_close_event.rbi +1 -1
  254. data/rbi/openai/models/realtime/realtime_translation_session_update_event.rbi +5 -1
  255. data/rbi/openai/models/responses/response.rbi +2 -7
  256. data/rbi/openai/models/responses/response_create_params.rbi +5 -9
  257. data/rbi/openai/models/responses/response_error.rbi +24 -3
  258. data/rbi/openai/models/responses/response_function_tool_call.rbi +0 -4
  259. data/rbi/openai/models/responses/response_function_web_search.rbi +21 -17
  260. data/rbi/openai/models/responses/response_input_item.rbi +191 -0
  261. data/rbi/openai/models/responses/response_item.rbi +189 -0
  262. data/rbi/openai/models/responses/response_output_item.rbi +191 -0
  263. data/rbi/openai/models/responses/response_output_text.rbi +0 -4
  264. data/rbi/openai/models/responses/responses_client_event.rbi +2 -2
  265. data/rbi/openai/models/safety/safety_alert.rbi +13 -1
  266. data/rbi/openai/models/video_create_error.rbi +24 -3
  267. data/rbi/openai/models/webhooks/unwrap_webhook_event.rbi +1 -1
  268. data/rbi/openai/resources/admin/organization/external_storage.rbi +2 -1
  269. data/rbi/openai/resources/admin/organization/projects/api_keys.rbi +48 -0
  270. data/rbi/openai/resources/admin/organization/usage.rbi +56 -0
  271. data/rbi/openai/resources/audio/speech.rbi +2 -1
  272. data/rbi/openai/resources/audio/voices.rbi +13 -10
  273. data/rbi/openai/resources/beta/agents/environments/files.rbi +3 -33
  274. data/rbi/openai/resources/beta/agents/environments.rbi +3 -3
  275. data/rbi/openai/resources/beta/agents/sessions/artifacts.rbi +5 -13
  276. data/rbi/openai/resources/beta/agents/sessions.rbi +15 -4
  277. data/rbi/openai/resources/beta/agents/vaults/credentials.rbi +9 -5
  278. data/rbi/openai/resources/beta/agents/vaults.rbi +34 -5
  279. data/rbi/openai/resources/beta/agents.rbi +6 -4
  280. data/rbi/openai/resources/beta/responses.rbi +2 -2
  281. data/rbi/openai/resources/chat/completions.rbi +26 -29
  282. data/rbi/openai/resources/decisions.rbi +9 -15
  283. data/rbi/openai/resources/files.rbi +0 -18
  284. data/rbi/openai/resources/images.rbi +44 -8
  285. data/rbi/openai/resources/live/forks.rbi +17 -0
  286. data/rbi/openai/resources/live/sideband.rbi +17 -0
  287. data/rbi/openai/resources/live.rbi +17 -0
  288. data/rbi/openai/resources/realtime/translations.rbi +17 -0
  289. data/rbi/openai/resources/realtime.rbi +17 -0
  290. data/rbi/openai/resources/responses.rbi +41 -333
  291. data/rbi/openai/resources/vector_stores/file_batches.rbi +0 -93
  292. data/rbi/openai/resources/vector_stores/files.rbi +0 -113
  293. data/rbi/openai/resources/webhooks.rbi +1 -1
  294. data/sig/openai/client.rbs +0 -50
  295. data/sig/openai/helpers/admin/organization/projects/api_keys.rbs +18 -0
  296. data/sig/openai/helpers/beta/agents/artifacts.rbs +17 -0
  297. data/sig/openai/helpers/beta/agents/files.rbs +30 -0
  298. data/sig/openai/helpers/client_runtime.rbs +53 -0
  299. data/sig/openai/helpers/files.rbs +12 -0
  300. data/sig/openai/helpers/models/responses/response.rbs +9 -0
  301. data/sig/openai/helpers/streaming/response_stream.rbs +37 -0
  302. data/sig/openai/helpers/vector_stores/file_batches.rbs +38 -0
  303. data/sig/openai/helpers/vector_stores/files.rbs +43 -0
  304. data/sig/openai/helpers/websocket.rbs +40 -0
  305. data/sig/openai/models/admin/organization/audit_log_list_response.rbs +1 -0
  306. data/sig/openai/models/admin/organization/external_storage_configuration.rbs +1 -0
  307. data/sig/openai/models/admin/organization/external_storage_create_params.rbs +33 -0
  308. data/sig/openai/models/admin/organization/oci_external_storage_provider.rbs +34 -0
  309. data/sig/openai/models/admin/organization/project_residency.rbs +6 -0
  310. data/sig/openai/models/admin/organization/projects/api_key_update_params.rbs +77 -0
  311. data/sig/openai/models/admin/organization/projects/api_key_update_scopes_params.rbs +38 -0
  312. data/sig/openai/models/admin/organization/usage_decisions_params.rbs +170 -0
  313. data/sig/openai/models/admin/organization/usage_decisions_response.rbs +319 -0
  314. data/sig/openai/models/audio/speech_create_params.rbs +4 -2
  315. data/sig/openai/models/audio/voice.rbs +21 -3
  316. data/sig/openai/models/audio/voice_create_params.rbs +90 -1
  317. data/sig/openai/models/beta/agent_create_params.rbs +4 -2
  318. data/sig/openai/models/beta/agent_list_params.rbs +9 -6
  319. data/sig/openai/models/beta/agent_session.rbs +36 -2
  320. data/sig/openai/models/beta/agent_update_params.rbs +4 -2
  321. data/sig/openai/models/beta/agents/environment_list_params.rbs +9 -9
  322. data/sig/openai/models/beta/agents/session_create_params.rbs +29 -2
  323. data/sig/openai/models/beta/agents/session_list_params.rbs +12 -12
  324. data/sig/openai/models/beta/agents/session_update_params.rbs +23 -0
  325. data/sig/openai/models/beta/agents/sessions/artifact_list_params.rbs +21 -15
  326. data/sig/openai/models/beta/agents/vault_list_params.rbs +32 -14
  327. data/sig/openai/models/beta/agents/vault_update_params.rbs +54 -0
  328. data/sig/openai/models/beta/agents/vaults/credential_list_params.rbs +32 -14
  329. data/sig/openai/models/beta/beta_response.rbs +2 -2
  330. data/sig/openai/models/beta/beta_response_error.rbs +19 -3
  331. data/sig/openai/models/beta/beta_response_input_item.rbs +110 -0
  332. data/sig/openai/models/beta/beta_response_item.rbs +110 -0
  333. data/sig/openai/models/beta/beta_response_output_item.rbs +110 -0
  334. data/sig/openai/models/beta/beta_responses_client_event.rbs +2 -2
  335. data/sig/openai/models/beta/response_create_params.rbs +2 -2
  336. data/sig/openai/models/beta/session_turn_error.rbs +4 -0
  337. data/sig/openai/models/chat/chat_completion_audio_param.rbs +2 -2
  338. data/sig/openai/models/chat/completion_create_params.rbs +2 -2
  339. data/sig/openai/models/conversations/conversation_item.rbs +110 -0
  340. data/sig/openai/models/decision.rbs +13 -0
  341. data/sig/openai/models/decision_create_params.rbs +19 -8
  342. data/sig/openai/models/decision_input_image.rbs +2 -2
  343. data/sig/openai/models/decision_input_message.rbs +2 -2
  344. data/sig/openai/models/image_edit_completed_event.rbs +14 -2
  345. data/sig/openai/models/image_edit_params.rbs +27 -6
  346. data/sig/openai/models/image_gen_completed_event.rbs +14 -2
  347. data/sig/openai/models/image_generate_params.rbs +27 -6
  348. data/sig/openai/models/images_response.rbs +12 -0
  349. data/sig/openai/models/live/built_in_voice.rbs +2 -0
  350. data/sig/openai/models/live/client_event.rbs +4 -0
  351. data/sig/openai/models/live/decision_create_event.rbs +18 -0
  352. data/sig/openai/models/live/decision_event.rbs +102 -0
  353. data/sig/openai/models/live/decision_item_create_event.rbs +183 -0
  354. data/sig/openai/models/live/decision_item_created_event.rbs +195 -0
  355. data/sig/openai/models/live/decision_item_delete_event.rbs +33 -0
  356. data/sig/openai/models/live/decision_item_deleted_event.rbs +49 -0
  357. data/sig/openai/models/live/decision_trigger.rbs +234 -0
  358. data/sig/openai/models/live/decisions_delegation_config.rbs +195 -0
  359. data/sig/openai/models/live/decisions_delegation_update_config.rbs +202 -0
  360. data/sig/openai/models/live/delegation_created_event.rbs +6 -7
  361. data/sig/openai/models/live/fork_client_event.rbs +4 -0
  362. data/sig/openai/models/live/fork_server_event.rbs +5 -0
  363. data/sig/openai/models/live/media_session_config.rbs +58 -11
  364. data/sig/openai/models/live/output_audio_fixture_play_event.rbs +42 -0
  365. data/sig/openai/models/live/output_audio_fixture_played_event.rbs +44 -0
  366. data/sig/openai/models/live/output_audio_fixture_playing_event.rbs +44 -0
  367. data/sig/openai/models/live/server_event.rbs +5 -0
  368. data/sig/openai/models/live/session_accept_params.rbs +57 -10
  369. data/sig/openai/models/live/session_config.rbs +58 -11
  370. data/sig/openai/models/live/session_resource.rbs +57 -10
  371. data/sig/openai/models/live/session_update_config.rbs +54 -3
  372. data/sig/openai/models/live/session_update_event.rbs +6 -6
  373. data/sig/openai/models/live/sideband_client_event.rbs +26 -0
  374. data/sig/openai/models/live/sideband_server_event.rbs +33 -0
  375. data/sig/openai/models/realtime/realtime_audio_config_output.rbs +6 -3
  376. data/sig/openai/models/realtime/realtime_response_create_audio_output.rbs +6 -3
  377. data/sig/openai/models/realtime/realtime_response_status.rbs +15 -3
  378. data/sig/openai/models/responses/response.rbs +2 -4
  379. data/sig/openai/models/responses/response_create_params.rbs +2 -2
  380. data/sig/openai/models/responses/response_error.rbs +19 -3
  381. data/sig/openai/models/responses/response_input_item.rbs +110 -0
  382. data/sig/openai/models/responses/response_item.rbs +110 -0
  383. data/sig/openai/models/responses/response_output_item.rbs +110 -0
  384. data/sig/openai/models/responses/responses_client_event.rbs +2 -2
  385. data/sig/openai/models/safety/safety_alert.rbs +12 -2
  386. data/sig/openai/models/video_create_error.rbs +19 -3
  387. data/sig/openai/models/webhooks/unwrap_webhook_event.rbs +1 -1
  388. data/sig/openai/resources/admin/organization/projects/api_keys.rbs +8 -0
  389. data/sig/openai/resources/admin/organization/usage.rbs +15 -0
  390. data/sig/openai/resources/beta/agents/environments/files.rbs +0 -17
  391. data/sig/openai/resources/beta/agents/sessions/artifacts.rbs +2 -6
  392. data/sig/openai/resources/beta/agents/sessions.rbs +4 -1
  393. data/sig/openai/resources/beta/agents/vaults/credentials.rbs +2 -1
  394. data/sig/openai/resources/beta/agents/vaults.rbs +9 -1
  395. data/sig/openai/resources/beta/agents.rbs +1 -1
  396. data/sig/openai/resources/files.rbs +0 -7
  397. data/sig/openai/resources/images.rbs +4 -0
  398. data/sig/openai/resources/live/forks.rbs +8 -0
  399. data/sig/openai/resources/live/sideband.rbs +8 -0
  400. data/sig/openai/resources/live.rbs +7 -0
  401. data/sig/openai/resources/realtime/translations.rbs +7 -0
  402. data/sig/openai/resources/realtime.rbs +7 -0
  403. data/sig/openai/resources/responses.rbs +7 -31
  404. data/sig/openai/resources/vector_stores/file_batches.rbs +0 -31
  405. data/sig/openai/resources/vector_stores/files.rbs +0 -36
  406. data/sig/openai/resources/webhooks.rbs +1 -1
  407. metadata +89 -1
@@ -173,7 +173,7 @@ module OpenAI
173
173
  # @param safety_identifier [String, nil]
174
174
  # Body param: A stable identifier used to help detect users of your application
175
175
  # that may be violating OpenAI's usage policies. The IDs should be a string that
176
- # uniquely identifies each user, with a maximum length of 64 characters. We
176
+ # uniquely identifies each user, with a maximum length of 128 characters. We
177
177
  # recommend hashing their username or email address, in order to avoid sending us
178
178
  # any identifying information.
179
179
  # [Learn more](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers).
@@ -474,7 +474,7 @@ module OpenAI
474
474
  # @param safety_identifier [String, nil]
475
475
  # Body param: A stable identifier used to help detect users of your application
476
476
  # that may be violating OpenAI's usage policies. The IDs should be a string that
477
- # uniquely identifies each user, with a maximum length of 64 characters. We
477
+ # uniquely identifies each user, with a maximum length of 128 characters. We
478
478
  # recommend hashing their username or email address, in order to avoid sending us
479
479
  # any identifying information.
480
480
  # [Learn more](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers).
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative "../../helpers/streaming/chat_completion_resource"
3
4
  require_relative "../../helpers/structured_output/chat_completion_parser"
4
5
 
5
6
  module OpenAI
@@ -216,7 +217,7 @@ module OpenAI
216
217
  # @param safety_identifier [String, nil]
217
218
  # A stable identifier used to help detect users of your application that may be
218
219
  # violating OpenAI's usage policies. The IDs should be a string that uniquely
219
- # identifies each user, with a maximum length of 64 characters. We recommend
220
+ # identifies each user, with a maximum length of 128 characters. We recommend
220
221
  # hashing their username or email address, in order to avoid sending us any
221
222
  # identifying information.
222
223
  # [Learn more](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers).
@@ -350,41 +351,6 @@ module OpenAI
350
351
  )
351
352
  end
352
353
 
353
- def get_structured_output_models(parsed)
354
- OpenAI::Helpers::StructuredOutput::ChatCompletionParser.get_models(parsed)
355
- end
356
-
357
- def build_tools_with_models(tools, tool_models)
358
- OpenAI::Helpers::StructuredOutput::ChatCompletionParser.build_tools(tools, tool_models)
359
- end
360
-
361
- def stream(params)
362
- parsed, options = OpenAI::Chat::CompletionCreateParams.dump_request(params)
363
-
364
- parsed.store(:stream, true)
365
-
366
- response_format, tool_models = get_structured_output_models(parsed)
367
-
368
- input_tools = build_tools_with_models(parsed[:tools], tool_models)
369
-
370
- raw_stream = @client.request(
371
- method: :post,
372
- path: "chat/completions",
373
- headers: {"accept" => "text/event-stream"},
374
- body: parsed,
375
- stream: OpenAI::Internal::Stream,
376
- model: OpenAI::Chat::ChatCompletionChunk,
377
- security: {bearer_auth: true},
378
- options: options
379
- )
380
-
381
- OpenAI::Helpers::Streaming::ChatCompletionStream.new(
382
- raw_stream: raw_stream,
383
- response_format: response_format,
384
- input_tools: input_tools
385
- )
386
- end
387
-
388
354
  # See {OpenAI::Resources::Chat::Completions#create} for non-streaming counterpart.
389
355
  #
390
356
  # **Starting a new project?** We recommend trying
@@ -588,7 +554,7 @@ module OpenAI
588
554
  # @param safety_identifier [String, nil]
589
555
  # A stable identifier used to help detect users of your application that may be
590
556
  # violating OpenAI's usage policies. The IDs should be a string that uniquely
591
- # identifies each user, with a maximum length of 64 characters. We recommend
557
+ # identifies each user, with a maximum length of 128 characters. We recommend
592
558
  # hashing their username or email address, in order to avoid sending us any
593
559
  # identifying information.
594
560
  # [Learn more](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers).
@@ -842,6 +808,14 @@ module OpenAI
842
808
  )
843
809
  end
844
810
 
811
+ def get_structured_output_models(parsed)
812
+ OpenAI::Helpers::StructuredOutput::ChatCompletionParser.get_models(parsed)
813
+ end
814
+
815
+ def build_tools_with_models(tools, tool_models)
816
+ OpenAI::Helpers::StructuredOutput::ChatCompletionParser.build_tools(tools, tool_models)
817
+ end
818
+
845
819
  # @api private
846
820
  #
847
821
  # @param client [OpenAI::Client]
@@ -3,29 +3,23 @@
3
3
  module OpenAI
4
4
  module Resources
5
5
  class Decisions
6
- # Evaluate ordered classification and scoring questions against shared input.
7
- # Answers are returned in question order.
8
- #
9
- # Supply input as a string or user messages containing text and inline images.
10
- # Only user messages with `input_text` and `input_image` parts are supported;
11
- # non-user roles, function calls, files, audio, and item references are not
12
- # supported. Images require a data URL, not an external URL or file ID. At most
13
- # 128 images are allowed across the request.
14
- #
15
- # Each question can return a refusal instead of a scored answer. A refusal has
16
- # type `refusal` and the corresponding question name, or null if unnamed.
6
+ # Use this endpoint to quickly answer classification or scoring questions about
7
+ # some input. You can ask multiple questions in one request.
17
8
  #
18
9
  # @overload create(input:, model:, questions:, safety_identifier: nil, request_options: {})
19
10
  #
20
11
  # @param input [String, Array<OpenAI::Models::DecisionInputMessage>]
21
- # Shared evidence, as a string or an array of user messages containing text and
22
- # inline images. Non-user roles, function calls, function-call outputs, files,
23
- # audio, and item references are not supported. At most 128 image parts are
24
- # allowed across all messages in one request.
12
+ # The text or images to evaluate for every question. Provide a text string or user
13
+ # messages containing text and images. Images can be base64 data URLs or publicly
14
+ # accessible HTTP(S) URLs; at most 128 images are allowed across all messages in
15
+ # one request. Files, audio, tools, and item references are not supported.
25
16
  #
26
17
  # @param model [String]
18
+ # The model to use. Only `gpt-6-luna` is supported.
27
19
  #
28
20
  # @param questions [Array<OpenAI::Models::DecisionCreateParams::Question::Predicate, OpenAI::Models::DecisionCreateParams::Question::Choice, OpenAI::Models::DecisionCreateParams::Question::Score>]
21
+ # Ask 1–200 questions about the input. Each question can be a predicate, choice,
22
+ # or score. Answers come back in the same order.
29
23
  #
30
24
  # @param safety_identifier [String, nil]
31
25
  # Opaque caller-provided end-user identifier, scoped by the verified org. Match
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "../helpers/resource_polling"
4
-
5
3
  module OpenAI
6
4
  module Resources
7
5
  # Files are used to upload documents that can be used with features like
@@ -187,43 +185,6 @@ module OpenAI
187
185
  )
188
186
  end
189
187
 
190
- # Wait for an uploaded file to finish processing.
191
- #
192
- # The returned file may have an `error` status; callers should inspect the
193
- # status before using it. Polling intervals and the overall timeout are in
194
- # seconds. Finite timeouts include authentication and request replay time and
195
- # disable transport retries so the deadline remains strict. Set `timeout` to
196
- # `nil` to wait indefinitely and retain configured transport retries.
197
- #
198
- # @overload wait_for_processing(file_id, poll_interval: nil, timeout: 1800.0, request_options: {})
199
- #
200
- # @param file_id [String] The ID of the file to wait for.
201
- #
202
- # @param poll_interval [Integer, Float, nil] How often to retrieve the file. When omitted, the SDK honors the server's
203
- # polling hint and otherwise waits 5 seconds.
204
- #
205
- # @param timeout [Integer, Float, nil] Maximum total time to poll. Defaults to 30 minutes. Set to `nil` to wait
206
- # indefinitely.
207
- #
208
- # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
209
- #
210
- # @raise [ArgumentError, OpenAI::Errors::PollingError]
211
- # @return [OpenAI::Models::FileObject]
212
- def wait_for_processing(
213
- file_id,
214
- poll_interval: nil,
215
- timeout: OpenAI::Internal::Poller::DEFAULT_TIMEOUT,
216
- request_options: {}
217
- )
218
- OpenAI::Helpers::ResourcePolling.wait_for_file(
219
- self,
220
- file_id,
221
- poll_interval: poll_interval,
222
- timeout: timeout,
223
- request_options: request_options
224
- )
225
- end
226
-
227
188
  # @api private
228
189
  #
229
190
  # @param client [OpenAI::Client]
@@ -72,7 +72,7 @@ module OpenAI
72
72
  # metadata. Use `OpenAI::FilePart` when you need to override the filename or
73
73
  # content type.
74
74
  #
75
- # @overload edit(image:, prompt:, background: nil, input_fidelity: nil, mask: nil, model: nil, n: nil, output_compression: nil, output_format: nil, partial_images: nil, quality: nil, response_format: nil, size: nil, user: nil, request_options: {})
75
+ # @overload edit(image:, prompt:, background: nil, input_fidelity: nil, mask: nil, model: nil, n: nil, output_compression: nil, output_format: nil, partial_images: nil, quality: nil, response_format: nil, safety_identifier: nil, size: nil, user: nil, request_options: {})
76
76
  #
77
77
  # @param image [Pathname, StringIO, IO, String, OpenAI::FilePart, Array<Pathname, StringIO, IO, String, OpenAI::FilePart>]
78
78
  # The image(s) to edit. Must be a supported image file or an array of images.
@@ -157,6 +157,14 @@ module OpenAI
157
157
  # Legacy response format parameter for retired image models. Unsupported for GPT
158
158
  # image models, which always return base64-encoded images.
159
159
  #
160
+ # @param safety_identifier [String, nil]
161
+ # A stable identifier for an end user in your organization, used for safety
162
+ # monitoring and abuse detection. Hash a username or email address to avoid
163
+ # sending identifying information. A non-empty value takes precedence over the
164
+ # deprecated `user` parameter. If omitted, null, or empty, the API uses `user`
165
+ # when available.
166
+ # [Learn more](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers).
167
+ #
160
168
  # @param size [String, Symbol, OpenAI::Models::ImageEditParams::Size, nil]
161
169
  # The size of the generated images. Defaults to `auto`. For `gpt-image-2`,
162
170
  # `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
@@ -171,8 +179,9 @@ module OpenAI
171
179
  # models that allow automatic sizing.
172
180
  #
173
181
  # @param user [String]
174
- # A unique identifier representing your end-user, which can help OpenAI to monitor
175
- # and detect abuse.
182
+ # Deprecated: use `safety_identifier` instead. This parameter remains accepted for
183
+ # backward compatibility and is used when `safety_identifier` is omitted, null, or
184
+ # empty.
176
185
  # [Learn more](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers).
177
186
  #
178
187
  # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
@@ -187,6 +196,7 @@ module OpenAI
187
196
  raise ArgumentError.new(message)
188
197
  end
189
198
 
199
+ parsed.delete(:safety_identifier) if parsed[:safety_identifier].nil?
190
200
  @client.request(
191
201
  method: :post,
192
202
  path: "images/edits",
@@ -207,7 +217,7 @@ module OpenAI
207
217
  # metadata. Use `OpenAI::FilePart` when you need to override the filename or
208
218
  # content type.
209
219
  #
210
- # @overload edit_stream_raw(image:, prompt:, background: nil, input_fidelity: nil, mask: nil, model: nil, n: nil, output_compression: nil, output_format: nil, partial_images: nil, quality: nil, response_format: nil, size: nil, user: nil, request_options: {})
220
+ # @overload edit_stream_raw(image:, prompt:, background: nil, input_fidelity: nil, mask: nil, model: nil, n: nil, output_compression: nil, output_format: nil, partial_images: nil, quality: nil, response_format: nil, safety_identifier: nil, size: nil, user: nil, request_options: {})
211
221
  #
212
222
  # @param image [Pathname, StringIO, IO, String, OpenAI::FilePart, Array<Pathname, StringIO, IO, String, OpenAI::FilePart>]
213
223
  # The image(s) to edit. Must be a supported image file or an array of images.
@@ -292,6 +302,14 @@ module OpenAI
292
302
  # Legacy response format parameter for retired image models. Unsupported for GPT
293
303
  # image models, which always return base64-encoded images.
294
304
  #
305
+ # @param safety_identifier [String, nil]
306
+ # A stable identifier for an end user in your organization, used for safety
307
+ # monitoring and abuse detection. Hash a username or email address to avoid
308
+ # sending identifying information. A non-empty value takes precedence over the
309
+ # deprecated `user` parameter. If omitted, null, or empty, the API uses `user`
310
+ # when available.
311
+ # [Learn more](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers).
312
+ #
295
313
  # @param size [String, Symbol, OpenAI::Models::ImageEditParams::Size, nil]
296
314
  # The size of the generated images. Defaults to `auto`. For `gpt-image-2`,
297
315
  # `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
@@ -306,8 +324,9 @@ module OpenAI
306
324
  # models that allow automatic sizing.
307
325
  #
308
326
  # @param user [String]
309
- # A unique identifier representing your end-user, which can help OpenAI to monitor
310
- # and detect abuse.
327
+ # Deprecated: use `safety_identifier` instead. This parameter remains accepted for
328
+ # backward compatibility and is used when `safety_identifier` is omitted, null, or
329
+ # empty.
311
330
  # [Learn more](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers).
312
331
  #
313
332
  # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
@@ -323,6 +342,7 @@ module OpenAI
323
342
  end
324
343
 
325
344
  parsed.store(:stream, true)
345
+ parsed.delete(:safety_identifier) if parsed[:safety_identifier].nil?
326
346
  @client.request(
327
347
  method: :post,
328
348
  path: "images/edits",
@@ -344,7 +364,7 @@ module OpenAI
344
364
  # Creates an image given a prompt using a GPT Image model.
345
365
  # [Learn more](https://developers.openai.com/api/docs/guides/images-vision).
346
366
  #
347
- # @overload generate(prompt:, background: nil, model: nil, moderation: nil, n: nil, output_compression: nil, output_format: nil, partial_images: nil, quality: nil, response_format: nil, size: nil, style: nil, user: nil, request_options: {})
367
+ # @overload generate(prompt:, background: nil, model: nil, moderation: nil, n: nil, output_compression: nil, output_format: nil, partial_images: nil, quality: nil, response_format: nil, safety_identifier: nil, size: nil, style: nil, user: nil, request_options: {})
348
368
  #
349
369
  # @param prompt [String]
350
370
  # A text description of the desired image(s). The maximum length is 32000
@@ -406,6 +426,14 @@ module OpenAI
406
426
  # Legacy response format parameter for retired image models. Unsupported for GPT
407
427
  # image models, which always return base64-encoded images.
408
428
  #
429
+ # @param safety_identifier [String, nil]
430
+ # A stable identifier for an end user in your organization, used for safety
431
+ # monitoring and abuse detection. Hash a username or email address to avoid
432
+ # sending identifying information. A non-empty value takes precedence over the
433
+ # deprecated `user` parameter. If omitted, null, or empty, the API uses `user`
434
+ # when available.
435
+ # [Learn more](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers).
436
+ #
409
437
  # @param size [String, Symbol, OpenAI::Models::ImageGenerateParams::Size, nil]
410
438
  # The size of the generated images. For `gpt-image-2`, `gpt-image-2-2026-04-21`,
411
439
  # `gpt-image-2.5-sunburst`, `gpt-image-2.5-sunburst-2026-09-08`,
@@ -423,8 +451,9 @@ module OpenAI
423
451
  # models; describe the desired style in the prompt instead.
424
452
  #
425
453
  # @param user [String]
426
- # A unique identifier representing your end-user, which can help OpenAI to monitor
427
- # and detect abuse.
454
+ # Deprecated: use `safety_identifier` instead. This parameter remains accepted for
455
+ # backward compatibility and is used when `safety_identifier` is omitted, null, or
456
+ # empty.
428
457
  # [Learn more](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers).
429
458
  #
430
459
  # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
@@ -454,7 +483,7 @@ module OpenAI
454
483
  # Creates an image given a prompt using a GPT Image model.
455
484
  # [Learn more](https://developers.openai.com/api/docs/guides/images-vision).
456
485
  #
457
- # @overload generate_stream_raw(prompt:, background: nil, model: nil, moderation: nil, n: nil, output_compression: nil, output_format: nil, partial_images: nil, quality: nil, response_format: nil, size: nil, style: nil, user: nil, request_options: {})
486
+ # @overload generate_stream_raw(prompt:, background: nil, model: nil, moderation: nil, n: nil, output_compression: nil, output_format: nil, partial_images: nil, quality: nil, response_format: nil, safety_identifier: nil, size: nil, style: nil, user: nil, request_options: {})
458
487
  #
459
488
  # @param prompt [String]
460
489
  # A text description of the desired image(s). The maximum length is 32000
@@ -516,6 +545,14 @@ module OpenAI
516
545
  # Legacy response format parameter for retired image models. Unsupported for GPT
517
546
  # image models, which always return base64-encoded images.
518
547
  #
548
+ # @param safety_identifier [String, nil]
549
+ # A stable identifier for an end user in your organization, used for safety
550
+ # monitoring and abuse detection. Hash a username or email address to avoid
551
+ # sending identifying information. A non-empty value takes precedence over the
552
+ # deprecated `user` parameter. If omitted, null, or empty, the API uses `user`
553
+ # when available.
554
+ # [Learn more](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers).
555
+ #
519
556
  # @param size [String, Symbol, OpenAI::Models::ImageGenerateParams::Size, nil]
520
557
  # The size of the generated images. For `gpt-image-2`, `gpt-image-2-2026-04-21`,
521
558
  # `gpt-image-2.5-sunburst`, `gpt-image-2.5-sunburst-2026-09-08`,
@@ -533,8 +570,9 @@ module OpenAI
533
570
  # models; describe the desired style in the prompt instead.
534
571
  #
535
572
  # @param user [String]
536
- # A unique identifier representing your end-user, which can help OpenAI to monitor
537
- # and detect abuse.
573
+ # Deprecated: use `safety_identifier` instead. This parameter remains accepted for
574
+ # backward compatibility and is used when `safety_identifier` is omitted, null, or
575
+ # empty.
538
576
  # [Learn more](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers).
539
577
  #
540
578
  # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
@@ -1,9 +1,28 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative "../../helpers/websocket/resource"
4
+
3
5
  module OpenAI
4
6
  module Resources
5
7
  class Live
6
8
  class Forks
9
+ include OpenAI::WebSocket::Resource
10
+
11
+ # @api private
12
+ def __websocket_request(session_id, query: {})
13
+ {method: :get, path: ["live/sessions/%1$s/fork", session_id], query: query, security: {bearer_auth: true}}
14
+ end
15
+
16
+ # @api private
17
+ def __websocket_client_event
18
+ OpenAI::Models::Live::ForkClientEvent
19
+ end
20
+
21
+ # @api private
22
+ def __websocket_server_event
23
+ OpenAI::Models::Live::ForkServerEvent
24
+ end
25
+
7
26
  # @api private
8
27
  #
9
28
  # @param client [OpenAI::Client]
@@ -1,9 +1,28 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative "../../helpers/websocket/resource"
4
+
3
5
  module OpenAI
4
6
  module Resources
5
7
  class Live
6
8
  class Sideband
9
+ include OpenAI::WebSocket::Resource
10
+
11
+ # @api private
12
+ def __websocket_request(session_id, query: {})
13
+ {method: :get, path: ["live/sessions/%1$s/attach", session_id], query: query, security: {bearer_auth: true}}
14
+ end
15
+
16
+ # @api private
17
+ def __websocket_client_event
18
+ OpenAI::Models::Live::SidebandClientEvent
19
+ end
20
+
21
+ # @api private
22
+ def __websocket_server_event
23
+ OpenAI::Models::Live::SidebandServerEvent
24
+ end
25
+
7
26
  # @api private
8
27
  #
9
28
  # @param client [OpenAI::Client]
@@ -1,8 +1,27 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative "../helpers/websocket/resource"
4
+
3
5
  module OpenAI
4
6
  module Resources
5
7
  class Live
8
+ include OpenAI::WebSocket::Resource
9
+
10
+ # @api private
11
+ def __websocket_request(query: {})
12
+ {method: :get, path: "live/sessions", query: query, security: {bearer_auth: true}}
13
+ end
14
+
15
+ # @api private
16
+ def __websocket_client_event
17
+ OpenAI::Models::Live::ClientEvent
18
+ end
19
+
20
+ # @api private
21
+ def __websocket_server_event
22
+ OpenAI::Models::Live::ServerEvent
23
+ end
24
+
6
25
  # @return [OpenAI::Resources::Live::Sideband]
7
26
  attr_reader :sideband
8
27
 
@@ -1,9 +1,28 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative "../../helpers/websocket/resource"
4
+
3
5
  module OpenAI
4
6
  module Resources
5
7
  class Realtime
6
8
  class Translations
9
+ include OpenAI::WebSocket::Resource
10
+
11
+ # @api private
12
+ def __websocket_request(query: {})
13
+ {method: :get, path: "realtime/translations", query: query, security: {bearer_auth: true}}
14
+ end
15
+
16
+ # @api private
17
+ def __websocket_client_event
18
+ OpenAI::Models::Realtime::RealtimeTranslationClientEvent
19
+ end
20
+
21
+ # @api private
22
+ def __websocket_server_event
23
+ OpenAI::Models::Realtime::RealtimeTranslationServerEvent
24
+ end
25
+
7
26
  # @return [OpenAI::Resources::Realtime::Translations::ClientSecrets]
8
27
  attr_reader :client_secrets
9
28
 
@@ -1,8 +1,27 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative "../helpers/websocket/resource"
4
+
3
5
  module OpenAI
4
6
  module Resources
5
7
  class Realtime
8
+ include OpenAI::WebSocket::Resource
9
+
10
+ # @api private
11
+ def __websocket_request(query: {})
12
+ {method: :get, path: "realtime", query: query, security: {bearer_auth: true}}
13
+ end
14
+
15
+ # @api private
16
+ def __websocket_client_event
17
+ OpenAI::Models::Realtime::RealtimeClientEvent
18
+ end
19
+
20
+ # @api private
21
+ def __websocket_server_event
22
+ OpenAI::Models::Realtime::RealtimeServerEvent
23
+ end
24
+
6
25
  # @return [OpenAI::Resources::Realtime::ClientSecrets]
7
26
  attr_reader :client_secrets
8
27