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,532 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ module Admin
7
+
8
+ module Organization
9
+
10
+ class ExternalKeyCreateParams < OpenAI::Internal::Type::BaseModel
11
+
12
+ extend OpenAI::Internal::Type::RequestParameters::Converter
13
+ include OpenAI::Internal::Type::RequestParameters
14
+
15
+ OrHash = T.type_alias do
16
+ T.any(
17
+ OpenAI::Admin::Organization::ExternalKeyCreateParams,
18
+ OpenAI::Internal::AnyHash
19
+ )
20
+ end
21
+
22
+ sig {
23
+ returns(
24
+ T.any(
25
+ OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Aws,
26
+ OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Gcp,
27
+ OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Azure
28
+ )
29
+ )
30
+ }
31
+ attr_accessor :body
32
+
33
+ sig do
34
+ params(
35
+
36
+ body: T.any(
37
+ OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Aws::OrHash,
38
+ OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Gcp::OrHash,
39
+ OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Azure::OrHash
40
+ ),
41
+
42
+ request_options: OpenAI::RequestOptions::OrHash
43
+ )
44
+ .returns(T.attached_class)
45
+ end
46
+ def self.new(
47
+
48
+ body:,
49
+
50
+ request_options: {}
51
+ )
52
+ end
53
+
54
+ sig do
55
+ override.returns(
56
+ {
57
+ body: T.any(
58
+ OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Aws,
59
+ OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Gcp,
60
+ OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Azure
61
+ ),
62
+ request_options: OpenAI::RequestOptions
63
+ }
64
+ )
65
+ end
66
+ def to_hash
67
+ end
68
+
69
+ module Body
70
+ extend OpenAI::Internal::Type::Union
71
+
72
+ Variants = T.type_alias {
73
+ T.any(
74
+ OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Aws,
75
+ OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Gcp,
76
+ OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Azure
77
+ )
78
+ }
79
+
80
+ class Aws < OpenAI::Internal::Type::BaseModel
81
+ OrHash = T.type_alias do
82
+ T.any(
83
+ OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Aws,
84
+ OpenAI::Internal::AnyHash
85
+ )
86
+ end
87
+
88
+ # The ExternalID that OpenAI will pass in the AssumeRole call for the customer's
89
+ # AWS account. This must be the OpenAI organization ID or an API project ID that
90
+ # belongs to the organization.
91
+ sig { returns(String) }
92
+ attr_accessor :external_id
93
+
94
+ # The Key Management System ARN for the master key you manage
95
+ sig { returns(String) }
96
+ attr_accessor :kms_arn
97
+
98
+ # A friendly name to identify this config
99
+ sig { returns(String) }
100
+ attr_accessor :name
101
+
102
+ # The Role ARN that OpenAI will assume to call your KMS
103
+ sig { returns(String) }
104
+ attr_accessor :role_arn
105
+
106
+ sig { returns(Symbol) }
107
+ attr_accessor :type
108
+
109
+ sig {
110
+ returns(T.nilable(OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Aws::Purpose::OrSymbol))
111
+ }
112
+ attr_reader :purpose
113
+
114
+ sig {
115
+ params(purpose: OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Aws::Purpose::OrSymbol).void
116
+ }
117
+ attr_writer :purpose
118
+
119
+ sig do
120
+ params(
121
+
122
+ external_id: String,
123
+
124
+ kms_arn: String,
125
+
126
+ name: String,
127
+
128
+ role_arn: String,
129
+
130
+ purpose: OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Aws::Purpose::OrSymbol,
131
+
132
+ type: Symbol
133
+ )
134
+ .returns(T.attached_class)
135
+ end
136
+ def self.new(
137
+
138
+ # The ExternalID that OpenAI will pass in the AssumeRole call for the customer's
139
+ # AWS account. This must be the OpenAI organization ID or an API project ID that
140
+ # belongs to the organization.
141
+ external_id:,
142
+
143
+ # The Key Management System ARN for the master key you manage
144
+ kms_arn:,
145
+
146
+ # A friendly name to identify this config
147
+ name:,
148
+
149
+ # The Role ARN that OpenAI will assume to call your KMS
150
+ role_arn:,
151
+
152
+ purpose: nil,
153
+
154
+ type: :aws
155
+ )
156
+ end
157
+
158
+ sig do
159
+ override.returns(
160
+ {
161
+ external_id: String,
162
+ kms_arn: String,
163
+ name: String,
164
+ role_arn: String,
165
+ type: Symbol,
166
+ purpose: OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Aws::Purpose::OrSymbol
167
+ }
168
+ )
169
+ end
170
+ def to_hash
171
+ end
172
+
173
+ module Purpose
174
+ extend OpenAI::Internal::Type::Enum
175
+
176
+ TaggedSymbol = T.type_alias {
177
+ T.all(Symbol, OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Aws::Purpose)
178
+ }
179
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
180
+
181
+ EKM = T.let(
182
+ :ekm,
183
+ OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Aws::Purpose::TaggedSymbol
184
+ )
185
+ PSP_DECRYPTION = T.let(
186
+ :psp_decryption,
187
+ OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Aws::Purpose::TaggedSymbol
188
+ )
189
+
190
+ sig {
191
+ override.returns(
192
+ T::Array[OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Aws::Purpose::TaggedSymbol]
193
+ )
194
+ }
195
+ def self.values
196
+ end
197
+ end
198
+ end
199
+
200
+ class Gcp < OpenAI::Internal::Type::BaseModel
201
+ OrHash = T.type_alias do
202
+ T.any(
203
+ OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Gcp,
204
+ OpenAI::Internal::AnyHash
205
+ )
206
+ end
207
+
208
+ # The aud field in the identity token OpenAI will pass in the call to the
209
+ # customer's GCP STS. This must be the OpenAI organization ID or an API project ID
210
+ # that belongs to the organization.
211
+ sig { returns(String) }
212
+ attr_accessor :audience
213
+
214
+ # The region where your Key Management System master key is located
215
+ sig { returns(String) }
216
+ attr_accessor :kms_key_location
217
+
218
+ # The name of the Key Management System master key you manage
219
+ sig { returns(String) }
220
+ attr_accessor :kms_key_name
221
+
222
+ # The Key Management System key ring for the master key you manage
223
+ sig { returns(String) }
224
+ attr_accessor :kms_key_ring_name
225
+
226
+ # The string GCP project name where your KMS resides
227
+ sig { returns(String) }
228
+ attr_accessor :kms_project_id
229
+
230
+ # A friendly name to identify this config
231
+ sig { returns(String) }
232
+ attr_accessor :name
233
+
234
+ sig { returns(Symbol) }
235
+ attr_accessor :type
236
+
237
+ # The pool containing the Workload Identity provider that you registered for
238
+ # OpenAI
239
+ sig { returns(String) }
240
+ attr_accessor :workload_identity_pool_id
241
+
242
+ # The numeric GCP project number where you registered OpenAI's workload identity
243
+ sig { returns(String) }
244
+ attr_accessor :workload_identity_project_number
245
+
246
+ # The Workload Identity provider that you registered for OpenAI
247
+ sig { returns(String) }
248
+ attr_accessor :workload_identity_provider_id
249
+
250
+ # An exact CryptoKeyVersion number. Required for PSP decryption; not accepted for
251
+ # EKM.
252
+ sig { returns(T.nilable(String)) }
253
+ attr_reader :kms_key_version
254
+
255
+ sig { params(kms_key_version: String).void }
256
+ attr_writer :kms_key_version
257
+
258
+ sig {
259
+ returns(T.nilable(OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Gcp::Purpose::OrSymbol))
260
+ }
261
+ attr_reader :purpose
262
+
263
+ sig {
264
+ params(purpose: OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Gcp::Purpose::OrSymbol).void
265
+ }
266
+ attr_writer :purpose
267
+
268
+ sig do
269
+ params(
270
+
271
+ audience: String,
272
+
273
+ kms_key_location: String,
274
+
275
+ kms_key_name: String,
276
+
277
+ kms_key_ring_name: String,
278
+
279
+ kms_project_id: String,
280
+
281
+ name: String,
282
+
283
+ workload_identity_pool_id: String,
284
+
285
+ workload_identity_project_number: String,
286
+
287
+ workload_identity_provider_id: String,
288
+
289
+ kms_key_version: String,
290
+
291
+ purpose: OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Gcp::Purpose::OrSymbol,
292
+
293
+ type: Symbol
294
+ )
295
+ .returns(T.attached_class)
296
+ end
297
+ def self.new(
298
+
299
+ # The aud field in the identity token OpenAI will pass in the call to the
300
+ # customer's GCP STS. This must be the OpenAI organization ID or an API project ID
301
+ # that belongs to the organization.
302
+ audience:,
303
+
304
+ # The region where your Key Management System master key is located
305
+ kms_key_location:,
306
+
307
+ # The name of the Key Management System master key you manage
308
+ kms_key_name:,
309
+
310
+ # The Key Management System key ring for the master key you manage
311
+ kms_key_ring_name:,
312
+
313
+ # The string GCP project name where your KMS resides
314
+ kms_project_id:,
315
+
316
+ # A friendly name to identify this config
317
+ name:,
318
+
319
+ # The pool containing the Workload Identity provider that you registered for
320
+ # OpenAI
321
+ workload_identity_pool_id:,
322
+
323
+ # The numeric GCP project number where you registered OpenAI's workload identity
324
+ workload_identity_project_number:,
325
+
326
+ # The Workload Identity provider that you registered for OpenAI
327
+ workload_identity_provider_id:,
328
+
329
+ # An exact CryptoKeyVersion number. Required for PSP decryption; not accepted for
330
+ # EKM.
331
+ kms_key_version: nil,
332
+
333
+ purpose: nil,
334
+
335
+ type: :gcp
336
+ )
337
+ end
338
+
339
+ sig do
340
+ override.returns(
341
+ {
342
+ audience: String,
343
+ kms_key_location: String,
344
+ kms_key_name: String,
345
+ kms_key_ring_name: String,
346
+ kms_project_id: String,
347
+ name: String,
348
+ type: Symbol,
349
+ workload_identity_pool_id: String,
350
+ workload_identity_project_number: String,
351
+ workload_identity_provider_id: String,
352
+ kms_key_version: String,
353
+ purpose: OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Gcp::Purpose::OrSymbol
354
+ }
355
+ )
356
+ end
357
+ def to_hash
358
+ end
359
+
360
+ module Purpose
361
+ extend OpenAI::Internal::Type::Enum
362
+
363
+ TaggedSymbol = T.type_alias {
364
+ T.all(Symbol, OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Gcp::Purpose)
365
+ }
366
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
367
+
368
+ EKM = T.let(
369
+ :ekm,
370
+ OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Gcp::Purpose::TaggedSymbol
371
+ )
372
+ PSP_DECRYPTION = T.let(
373
+ :psp_decryption,
374
+ OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Gcp::Purpose::TaggedSymbol
375
+ )
376
+
377
+ sig {
378
+ override.returns(
379
+ T::Array[OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Gcp::Purpose::TaggedSymbol]
380
+ )
381
+ }
382
+ def self.values
383
+ end
384
+ end
385
+ end
386
+
387
+ class Azure < OpenAI::Internal::Type::BaseModel
388
+ OrHash = T.type_alias do
389
+ T.any(
390
+ OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Azure,
391
+ OpenAI::Internal::AnyHash
392
+ )
393
+ end
394
+
395
+ # The name of the Azure Key Vault master key that you manage
396
+ sig { returns(String) }
397
+ attr_accessor :key_name
398
+
399
+ # A friendly name to identify this config
400
+ sig { returns(String) }
401
+ attr_accessor :name
402
+
403
+ # Your Azure tenant UUID
404
+ sig { returns(String) }
405
+ attr_accessor :tenant_id
406
+
407
+ sig { returns(Symbol) }
408
+ attr_accessor :type
409
+
410
+ # The URI of the Azure vault containing the master key you manage
411
+ sig { returns(String) }
412
+ attr_accessor :vault_uri
413
+
414
+ # An exact Azure Key Vault key version. Required for PSP decryption; not accepted
415
+ # for EKM.
416
+ sig { returns(T.nilable(String)) }
417
+ attr_reader :key_version
418
+
419
+ sig { params(key_version: String).void }
420
+ attr_writer :key_version
421
+
422
+ sig {
423
+ returns(T.nilable(OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Azure::Purpose::OrSymbol))
424
+ }
425
+ attr_reader :purpose
426
+
427
+ sig {
428
+ params(purpose: OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Azure::Purpose::OrSymbol)
429
+ .void
430
+ }
431
+ attr_writer :purpose
432
+
433
+ sig do
434
+ params(
435
+
436
+ key_name: String,
437
+
438
+ name: String,
439
+
440
+ tenant_id: String,
441
+
442
+ vault_uri: String,
443
+
444
+ key_version: String,
445
+
446
+ purpose: OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Azure::Purpose::OrSymbol,
447
+
448
+ type: Symbol
449
+ )
450
+ .returns(T.attached_class)
451
+ end
452
+ def self.new(
453
+
454
+ # The name of the Azure Key Vault master key that you manage
455
+ key_name:,
456
+
457
+ # A friendly name to identify this config
458
+ name:,
459
+
460
+ # Your Azure tenant UUID
461
+ tenant_id:,
462
+
463
+ # The URI of the Azure vault containing the master key you manage
464
+ vault_uri:,
465
+
466
+ # An exact Azure Key Vault key version. Required for PSP decryption; not accepted
467
+ # for EKM.
468
+ key_version: nil,
469
+
470
+ purpose: nil,
471
+
472
+ type: :azure
473
+ )
474
+ end
475
+
476
+ sig do
477
+ override.returns(
478
+ {
479
+ key_name: String,
480
+ name: String,
481
+ tenant_id: String,
482
+ type: Symbol,
483
+ vault_uri: String,
484
+ key_version: String,
485
+ purpose: OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Azure::Purpose::OrSymbol
486
+ }
487
+ )
488
+ end
489
+ def to_hash
490
+ end
491
+
492
+ module Purpose
493
+ extend OpenAI::Internal::Type::Enum
494
+
495
+ TaggedSymbol = T.type_alias {
496
+ T.all(Symbol, OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Azure::Purpose)
497
+ }
498
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
499
+
500
+ EKM = T.let(
501
+ :ekm,
502
+ OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Azure::Purpose::TaggedSymbol
503
+ )
504
+ PSP_DECRYPTION = T.let(
505
+ :psp_decryption,
506
+ OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Azure::Purpose::TaggedSymbol
507
+ )
508
+
509
+ sig {
510
+ override.returns(
511
+ T::Array[OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Azure::Purpose::TaggedSymbol]
512
+ )
513
+ }
514
+ def self.values
515
+ end
516
+ end
517
+ end
518
+
519
+ sig { override.returns(T::Array[OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Variants]) }
520
+ def self.variants
521
+ end
522
+
523
+ end
524
+
525
+ end
526
+
527
+ end
528
+
529
+ end
530
+
531
+ end
532
+ end
@@ -0,0 +1,57 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ module Admin
7
+
8
+ module Organization
9
+
10
+ class ExternalKeyDeleteParams < OpenAI::Internal::Type::BaseModel
11
+
12
+ extend OpenAI::Internal::Type::RequestParameters::Converter
13
+ include OpenAI::Internal::Type::RequestParameters
14
+
15
+ OrHash = T.type_alias do
16
+ T.any(
17
+ OpenAI::Admin::Organization::ExternalKeyDeleteParams,
18
+ OpenAI::Internal::AnyHash
19
+ )
20
+ end
21
+
22
+ sig { returns(String) }
23
+ attr_accessor :external_key_id
24
+
25
+ sig do
26
+ params(
27
+
28
+ external_key_id: String,
29
+
30
+ request_options: OpenAI::RequestOptions::OrHash
31
+ )
32
+ .returns(T.attached_class)
33
+ end
34
+ def self.new(
35
+
36
+ external_key_id:,
37
+
38
+ request_options: {}
39
+ )
40
+ end
41
+
42
+ sig do
43
+ override.returns(
44
+ {external_key_id: String, request_options: OpenAI::RequestOptions}
45
+ )
46
+ end
47
+ def to_hash
48
+ end
49
+
50
+ end
51
+
52
+ end
53
+
54
+ end
55
+
56
+ end
57
+ end
@@ -0,0 +1,129 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ module Admin
7
+
8
+ module Organization
9
+
10
+ class ExternalKeyListParams < OpenAI::Internal::Type::BaseModel
11
+
12
+ extend OpenAI::Internal::Type::RequestParameters::Converter
13
+ include OpenAI::Internal::Type::RequestParameters
14
+
15
+ OrHash = T.type_alias do
16
+ T.any(
17
+ OpenAI::Admin::Organization::ExternalKeyListParams,
18
+ OpenAI::Internal::AnyHash
19
+ )
20
+ end
21
+
22
+ sig { returns(T.nilable(String)) }
23
+ attr_accessor :after
24
+
25
+ sig { returns(T.nilable(Integer)) }
26
+ attr_reader :limit
27
+
28
+ sig { params(limit: Integer).void }
29
+ attr_writer :limit
30
+
31
+ sig { returns(T.nilable(OpenAI::Admin::Organization::ExternalKeyListParams::Order::OrSymbol)) }
32
+ attr_reader :order
33
+
34
+ sig { params(order: OpenAI::Admin::Organization::ExternalKeyListParams::Order::OrSymbol).void }
35
+ attr_writer :order
36
+
37
+ # Filter by key purpose. When omitted, returns keys of all purposes.
38
+ sig { returns(T.nilable(OpenAI::Admin::Organization::ExternalKeyListParams::Purpose::OrSymbol)) }
39
+ attr_reader :purpose
40
+
41
+ sig { params(purpose: OpenAI::Admin::Organization::ExternalKeyListParams::Purpose::OrSymbol).void }
42
+ attr_writer :purpose
43
+
44
+ sig do
45
+ params(
46
+
47
+ after: T.nilable(String),
48
+
49
+ limit: Integer,
50
+
51
+ order: OpenAI::Admin::Organization::ExternalKeyListParams::Order::OrSymbol,
52
+
53
+ purpose: OpenAI::Admin::Organization::ExternalKeyListParams::Purpose::OrSymbol,
54
+
55
+ request_options: OpenAI::RequestOptions::OrHash
56
+ )
57
+ .returns(T.attached_class)
58
+ end
59
+ def self.new(
60
+
61
+ after: nil,
62
+
63
+ limit: nil,
64
+
65
+ order: nil,
66
+
67
+ # Filter by key purpose. When omitted, returns keys of all purposes.
68
+ purpose: nil,
69
+
70
+ request_options: {}
71
+ )
72
+ end
73
+
74
+ sig do
75
+ override.returns(
76
+ {
77
+ after: T.nilable(String),
78
+ limit: Integer,
79
+ order: OpenAI::Admin::Organization::ExternalKeyListParams::Order::OrSymbol,
80
+ purpose: OpenAI::Admin::Organization::ExternalKeyListParams::Purpose::OrSymbol,
81
+ request_options: OpenAI::RequestOptions
82
+ }
83
+ )
84
+ end
85
+ def to_hash
86
+ end
87
+
88
+ module Order
89
+ extend OpenAI::Internal::Type::Enum
90
+
91
+ TaggedSymbol = T.type_alias { T.all(Symbol, OpenAI::Admin::Organization::ExternalKeyListParams::Order) }
92
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
93
+
94
+ ASC = T.let(:asc, OpenAI::Admin::Organization::ExternalKeyListParams::Order::TaggedSymbol)
95
+ DESC = T.let(:desc, OpenAI::Admin::Organization::ExternalKeyListParams::Order::TaggedSymbol)
96
+
97
+ sig { override.returns(T::Array[OpenAI::Admin::Organization::ExternalKeyListParams::Order::TaggedSymbol]) }
98
+ def self.values
99
+ end
100
+ end
101
+
102
+ # Filter by key purpose. When omitted, returns keys of all purposes.
103
+ module Purpose
104
+ extend OpenAI::Internal::Type::Enum
105
+
106
+ TaggedSymbol = T.type_alias { T.all(Symbol, OpenAI::Admin::Organization::ExternalKeyListParams::Purpose) }
107
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
108
+
109
+ EKM = T.let(:ekm, OpenAI::Admin::Organization::ExternalKeyListParams::Purpose::TaggedSymbol)
110
+ PSP_DECRYPTION = T.let(
111
+ :psp_decryption,
112
+ OpenAI::Admin::Organization::ExternalKeyListParams::Purpose::TaggedSymbol
113
+ )
114
+
115
+ sig {
116
+ override.returns(T::Array[OpenAI::Admin::Organization::ExternalKeyListParams::Purpose::TaggedSymbol])
117
+ }
118
+ def self.values
119
+ end
120
+ end
121
+
122
+ end
123
+
124
+ end
125
+
126
+ end
127
+
128
+ end
129
+ end