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
@@ -15,16 +15,19 @@ module OpenAI
15
15
  )
16
16
  end
17
17
 
18
- # Shared evidence, as a string or an array of user messages containing text and
19
- # inline images. Non-user roles, function calls, function-call outputs, files,
20
- # audio, and item references are not supported. At most 128 image parts are
21
- # allowed across all messages in one request.
18
+ # The text or images to evaluate for every question. Provide a text string or user
19
+ # messages containing text and images. Images can be base64 data URLs or publicly
20
+ # accessible HTTP(S) URLs; at most 128 images are allowed across all messages in
21
+ # one request. Files, audio, tools, and item references are not supported.
22
22
  sig { returns(OpenAI::DecisionCreateParams::Input::Variants) }
23
23
  attr_accessor :input
24
24
 
25
+ # The model to use. Only `gpt-6-luna` is supported.
25
26
  sig { returns(String) }
26
27
  attr_accessor :model
27
28
 
29
+ # Ask 1–200 questions about the input. Each question can be a predicate, choice,
30
+ # or score. Answers come back in the same order.
28
31
  sig {
29
32
  returns(
30
33
  T::Array[
@@ -66,14 +69,17 @@ module OpenAI
66
69
  end
67
70
  def self.new(
68
71
 
69
- # Shared evidence, as a string or an array of user messages containing text and
70
- # inline images. Non-user roles, function calls, function-call outputs, files,
71
- # audio, and item references are not supported. At most 128 image parts are
72
- # allowed across all messages in one request.
72
+ # The text or images to evaluate for every question. Provide a text string or user
73
+ # messages containing text and images. Images can be base64 data URLs or publicly
74
+ # accessible HTTP(S) URLs; at most 128 images are allowed across all messages in
75
+ # one request. Files, audio, tools, and item references are not supported.
73
76
  input:,
74
77
 
78
+ # The model to use. Only `gpt-6-luna` is supported.
75
79
  model:,
76
80
 
81
+ # Ask 1–200 questions about the input. Each question can be a predicate, choice,
82
+ # or score. Answers come back in the same order.
77
83
  questions:,
78
84
 
79
85
  # Opaque caller-provided end-user identifier, scoped by the verified org. Match
@@ -104,10 +110,10 @@ module OpenAI
104
110
  def to_hash
105
111
  end
106
112
 
107
- # Shared evidence, as a string or an array of user messages containing text and
108
- # inline images. Non-user roles, function calls, function-call outputs, files,
109
- # audio, and item references are not supported. At most 128 image parts are
110
- # allowed across all messages in one request.
113
+ # The text or images to evaluate for every question. Provide a text string or user
114
+ # messages containing text and images. Images can be base64 data URLs or publicly
115
+ # accessible HTTP(S) URLs; at most 128 images are allowed across all messages in
116
+ # one request. Files, audio, tools, and item references are not supported.
111
117
  module Input
112
118
  extend OpenAI::Internal::Type::Union
113
119
 
@@ -157,6 +163,7 @@ module OpenAI
157
163
  sig { params(name: String).void }
158
164
  attr_writer :name
159
165
 
166
+ # Estimate how likely it is that a statement about the input is true.
160
167
  sig do
161
168
  params(
162
169
 
@@ -198,6 +205,7 @@ module OpenAI
198
205
  )
199
206
  end
200
207
 
208
+ # Provide between 2 and 255 choices. Each choice must be unique.
201
209
  sig { returns(T::Array[OpenAI::DecisionCreateParams::Question::Choice::Choice]) }
202
210
  attr_accessor :choices
203
211
 
@@ -214,6 +222,7 @@ module OpenAI
214
222
  sig { params(name: String).void }
215
223
  attr_writer :name
216
224
 
225
+ # Choose from the supplied options based on the input.
217
226
  sig do
218
227
  params(
219
228
 
@@ -229,6 +238,7 @@ module OpenAI
229
238
  end
230
239
  def self.new(
231
240
 
241
+ # Provide between 2 and 255 choices. Each choice must be unique.
232
242
  choices:,
233
243
 
234
244
  instructions:,
@@ -338,6 +348,7 @@ module OpenAI
338
348
  sig { params(name: String).void }
339
349
  attr_writer :name
340
350
 
351
+ # Rate the input against the supplied ordered levels.
341
352
  sig do
342
353
  params(
343
354
 
@@ -12,7 +12,7 @@ module OpenAI
12
12
  )
13
13
  end
14
14
 
15
- # A base64-encoded image in a data URL.
15
+ # A base64-encoded image in a data URL or a publicly accessible HTTP(S) image URL.
16
16
  sig { returns(String) }
17
17
  attr_accessor :image_url
18
18
 
@@ -24,7 +24,8 @@ module OpenAI
24
24
  sig { returns(T.nilable(OpenAI::DecisionInputImage::Detail::OrSymbol)) }
25
25
  attr_accessor :detail
26
26
 
27
- # An inline image. External URLs and file IDs are not supported.
27
+ # An image provided as a base64 data URL or a publicly accessible HTTP(S) URL.
28
+ # File IDs are not supported.
28
29
  sig do
29
30
  params(
30
31
 
@@ -38,7 +39,7 @@ module OpenAI
38
39
  end
39
40
  def self.new(
40
41
 
41
- # A base64-encoded image in a data URL.
42
+ # A base64-encoded image in a data URL or a publicly accessible HTTP(S) image URL.
42
43
  image_url:,
43
44
 
44
45
  # The image detail level, using the selected model's image profile. Defaults to
@@ -12,7 +12,7 @@ module OpenAI
12
12
  )
13
13
  end
14
14
 
15
- # Text evidence or an ordered list of text and inline image parts.
15
+ # Text evidence or an ordered list of text and image parts.
16
16
  sig { returns(OpenAI::DecisionInputMessage::Content::Variants) }
17
17
  attr_accessor :content
18
18
 
@@ -25,7 +25,7 @@ module OpenAI
25
25
  sig { params(type: OpenAI::DecisionInputMessage::Type::OrSymbol).void }
26
26
  attr_writer :type
27
27
 
28
- # A user message containing text or inline images.
28
+ # A user message containing text or images.
29
29
  sig do
30
30
  params(
31
31
 
@@ -39,7 +39,7 @@ module OpenAI
39
39
  end
40
40
  def self.new(
41
41
 
42
- # Text evidence or an ordered list of text and inline image parts.
42
+ # Text evidence or an ordered list of text and image parts.
43
43
  content:,
44
44
 
45
45
  type: nil,
@@ -60,7 +60,7 @@ module OpenAI
60
60
  def to_hash
61
61
  end
62
62
 
63
- # Text evidence or an ordered list of text and inline image parts.
63
+ # Text evidence or an ordered list of text and image parts.
64
64
  module Content
65
65
  extend OpenAI::Internal::Type::Union
66
66
 
@@ -3,7 +3,8 @@
3
3
  module OpenAI
4
4
  module Models
5
5
 
6
- # An inline image. External URLs and file IDs are not supported.
6
+ # An image provided as a base64 data URL or a publicly accessible HTTP(S) URL.
7
+ # File IDs are not supported.
7
8
  module DecisionInputPart
8
9
  extend OpenAI::Internal::Type::Union
9
10
 
@@ -48,6 +48,12 @@ module OpenAI
48
48
  sig { params(usage: OpenAI::ImageEditCompletedEvent::Usage::OrHash).void }
49
49
  attr_writer :usage
50
50
 
51
+ # The effective safety identifier used for safety monitoring and abuse detection.
52
+ # This is the non-empty `safety_identifier` from the request, or the deprecated
53
+ # `user` value when `safety_identifier` is omitted, null, or empty.
54
+ sig { returns(T.nilable(String)) }
55
+ attr_accessor :safety_identifier
56
+
51
57
  # Emitted when image editing has completed and the final image is available.
52
58
  sig do
53
59
  params(
@@ -66,6 +72,8 @@ module OpenAI
66
72
 
67
73
  usage: OpenAI::ImageEditCompletedEvent::Usage::OrHash,
68
74
 
75
+ safety_identifier: T.nilable(String),
76
+
69
77
  type: Symbol
70
78
  )
71
79
  .returns(T.attached_class)
@@ -94,6 +102,11 @@ module OpenAI
94
102
  # generation.
95
103
  usage:,
96
104
 
105
+ # The effective safety identifier used for safety monitoring and abuse detection.
106
+ # This is the non-empty `safety_identifier` from the request, or the deprecated
107
+ # `user` value when `safety_identifier` is omitted, null, or empty.
108
+ safety_identifier: nil,
109
+
97
110
  # The type of the event. Always `image_edit.completed`.
98
111
 
99
112
  type: :"image_edit.completed"
@@ -110,7 +123,8 @@ module OpenAI
110
123
  quality: OpenAI::ImageEditCompletedEvent::Quality::TaggedSymbol,
111
124
  size: OpenAI::ImageEditCompletedEvent::Size::Variants,
112
125
  type: Symbol,
113
- usage: OpenAI::ImageEditCompletedEvent::Usage
126
+ usage: OpenAI::ImageEditCompletedEvent::Usage,
127
+ safety_identifier: T.nilable(String)
114
128
  }
115
129
  )
116
130
  end
@@ -192,6 +206,7 @@ module OpenAI
192
206
  sig { returns(T::Array[OpenAI::ImageEditCompletedEvent::Size::TaggedSymbol]) }
193
207
  def self.values
194
208
  end
209
+
195
210
  end
196
211
 
197
212
  class Usage < OpenAI::Internal::Type::BaseModel
@@ -113,6 +113,15 @@ module OpenAI
113
113
  sig { returns(T.nilable(OpenAI::ImageEditParams::ResponseFormat::OrSymbol)) }
114
114
  attr_accessor :response_format
115
115
 
116
+ # A stable identifier for an end user in your organization, used for safety
117
+ # monitoring and abuse detection. Hash a username or email address to avoid
118
+ # sending identifying information. A non-empty value takes precedence over the
119
+ # deprecated `user` parameter. If omitted, null, or empty, the API uses `user`
120
+ # when available.
121
+ # [Learn more](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers).
122
+ sig { returns(T.nilable(String)) }
123
+ attr_accessor :safety_identifier
124
+
116
125
  # The size of the generated images. Defaults to `auto`. For `gpt-image-2`,
117
126
  # `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
118
127
  # `gpt-image-2.5-sunburst-2026-09-08`, `gpt-image-2.5-flare`, and
@@ -127,8 +136,9 @@ module OpenAI
127
136
  sig { returns(T.nilable(T.any(String, OpenAI::ImageEditParams::Size::OrSymbol))) }
128
137
  attr_accessor :size
129
138
 
130
- # A unique identifier representing your end-user, which can help OpenAI to monitor
131
- # and detect abuse.
139
+ # Deprecated: use `safety_identifier` instead. This parameter remains accepted for
140
+ # backward compatibility and is used when `safety_identifier` is omitted, null, or
141
+ # empty.
132
142
  # [Learn more](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers).
133
143
  sig { returns(T.nilable(String)) }
134
144
  attr_reader :user
@@ -163,6 +173,8 @@ module OpenAI
163
173
 
164
174
  response_format: T.nilable(OpenAI::ImageEditParams::ResponseFormat::OrSymbol),
165
175
 
176
+ safety_identifier: T.nilable(String),
177
+
166
178
  size: T.nilable(T.any(String, OpenAI::ImageEditParams::Size::OrSymbol)),
167
179
 
168
180
  user: String,
@@ -256,6 +268,14 @@ module OpenAI
256
268
  # image models, which always return base64-encoded images.
257
269
  response_format: nil,
258
270
 
271
+ # A stable identifier for an end user in your organization, used for safety
272
+ # monitoring and abuse detection. Hash a username or email address to avoid
273
+ # sending identifying information. A non-empty value takes precedence over the
274
+ # deprecated `user` parameter. If omitted, null, or empty, the API uses `user`
275
+ # when available.
276
+ # [Learn more](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers).
277
+ safety_identifier: nil,
278
+
259
279
  # The size of the generated images. Defaults to `auto`. For `gpt-image-2`,
260
280
  # `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
261
281
  # `gpt-image-2.5-sunburst-2026-09-08`, `gpt-image-2.5-flare`, and
@@ -269,8 +289,9 @@ module OpenAI
269
289
  # models that allow automatic sizing.
270
290
  size: nil,
271
291
 
272
- # A unique identifier representing your end-user, which can help OpenAI to monitor
273
- # and detect abuse.
292
+ # Deprecated: use `safety_identifier` instead. This parameter remains accepted for
293
+ # backward compatibility and is used when `safety_identifier` is omitted, null, or
294
+ # empty.
274
295
  # [Learn more](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers).
275
296
  user: nil,
276
297
 
@@ -293,6 +314,7 @@ module OpenAI
293
314
  partial_images: T.nilable(Integer),
294
315
  quality: T.nilable(OpenAI::ImageEditParams::Quality::OrSymbol),
295
316
  response_format: T.nilable(OpenAI::ImageEditParams::ResponseFormat::OrSymbol),
317
+ safety_identifier: T.nilable(String),
296
318
  size: T.nilable(T.any(String, OpenAI::ImageEditParams::Size::OrSymbol)),
297
319
  user: String,
298
320
  request_options: OpenAI::RequestOptions
@@ -187,6 +187,7 @@ module OpenAI
187
187
  sig { returns(T::Array[OpenAI::ImageEditPartialImageEvent::Size::TaggedSymbol]) }
188
188
  def self.values
189
189
  end
190
+
190
191
  end
191
192
 
192
193
  end
@@ -48,6 +48,12 @@ module OpenAI
48
48
  sig { params(usage: OpenAI::ImageGenCompletedEvent::Usage::OrHash).void }
49
49
  attr_writer :usage
50
50
 
51
+ # The effective safety identifier used for safety monitoring and abuse detection.
52
+ # This is the non-empty `safety_identifier` from the request, or the deprecated
53
+ # `user` value when `safety_identifier` is omitted, null, or empty.
54
+ sig { returns(T.nilable(String)) }
55
+ attr_accessor :safety_identifier
56
+
51
57
  # Emitted when image generation has completed and the final image is available.
52
58
  sig do
53
59
  params(
@@ -66,6 +72,8 @@ module OpenAI
66
72
 
67
73
  usage: OpenAI::ImageGenCompletedEvent::Usage::OrHash,
68
74
 
75
+ safety_identifier: T.nilable(String),
76
+
69
77
  type: Symbol
70
78
  )
71
79
  .returns(T.attached_class)
@@ -94,6 +102,11 @@ module OpenAI
94
102
  # generation.
95
103
  usage:,
96
104
 
105
+ # The effective safety identifier used for safety monitoring and abuse detection.
106
+ # This is the non-empty `safety_identifier` from the request, or the deprecated
107
+ # `user` value when `safety_identifier` is omitted, null, or empty.
108
+ safety_identifier: nil,
109
+
97
110
  # The type of the event. Always `image_generation.completed`.
98
111
 
99
112
  type: :"image_generation.completed"
@@ -110,7 +123,8 @@ module OpenAI
110
123
  quality: OpenAI::ImageGenCompletedEvent::Quality::TaggedSymbol,
111
124
  size: OpenAI::ImageGenCompletedEvent::Size::Variants,
112
125
  type: Symbol,
113
- usage: OpenAI::ImageGenCompletedEvent::Usage
126
+ usage: OpenAI::ImageGenCompletedEvent::Usage,
127
+ safety_identifier: T.nilable(String)
114
128
  }
115
129
  )
116
130
  end
@@ -192,6 +206,7 @@ module OpenAI
192
206
  sig { returns(T::Array[OpenAI::ImageGenCompletedEvent::Size::TaggedSymbol]) }
193
207
  def self.values
194
208
  end
209
+
195
210
  end
196
211
 
197
212
  class Usage < OpenAI::Internal::Type::BaseModel
@@ -187,6 +187,7 @@ module OpenAI
187
187
  sig { returns(T::Array[OpenAI::ImageGenPartialImageEvent::Size::TaggedSymbol]) }
188
188
  def self.values
189
189
  end
190
+
190
191
  end
191
192
 
192
193
  end
@@ -85,6 +85,15 @@ module OpenAI
85
85
  sig { returns(T.nilable(OpenAI::ImageGenerateParams::ResponseFormat::OrSymbol)) }
86
86
  attr_accessor :response_format
87
87
 
88
+ # A stable identifier for an end user in your organization, used for safety
89
+ # monitoring and abuse detection. Hash a username or email address to avoid
90
+ # sending identifying information. A non-empty value takes precedence over the
91
+ # deprecated `user` parameter. If omitted, null, or empty, the API uses `user`
92
+ # when available.
93
+ # [Learn more](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers).
94
+ sig { returns(T.nilable(String)) }
95
+ attr_accessor :safety_identifier
96
+
88
97
  # The size of the generated images. For `gpt-image-2`, `gpt-image-2-2026-04-21`,
89
98
  # `gpt-image-2.5-sunburst`, `gpt-image-2.5-sunburst-2026-09-08`,
90
99
  # `gpt-image-2.5-flare`, and `gpt-image-2.5-flare-2026-09-08`, arbitrary
@@ -103,8 +112,9 @@ module OpenAI
103
112
  sig { returns(T.nilable(OpenAI::ImageGenerateParams::Style::OrSymbol)) }
104
113
  attr_accessor :style
105
114
 
106
- # A unique identifier representing your end-user, which can help OpenAI to monitor
107
- # and detect abuse.
115
+ # Deprecated: use `safety_identifier` instead. This parameter remains accepted for
116
+ # backward compatibility and is used when `safety_identifier` is omitted, null, or
117
+ # empty.
108
118
  # [Learn more](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers).
109
119
  sig { returns(T.nilable(String)) }
110
120
  attr_reader :user
@@ -135,6 +145,8 @@ module OpenAI
135
145
 
136
146
  response_format: T.nilable(OpenAI::ImageGenerateParams::ResponseFormat::OrSymbol),
137
147
 
148
+ safety_identifier: T.nilable(String),
149
+
138
150
  size: T.nilable(T.any(String, OpenAI::ImageGenerateParams::Size::OrSymbol)),
139
151
 
140
152
  style: T.nilable(OpenAI::ImageGenerateParams::Style::OrSymbol),
@@ -207,6 +219,14 @@ module OpenAI
207
219
  # image models, which always return base64-encoded images.
208
220
  response_format: nil,
209
221
 
222
+ # A stable identifier for an end user in your organization, used for safety
223
+ # monitoring and abuse detection. Hash a username or email address to avoid
224
+ # sending identifying information. A non-empty value takes precedence over the
225
+ # deprecated `user` parameter. If omitted, null, or empty, the API uses `user`
226
+ # when available.
227
+ # [Learn more](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers).
228
+ safety_identifier: nil,
229
+
210
230
  # The size of the generated images. For `gpt-image-2`, `gpt-image-2-2026-04-21`,
211
231
  # `gpt-image-2.5-sunburst`, `gpt-image-2.5-sunburst-2026-09-08`,
212
232
  # `gpt-image-2.5-flare`, and `gpt-image-2.5-flare-2026-09-08`, arbitrary
@@ -223,8 +243,9 @@ module OpenAI
223
243
  # models; describe the desired style in the prompt instead.
224
244
  style: nil,
225
245
 
226
- # A unique identifier representing your end-user, which can help OpenAI to monitor
227
- # and detect abuse.
246
+ # Deprecated: use `safety_identifier` instead. This parameter remains accepted for
247
+ # backward compatibility and is used when `safety_identifier` is omitted, null, or
248
+ # empty.
228
249
  # [Learn more](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers).
229
250
  user: nil,
230
251
 
@@ -245,6 +266,7 @@ module OpenAI
245
266
  partial_images: T.nilable(Integer),
246
267
  quality: T.nilable(OpenAI::ImageGenerateParams::Quality::OrSymbol),
247
268
  response_format: T.nilable(OpenAI::ImageGenerateParams::ResponseFormat::OrSymbol),
269
+ safety_identifier: T.nilable(String),
248
270
  size: T.nilable(T.any(String, OpenAI::ImageGenerateParams::Size::OrSymbol)),
249
271
  style: T.nilable(OpenAI::ImageGenerateParams::Style::OrSymbol),
250
272
  user: String,
@@ -46,6 +46,12 @@ module OpenAI
46
46
  sig { params(quality: OpenAI::ImagesResponse::Quality::OrSymbol).void }
47
47
  attr_writer :quality
48
48
 
49
+ # The effective safety identifier used for safety monitoring and abuse detection.
50
+ # This is the non-empty `safety_identifier` from the request, or the deprecated
51
+ # `user` value when `safety_identifier` is omitted, null, or empty.
52
+ sig { returns(T.nilable(String)) }
53
+ attr_accessor :safety_identifier
54
+
49
55
  # The image dimensions as a `WIDTHxHEIGHT` string, for example `1536x864`.
50
56
  sig { returns(T.nilable(OpenAI::ImagesResponse::Size::Variants)) }
51
57
  attr_reader :size
@@ -74,6 +80,8 @@ module OpenAI
74
80
 
75
81
  quality: OpenAI::ImagesResponse::Quality::OrSymbol,
76
82
 
83
+ safety_identifier: T.nilable(String),
84
+
77
85
  size: T.any(String, OpenAI::ImagesResponse::Size::OrSymbol),
78
86
 
79
87
  usage: OpenAI::ImagesResponse::Usage::OrHash
@@ -99,6 +107,11 @@ module OpenAI
99
107
  # `max`.
100
108
  quality: nil,
101
109
 
110
+ # The effective safety identifier used for safety monitoring and abuse detection.
111
+ # This is the non-empty `safety_identifier` from the request, or the deprecated
112
+ # `user` value when `safety_identifier` is omitted, null, or empty.
113
+ safety_identifier: nil,
114
+
102
115
  # The image dimensions as a `WIDTHxHEIGHT` string, for example `1536x864`.
103
116
  size: nil,
104
117
 
@@ -116,6 +129,7 @@ module OpenAI
116
129
  data: T::Array[OpenAI::Image],
117
130
  output_format: OpenAI::ImagesResponse::OutputFormat::TaggedSymbol,
118
131
  quality: OpenAI::ImagesResponse::Quality::TaggedSymbol,
132
+ safety_identifier: T.nilable(String),
119
133
  size: OpenAI::ImagesResponse::Size::Variants,
120
134
  usage: OpenAI::ImagesResponse::Usage
121
135
  }
@@ -198,6 +212,7 @@ module OpenAI
198
212
  sig { returns(T::Array[OpenAI::ImagesResponse::Size::TaggedSymbol]) }
199
213
  def self.values
200
214
  end
215
+
201
216
  end
202
217
 
203
218
  class Usage < OpenAI::Internal::Type::BaseModel
@@ -28,6 +28,7 @@ module OpenAI
28
28
  QUARTZ = T.let(:quartz, OpenAI::Live::BuiltInVoice::TaggedSymbol)
29
29
  RIPPLE = T.let(:ripple, OpenAI::Live::BuiltInVoice::TaggedSymbol)
30
30
  SAGE = T.let(:sage, OpenAI::Live::BuiltInVoice::TaggedSymbol)
31
+ SHIDA = T.let(:shida, OpenAI::Live::BuiltInVoice::TaggedSymbol)
31
32
  SHIMMER = T.let(:shimmer, OpenAI::Live::BuiltInVoice::TaggedSymbol)
32
33
  STONE = T.let(:stone, OpenAI::Live::BuiltInVoice::TaggedSymbol)
33
34
  TEMPO = T.let(:tempo, OpenAI::Live::BuiltInVoice::TaggedSymbol)
@@ -20,9 +20,13 @@ module OpenAI
20
20
  OpenAI::Live::InputAudioAppendEvent,
21
21
  OpenAI::Live::InputAudioMuteEvent,
22
22
  OpenAI::Live::InputAudioUnmuteEvent,
23
+ OpenAI::Live::OutputAudioFixturePlayEvent,
23
24
  OpenAI::Live::InstructionsAppendEvent,
24
25
  OpenAI::Live::ThinkingAppendEvent,
25
26
  OpenAI::Live::CommentaryAppendEvent,
27
+ OpenAI::Live::DecisionCreateEvent,
28
+ OpenAI::Live::DecisionItemCreateEvent,
29
+ OpenAI::Live::DecisionItemDeleteEvent,
26
30
  OpenAI::Live::ResponseItemCreateEvent,
27
31
  OpenAI::Live::ResponseCreateEvent,
28
32
  OpenAI::Live::SessionCloseEvent
@@ -0,0 +1,55 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ module Live
7
+
8
+ class DecisionCreateEvent < OpenAI::Internal::Type::BaseModel
9
+
10
+ OrHash = T.type_alias do
11
+ T.any(
12
+ OpenAI::Live::DecisionCreateEvent,
13
+ OpenAI::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ sig { returns(String) }
18
+ attr_accessor :event_id
19
+
20
+ sig { returns(Symbol) }
21
+ attr_accessor :type
22
+
23
+ # Evaluate the configured questions using the current conversation and Decision
24
+ # inputs. Reusing an event_id is rejected for the lifetime of the session.
25
+ sig do
26
+ params(
27
+
28
+ event_id: String,
29
+
30
+ type: Symbol
31
+ )
32
+ .returns(T.attached_class)
33
+ end
34
+ def self.new(
35
+
36
+ event_id:,
37
+
38
+ type: :"decision.create"
39
+ )
40
+ end
41
+
42
+ sig do
43
+ override.returns(
44
+ {event_id: String, type: Symbol}
45
+ )
46
+ end
47
+ def to_hash
48
+ end
49
+
50
+ end
51
+
52
+ end
53
+
54
+ end
55
+ end