openai 0.113.0 → 0.115.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 (284) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +54 -0
  3. data/README.md +17 -2
  4. data/docs/architecture/security-model.md +11 -16
  5. data/examples/responses/websocket_workflows.rb +78 -3
  6. data/lib/openai/auth/subject_token_providers/azure_managed_identity_token_provider.rb +10 -8
  7. data/lib/openai/auth/subject_token_providers/gcp_id_token_provider.rb +8 -7
  8. data/lib/openai/helpers/chat/tool_runner.rb +1 -1
  9. data/lib/openai/helpers/live/websocket.rb +31 -0
  10. data/lib/openai/helpers/realtime/connection.rb +33 -0
  11. data/lib/openai/helpers/realtime/connection_manager.rb +1 -0
  12. data/lib/openai/helpers/realtime/conversation_item_variant_resolver.rb +5 -0
  13. data/lib/openai/helpers/realtime/recovery.rb +5 -1
  14. data/lib/openai/helpers/realtime/translation.rb +5 -0
  15. data/lib/openai/helpers/realtime/transports/async_websocket.rb +19 -0
  16. data/lib/openai/helpers/responses_websocket/connection.rb +53 -15
  17. data/lib/openai/helpers/responses_websocket/connection_manager.rb +1 -0
  18. data/lib/openai/helpers/responses_websocket/connection_resources.rb +1 -1
  19. data/lib/openai/helpers/structured_output/response_parser.rb +1 -0
  20. data/lib/openai/helpers/structured_output.rb +58 -0
  21. data/lib/openai/helpers/websocket/connection_manager.rb +11 -0
  22. data/lib/openai/helpers/websocket/resource.rb +1 -0
  23. data/lib/openai/helpers/websocket/typed_connection.rb +1 -0
  24. data/lib/openai/internal/type/array_of.rb +1 -1
  25. data/lib/openai/internal/type/hash_of.rb +1 -1
  26. data/lib/openai/internal/type/request_parameters.rb +2 -1
  27. data/lib/openai/internal/type/union.rb +18 -6
  28. data/lib/openai/models/admin/organization/external_key.rb +169 -0
  29. data/lib/openai/models/admin/organization/external_key_create_params.rb +311 -0
  30. data/lib/openai/models/admin/organization/external_key_delete_params.rb +24 -0
  31. data/lib/openai/models/admin/organization/external_key_list_params.rb +69 -0
  32. data/lib/openai/models/admin/organization/external_key_retrieve_params.rb +24 -0
  33. data/lib/openai/models/admin/organization/external_key_validate_params.rb +24 -0
  34. data/lib/openai/models/admin/organization/external_key_validate_response.rb +20 -0
  35. data/lib/openai/models/audio/speech_model.rb +12 -0
  36. data/lib/openai/models/audio_model.rb +15 -0
  37. data/lib/openai/models/beta/agent.rb +49 -1
  38. data/lib/openai/models/beta/agent_create_params.rb +51 -1
  39. data/lib/openai/models/beta/agent_session.rb +75 -2
  40. data/lib/openai/models/beta/agent_update_params.rb +62 -1
  41. data/lib/openai/models/beta/agents/session_create_params.rb +94 -2
  42. data/lib/openai/models/beta/agents/session_list_params.rb +16 -1
  43. data/lib/openai/models/beta/agents/session_update_params.rb +50 -5
  44. data/lib/openai/models/beta/assistant_update_params.rb +18 -0
  45. data/lib/openai/models/beta/beta_response.rb +224 -1
  46. data/lib/openai/models/beta/beta_response_configuration_update_item.rb +64 -3
  47. data/lib/openai/models/beta/beta_response_configuration_update_item_param.rb +64 -4
  48. data/lib/openai/models/beta/beta_response_input_file.rb +9 -9
  49. data/lib/openai/models/beta/beta_response_input_file_content.rb +9 -9
  50. data/lib/openai/models/beta/beta_response_input_image.rb +9 -9
  51. data/lib/openai/models/beta/beta_response_input_image_content.rb +9 -9
  52. data/lib/openai/models/beta/beta_response_input_item.rb +2 -3
  53. data/lib/openai/models/beta/beta_response_input_text.rb +9 -9
  54. data/lib/openai/models/beta/beta_response_input_text_content.rb +9 -9
  55. data/lib/openai/models/beta/beta_response_item.rb +11 -11
  56. data/lib/openai/models/beta/beta_response_output_item.rb +9 -9
  57. data/lib/openai/models/beta/beta_response_tool_search_output_item_param.rb +6 -6
  58. data/lib/openai/models/beta/beta_responses_client_event.rb +20 -1
  59. data/lib/openai/models/beta/beta_tool.rb +6 -6
  60. data/lib/openai/models/beta/response_compact_params.rb +6 -0
  61. data/lib/openai/models/beta/response_create_params.rb +6 -0
  62. data/lib/openai/models/chat/chat_completion_content_part.rb +9 -9
  63. data/lib/openai/models/chat/chat_completion_content_part_image.rb +9 -9
  64. data/lib/openai/models/chat/chat_completion_content_part_input_audio.rb +9 -9
  65. data/lib/openai/models/chat/chat_completion_content_part_text.rb +9 -9
  66. data/lib/openai/models/chat_model.rb +6 -0
  67. data/lib/openai/models/conversations/computer_screenshot_content.rb +9 -9
  68. data/lib/openai/models/conversations/conversation_item.rb +2 -2
  69. data/lib/openai/models/image_edit_params.rb +46 -25
  70. data/lib/openai/models/live/fork_server_event.rb +43 -3
  71. data/lib/openai/models/live/server_event.rb +43 -3
  72. data/lib/openai/models/live/sideband_client_event.rb +40 -1
  73. data/lib/openai/models/live/sideband_server_event.rb +43 -3
  74. data/lib/openai/models/realtime/audio_transcription.rb +15 -0
  75. data/lib/openai/models/realtime/conversation_item_added.rb +2 -2
  76. data/lib/openai/models/realtime/conversation_item_create_event.rb +2 -2
  77. data/lib/openai/models/realtime/conversation_item_created_event.rb +2 -2
  78. data/lib/openai/models/realtime/conversation_item_done.rb +2 -2
  79. data/lib/openai/models/realtime/realtime_response.rb +2 -2
  80. data/lib/openai/models/realtime/realtime_response_create_params.rb +2 -2
  81. data/lib/openai/models/realtime/realtime_server_event.rb +2 -2
  82. data/lib/openai/models/realtime/realtime_session.rb +18 -0
  83. data/lib/openai/models/realtime/realtime_session_create_request.rb +18 -0
  84. data/lib/openai/models/realtime/realtime_session_create_response.rb +18 -0
  85. data/lib/openai/models/realtime/response_output_item_added_event.rb +2 -2
  86. data/lib/openai/models/realtime/response_output_item_done_event.rb +2 -2
  87. data/lib/openai/models/responses/response.rb +221 -1
  88. data/lib/openai/models/responses/response_compact_params.rb +6 -0
  89. data/lib/openai/models/responses/response_configuration_update_item.rb +50 -3
  90. data/lib/openai/models/responses/response_configuration_update_item_param.rb +50 -4
  91. data/lib/openai/models/responses/response_input_file.rb +9 -9
  92. data/lib/openai/models/responses/response_input_file_content.rb +9 -9
  93. data/lib/openai/models/responses/response_input_image.rb +9 -9
  94. data/lib/openai/models/responses/response_input_image_content.rb +9 -9
  95. data/lib/openai/models/responses/response_input_item.rb +2 -3
  96. data/lib/openai/models/responses/response_input_text.rb +9 -9
  97. data/lib/openai/models/responses/response_input_text_content.rb +9 -9
  98. data/lib/openai/models/responses/response_item.rb +2 -2
  99. data/lib/openai/models/responses/response_tool_search_output_item_param.rb +6 -6
  100. data/lib/openai/models/responses/responses_client_event.rb +14 -1
  101. data/lib/openai/models/responses/tool.rb +6 -6
  102. data/lib/openai/net_http_client.rb +6 -0
  103. data/lib/openai/providers/vertex.rb +0 -10
  104. data/lib/openai/resources/admin/organization/external_keys.rb +132 -0
  105. data/lib/openai/resources/admin/organization.rb +4 -0
  106. data/lib/openai/resources/audio/speech.rb +8 -0
  107. data/lib/openai/resources/audio/translations.rb +8 -0
  108. data/lib/openai/resources/beta/agents/sessions.rb +22 -6
  109. data/lib/openai/resources/beta/agents.rb +17 -2
  110. data/lib/openai/resources/images.rb +36 -18
  111. data/lib/openai/version.rb +1 -1
  112. data/lib/openai.rb +8 -0
  113. data/rbi/openai/helpers/live/websocket.rbi +1 -12
  114. data/rbi/openai/helpers/realtime/connection.rbi +5 -0
  115. data/rbi/openai/helpers/realtime/transports/async_websocket.rbi +5 -0
  116. data/rbi/openai/helpers/responses_websocket/connection.rbi +7 -2
  117. data/rbi/openai/helpers/structured_output.rbi +10 -0
  118. data/rbi/openai/internal/type/array_of.rbi +1 -1
  119. data/rbi/openai/internal/type/hash_of.rbi +1 -1
  120. data/rbi/openai/internal/type/union.rbi +5 -0
  121. data/rbi/openai/models/admin/organization/external_key.rbi +301 -0
  122. data/rbi/openai/models/admin/organization/external_key_create_params.rbi +532 -0
  123. data/rbi/openai/models/admin/organization/external_key_delete_params.rbi +57 -0
  124. data/rbi/openai/models/admin/organization/external_key_list_params.rbi +129 -0
  125. data/rbi/openai/models/admin/organization/external_key_retrieve_params.rbi +57 -0
  126. data/rbi/openai/models/admin/organization/external_key_validate_params.rbi +57 -0
  127. data/rbi/openai/models/admin/organization/external_key_validate_response.rbi +50 -0
  128. data/rbi/openai/models/beta/agent.rbi +103 -1
  129. data/rbi/openai/models/beta/agent_create_params.rbi +109 -0
  130. data/rbi/openai/models/beta/agent_session.rbi +136 -3
  131. data/rbi/openai/models/beta/agent_update_params.rbi +120 -0
  132. data/rbi/openai/models/beta/agents/session_create_params.rbi +153 -0
  133. data/rbi/openai/models/beta/agents/session_list_params.rbi +19 -0
  134. data/rbi/openai/models/beta/agents/session_update_params.rbi +94 -6
  135. data/rbi/openai/models/beta/beta_response.rbi +394 -0
  136. data/rbi/openai/models/beta/beta_response_configuration_update_item.rbi +113 -3
  137. data/rbi/openai/models/beta/beta_response_configuration_update_item_param.rbi +125 -4
  138. data/rbi/openai/models/beta/beta_response_input_file.rbi +9 -9
  139. data/rbi/openai/models/beta/beta_response_input_file_content.rbi +9 -9
  140. data/rbi/openai/models/beta/beta_response_input_image.rbi +9 -9
  141. data/rbi/openai/models/beta/beta_response_input_image_content.rbi +9 -9
  142. data/rbi/openai/models/beta/beta_response_input_text.rbi +9 -9
  143. data/rbi/openai/models/beta/beta_response_input_text_content.rbi +9 -9
  144. data/rbi/openai/models/beta/beta_response_item.rbi +9 -9
  145. data/rbi/openai/models/beta/beta_response_output_item.rbi +9 -9
  146. data/rbi/openai/models/beta/beta_response_tool_search_output_item_param.rbi +6 -6
  147. data/rbi/openai/models/beta/beta_responses_client_event.rbi +17 -0
  148. data/rbi/openai/models/beta/beta_tool.rbi +6 -6
  149. data/rbi/openai/models/chat/chat_completion_content_part.rbi +9 -9
  150. data/rbi/openai/models/chat/chat_completion_content_part_image.rbi +9 -9
  151. data/rbi/openai/models/chat/chat_completion_content_part_input_audio.rbi +9 -9
  152. data/rbi/openai/models/chat/chat_completion_content_part_text.rbi +9 -9
  153. data/rbi/openai/models/conversations/computer_screenshot_content.rbi +9 -9
  154. data/rbi/openai/models/decision_create_params.rbi +4 -1
  155. data/rbi/openai/models/image_edit_params.rbi +49 -24
  156. data/rbi/openai/models/live/fork_server_event.rbi +65 -1
  157. data/rbi/openai/models/live/server_event.rbi +65 -1
  158. data/rbi/openai/models/live/sideband_client_event.rbi +60 -0
  159. data/rbi/openai/models/live/sideband_server_event.rbi +65 -1
  160. data/rbi/openai/models/realtime/conversation_item_added.rbi +6 -3
  161. data/rbi/openai/models/realtime/conversation_item_create_event.rbi +6 -3
  162. data/rbi/openai/models/realtime/conversation_item_created_event.rbi +6 -3
  163. data/rbi/openai/models/realtime/conversation_item_done.rbi +6 -3
  164. data/rbi/openai/models/realtime/realtime_response.rbi +8 -4
  165. data/rbi/openai/models/realtime/realtime_response_create_params.rbi +8 -4
  166. data/rbi/openai/models/realtime/realtime_server_event.rbi +6 -3
  167. data/rbi/openai/models/realtime/response_output_item_added_event.rbi +6 -3
  168. data/rbi/openai/models/realtime/response_output_item_done_event.rbi +6 -3
  169. data/rbi/openai/models/responses/response.rbi +394 -0
  170. data/rbi/openai/models/responses/response_configuration_update_item.rbi +76 -3
  171. data/rbi/openai/models/responses/response_configuration_update_item_param.rbi +74 -4
  172. data/rbi/openai/models/responses/response_input_file.rbi +9 -9
  173. data/rbi/openai/models/responses/response_input_file_content.rbi +9 -9
  174. data/rbi/openai/models/responses/response_input_image.rbi +9 -9
  175. data/rbi/openai/models/responses/response_input_image_content.rbi +9 -9
  176. data/rbi/openai/models/responses/response_input_text.rbi +9 -9
  177. data/rbi/openai/models/responses/response_input_text_content.rbi +9 -9
  178. data/rbi/openai/models/responses/response_tool_search_output_item_param.rbi +6 -6
  179. data/rbi/openai/models/responses/responses_client_event.rbi +17 -0
  180. data/rbi/openai/models/responses/tool.rbi +6 -6
  181. data/rbi/openai/net_http_client.rbi +5 -0
  182. data/rbi/openai/resources/admin/organization/external_keys.rbi +86 -0
  183. data/rbi/openai/resources/admin/organization.rbi +3 -0
  184. data/rbi/openai/resources/audio/speech.rbi +8 -0
  185. data/rbi/openai/resources/audio/translations.rbi +6 -0
  186. data/rbi/openai/resources/beta/agents/sessions.rbi +18 -2
  187. data/rbi/openai/resources/beta/agents.rbi +15 -0
  188. data/rbi/openai/resources/images.rbi +34 -16
  189. data/rbi/openai/resources/responses.rbi +2 -0
  190. data/realtime.md +6 -0
  191. data/responses-websocket.md +53 -0
  192. data/sig/openai/helpers/live/websocket.rbs +1 -9
  193. data/sig/openai/helpers/realtime/connection.rbs +3 -0
  194. data/sig/openai/helpers/realtime/transports/async_websocket.rbs +3 -0
  195. data/sig/openai/helpers/responses_websocket/connection.rbs +7 -1
  196. data/sig/openai/helpers/structured_output.rbs +9 -0
  197. data/sig/openai/internal/type/union.rbs +4 -0
  198. data/sig/openai/models/admin/organization/external_key.rbs +186 -0
  199. data/sig/openai/models/admin/organization/external_key_create_params.rbs +423 -0
  200. data/sig/openai/models/admin/organization/external_key_delete_params.rbs +27 -0
  201. data/sig/openai/models/admin/organization/external_key_list_params.rbs +81 -0
  202. data/sig/openai/models/admin/organization/external_key_retrieve_params.rbs +27 -0
  203. data/sig/openai/models/admin/organization/external_key_validate_params.rbs +27 -0
  204. data/sig/openai/models/admin/organization/external_key_validate_response.rbs +17 -0
  205. data/sig/openai/models/admin/organization/external_storage_create_params.rbs +72 -2
  206. data/sig/openai/models/audio/speech_create_params.rbs +15 -2
  207. data/sig/openai/models/audio/transcription_create_params.rbs +30 -2
  208. data/sig/openai/models/audio/voice_create_params.rbs +47 -2
  209. data/sig/openai/models/beta/agent.rbs +54 -2
  210. data/sig/openai/models/beta/agent_create_params.rbs +54 -0
  211. data/sig/openai/models/beta/agent_session.rbs +82 -3
  212. data/sig/openai/models/beta/agent_update_params.rbs +64 -0
  213. data/sig/openai/models/beta/agents/session_create_params.rbs +91 -0
  214. data/sig/openai/models/beta/agents/session_list_params.rbs +20 -0
  215. data/sig/openai/models/beta/agents/session_update_params.rbs +48 -6
  216. data/sig/openai/models/beta/assistant_create_params.rbs +5 -2
  217. data/sig/openai/models/beta/beta_response.rbs +223 -0
  218. data/sig/openai/models/beta/beta_response_configuration_update_item.rbs +58 -2
  219. data/sig/openai/models/beta/beta_response_configuration_update_item_param.rbs +58 -2
  220. data/sig/openai/models/beta/beta_response_input_file.rbs +9 -9
  221. data/sig/openai/models/beta/beta_response_input_file_content.rbs +6 -6
  222. data/sig/openai/models/beta/beta_response_input_image.rbs +9 -9
  223. data/sig/openai/models/beta/beta_response_input_image_content.rbs +6 -6
  224. data/sig/openai/models/beta/beta_response_input_text.rbs +9 -9
  225. data/sig/openai/models/beta/beta_response_input_text_content.rbs +6 -6
  226. data/sig/openai/models/beta/beta_response_item.rbs +9 -9
  227. data/sig/openai/models/beta/beta_response_output_item.rbs +9 -9
  228. data/sig/openai/models/beta/beta_response_tool_search_output_item_param.rbs +4 -4
  229. data/sig/openai/models/beta/beta_responses_client_event.rbs +17 -0
  230. data/sig/openai/models/beta/beta_tool.rbs +4 -4
  231. data/sig/openai/models/beta/response_create_params.rbs +5 -2
  232. data/sig/openai/models/beta/responses/input_token_count_params.rbs +10 -2
  233. data/sig/openai/models/beta/thread_create_and_run_params.rbs +11 -5
  234. data/sig/openai/models/beta/thread_create_params.rbs +11 -5
  235. data/sig/openai/models/beta/threads/message_create_params.rbs +6 -3
  236. data/sig/openai/models/beta/threads/run_create_params.rbs +6 -3
  237. data/sig/openai/models/chat/chat_completion_content_part.rbs +9 -9
  238. data/sig/openai/models/chat/chat_completion_content_part_image.rbs +9 -9
  239. data/sig/openai/models/chat/chat_completion_content_part_input_audio.rbs +9 -9
  240. data/sig/openai/models/chat/chat_completion_content_part_text.rbs +9 -9
  241. data/sig/openai/models/conversations/computer_screenshot_content.rbs +9 -9
  242. data/sig/openai/models/decision_create_params.rbs +27 -2
  243. data/sig/openai/models/eval_create_params.rbs +25 -4
  244. data/sig/openai/models/evals/run_create_params.rbs +52 -8
  245. data/sig/openai/models/image_edit_params.rbs +47 -16
  246. data/sig/openai/models/live/fork_server_event.rbs +39 -0
  247. data/sig/openai/models/live/server_event.rbs +39 -0
  248. data/sig/openai/models/live/session_accept_params.rbs +39 -2
  249. data/sig/openai/models/live/sideband_client_event.rbs +32 -0
  250. data/sig/openai/models/live/sideband_server_event.rbs +39 -0
  251. data/sig/openai/models/realtime/conversation_item.rbs +1 -0
  252. data/sig/openai/models/responses/input_token_count_params.rbs +10 -2
  253. data/sig/openai/models/responses/response.rbs +223 -0
  254. data/sig/openai/models/responses/response_configuration_update_item.rbs +45 -2
  255. data/sig/openai/models/responses/response_configuration_update_item_param.rbs +45 -2
  256. data/sig/openai/models/responses/response_create_params.rbs +5 -2
  257. data/sig/openai/models/responses/response_input_file.rbs +9 -9
  258. data/sig/openai/models/responses/response_input_file_content.rbs +6 -6
  259. data/sig/openai/models/responses/response_input_image.rbs +9 -9
  260. data/sig/openai/models/responses/response_input_image_content.rbs +6 -6
  261. data/sig/openai/models/responses/response_input_text.rbs +9 -9
  262. data/sig/openai/models/responses/response_input_text_content.rbs +6 -6
  263. data/sig/openai/models/responses/response_tool_search_output_item_param.rbs +4 -4
  264. data/sig/openai/models/responses/responses_client_event.rbs +17 -0
  265. data/sig/openai/models/responses/tool.rbs +4 -4
  266. data/sig/openai/models/video_edit_params.rbs +11 -2
  267. data/sig/openai/models/video_extend_params.rbs +11 -2
  268. data/sig/openai/net_http_client.rbs +3 -0
  269. data/sig/openai/resources/admin/organization/external_keys.rbs +70 -0
  270. data/sig/openai/resources/admin/organization/external_storage.rbs +23 -1
  271. data/sig/openai/resources/admin/organization.rbs +2 -0
  272. data/sig/openai/resources/audio/speech.rbs +2 -1
  273. data/sig/openai/resources/audio/transcriptions.rbs +14 -2
  274. data/sig/openai/resources/audio/voices.rbs +14 -1
  275. data/sig/openai/resources/beta/agents/sessions.rbs +4 -0
  276. data/sig/openai/resources/beta/agents.rbs +4 -0
  277. data/sig/openai/resources/beta/responses/input_tokens.rbs +2 -1
  278. data/sig/openai/resources/beta/responses.rbs +4 -2
  279. data/sig/openai/resources/decisions.rbs +7 -1
  280. data/sig/openai/resources/images.rbs +2 -0
  281. data/sig/openai/resources/responses/input_tokens.rbs +2 -1
  282. data/sig/openai/resources/responses.rbs +5 -2
  283. data/sig/openai/resources/videos.rbs +2 -2
  284. metadata +25 -1
@@ -0,0 +1,81 @@
1
+ module OpenAI
2
+ module Models
3
+ module Admin
4
+ module Organization
5
+ type external_key_list_params =
6
+ {
7
+ ?after: String?,
8
+ ?limit: Integer,
9
+ ?order: OpenAI::Models::Admin::Organization::ExternalKeyListParams::order,
10
+ ?purpose: OpenAI::Models::Admin::Organization::ExternalKeyListParams::purpose,
11
+ ?request_options: OpenAI::request_opts
12
+ }
13
+
14
+ class ExternalKeyListParams < OpenAI::Internal::Type::BaseModel
15
+ extend OpenAI::Internal::Type::RequestParameters::Converter
16
+ include OpenAI::Internal::Type::RequestParameters
17
+
18
+ attr_accessor after: String?
19
+
20
+ attr_reader limit: Integer?
21
+
22
+ def limit=: (Integer) -> Integer
23
+
24
+ attr_reader order: OpenAI::Models::Admin::Organization::ExternalKeyListParams::order?
25
+
26
+ def order=: (
27
+ OpenAI::Models::Admin::Organization::ExternalKeyListParams::order
28
+ ) -> OpenAI::Models::Admin::Organization::ExternalKeyListParams::order
29
+
30
+ # Filter by key purpose. When omitted, returns keys of all purposes.
31
+ attr_reader purpose: OpenAI::Models::Admin::Organization::ExternalKeyListParams::purpose?
32
+
33
+ # Filter by key purpose. When omitted, returns keys of all purposes.
34
+ def purpose=: (
35
+ OpenAI::Models::Admin::Organization::ExternalKeyListParams::purpose
36
+ ) -> OpenAI::Models::Admin::Organization::ExternalKeyListParams::purpose
37
+
38
+ # @param purpose
39
+ # Filter by key purpose. When omitted, returns keys of all purposes.
40
+ def initialize: (
41
+ ?after: String?,
42
+ ?limit: Integer,
43
+ ?order: OpenAI::Models::Admin::Organization::ExternalKeyListParams::order,
44
+ ?purpose: OpenAI::Models::Admin::Organization::ExternalKeyListParams::purpose,
45
+ ?request_options: OpenAI::request_opts
46
+ ) -> void
47
+
48
+ def to_hash: -> {
49
+ ?after: String?,
50
+ ?limit: Integer,
51
+ ?order: OpenAI::Models::Admin::Organization::ExternalKeyListParams::order,
52
+ ?purpose: OpenAI::Models::Admin::Organization::ExternalKeyListParams::purpose,
53
+ ?request_options: OpenAI::RequestOptions
54
+ }
55
+
56
+ type order = :asc | :desc
57
+
58
+ module Order
59
+ extend OpenAI::Internal::Type::Enum
60
+
61
+ ASC: :asc
62
+ DESC: :desc
63
+
64
+ def self?.values: -> ::Array[OpenAI::Models::Admin::Organization::ExternalKeyListParams::order]
65
+ end
66
+
67
+ type purpose = :ekm | :psp_decryption
68
+
69
+ module Purpose
70
+ extend OpenAI::Internal::Type::Enum
71
+
72
+ EKM: :ekm
73
+ PSP_DECRYPTION: :psp_decryption
74
+
75
+ def self?.values: -> ::Array[OpenAI::Models::Admin::Organization::ExternalKeyListParams::purpose]
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,27 @@
1
+ module OpenAI
2
+ module Models
3
+ module Admin
4
+ module Organization
5
+ type external_key_retrieve_params =
6
+ { external_key_id: String, ?request_options: OpenAI::request_opts }
7
+
8
+ class ExternalKeyRetrieveParams < OpenAI::Internal::Type::BaseModel
9
+ extend OpenAI::Internal::Type::RequestParameters::Converter
10
+ include OpenAI::Internal::Type::RequestParameters
11
+
12
+ attr_accessor external_key_id: String
13
+
14
+ def initialize: (
15
+ external_key_id: String,
16
+ ?request_options: OpenAI::request_opts
17
+ ) -> void
18
+
19
+ def to_hash: -> {
20
+ external_key_id: String,
21
+ ?request_options: OpenAI::RequestOptions
22
+ }
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,27 @@
1
+ module OpenAI
2
+ module Models
3
+ module Admin
4
+ module Organization
5
+ type external_key_validate_params =
6
+ { external_key_id: String, ?request_options: OpenAI::request_opts }
7
+
8
+ class ExternalKeyValidateParams < OpenAI::Internal::Type::BaseModel
9
+ extend OpenAI::Internal::Type::RequestParameters::Converter
10
+ include OpenAI::Internal::Type::RequestParameters
11
+
12
+ attr_accessor external_key_id: String
13
+
14
+ def initialize: (
15
+ external_key_id: String,
16
+ ?request_options: OpenAI::request_opts
17
+ ) -> void
18
+
19
+ def to_hash: -> {
20
+ external_key_id: String,
21
+ ?request_options: OpenAI::RequestOptions
22
+ }
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,17 @@
1
+ module OpenAI
2
+ module Models
3
+ module Admin
4
+ module Organization
5
+ type external_key_validate_response = { status: String }
6
+
7
+ class ExternalKeyValidateResponse < OpenAI::Internal::Type::BaseModel
8
+ attr_accessor status: String
9
+
10
+ def initialize: (status: String) -> void
11
+
12
+ def to_hash: -> { status: String }
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -15,11 +15,81 @@ module OpenAI
15
15
 
16
16
  attr_accessor project_id: String
17
17
 
18
- attr_accessor provider: OpenAI::Models::Admin::Organization::ExternalStorageCreateParams::provider
18
+ attr_reader provider: OpenAI::Models::Admin::Organization::ExternalStorageCreateParams::provider
19
+
20
+ def provider=: (
21
+ OpenAI::Models::Admin::Organization::ExternalStorageCreateParams::provider
22
+ | { bucket: String, role_arn: String, type: :aws }
23
+ | {
24
+ account_name: String,
25
+ container: String,
26
+ resource_group: String,
27
+ subscription_id: String,
28
+ tenant_id: String,
29
+ type: :azure
30
+ }
31
+ | {
32
+ bucket: String,
33
+ type: :gcp,
34
+ workload_identity_pool_id: String,
35
+ workload_identity_project_number: String,
36
+ workload_identity_provider_id: String
37
+ }
38
+ | {
39
+ bucket: String,
40
+ region: String,
41
+ tenancy_ocid: String,
42
+ type: :oci
43
+ }
44
+ ) -> (OpenAI::Models::Admin::Organization::ExternalStorageCreateParams::provider
45
+ | { bucket: String, role_arn: String, type: :aws }
46
+ | {
47
+ account_name: String,
48
+ container: String,
49
+ resource_group: String,
50
+ subscription_id: String,
51
+ tenant_id: String,
52
+ type: :azure
53
+ }
54
+ | {
55
+ bucket: String,
56
+ type: :gcp,
57
+ workload_identity_pool_id: String,
58
+ workload_identity_project_number: String,
59
+ workload_identity_provider_id: String
60
+ }
61
+ | {
62
+ bucket: String,
63
+ region: String,
64
+ tenancy_ocid: String,
65
+ type: :oci
66
+ })
19
67
 
20
68
  def initialize: (
21
69
  project_id: String,
22
- provider: OpenAI::Models::Admin::Organization::ExternalStorageCreateParams::provider,
70
+ provider: OpenAI::Models::Admin::Organization::ExternalStorageCreateParams::provider
71
+ | { bucket: String, role_arn: String, type: :aws }
72
+ | {
73
+ account_name: String,
74
+ container: String,
75
+ resource_group: String,
76
+ subscription_id: String,
77
+ tenant_id: String,
78
+ type: :azure
79
+ }
80
+ | {
81
+ bucket: String,
82
+ type: :gcp,
83
+ workload_identity_pool_id: String,
84
+ workload_identity_project_number: String,
85
+ workload_identity_provider_id: String
86
+ }
87
+ | {
88
+ bucket: String,
89
+ region: String,
90
+ tenancy_ocid: String,
91
+ type: :oci
92
+ },
23
93
  ?request_options: OpenAI::request_opts
24
94
  ) -> void
25
95
 
@@ -33,7 +33,19 @@ module OpenAI
33
33
  # [Text to speech guide](https://developers.openai.com/api/docs/guides/text-to-speech#voice-options).
34
34
  # Custom voices must be created from audio samples. Voices created from text
35
35
  # prompts are supported only in Live.
36
- attr_accessor voice: OpenAI::Models::Audio::SpeechCreateParams::voice
36
+ attr_reader voice: OpenAI::Models::Audio::SpeechCreateParams::voice
37
+
38
+ # The voice to use when generating the audio. Supported built-in voices are
39
+ # `alloy`, `ash`, `ballad`, `coral`, `echo`, `fable`, `onyx`, `nova`, `sage`,
40
+ # `shimmer`, `verse`, `marin`, and `cedar`. You may also provide a custom voice
41
+ # object with an `id`, for example `{ "id": "voice_1234" }`. Previews of the
42
+ # voices are available in the
43
+ # [Text to speech guide](https://developers.openai.com/api/docs/guides/text-to-speech#voice-options).
44
+ # Custom voices must be created from audio samples. Voices created from text
45
+ # prompts are supported only in Live.
46
+ def voice=: (
47
+ OpenAI::Models::Audio::SpeechCreateParams::voice | { id: String }
48
+ ) -> (OpenAI::Models::Audio::SpeechCreateParams::voice | { id: String })
37
49
 
38
50
  # Control the voice of your generated audio with additional instructions. Does not
39
51
  # work with `tts-1` or `tts-1-hd`.
@@ -101,7 +113,8 @@ module OpenAI
101
113
  def initialize: (
102
114
  input: String,
103
115
  model: OpenAI::Models::Audio::SpeechCreateParams::model,
104
- voice: OpenAI::Models::Audio::SpeechCreateParams::voice,
116
+ voice: OpenAI::Models::Audio::SpeechCreateParams::voice
117
+ | { id: String },
105
118
  ?instructions: String,
106
119
  ?response_format: OpenAI::Models::Audio::SpeechCreateParams::response_format,
107
120
  ?speed: Float,
@@ -45,7 +45,29 @@ module OpenAI
45
45
  # parameters manually. If unset, the audio is transcribed as a single block.
46
46
  # Required when using `gpt-4o-transcribe-diarize` for inputs longer than 30
47
47
  # seconds.
48
- attr_accessor chunking_strategy: OpenAI::Models::Audio::TranscriptionCreateParams::chunking_strategy?
48
+ attr_reader chunking_strategy: OpenAI::Models::Audio::TranscriptionCreateParams::chunking_strategy?
49
+
50
+ # Controls how the audio is cut into chunks. When set to `"auto"`, the server
51
+ # first normalizes loudness and then uses voice activity detection (VAD) to choose
52
+ # boundaries. `server_vad` object can be provided to tweak VAD detection
53
+ # parameters manually. If unset, the audio is transcribed as a single block.
54
+ # Required when using `gpt-4o-transcribe-diarize` for inputs longer than 30
55
+ # seconds.
56
+ def chunking_strategy=: (
57
+ (OpenAI::Models::Audio::TranscriptionCreateParams::chunking_strategy
58
+ | {
59
+ type: :server_vad,
60
+ ?prefix_padding_ms: Integer,
61
+ ?silence_duration_ms: Integer,
62
+ ?threshold: Float
63
+ })?
64
+ ) -> (OpenAI::Models::Audio::TranscriptionCreateParams::chunking_strategy
65
+ | {
66
+ type: :server_vad,
67
+ ?prefix_padding_ms: Integer,
68
+ ?silence_duration_ms: Integer,
69
+ ?threshold: Float
70
+ })?
49
71
 
50
72
  # Additional information to include in the transcription response. `logprobs` will
51
73
  # return the log probabilities of the tokens in the response to understand the
@@ -256,7 +278,13 @@ module OpenAI
256
278
  def initialize: (
257
279
  file: OpenAI::Internal::file_input,
258
280
  model: OpenAI::Models::Audio::TranscriptionCreateParams::model,
259
- ?chunking_strategy: OpenAI::Models::Audio::TranscriptionCreateParams::chunking_strategy?,
281
+ ?chunking_strategy: (OpenAI::Models::Audio::TranscriptionCreateParams::chunking_strategy
282
+ | {
283
+ type: :server_vad,
284
+ ?prefix_padding_ms: Integer,
285
+ ?silence_duration_ms: Integer,
286
+ ?threshold: Float
287
+ })?,
260
288
  ?include: ::Array[OpenAI::Models::Audio::transcription_include],
261
289
  ?keywords: ::Array[String],
262
290
  ?known_speaker_names: ::Array[String],
@@ -13,13 +13,58 @@ module OpenAI
13
13
 
14
14
  # Creates a voice from a consent recording and an audio sample. Requires
15
15
  # multipart/form-data.
16
- attr_accessor body: OpenAI::Models::Audio::VoiceCreateParams::body
16
+ attr_reader body: OpenAI::Models::Audio::VoiceCreateParams::body
17
+
18
+ # Creates a voice from a consent recording and an audio sample. Requires
19
+ # multipart/form-data.
20
+ def body=: (
21
+ OpenAI::Models::Audio::VoiceCreateParams::body
22
+ | {
23
+ audio_sample: OpenAI::Internal::file_input,
24
+ consent: String,
25
+ name: String,
26
+ ?type: :audio_sample
27
+ }
28
+ | {
29
+ name: String,
30
+ prompt: String,
31
+ type: :prompt,
32
+ ?model: String | :auto | :"2026-10-08",
33
+ ?script_hint: String
34
+ }
35
+ ) -> (OpenAI::Models::Audio::VoiceCreateParams::body
36
+ | {
37
+ audio_sample: OpenAI::Internal::file_input,
38
+ consent: String,
39
+ name: String,
40
+ ?type: :audio_sample
41
+ }
42
+ | {
43
+ name: String,
44
+ prompt: String,
45
+ type: :prompt,
46
+ ?model: (String | :auto | :"2026-10-08"),
47
+ ?script_hint: String
48
+ })
17
49
 
18
50
  # @param body
19
51
  # Creates a voice from a consent recording and an audio sample. Requires
20
52
  # multipart/form-data.
21
53
  def initialize: (
22
- body: OpenAI::Models::Audio::VoiceCreateParams::body,
54
+ body: OpenAI::Models::Audio::VoiceCreateParams::body
55
+ | {
56
+ audio_sample: OpenAI::Internal::file_input,
57
+ consent: String,
58
+ name: String,
59
+ ?type: :audio_sample
60
+ }
61
+ | {
62
+ name: String,
63
+ prompt: String,
64
+ type: :prompt,
65
+ ?model: String | :auto | :"2026-10-08",
66
+ ?script_hint: String
67
+ },
23
68
  ?request_options: OpenAI::request_opts
24
69
  ) -> void
25
70
 
@@ -15,7 +15,9 @@ module OpenAI
15
15
  service_tier: OpenAI::Models::Beta::Agent::service_tier,
16
16
  text: OpenAI::Beta::AgentText,
17
17
  tools: ::Array[OpenAI::Models::Beta::persisted_agent_tool],
18
- updated_at: Integer
18
+ updated_at: Integer,
19
+ ?compaction: OpenAI::Beta::Agent::Compaction,
20
+ ?experimental: OpenAI::Beta::Agent::Experimental
19
21
  }
20
22
 
21
23
  class Agent < OpenAI::Internal::Type::BaseModel
@@ -59,6 +61,22 @@ module OpenAI
59
61
  # The Unix timestamp, in seconds, when the agent was last updated.
60
62
  attr_accessor updated_at: Integer
61
63
 
64
+ # The effective context compaction settings.
65
+ attr_reader compaction: OpenAI::Beta::Agent::Compaction?
66
+
67
+ # The effective context compaction settings.
68
+ def compaction=: (
69
+ OpenAI::Beta::Agent::Compaction
70
+ ) -> OpenAI::Beta::Agent::Compaction
71
+
72
+ # The effective experimental settings for the agent.
73
+ attr_reader experimental: OpenAI::Beta::Agent::Experimental?
74
+
75
+ # The effective experimental settings for the agent.
76
+ def experimental=: (
77
+ OpenAI::Beta::Agent::Experimental
78
+ ) -> OpenAI::Beta::Agent::Experimental
79
+
62
80
  # @param id
63
81
  # The ID of the reusable agent.
64
82
  # @param created_at
@@ -84,6 +102,10 @@ module OpenAI
84
102
  # Tools available to the agent.
85
103
  # @param updated_at
86
104
  # The Unix timestamp, in seconds, when the agent was last updated.
105
+ # @param compaction
106
+ # The effective context compaction settings.
107
+ # @param experimental
108
+ # The effective experimental settings for the agent.
87
109
  # @param object
88
110
  # The object type. Always `agent`.
89
111
  def initialize: (
@@ -99,6 +121,8 @@ module OpenAI
99
121
  text: OpenAI::Beta::AgentText,
100
122
  tools: ::Array[OpenAI::Models::Beta::persisted_agent_tool],
101
123
  updated_at: Integer,
124
+ ?compaction: OpenAI::Beta::Agent::Compaction,
125
+ ?experimental: OpenAI::Beta::Agent::Experimental,
102
126
  ?object: :agent
103
127
  ) -> void
104
128
 
@@ -115,7 +139,9 @@ module OpenAI
115
139
  service_tier: OpenAI::Models::Beta::Agent::service_tier,
116
140
  text: OpenAI::Beta::AgentText,
117
141
  tools: ::Array[OpenAI::Models::Beta::persisted_agent_tool],
118
- updated_at: Integer
142
+ updated_at: Integer,
143
+ ?compaction: OpenAI::Beta::Agent::Compaction,
144
+ ?experimental: OpenAI::Beta::Agent::Experimental
119
145
  }
120
146
 
121
147
  type service_tier =
@@ -133,6 +159,32 @@ module OpenAI
133
159
 
134
160
  def self?.values: -> ::Array[OpenAI::Models::Beta::Agent::service_tier]
135
161
  end
162
+
163
+ type compaction = { async: bool }
164
+
165
+ class Compaction < OpenAI::Internal::Type::BaseModel
166
+ # Whether context is compacted in the background. Defaults to true.
167
+ attr_accessor async: bool
168
+
169
+ # @param async
170
+ # Whether context is compacted in the background. Defaults to true.
171
+ def initialize: (async: bool) -> void
172
+
173
+ def to_hash: -> { async: bool }
174
+ end
175
+
176
+ type experimental = { time_awareness: bool }
177
+
178
+ class Experimental < OpenAI::Internal::Type::BaseModel
179
+ # Whether the model receives periodic current-time reminders.
180
+ attr_accessor time_awareness: bool
181
+
182
+ # @param time_awareness
183
+ # Whether the model receives periodic current-time reminders.
184
+ def initialize: (time_awareness: bool) -> void
185
+
186
+ def to_hash: -> { time_awareness: bool }
187
+ end
136
188
  end
137
189
  end
138
190
  end
@@ -4,6 +4,8 @@ module OpenAI
4
4
  type agent_create_params =
5
5
  {
6
6
  model: String,
7
+ ?compaction: OpenAI::Beta::AgentCreateParams::Compaction?,
8
+ ?experimental: OpenAI::Beta::AgentCreateParams::Experimental,
7
9
  ?instructions: String?,
8
10
  ?metadata: ::Hash[Symbol, String]?,
9
11
  ?multi_agent: OpenAI::Beta::MultiAgentConfigParam?,
@@ -22,6 +24,17 @@ module OpenAI
22
24
  # The model to use for the agent. The requested model name is preserved.
23
25
  attr_accessor model: String
24
26
 
27
+ # Context compaction settings. Omission or null enables background compaction.
28
+ attr_accessor compaction: OpenAI::Beta::AgentCreateParams::Compaction?
29
+
30
+ # Experimental agent settings. All experimental features default to disabled.
31
+ attr_reader experimental: OpenAI::Beta::AgentCreateParams::Experimental?
32
+
33
+ # Experimental agent settings. All experimental features default to disabled.
34
+ def experimental=: (
35
+ OpenAI::Beta::AgentCreateParams::Experimental
36
+ ) -> OpenAI::Beta::AgentCreateParams::Experimental
37
+
25
38
  # Additional instructions appended to the agent's default base instructions. Omit
26
39
  # or set to null to add no custom instructions.
27
40
  attr_accessor instructions: String?
@@ -53,6 +66,10 @@ module OpenAI
53
66
 
54
67
  # @param model
55
68
  # The model to use for the agent. The requested model name is preserved.
69
+ # @param compaction
70
+ # Context compaction settings. Omission or null enables background compaction.
71
+ # @param experimental
72
+ # Experimental agent settings. All experimental features default to disabled.
56
73
  # @param instructions
57
74
  # Additional instructions appended to the agent's default base instructions. Omit
58
75
  # or set to null to add no custom instructions.
@@ -76,6 +93,8 @@ module OpenAI
76
93
  # within 3 MiB (3,145,728 bytes) of compact UTF-8 JSON.
77
94
  def initialize: (
78
95
  model: String,
96
+ ?compaction: OpenAI::Beta::AgentCreateParams::Compaction?,
97
+ ?experimental: OpenAI::Beta::AgentCreateParams::Experimental,
79
98
  ?instructions: String?,
80
99
  ?metadata: ::Hash[Symbol, String]?,
81
100
  ?multi_agent: OpenAI::Beta::MultiAgentConfigParam?,
@@ -89,6 +108,8 @@ module OpenAI
89
108
 
90
109
  def to_hash: -> {
91
110
  model: String,
111
+ ?compaction: OpenAI::Beta::AgentCreateParams::Compaction?,
112
+ ?experimental: OpenAI::Beta::AgentCreateParams::Experimental,
92
113
  ?instructions: String?,
93
114
  ?metadata: ::Hash[Symbol, String]?,
94
115
  ?multi_agent: OpenAI::Beta::MultiAgentConfigParam?,
@@ -100,6 +121,39 @@ module OpenAI
100
121
  ?request_options: OpenAI::RequestOptions
101
122
  }
102
123
 
124
+ type compaction = { ?async: bool? }
125
+
126
+ class Compaction < OpenAI::Internal::Type::BaseModel
127
+ # Whether to compact context in the background. Omission or null defaults to true.
128
+ # Set to false to use blocking compaction. Background compaction may increase
129
+ # token usage.
130
+ attr_accessor async: bool?
131
+
132
+ # @param async
133
+ # Whether to compact context in the background. Omission or null defaults to true.
134
+ # Set to false to use blocking compaction. Background compaction may increase
135
+ # token usage.
136
+ def initialize: (?async: bool?) -> void
137
+
138
+ def to_hash: -> { ?async: bool? }
139
+ end
140
+
141
+ type experimental = { ?time_awareness: bool }
142
+
143
+ class Experimental < OpenAI::Internal::Type::BaseModel
144
+ # Whether to give the model periodic current-time reminders. Defaults to false.
145
+ attr_reader time_awareness: bool?
146
+
147
+ # Whether to give the model periodic current-time reminders. Defaults to false.
148
+ def time_awareness=: (bool) -> bool
149
+
150
+ # @param time_awareness
151
+ # Whether to give the model periodic current-time reminders. Defaults to false.
152
+ def initialize: (?time_awareness: bool) -> void
153
+
154
+ def to_hash: -> { ?time_awareness: bool }
155
+ end
156
+
103
157
  type service_tier =
104
158
  :auto | :default | :flex | :priority | :fast | :ultrafast
105
159