openai 0.102.0 → 0.104.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 (426) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +88 -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_session_environment_expired_event.rb +57 -0
  49. data/lib/openai/models/beta/agent_session_environment_state.rb +6 -0
  50. data/lib/openai/models/beta/agent_session_environment_suspended_event.rb +57 -0
  51. data/lib/openai/models/beta/agent_session_event.rb +7 -1
  52. data/lib/openai/models/beta/agent_update_params.rb +4 -2
  53. data/lib/openai/models/beta/agents/environment_info.rb +3 -0
  54. data/lib/openai/models/beta/agents/environment_list_params.rb +7 -7
  55. data/lib/openai/models/beta/agents/session_create_params.rb +39 -3
  56. data/lib/openai/models/beta/agents/session_list_params.rb +7 -10
  57. data/lib/openai/models/beta/agents/session_update_params.rb +33 -1
  58. data/lib/openai/models/beta/agents/sessions/artifact_list_params.rb +11 -11
  59. data/lib/openai/models/beta/agents/vault_list_params.rb +23 -13
  60. data/lib/openai/models/beta/agents/vault_status_filter.rb +1 -3
  61. data/lib/openai/models/beta/agents/vault_update_params.rb +47 -0
  62. data/lib/openai/models/beta/agents/vaults/credential_list_params.rb +23 -13
  63. data/lib/openai/models/beta/beta_response.rb +23 -2
  64. data/lib/openai/models/beta/beta_response_error.rb +19 -1
  65. data/lib/openai/models/beta/beta_response_input_item.rb +107 -1
  66. data/lib/openai/models/beta/beta_response_item.rb +107 -1
  67. data/lib/openai/models/beta/beta_response_output_item.rb +107 -1
  68. data/lib/openai/models/beta/beta_responses_client_event.rb +23 -2
  69. data/lib/openai/models/beta/response_compact_params.rb +21 -0
  70. data/lib/openai/models/beta/response_create_params.rb +23 -2
  71. data/lib/openai/models/beta/session_turn_error.rb +3 -0
  72. data/lib/openai/models/chat/chat_completion_audio_param.rb +3 -3
  73. data/lib/openai/models/chat/chat_completion_message.rb +0 -8
  74. data/lib/openai/models/chat/chat_completion_message_function_tool_call.rb +0 -8
  75. data/lib/openai/models/chat/completion_create_params.rb +5 -12
  76. data/lib/openai/models/chat_model.rb +21 -0
  77. data/lib/openai/models/conversations/conversation_item.rb +107 -1
  78. data/lib/openai/models/decision.rb +17 -2
  79. data/lib/openai/models/decision_create_params.rb +29 -12
  80. data/lib/openai/models/decision_input_image.rb +4 -3
  81. data/lib/openai/models/decision_input_message.rb +4 -4
  82. data/lib/openai/models/decision_input_part.rb +3 -2
  83. data/lib/openai/models/image_edit_completed_event.rb +1 -2
  84. data/lib/openai/models/image_edit_partial_image_event.rb +1 -2
  85. data/lib/openai/models/image_gen_completed_event.rb +1 -2
  86. data/lib/openai/models/image_gen_partial_image_event.rb +1 -2
  87. data/lib/openai/models/images_response.rb +1 -2
  88. data/lib/openai/models/live/built_in_voice.rb +1 -0
  89. data/lib/openai/models/live/client_event.rb +14 -2
  90. data/lib/openai/models/live/decision_create_event.rb +26 -0
  91. data/lib/openai/models/live/decision_event.rb +117 -0
  92. data/lib/openai/models/live/decision_item_create_event.rb +194 -0
  93. data/lib/openai/models/live/decision_item_created_event.rb +202 -0
  94. data/lib/openai/models/live/decision_item_delete_event.rb +38 -0
  95. data/lib/openai/models/live/decision_item_deleted_event.rb +46 -0
  96. data/lib/openai/models/live/decision_trigger.rb +244 -0
  97. data/lib/openai/models/live/decisions_delegation_config.rb +201 -0
  98. data/lib/openai/models/live/decisions_delegation_update_config.rb +208 -0
  99. data/lib/openai/models/live/delegation_created_event.rb +10 -10
  100. data/lib/openai/models/live/fork_client_event.rb +14 -2
  101. data/lib/openai/models/live/fork_server_event.rb +17 -2
  102. data/lib/openai/models/live/media_session_config.rb +47 -11
  103. data/lib/openai/models/live/output_audio_fixture_play_event.rb +48 -0
  104. data/lib/openai/models/live/output_audio_fixture_played_event.rb +42 -0
  105. data/lib/openai/models/live/output_audio_fixture_playing_event.rb +41 -0
  106. data/lib/openai/models/live/server_event.rb +17 -2
  107. data/lib/openai/models/live/session_accept_params.rb +47 -11
  108. data/lib/openai/models/live/session_config.rb +47 -11
  109. data/lib/openai/models/live/session_resource.rb +47 -11
  110. data/lib/openai/models/live/session_update_config.rb +38 -6
  111. data/lib/openai/models/live/session_update_event.rb +8 -8
  112. data/lib/openai/models/live/sideband_client_event.rb +57 -0
  113. data/lib/openai/models/live/sideband_server_event.rb +78 -0
  114. data/lib/openai/models/realtime/realtime_audio_config_output.rb +6 -3
  115. data/lib/openai/models/realtime/realtime_response_create_audio_output.rb +6 -3
  116. data/lib/openai/models/realtime/realtime_response_status.rb +10 -1
  117. data/lib/openai/models/response_format_json_schema.rb +1 -1
  118. data/lib/openai/models/responses/function_tool.rb +8 -6
  119. data/lib/openai/models/responses/response.rb +2 -23
  120. data/lib/openai/models/responses/response_compact_params.rb +21 -0
  121. data/lib/openai/models/responses/response_create_params.rb +3 -6
  122. data/lib/openai/models/responses/response_error.rb +19 -1
  123. data/lib/openai/models/responses/response_format_text_config.rb +0 -4
  124. data/lib/openai/models/responses/response_function_tool_call.rb +0 -8
  125. data/lib/openai/models/responses/response_input_item.rb +107 -1
  126. data/lib/openai/models/responses/response_item.rb +107 -1
  127. data/lib/openai/models/responses/response_output_item.rb +107 -1
  128. data/lib/openai/models/responses/response_output_text.rb +0 -8
  129. data/lib/openai/models/responses/responses_client_event.rb +2 -2
  130. data/lib/openai/models/safety/safety_alert.rb +12 -1
  131. data/lib/openai/models/video_create_error.rb +19 -1
  132. data/lib/openai/models/webhooks/agent_environment_expired_webhook_event.rb +72 -0
  133. data/lib/openai/models/webhooks/agent_environment_suspended_webhook_event.rb +72 -0
  134. data/lib/openai/models/webhooks/unwrap_webhook_event.rb +8 -3
  135. data/lib/openai/models/webhooks/webhook_create_params.rb +2 -0
  136. data/lib/openai/models/webhooks/webhook_endpoint_with_secret.rb +0 -9
  137. data/lib/openai/models/webhooks/webhook_test_params.rb +2 -0
  138. data/lib/openai/models/webhooks/webhook_update_params.rb +2 -0
  139. data/lib/openai/resources/admin/organization/external_storage.rb +1 -1
  140. data/lib/openai/resources/admin/organization/projects/api_keys.rb +61 -0
  141. data/lib/openai/resources/admin/organization/usage.rb +67 -0
  142. data/lib/openai/resources/audio/speech.rb +2 -1
  143. data/lib/openai/resources/audio/voices.rb +10 -10
  144. data/lib/openai/resources/beta/agents/environments/files.rb +3 -31
  145. data/lib/openai/resources/beta/agents/environments.rb +3 -3
  146. data/lib/openai/resources/beta/agents/sessions/artifacts.rb +5 -11
  147. data/lib/openai/resources/beta/agents/sessions/events.rb +1 -1
  148. data/lib/openai/resources/beta/agents/sessions.rb +20 -56
  149. data/lib/openai/resources/beta/agents/vaults/credentials.rb +10 -6
  150. data/lib/openai/resources/beta/agents/vaults.rb +45 -6
  151. data/lib/openai/resources/beta/agents.rb +6 -4
  152. data/lib/openai/resources/beta/responses.rb +2 -2
  153. data/lib/openai/resources/chat/completions.rb +11 -37
  154. data/lib/openai/resources/decisions.rb +9 -15
  155. data/lib/openai/resources/files.rb +0 -39
  156. data/lib/openai/resources/live/forks.rb +19 -0
  157. data/lib/openai/resources/live/sideband.rb +19 -0
  158. data/lib/openai/resources/live.rb +19 -0
  159. data/lib/openai/resources/realtime/translations.rb +19 -0
  160. data/lib/openai/resources/realtime.rb +19 -0
  161. data/lib/openai/resources/responses.rb +44 -95
  162. data/lib/openai/resources/vector_stores/file_batches.rb +0 -178
  163. data/lib/openai/resources/vector_stores/files.rb +0 -188
  164. data/lib/openai/resources/webhooks.rb +13 -29
  165. data/lib/openai/version.rb +1 -1
  166. data/lib/openai.rb +35 -0
  167. data/rbi/openai/client.rbi +0 -103
  168. data/rbi/openai/helpers/admin/organization/projects/api_keys.rbi +25 -0
  169. data/rbi/openai/helpers/beta/agents/artifacts.rbi +25 -0
  170. data/rbi/openai/helpers/beta/agents/files.rbi +48 -0
  171. data/rbi/openai/helpers/client_runtime.rbi +108 -0
  172. data/rbi/openai/helpers/files.rbi +25 -0
  173. data/rbi/openai/helpers/models/chat/parsed.rbi +21 -0
  174. data/rbi/openai/helpers/models/responses/parsed.rbi +19 -0
  175. data/rbi/openai/helpers/models/responses/response.rbi +15 -0
  176. data/rbi/openai/helpers/streaming/response_stream.rbi +301 -0
  177. data/rbi/openai/helpers/vector_stores/file_batches.rbi +102 -0
  178. data/rbi/openai/helpers/vector_stores/files.rbi +122 -0
  179. data/rbi/openai/helpers/websocket.rbi +82 -0
  180. data/rbi/openai/models/admin/organization/audit_log_list_response.rbi +6 -3
  181. data/rbi/openai/models/admin/organization/external_storage_configuration.rbi +4 -2
  182. data/rbi/openai/models/admin/organization/external_storage_create_params.rbi +63 -4
  183. data/rbi/openai/models/admin/organization/oci_external_storage_provider.rbi +71 -0
  184. data/rbi/openai/models/admin/organization/project_residency.rbi +12 -0
  185. data/rbi/openai/models/admin/organization/projects/api_key_update_params.rbi +110 -0
  186. data/rbi/openai/models/admin/organization/projects/api_key_update_scopes_params.rbi +72 -0
  187. data/rbi/openai/models/admin/organization/usage_decisions_params.rbi +229 -0
  188. data/rbi/openai/models/admin/organization/usage_decisions_response.rbi +479 -0
  189. data/rbi/openai/models/audio/speech_create_params.rbi +6 -3
  190. data/rbi/openai/models/audio/voice.rbi +21 -2
  191. data/rbi/openai/models/audio/voice_create_params.rbi +149 -4
  192. data/rbi/openai/models/beta/agent_create_params.rbi +4 -2
  193. data/rbi/openai/models/beta/agent_list_params.rbi +8 -5
  194. data/rbi/openai/models/beta/agent_session.rbi +64 -1
  195. data/rbi/openai/models/beta/agent_session_environment_expired_event.rbi +95 -0
  196. data/rbi/openai/models/beta/agent_session_environment_state.rbi +6 -0
  197. data/rbi/openai/models/beta/agent_session_environment_suspended_event.rbi +95 -0
  198. data/rbi/openai/models/beta/agent_session_event.rbi +2 -0
  199. data/rbi/openai/models/beta/agent_update_params.rbi +4 -2
  200. data/rbi/openai/models/beta/agents/environment_info.rbi +3 -0
  201. data/rbi/openai/models/beta/agents/environment_list_params.rbi +7 -7
  202. data/rbi/openai/models/beta/agents/session_create_params.rbi +62 -2
  203. data/rbi/openai/models/beta/agents/session_list_params.rbi +11 -11
  204. data/rbi/openai/models/beta/agents/session_update_params.rbi +56 -0
  205. data/rbi/openai/models/beta/agents/sessions/artifact_list_params.rbi +19 -13
  206. data/rbi/openai/models/beta/agents/vault_list_params.rbi +30 -13
  207. data/rbi/openai/models/beta/agents/vault_status_filter.rbi +1 -3
  208. data/rbi/openai/models/beta/agents/vault_update_params.rbi +87 -0
  209. data/rbi/openai/models/beta/agents/vaults/credential_list_params.rbi +30 -13
  210. data/rbi/openai/models/beta/beta_response.rbi +2 -2
  211. data/rbi/openai/models/beta/beta_response_error.rbi +24 -3
  212. data/rbi/openai/models/beta/beta_response_input_item.rbi +191 -0
  213. data/rbi/openai/models/beta/beta_response_item.rbi +189 -0
  214. data/rbi/openai/models/beta/beta_response_output_item.rbi +191 -0
  215. data/rbi/openai/models/beta/beta_responses_client_event.rbi +2 -2
  216. data/rbi/openai/models/beta/response_create_params.rbi +2 -2
  217. data/rbi/openai/models/beta/session_turn_error.rbi +3 -0
  218. data/rbi/openai/models/chat/chat_completion_audio_param.rbi +3 -3
  219. data/rbi/openai/models/chat/chat_completion_message.rbi +0 -4
  220. data/rbi/openai/models/chat/chat_completion_message_function_tool_call.rbi +0 -4
  221. data/rbi/openai/models/chat/completion_create_params.rbi +63 -78
  222. data/rbi/openai/models/conversations/conversation_item.rbi +191 -0
  223. data/rbi/openai/models/decision.rbi +14 -1
  224. data/rbi/openai/models/decision_create_params.rbi +23 -12
  225. data/rbi/openai/models/decision_input_image.rbi +4 -3
  226. data/rbi/openai/models/decision_input_message.rbi +4 -4
  227. data/rbi/openai/models/decision_input_part.rbi +2 -1
  228. data/rbi/openai/models/image_edit_completed_event.rbi +1 -0
  229. data/rbi/openai/models/image_edit_partial_image_event.rbi +1 -0
  230. data/rbi/openai/models/image_gen_completed_event.rbi +1 -0
  231. data/rbi/openai/models/image_gen_partial_image_event.rbi +1 -0
  232. data/rbi/openai/models/images_response.rbi +1 -0
  233. data/rbi/openai/models/live/built_in_voice.rbi +1 -0
  234. data/rbi/openai/models/live/client_event.rbi +4 -0
  235. data/rbi/openai/models/live/decision_create_event.rbi +55 -0
  236. data/rbi/openai/models/live/decision_event.rbi +185 -0
  237. data/rbi/openai/models/live/decision_item_create_event.rbi +338 -0
  238. data/rbi/openai/models/live/decision_item_created_event.rbi +354 -0
  239. data/rbi/openai/models/live/decision_item_delete_event.rbi +66 -0
  240. data/rbi/openai/models/live/decision_item_deleted_event.rbi +77 -0
  241. data/rbi/openai/models/live/decision_trigger.rbi +465 -0
  242. data/rbi/openai/models/live/decisions_delegation_config.rbi +393 -0
  243. data/rbi/openai/models/live/decisions_delegation_update_config.rbi +412 -0
  244. data/rbi/openai/models/live/delegation_created_event.rbi +8 -10
  245. data/rbi/openai/models/live/fork_client_event.rbi +4 -0
  246. data/rbi/openai/models/live/fork_server_event.rbi +5 -0
  247. data/rbi/openai/models/live/media_session_config.rbi +95 -14
  248. data/rbi/openai/models/live/output_audio_fixture_play_event.rbi +76 -0
  249. data/rbi/openai/models/live/output_audio_fixture_played_event.rbi +73 -0
  250. data/rbi/openai/models/live/output_audio_fixture_playing_event.rbi +72 -0
  251. data/rbi/openai/models/live/server_event.rbi +5 -0
  252. data/rbi/openai/models/live/session_accept_params.rbi +88 -12
  253. data/rbi/openai/models/live/session_config.rbi +100 -14
  254. data/rbi/openai/models/live/session_resource.rbi +81 -10
  255. data/rbi/openai/models/live/session_update_config.rbi +86 -9
  256. data/rbi/openai/models/live/session_update_event.rbi +8 -8
  257. data/rbi/openai/models/live/sideband_client_event.rbi +40 -0
  258. data/rbi/openai/models/live/sideband_server_event.rbi +47 -0
  259. data/rbi/openai/models/realtime/realtime_audio_config_output.rbi +6 -3
  260. data/rbi/openai/models/realtime/realtime_response_create_audio_output.rbi +6 -3
  261. data/rbi/openai/models/realtime/realtime_response_status.rbi +13 -1
  262. data/rbi/openai/models/realtime/realtime_translation_input_audio_buffer_append_event.rbi +1 -1
  263. data/rbi/openai/models/realtime/realtime_translation_output_audio_delta_event.rbi +3 -3
  264. data/rbi/openai/models/realtime/realtime_translation_session_close_event.rbi +1 -1
  265. data/rbi/openai/models/realtime/realtime_translation_session_update_event.rbi +5 -1
  266. data/rbi/openai/models/responses/response.rbi +2 -7
  267. data/rbi/openai/models/responses/response_create_params.rbi +5 -9
  268. data/rbi/openai/models/responses/response_error.rbi +24 -3
  269. data/rbi/openai/models/responses/response_function_tool_call.rbi +0 -4
  270. data/rbi/openai/models/responses/response_function_web_search.rbi +21 -17
  271. data/rbi/openai/models/responses/response_input_item.rbi +191 -0
  272. data/rbi/openai/models/responses/response_item.rbi +189 -0
  273. data/rbi/openai/models/responses/response_output_item.rbi +191 -0
  274. data/rbi/openai/models/responses/response_output_text.rbi +0 -4
  275. data/rbi/openai/models/responses/responses_client_event.rbi +2 -2
  276. data/rbi/openai/models/safety/safety_alert.rbi +13 -1
  277. data/rbi/openai/models/video_create_error.rbi +24 -3
  278. data/rbi/openai/models/webhooks/agent_environment_expired_webhook_event.rbi +133 -0
  279. data/rbi/openai/models/webhooks/agent_environment_suspended_webhook_event.rbi +133 -0
  280. data/rbi/openai/models/webhooks/unwrap_webhook_event.rbi +3 -2
  281. data/rbi/openai/models/webhooks/webhook_create_params.rbi +8 -0
  282. data/rbi/openai/models/webhooks/webhook_test_params.rbi +8 -0
  283. data/rbi/openai/models/webhooks/webhook_update_params.rbi +8 -0
  284. data/rbi/openai/resources/admin/organization/external_storage.rbi +2 -1
  285. data/rbi/openai/resources/admin/organization/projects/api_keys.rbi +48 -0
  286. data/rbi/openai/resources/admin/organization/usage.rbi +56 -0
  287. data/rbi/openai/resources/audio/speech.rbi +2 -1
  288. data/rbi/openai/resources/audio/voices.rbi +13 -10
  289. data/rbi/openai/resources/beta/agents/environments/files.rbi +3 -33
  290. data/rbi/openai/resources/beta/agents/environments.rbi +3 -3
  291. data/rbi/openai/resources/beta/agents/sessions/artifacts.rbi +5 -13
  292. data/rbi/openai/resources/beta/agents/sessions.rbi +15 -4
  293. data/rbi/openai/resources/beta/agents/vaults/credentials.rbi +9 -5
  294. data/rbi/openai/resources/beta/agents/vaults.rbi +34 -5
  295. data/rbi/openai/resources/beta/agents.rbi +6 -4
  296. data/rbi/openai/resources/beta/responses.rbi +2 -2
  297. data/rbi/openai/resources/chat/completions.rbi +26 -29
  298. data/rbi/openai/resources/decisions.rbi +9 -15
  299. data/rbi/openai/resources/files.rbi +0 -18
  300. data/rbi/openai/resources/live/forks.rbi +17 -0
  301. data/rbi/openai/resources/live/sideband.rbi +17 -0
  302. data/rbi/openai/resources/live.rbi +17 -0
  303. data/rbi/openai/resources/realtime/translations.rbi +17 -0
  304. data/rbi/openai/resources/realtime.rbi +17 -0
  305. data/rbi/openai/resources/responses.rbi +41 -333
  306. data/rbi/openai/resources/vector_stores/file_batches.rbi +0 -93
  307. data/rbi/openai/resources/vector_stores/files.rbi +0 -113
  308. data/rbi/openai/resources/webhooks.rbi +2 -0
  309. data/sig/openai/client.rbs +0 -50
  310. data/sig/openai/helpers/admin/organization/projects/api_keys.rbs +18 -0
  311. data/sig/openai/helpers/beta/agents/artifacts.rbs +17 -0
  312. data/sig/openai/helpers/beta/agents/files.rbs +30 -0
  313. data/sig/openai/helpers/client_runtime.rbs +53 -0
  314. data/sig/openai/helpers/files.rbs +12 -0
  315. data/sig/openai/helpers/models/responses/response.rbs +9 -0
  316. data/sig/openai/helpers/streaming/response_stream.rbs +37 -0
  317. data/sig/openai/helpers/vector_stores/file_batches.rbs +38 -0
  318. data/sig/openai/helpers/vector_stores/files.rbs +43 -0
  319. data/sig/openai/helpers/websocket.rbs +40 -0
  320. data/sig/openai/models/admin/organization/audit_log_list_response.rbs +1 -0
  321. data/sig/openai/models/admin/organization/external_storage_configuration.rbs +1 -0
  322. data/sig/openai/models/admin/organization/external_storage_create_params.rbs +33 -0
  323. data/sig/openai/models/admin/organization/oci_external_storage_provider.rbs +34 -0
  324. data/sig/openai/models/admin/organization/project_residency.rbs +6 -0
  325. data/sig/openai/models/admin/organization/projects/api_key_update_params.rbs +77 -0
  326. data/sig/openai/models/admin/organization/projects/api_key_update_scopes_params.rbs +38 -0
  327. data/sig/openai/models/admin/organization/usage_decisions_params.rbs +170 -0
  328. data/sig/openai/models/admin/organization/usage_decisions_response.rbs +319 -0
  329. data/sig/openai/models/audio/speech_create_params.rbs +4 -2
  330. data/sig/openai/models/audio/voice.rbs +21 -3
  331. data/sig/openai/models/audio/voice_create_params.rbs +90 -1
  332. data/sig/openai/models/beta/agent_create_params.rbs +4 -2
  333. data/sig/openai/models/beta/agent_list_params.rbs +9 -6
  334. data/sig/openai/models/beta/agent_session.rbs +36 -2
  335. data/sig/openai/models/beta/agent_session_environment_expired_event.rbs +57 -0
  336. data/sig/openai/models/beta/agent_session_environment_state.rbs +14 -1
  337. data/sig/openai/models/beta/agent_session_environment_suspended_event.rbs +57 -0
  338. data/sig/openai/models/beta/agent_session_event.rbs +2 -0
  339. data/sig/openai/models/beta/agent_update_params.rbs +4 -2
  340. data/sig/openai/models/beta/agents/environment_info.rbs +11 -1
  341. data/sig/openai/models/beta/agents/environment_list_params.rbs +9 -9
  342. data/sig/openai/models/beta/agents/session_create_params.rbs +29 -2
  343. data/sig/openai/models/beta/agents/session_list_params.rbs +12 -12
  344. data/sig/openai/models/beta/agents/session_update_params.rbs +23 -0
  345. data/sig/openai/models/beta/agents/sessions/artifact_list_params.rbs +21 -15
  346. data/sig/openai/models/beta/agents/vault_list_params.rbs +32 -14
  347. data/sig/openai/models/beta/agents/vault_update_params.rbs +54 -0
  348. data/sig/openai/models/beta/agents/vaults/credential_list_params.rbs +32 -14
  349. data/sig/openai/models/beta/beta_response.rbs +2 -2
  350. data/sig/openai/models/beta/beta_response_error.rbs +19 -3
  351. data/sig/openai/models/beta/beta_response_input_item.rbs +110 -0
  352. data/sig/openai/models/beta/beta_response_item.rbs +110 -0
  353. data/sig/openai/models/beta/beta_response_output_item.rbs +110 -0
  354. data/sig/openai/models/beta/beta_responses_client_event.rbs +2 -2
  355. data/sig/openai/models/beta/response_create_params.rbs +2 -2
  356. data/sig/openai/models/beta/session_turn_error.rbs +4 -0
  357. data/sig/openai/models/chat/chat_completion_audio_param.rbs +2 -2
  358. data/sig/openai/models/chat/completion_create_params.rbs +2 -2
  359. data/sig/openai/models/conversations/conversation_item.rbs +110 -0
  360. data/sig/openai/models/decision.rbs +13 -0
  361. data/sig/openai/models/decision_create_params.rbs +19 -8
  362. data/sig/openai/models/decision_input_image.rbs +2 -2
  363. data/sig/openai/models/decision_input_message.rbs +2 -2
  364. data/sig/openai/models/live/built_in_voice.rbs +2 -0
  365. data/sig/openai/models/live/client_event.rbs +4 -0
  366. data/sig/openai/models/live/decision_create_event.rbs +18 -0
  367. data/sig/openai/models/live/decision_event.rbs +102 -0
  368. data/sig/openai/models/live/decision_item_create_event.rbs +183 -0
  369. data/sig/openai/models/live/decision_item_created_event.rbs +195 -0
  370. data/sig/openai/models/live/decision_item_delete_event.rbs +33 -0
  371. data/sig/openai/models/live/decision_item_deleted_event.rbs +49 -0
  372. data/sig/openai/models/live/decision_trigger.rbs +234 -0
  373. data/sig/openai/models/live/decisions_delegation_config.rbs +195 -0
  374. data/sig/openai/models/live/decisions_delegation_update_config.rbs +202 -0
  375. data/sig/openai/models/live/delegation_created_event.rbs +6 -7
  376. data/sig/openai/models/live/fork_client_event.rbs +4 -0
  377. data/sig/openai/models/live/fork_server_event.rbs +5 -0
  378. data/sig/openai/models/live/media_session_config.rbs +58 -11
  379. data/sig/openai/models/live/output_audio_fixture_play_event.rbs +42 -0
  380. data/sig/openai/models/live/output_audio_fixture_played_event.rbs +44 -0
  381. data/sig/openai/models/live/output_audio_fixture_playing_event.rbs +44 -0
  382. data/sig/openai/models/live/server_event.rbs +5 -0
  383. data/sig/openai/models/live/session_accept_params.rbs +57 -10
  384. data/sig/openai/models/live/session_config.rbs +58 -11
  385. data/sig/openai/models/live/session_resource.rbs +57 -10
  386. data/sig/openai/models/live/session_update_config.rbs +54 -3
  387. data/sig/openai/models/live/session_update_event.rbs +6 -6
  388. data/sig/openai/models/live/sideband_client_event.rbs +26 -0
  389. data/sig/openai/models/live/sideband_server_event.rbs +33 -0
  390. data/sig/openai/models/realtime/realtime_audio_config_output.rbs +6 -3
  391. data/sig/openai/models/realtime/realtime_response_create_audio_output.rbs +6 -3
  392. data/sig/openai/models/realtime/realtime_response_status.rbs +15 -3
  393. data/sig/openai/models/responses/response.rbs +2 -4
  394. data/sig/openai/models/responses/response_create_params.rbs +2 -2
  395. data/sig/openai/models/responses/response_error.rbs +19 -3
  396. data/sig/openai/models/responses/response_input_item.rbs +110 -0
  397. data/sig/openai/models/responses/response_item.rbs +110 -0
  398. data/sig/openai/models/responses/response_output_item.rbs +110 -0
  399. data/sig/openai/models/responses/responses_client_event.rbs +2 -2
  400. data/sig/openai/models/safety/safety_alert.rbs +12 -2
  401. data/sig/openai/models/video_create_error.rbs +19 -3
  402. data/sig/openai/models/webhooks/agent_environment_expired_webhook_event.rbs +70 -0
  403. data/sig/openai/models/webhooks/agent_environment_suspended_webhook_event.rbs +70 -0
  404. data/sig/openai/models/webhooks/unwrap_webhook_event.rbs +3 -1
  405. data/sig/openai/models/webhooks/webhook_create_params.rbs +4 -0
  406. data/sig/openai/models/webhooks/webhook_test_params.rbs +4 -0
  407. data/sig/openai/models/webhooks/webhook_update_params.rbs +4 -0
  408. data/sig/openai/resources/admin/organization/projects/api_keys.rbs +8 -0
  409. data/sig/openai/resources/admin/organization/usage.rbs +15 -0
  410. data/sig/openai/resources/beta/agents/environments/files.rbs +0 -17
  411. data/sig/openai/resources/beta/agents/sessions/artifacts.rbs +2 -6
  412. data/sig/openai/resources/beta/agents/sessions.rbs +4 -1
  413. data/sig/openai/resources/beta/agents/vaults/credentials.rbs +2 -1
  414. data/sig/openai/resources/beta/agents/vaults.rbs +9 -1
  415. data/sig/openai/resources/beta/agents.rbs +1 -1
  416. data/sig/openai/resources/files.rbs +0 -7
  417. data/sig/openai/resources/live/forks.rbs +8 -0
  418. data/sig/openai/resources/live/sideband.rbs +8 -0
  419. data/sig/openai/resources/live.rbs +7 -0
  420. data/sig/openai/resources/realtime/translations.rbs +7 -0
  421. data/sig/openai/resources/realtime.rbs +7 -0
  422. data/sig/openai/resources/responses.rbs +7 -31
  423. data/sig/openai/resources/vector_stores/file_batches.rbs +0 -31
  424. data/sig/openai/resources/vector_stores/files.rbs +0 -36
  425. data/sig/openai/resources/webhooks.rbs +3 -1
  426. metadata +101 -1
@@ -200,12 +200,12 @@ module OpenAI
200
200
  # Validates that the given payload was sent by OpenAI and parses the payload.
201
201
  #
202
202
  # @param payload [String] The raw webhook payload as a string
203
- # @param headers [Hash] The webhook headers
204
- # @param webhook_secret [String, nil] The webhook secret (optional, will use client webhook secret or ENV["OPENAI_WEBHOOK_SECRET"] if not provided)
205
203
  #
206
- # @return [OpenAI::Models::Webhooks::AgentEnvironmentFailedWebhookEvent, OpenAI::Models::Webhooks::AgentEnvironmentReadyWebhookEvent, OpenAI::Models::Webhooks::AgentSessionActionRequiredWebhookEvent, OpenAI::Models::Webhooks::AgentSessionCreatedWebhookEvent, OpenAI::Models::Webhooks::AgentSessionFailedWebhookEvent, OpenAI::Models::Webhooks::AgentSessionIdleWebhookEvent, OpenAI::Models::Webhooks::AgentSessionInProgressWebhookEvent, OpenAI::Models::Webhooks::BatchCancelledWebhookEvent, OpenAI::Models::Webhooks::BatchCompletedWebhookEvent, OpenAI::Models::Webhooks::BatchExpiredWebhookEvent, OpenAI::Models::Webhooks::BatchFailedWebhookEvent, OpenAI::Models::Webhooks::EvalRunCanceledWebhookEvent, OpenAI::Models::Webhooks::EvalRunFailedWebhookEvent, OpenAI::Models::Webhooks::EvalRunSucceededWebhookEvent, OpenAI::Models::Webhooks::FineTuningJobCancelledWebhookEvent, OpenAI::Models::Webhooks::FineTuningJobFailedWebhookEvent, OpenAI::Models::Webhooks::FineTuningJobSucceededWebhookEvent, OpenAI::Models::Webhooks::LiveCallIncomingWebhookEvent, OpenAI::Models::Webhooks::LiveTransportIncomingWebhookEvent, OpenAI::Models::Webhooks::RealtimeCallIncomingWebhookEvent, OpenAI::Models::Webhooks::ResponseCancelledWebhookEvent, OpenAI::Models::Webhooks::ResponseCompletedWebhookEvent, OpenAI::Models::Webhooks::ResponseFailedWebhookEvent, OpenAI::Models::Webhooks::ResponseIncompleteWebhookEvent, OpenAI::Models::Webhooks::SafetyAlertCreatedWebhookEvent, OpenAI::Models::Webhooks::SafetyDeactivationIssuedWebhookEvent, OpenAI::Models::Webhooks::SafetyOrgAlertCreatedWebhookEvent, OpenAI::Models::Webhooks::SafetyWarningIssuedWebhookEvent]
204
+ # @param headers [Hash{String, Symbol=>String}] The raw HTTP headers that came with the payload
207
205
  #
208
- # @raise [ArgumentError] if signature verification fails
206
+ # @param webhook_secret [String, nil] The webhook signing key
207
+ #
208
+ # @return [OpenAI::Models::Webhooks::AgentEnvironmentExpiredWebhookEvent, OpenAI::Models::Webhooks::AgentEnvironmentFailedWebhookEvent, OpenAI::Models::Webhooks::AgentEnvironmentReadyWebhookEvent, OpenAI::Models::Webhooks::AgentEnvironmentSuspendedWebhookEvent, OpenAI::Models::Webhooks::AgentSessionActionRequiredWebhookEvent, OpenAI::Models::Webhooks::AgentSessionCreatedWebhookEvent, OpenAI::Models::Webhooks::AgentSessionFailedWebhookEvent, OpenAI::Models::Webhooks::AgentSessionIdleWebhookEvent, OpenAI::Models::Webhooks::AgentSessionInProgressWebhookEvent, OpenAI::Models::Webhooks::BatchCancelledWebhookEvent, OpenAI::Models::Webhooks::BatchCompletedWebhookEvent, OpenAI::Models::Webhooks::BatchExpiredWebhookEvent, OpenAI::Models::Webhooks::BatchFailedWebhookEvent, OpenAI::Models::Webhooks::EvalRunCanceledWebhookEvent, OpenAI::Models::Webhooks::EvalRunFailedWebhookEvent, OpenAI::Models::Webhooks::EvalRunSucceededWebhookEvent, OpenAI::Models::Webhooks::FineTuningJobCancelledWebhookEvent, OpenAI::Models::Webhooks::FineTuningJobFailedWebhookEvent, OpenAI::Models::Webhooks::FineTuningJobSucceededWebhookEvent, OpenAI::Models::Webhooks::LiveCallIncomingWebhookEvent, OpenAI::Models::Webhooks::LiveTransportIncomingWebhookEvent, OpenAI::Models::Webhooks::RealtimeCallIncomingWebhookEvent, OpenAI::Models::Webhooks::ResponseCancelledWebhookEvent, OpenAI::Models::Webhooks::ResponseCompletedWebhookEvent, OpenAI::Models::Webhooks::ResponseFailedWebhookEvent, OpenAI::Models::Webhooks::ResponseIncompleteWebhookEvent, OpenAI::Models::Webhooks::SafetyAlertCreatedWebhookEvent, OpenAI::Models::Webhooks::SafetyDeactivationIssuedWebhookEvent, OpenAI::Models::Webhooks::SafetyOrgAlertCreatedWebhookEvent, OpenAI::Models::Webhooks::SafetyWarningIssuedWebhookEvent]
209
209
  def unwrap(
210
210
  payload,
211
211
  headers = {},
@@ -219,12 +219,13 @@ module OpenAI
219
219
 
220
220
  # Validates whether or not the webhook payload was sent by OpenAI.
221
221
  #
222
- # @param payload [String] The webhook payload as a string
223
- # @param headers [Hash] The webhook headers
224
- # @param webhook_secret [String, nil] The webhook secret (optional, will use client webhook secret or ENV["OPENAI_WEBHOOK_SECRET"] if not provided)
225
- # @param tolerance [Integer] Maximum age of the webhook in seconds (default: 300 = 5 minutes)
222
+ # @param payload [String] The raw webhook payload as a string
223
+ #
224
+ # @param headers [Hash{String, Symbol=>String}] The raw HTTP headers that came with the payload
226
225
  #
227
- # @raise [ArgumentError] if the signature is invalid
226
+ # @param webhook_secret [String, nil] The webhook signing key
227
+ #
228
+ # @param tolerance [Integer] Maximum age of the webhook in seconds
228
229
  def verify_signature(
229
230
  payload,
230
231
  headers,
@@ -253,20 +254,10 @@ module OpenAI
253
254
  end
254
255
 
255
256
  signature_header, timestamp_header, webhook_id = normalized_headers.values_at(*header_names)
257
+ raise ArgumentError, "Missing required webhook-signature header" if signature_header.nil?
258
+ raise ArgumentError, "Missing required webhook-timestamp header" if timestamp_header.nil?
259
+ raise ArgumentError, "Missing required webhook-id header" if webhook_id.nil?
256
260
 
257
- if signature_header.nil?
258
- raise ArgumentError, "Missing required webhook-signature header"
259
- end
260
-
261
- if timestamp_header.nil?
262
- raise ArgumentError, "Missing required webhook-timestamp header"
263
- end
264
-
265
- if webhook_id.nil?
266
- raise ArgumentError, "Missing required webhook-id header"
267
- end
268
-
269
- # Validate timestamp to prevent replay attacks
270
261
  begin
271
262
  timestamp_seconds = timestamp_header.to_i
272
263
  rescue ArgumentError
@@ -282,14 +273,10 @@ module OpenAI
282
273
  raise OpenAI::Errors::InvalidWebhookSignatureError, "Webhook timestamp is too new"
283
274
  end
284
275
 
285
- # Extract signatures from v1,<base64> format
286
- # The signature header can have multiple values, separated by spaces.
287
- # Each value is in the format v1,<base64>. We should accept if any match.
288
276
  signatures = signature_header.split.map do |part|
289
277
  part.start_with?("v1,") ? part[3..] : part
290
278
  end
291
279
 
292
- # Decode the secret if it starts with whsec_
293
280
  decoded_secret = if webhook_secret.start_with?("whsec_")
294
281
  webhook_secret[6..].unpack1("m0")
295
282
  else
@@ -298,13 +285,10 @@ module OpenAI
298
285
 
299
286
  raise ArgumentError, "The webhook secret must not be empty" if decoded_secret.empty?
300
287
 
301
- # Create the signed payload: {webhook_id}.{timestamp}.{payload}
302
288
  signed_payload = "#{webhook_id}.#{timestamp_header}.#{payload}"
303
289
 
304
- # Compute HMAC-SHA256 signature
305
290
  expected_signature = [OpenSSL::HMAC.digest("sha256", decoded_secret, signed_payload)].pack("m0")
306
291
 
307
- # Accept if any signature matches using timing-safe comparison
308
292
  return if signatures.any? { |signature| OpenSSL.secure_compare(expected_signature, signature) }
309
293
 
310
294
  raise(
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OpenAI
4
- VERSION = "0.102.0"
4
+ VERSION = "0.104.0"
5
5
  end
data/lib/openai.rb CHANGED
@@ -152,10 +152,12 @@ require_relative "openai/models/beta/beta_response_audio_transcript_delta_event"
152
152
  require_relative "openai/models/beta/beta_response_audio_done_event"
153
153
  require_relative "openai/models/beta/beta_response_audio_delta_event"
154
154
  require_relative "openai/models/reasoning_effort"
155
+ require_relative "openai/helpers/models/chat/parsed"
155
156
  require_relative "openai/models/chat/chat_completion_message"
156
157
  require_relative "openai/models/responses/response_input_file"
157
158
  require_relative "openai/models/responses/response_input_image"
158
159
  require_relative "openai/models/responses/response_input_text"
160
+ require_relative "openai/helpers/models/responses/parsed"
159
161
  require_relative "openai/models/responses/response_output_text"
160
162
  require_relative "openai/models/responses/response_output_refusal"
161
163
  require_relative "openai/models/graders/score_model_grader"
@@ -288,6 +290,7 @@ require_relative "openai/models/admin/organization/invite_delete_params"
288
290
  require_relative "openai/models/admin/organization/invite_delete_response"
289
291
  require_relative "openai/models/admin/organization/invite_list_params"
290
292
  require_relative "openai/models/admin/organization/invite_retrieve_params"
293
+ require_relative "openai/models/admin/organization/oci_external_storage_provider"
291
294
  require_relative "openai/models/admin/organization/organization_data_retention"
292
295
  require_relative "openai/models/admin/organization/organization_spend_alert"
293
296
  require_relative "openai/models/admin/organization/organization_spend_alert_deleted"
@@ -304,6 +307,8 @@ require_relative "openai/models/admin/organization/projects/api_key_delete_param
304
307
  require_relative "openai/models/admin/organization/projects/api_key_delete_response"
305
308
  require_relative "openai/models/admin/organization/projects/api_key_list_params"
306
309
  require_relative "openai/models/admin/organization/projects/api_key_retrieve_params"
310
+ require_relative "openai/models/admin/organization/projects/api_key_update_params"
311
+ require_relative "openai/models/admin/organization/projects/api_key_update_scopes_params"
307
312
  require_relative "openai/models/admin/organization/projects/certificate_activate_params"
308
313
  require_relative "openai/models/admin/organization/projects/certificate_activate_response"
309
314
  require_relative "openai/models/admin/organization/projects/certificate_deactivate_params"
@@ -408,6 +413,8 @@ require_relative "openai/models/admin/organization/usage_completions_params"
408
413
  require_relative "openai/models/admin/organization/usage_completions_response"
409
414
  require_relative "openai/models/admin/organization/usage_costs_params"
410
415
  require_relative "openai/models/admin/organization/usage_costs_response"
416
+ require_relative "openai/models/admin/organization/usage_decisions_params"
417
+ require_relative "openai/models/admin/organization/usage_decisions_response"
411
418
  require_relative "openai/models/admin/organization/usage_embeddings_params"
412
419
  require_relative "openai/models/admin/organization/usage_embeddings_response"
413
420
  require_relative "openai/models/admin/organization/usage_file_search_calls_params"
@@ -556,6 +563,7 @@ require_relative "openai/models/beta/agents/vaults/mcp_oauth_token_endpoint_auth
556
563
  require_relative "openai/models/beta/agents/vaults/mcp_oauth_token_endpoint_auth_rotate_param"
557
564
  require_relative "openai/models/beta/agents/vault_status"
558
565
  require_relative "openai/models/beta/agents/vault_status_filter"
566
+ require_relative "openai/models/beta/agents/vault_update_params"
559
567
  require_relative "openai/models/beta/agent_send_subagent_input_call_item"
560
568
  require_relative "openai/models/beta/agent_session"
561
569
  require_relative "openai/models/beta/agent_session_assistant_message"
@@ -563,11 +571,13 @@ require_relative "openai/models/beta/agent_session_created_event"
563
571
  require_relative "openai/models/beta/agent_session_deleted"
564
572
  require_relative "openai/models/beta/agent_session_environment_connected_event"
565
573
  require_relative "openai/models/beta/agent_session_environment_disconnected_event"
574
+ require_relative "openai/models/beta/agent_session_environment_expired_event"
566
575
  require_relative "openai/models/beta/agent_session_environment_failed_event"
567
576
  require_relative "openai/models/beta/agent_session_environment_pending_event"
568
577
  require_relative "openai/models/beta/agent_session_environment_ready_event"
569
578
  require_relative "openai/models/beta/agent_session_environment_reset_event"
570
579
  require_relative "openai/models/beta/agent_session_environment_state"
580
+ require_relative "openai/models/beta/agent_session_environment_suspended_event"
571
581
  require_relative "openai/models/beta/agent_session_error_event"
572
582
  require_relative "openai/models/beta/agent_session_event"
573
583
  require_relative "openai/models/beta/agent_session_failed_event"
@@ -1068,6 +1078,15 @@ require_relative "openai/models/live/commentary_appended_event"
1068
1078
  require_relative "openai/models/live/commentary_append_event"
1069
1079
  require_relative "openai/models/live/custom_voice"
1070
1080
  require_relative "openai/models/live/data_channel_config"
1081
+ require_relative "openai/models/live/decision_create_event"
1082
+ require_relative "openai/models/live/decision_event"
1083
+ require_relative "openai/models/live/decision_item_created_event"
1084
+ require_relative "openai/models/live/decision_item_create_event"
1085
+ require_relative "openai/models/live/decision_item_deleted_event"
1086
+ require_relative "openai/models/live/decision_item_delete_event"
1087
+ require_relative "openai/models/live/decisions_delegation_config"
1088
+ require_relative "openai/models/live/decisions_delegation_update_config"
1089
+ require_relative "openai/models/live/decision_trigger"
1071
1090
  require_relative "openai/models/live/delegation_created_event"
1072
1091
  require_relative "openai/models/live/error"
1073
1092
  require_relative "openai/models/live/error_event"
@@ -1091,6 +1110,9 @@ require_relative "openai/models/live/live_create_response"
1091
1110
  require_relative "openai/models/live/media_session_config"
1092
1111
  require_relative "openai/models/live/media_session_fork_config"
1093
1112
  require_relative "openai/models/live/output_audio_delta_event"
1113
+ require_relative "openai/models/live/output_audio_fixture_played_event"
1114
+ require_relative "openai/models/live/output_audio_fixture_play_event"
1115
+ require_relative "openai/models/live/output_audio_fixture_playing_event"
1094
1116
  require_relative "openai/models/live/output_transcript_delta_event"
1095
1117
  require_relative "openai/models/live/response_create_event"
1096
1118
  require_relative "openai/models/live/response_event"
@@ -1117,6 +1139,8 @@ require_relative "openai/models/live/session_updated_event"
1117
1139
  require_relative "openai/models/live/session_update_event"
1118
1140
  require_relative "openai/models/live/session_usage"
1119
1141
  require_relative "openai/models/live/session_usage_updated_event"
1142
+ require_relative "openai/models/live/sideband_client_event"
1143
+ require_relative "openai/models/live/sideband_server_event"
1120
1144
  require_relative "openai/models/live/thinking_appended_event"
1121
1145
  require_relative "openai/models/live/thinking_append_event"
1122
1146
  require_relative "openai/models/metadata"
@@ -1448,8 +1472,10 @@ require_relative "openai/models/video_remix_params"
1448
1472
  require_relative "openai/models/video_retrieve_params"
1449
1473
  require_relative "openai/models/video_seconds"
1450
1474
  require_relative "openai/models/video_size"
1475
+ require_relative "openai/models/webhooks/agent_environment_expired_webhook_event"
1451
1476
  require_relative "openai/models/webhooks/agent_environment_failed_webhook_event"
1452
1477
  require_relative "openai/models/webhooks/agent_environment_ready_webhook_event"
1478
+ require_relative "openai/models/webhooks/agent_environment_suspended_webhook_event"
1453
1479
  require_relative "openai/models/webhooks/agent_session_action_required_webhook_event"
1454
1480
  require_relative "openai/models/webhooks/agent_session_created_webhook_event"
1455
1481
  require_relative "openai/models/webhooks/agent_session_failed_webhook_event"
@@ -1485,6 +1511,7 @@ require_relative "openai/models/webhooks/webhook_endpoint"
1485
1511
  require_relative "openai/models/webhooks/webhook_endpoint_list"
1486
1512
  require_relative "openai/models/webhooks/webhook_endpoint_test_result"
1487
1513
  require_relative "openai/models/webhooks/webhook_endpoint_with_secret"
1514
+ require_relative "openai/helpers/models/webhooks/webhook_endpoint_with_secret"
1488
1515
  require_relative "openai/models/webhooks/webhook_event_type_list"
1489
1516
  require_relative "openai/models/webhooks/webhook_list_params"
1490
1517
  require_relative "openai/models/webhooks/webhook_retrieve_params"
@@ -1535,9 +1562,11 @@ require_relative "openai/resources/batches"
1535
1562
  require_relative "openai/resources/beta"
1536
1563
  require_relative "openai/resources/beta/agents"
1537
1564
  require_relative "openai/resources/beta/agents/environments"
1565
+ require_relative "openai/helpers/beta/agents/files"
1538
1566
  require_relative "openai/resources/beta/agents/environments/files"
1539
1567
  require_relative "openai/resources/beta/agents/environments/templates"
1540
1568
  require_relative "openai/resources/beta/agents/sessions"
1569
+ require_relative "openai/helpers/beta/agents/artifacts"
1541
1570
  require_relative "openai/resources/beta/agents/sessions/artifacts"
1542
1571
  require_relative "openai/resources/beta/agents/sessions/events"
1543
1572
  require_relative "openai/resources/beta/agents/sessions/items"
@@ -1617,6 +1646,10 @@ require_relative "openai/resources/vector_stores/files"
1617
1646
  require_relative "openai/resources/videos"
1618
1647
  require_relative "openai/resources/webhooks"
1619
1648
  require_relative "openai/resources/webhooks/event_types"
1649
+ require_relative "openai/helpers/models/responses/response"
1650
+ require_relative "openai/helpers/files"
1651
+ require_relative "openai/helpers/vector_stores/file_batches"
1652
+ require_relative "openai/helpers/vector_stores/files"
1620
1653
  require_relative "openai/helpers/streaming/response_events"
1621
1654
  require_relative "openai/helpers/streaming/response_stream"
1622
1655
  require_relative "openai/helpers/streaming/exceptions"
@@ -1632,3 +1665,5 @@ require_relative "openai/helpers/beta/agents/creation_stream"
1632
1665
  require_relative "openai/helpers/agents/session_stream"
1633
1666
  require_relative "openai/helpers/beta/agents/function_tool"
1634
1667
  require_relative "openai/helpers/agents/message"
1668
+
1669
+ require_relative "openai/helpers/admin/organization/projects/api_keys"
@@ -149,109 +149,6 @@ module OpenAI
149
149
  private def admin_api_key_auth
150
150
  end
151
151
 
152
- # @api private
153
- sig do
154
- override
155
- .params(
156
- request: OpenAI::Internal::Transport::BaseClient::RequestInput,
157
- redirect_count: Integer,
158
- retry_count: Integer
159
- )
160
- .returns(OpenAI::Internal::Transport::BaseClient::RequestInput)
161
- end
162
- private def prepare_request(request, redirect_count:, retry_count:)
163
- end
164
-
165
- # @api private
166
- sig do
167
- override
168
- .params(
169
- request: OpenAI::Internal::Transport::BaseClient::RequestInput,
170
- original_request: OpenAI::Internal::Transport::BaseClient::RequestInput
171
- )
172
- .returns(OpenAI::Internal::Transport::BaseClient::RequestInput)
173
- end
174
- private def validate_prepared_request(request, original_request:)
175
- end
176
-
177
- # @api private
178
- sig do
179
- override
180
- .params(
181
- request: OpenAI::Internal::Transport::BaseClient::RequestInput,
182
- delay: Float
183
- )
184
- .void
185
- end
186
- private def validate_retry_delay!(request, delay:)
187
- end
188
-
189
- # @api private
190
- sig { params(identity: T.untyped).returns(T::Boolean) }
191
- private def x509_identity?(identity)
192
- end
193
-
194
- # @api private
195
- sig { params(transport: T.untyped).returns(T::Boolean) }
196
- private def x509_transport?(transport)
197
- end
198
-
199
- # @api private
200
- sig { params(options: T::Hash[Symbol, T.untyped]).returns(T.self_type) }
201
- private def copy_with_workload_identity_auth(options)
202
- end
203
-
204
- # @api private
205
- sig { params(authenticator: OpenAI::Auth::WorkloadIdentityAuth).void }
206
- def adopt_workload_identity_auth!(authenticator)
207
- end
208
-
209
- # Returns a new client with the supplied options overridden.
210
- sig do
211
- params(
212
- api_key: T.nilable(String),
213
- admin_api_key: T.nilable(String),
214
- workload_identity: T.nilable(T.any(OpenAI::Auth::WorkloadIdentity, OpenAI::Auth::X509WorkloadIdentity)),
215
- organization: T.nilable(String),
216
- project: T.nilable(String),
217
- webhook_secret: T.nilable(String),
218
- provider: T.nilable(OpenAI::Provider),
219
- base_url: T.nilable(String),
220
- data_residency: T.nilable(T.any(Symbol, String)),
221
- default_headers: T.nilable(T::Hash[String, T.nilable(String)]),
222
- max_retries: Integer,
223
- timeout: T.nilable(Float),
224
- initial_retry_delay: Float,
225
- max_retry_delay: Float,
226
- http_client: T.untyped,
227
- logger: T.untyped,
228
- log_level: T.nilable(T.any(Symbol, String)),
229
- on_retry: T.nilable(T.proc.params(event: OpenAI::RetryEvent).void)
230
- )
231
- .returns(T.self_type)
232
- end
233
- def with_options(
234
- api_key: T.unsafe(nil),
235
- admin_api_key: T.unsafe(nil),
236
- workload_identity: T.unsafe(nil),
237
- organization: T.unsafe(nil),
238
- project: T.unsafe(nil),
239
- webhook_secret: T.unsafe(nil),
240
- provider: T.unsafe(nil),
241
- base_url: T.unsafe(nil),
242
- data_residency: T.unsafe(nil),
243
- default_headers: T.unsafe(nil),
244
- max_retries: T.unsafe(nil),
245
- timeout: T.unsafe(nil),
246
- initial_retry_delay: T.unsafe(nil),
247
- max_retry_delay: T.unsafe(nil),
248
- http_client: T.unsafe(nil),
249
- logger: T.unsafe(nil),
250
- log_level: T.unsafe(nil),
251
- on_retry: T.unsafe(nil)
252
- )
253
- end
254
-
255
152
  # Creates and returns a new client for interacting with the API.
256
153
  sig do
257
154
  params(
@@ -0,0 +1,25 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Resources
5
+ class Admin
6
+ class Organization
7
+ class Projects
8
+ class APIKeys
9
+ sig do
10
+ params(
11
+ api_key_id: String,
12
+ project_id: String,
13
+ scopes: T::Array[String],
14
+ request_options: OpenAI::RequestOptions::OrHash
15
+ )
16
+ .returns(OpenAI::Admin::Organization::Projects::ProjectAPIKey)
17
+ end
18
+ def update_scopes(api_key_id, project_id:, scopes:, request_options: {})
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -27,3 +27,28 @@ module OpenAI
27
27
  end
28
28
  end
29
29
  end
30
+
31
+ module OpenAI
32
+ module Resources
33
+
34
+ class Beta
35
+
36
+ class Agents
37
+
38
+ class Sessions
39
+
40
+ class Artifacts
41
+ # Beta result-scoped downloads.
42
+ sig {
43
+ params(result: OpenAI::Helpers::Beta::Agents::TurnResult).returns(
44
+ OpenAI::Helpers::Beta::Agents::ResultArtifacts
45
+ )
46
+ }
47
+ def for_result(result)
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -63,3 +63,51 @@ module OpenAI
63
63
  end
64
64
  end
65
65
  end
66
+
67
+ module OpenAI
68
+ module Resources
69
+
70
+ class Beta
71
+
72
+ class Agents
73
+
74
+ class Environments
75
+
76
+ class Files
77
+ # Beta file helpers.
78
+ sig {
79
+ params(files: T::Hash[String, T.any(String, Pathname)], request_options: OpenAI::RequestOptions::OrHash)
80
+ .returns(OpenAI::Helpers::Beta::Agents::PreparedFiles)
81
+ }
82
+ def prepare(files, request_options: {})
83
+ end
84
+
85
+ sig {
86
+ params(
87
+ directory: T.any(String, Pathname),
88
+ destination: String,
89
+ include: T::Array[String],
90
+ request_options: OpenAI::RequestOptions::OrHash
91
+ )
92
+ .returns(OpenAI::Helpers::Beta::Agents::PreparedFiles)
93
+ }
94
+ def prepare_directory(directory, destination:, include:, request_options: {})
95
+ end
96
+
97
+ sig {
98
+ params(
99
+ environment_id: String,
100
+ file: T.any(String, Pathname),
101
+ path: String,
102
+ request_options: OpenAI::RequestOptions::OrHash
103
+ )
104
+ .returns(OpenAI::Helpers::Beta::Agents::PreparedFiles)
105
+ }
106
+ def upload(environment_id, file:, path:, request_options: {})
107
+ end
108
+ end
109
+ end
110
+ end
111
+ end
112
+ end
113
+ end
@@ -0,0 +1,108 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ class Client < OpenAI::Internal::Transport::BaseClient
5
+ # @api private
6
+ sig do
7
+ override
8
+ .params(
9
+ request: OpenAI::Internal::Transport::BaseClient::RequestInput,
10
+ redirect_count: Integer,
11
+ retry_count: Integer
12
+ )
13
+ .returns(OpenAI::Internal::Transport::BaseClient::RequestInput)
14
+ end
15
+ private def prepare_request(request, redirect_count:, retry_count:)
16
+ end
17
+
18
+ # @api private
19
+ sig do
20
+ override
21
+ .params(
22
+ request: OpenAI::Internal::Transport::BaseClient::RequestInput,
23
+ original_request: OpenAI::Internal::Transport::BaseClient::RequestInput
24
+ )
25
+ .returns(OpenAI::Internal::Transport::BaseClient::RequestInput)
26
+ end
27
+ private def validate_prepared_request(request, original_request:)
28
+ end
29
+
30
+ # @api private
31
+ sig do
32
+ override
33
+ .params(
34
+ request: OpenAI::Internal::Transport::BaseClient::RequestInput,
35
+ delay: Float
36
+ )
37
+ .void
38
+ end
39
+ private def validate_retry_delay!(request, delay:)
40
+ end
41
+
42
+ # @api private
43
+ sig { params(identity: T.untyped).returns(T::Boolean) }
44
+ private def x509_identity?(identity)
45
+ end
46
+
47
+ # @api private
48
+ sig { params(transport: T.untyped).returns(T::Boolean) }
49
+ private def x509_transport?(transport)
50
+ end
51
+
52
+ # @api private
53
+ sig { params(options: T::Hash[Symbol, T.untyped]).returns(T.self_type) }
54
+ private def copy_with_workload_identity_auth(options)
55
+ end
56
+
57
+ # @api private
58
+ sig { params(authenticator: OpenAI::Auth::WorkloadIdentityAuth).void }
59
+ def adopt_workload_identity_auth!(authenticator)
60
+ end
61
+
62
+ # Returns a new client with the supplied options overridden.
63
+ sig do
64
+ params(
65
+ api_key: T.nilable(String),
66
+ admin_api_key: T.nilable(String),
67
+ workload_identity: T.nilable(T.any(OpenAI::Auth::WorkloadIdentity, OpenAI::Auth::X509WorkloadIdentity)),
68
+ organization: T.nilable(String),
69
+ project: T.nilable(String),
70
+ webhook_secret: T.nilable(String),
71
+ provider: T.nilable(OpenAI::Provider),
72
+ base_url: T.nilable(String),
73
+ data_residency: T.nilable(T.any(Symbol, String)),
74
+ default_headers: T.nilable(T::Hash[String, T.nilable(String)]),
75
+ max_retries: Integer,
76
+ timeout: T.nilable(Float),
77
+ initial_retry_delay: Float,
78
+ max_retry_delay: Float,
79
+ http_client: T.untyped,
80
+ logger: T.untyped,
81
+ log_level: T.nilable(T.any(Symbol, String)),
82
+ on_retry: T.nilable(T.proc.params(event: OpenAI::RetryEvent).void)
83
+ )
84
+ .returns(T.self_type)
85
+ end
86
+ def with_options(
87
+ api_key: T.unsafe(nil),
88
+ admin_api_key: T.unsafe(nil),
89
+ workload_identity: T.unsafe(nil),
90
+ organization: T.unsafe(nil),
91
+ project: T.unsafe(nil),
92
+ webhook_secret: T.unsafe(nil),
93
+ provider: T.unsafe(nil),
94
+ base_url: T.unsafe(nil),
95
+ data_residency: T.unsafe(nil),
96
+ default_headers: T.unsafe(nil),
97
+ max_retries: T.unsafe(nil),
98
+ timeout: T.unsafe(nil),
99
+ initial_retry_delay: T.unsafe(nil),
100
+ max_retry_delay: T.unsafe(nil),
101
+ http_client: T.unsafe(nil),
102
+ logger: T.unsafe(nil),
103
+ log_level: T.unsafe(nil),
104
+ on_retry: T.unsafe(nil)
105
+ )
106
+ end
107
+ end
108
+ end
@@ -0,0 +1,25 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Resources
5
+ class Files
6
+ # Wait for an uploaded file to finish processing.
7
+ sig do
8
+ params(
9
+ file_id: String,
10
+ poll_interval: T.nilable(T.any(Integer, Float)),
11
+ timeout: T.nilable(T.any(Integer, Float)),
12
+ request_options: OpenAI::RequestOptions::OrHash
13
+ )
14
+ .returns(OpenAI::FileObject)
15
+ end
16
+ def wait_for_processing(
17
+ file_id,
18
+ poll_interval: nil,
19
+ timeout: OpenAI::Internal::Poller::DEFAULT_TIMEOUT,
20
+ request_options: {}
21
+ )
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,21 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Chat
6
+ class ChatCompletionMessage < OpenAI::Internal::Type::BaseModel
7
+ # The parsed contents of the message, if JSON schema is specified.
8
+ sig { returns(T.nilable(T.anything)) }
9
+ attr_accessor :parsed
10
+ end
11
+
12
+ class ChatCompletionMessageFunctionToolCall < OpenAI::Internal::Type::BaseModel
13
+ class Function < OpenAI::Internal::Type::BaseModel
14
+ # The parsed contents of the arguments.
15
+ sig { returns(T.anything) }
16
+ attr_accessor :parsed
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,19 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Responses
6
+ class ResponseOutputText < OpenAI::Internal::Type::BaseModel
7
+ # The parsed contents of the output, if JSON schema is specified.
8
+ sig { returns(T.anything) }
9
+ attr_accessor :parsed
10
+ end
11
+
12
+ class ResponseFunctionToolCall < OpenAI::Internal::Type::BaseModel
13
+ # The parsed contents of the arguments.
14
+ sig { returns(T.anything) }
15
+ attr_accessor :parsed
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,15 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module OpenAI
5
+ module Models
6
+ module Responses
7
+ class Response < OpenAI::Internal::Type::BaseModel
8
+ # Concatenates text from all output messages.
9
+ sig { returns(String) }
10
+ def output_text
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end