openai 0.114.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 (226) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +36 -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/helpers/chat/tool_runner.rb +1 -1
  7. data/lib/openai/helpers/live/websocket.rb +31 -0
  8. data/lib/openai/helpers/realtime/connection.rb +33 -0
  9. data/lib/openai/helpers/realtime/connection_manager.rb +1 -0
  10. data/lib/openai/helpers/realtime/conversation_item_variant_resolver.rb +5 -0
  11. data/lib/openai/helpers/realtime/recovery.rb +5 -1
  12. data/lib/openai/helpers/realtime/translation.rb +5 -0
  13. data/lib/openai/helpers/realtime/transports/async_websocket.rb +19 -0
  14. data/lib/openai/helpers/responses_websocket/connection.rb +53 -15
  15. data/lib/openai/helpers/responses_websocket/connection_manager.rb +1 -0
  16. data/lib/openai/helpers/responses_websocket/connection_resources.rb +1 -1
  17. data/lib/openai/helpers/structured_output/response_parser.rb +1 -0
  18. data/lib/openai/helpers/structured_output.rb +58 -0
  19. data/lib/openai/helpers/websocket/connection_manager.rb +11 -0
  20. data/lib/openai/helpers/websocket/resource.rb +1 -0
  21. data/lib/openai/helpers/websocket/typed_connection.rb +1 -0
  22. data/lib/openai/internal/type/array_of.rb +1 -1
  23. data/lib/openai/internal/type/hash_of.rb +1 -1
  24. data/lib/openai/internal/type/request_parameters.rb +2 -1
  25. data/lib/openai/internal/type/union.rb +18 -6
  26. data/lib/openai/models/admin/organization/external_key.rb +169 -0
  27. data/lib/openai/models/admin/organization/external_key_create_params.rb +311 -0
  28. data/lib/openai/models/admin/organization/external_key_delete_params.rb +24 -0
  29. data/lib/openai/models/admin/organization/external_key_list_params.rb +69 -0
  30. data/lib/openai/models/admin/organization/external_key_retrieve_params.rb +24 -0
  31. data/lib/openai/models/admin/organization/external_key_validate_params.rb +24 -0
  32. data/lib/openai/models/admin/organization/external_key_validate_response.rb +20 -0
  33. data/lib/openai/models/audio/speech_model.rb +12 -0
  34. data/lib/openai/models/audio_model.rb +15 -0
  35. data/lib/openai/models/beta/agent.rb +49 -1
  36. data/lib/openai/models/beta/agent_create_params.rb +51 -1
  37. data/lib/openai/models/beta/agent_session.rb +75 -2
  38. data/lib/openai/models/beta/agent_update_params.rb +62 -1
  39. data/lib/openai/models/beta/agents/session_create_params.rb +94 -2
  40. data/lib/openai/models/beta/agents/session_list_params.rb +16 -1
  41. data/lib/openai/models/beta/agents/session_update_params.rb +50 -5
  42. data/lib/openai/models/beta/assistant_update_params.rb +18 -0
  43. data/lib/openai/models/beta/beta_response.rb +224 -1
  44. data/lib/openai/models/beta/beta_response_configuration_update_item.rb +64 -3
  45. data/lib/openai/models/beta/beta_response_configuration_update_item_param.rb +64 -4
  46. data/lib/openai/models/beta/beta_response_input_item.rb +2 -3
  47. data/lib/openai/models/beta/beta_response_item.rb +2 -2
  48. data/lib/openai/models/beta/beta_response_tool_search_output_item_param.rb +6 -6
  49. data/lib/openai/models/beta/beta_responses_client_event.rb +20 -1
  50. data/lib/openai/models/beta/beta_tool.rb +6 -6
  51. data/lib/openai/models/beta/response_compact_params.rb +6 -0
  52. data/lib/openai/models/beta/response_create_params.rb +6 -0
  53. data/lib/openai/models/chat_model.rb +6 -0
  54. data/lib/openai/models/conversations/conversation_item.rb +2 -2
  55. data/lib/openai/models/image_edit_params.rb +46 -25
  56. data/lib/openai/models/live/fork_server_event.rb +43 -3
  57. data/lib/openai/models/live/server_event.rb +43 -3
  58. data/lib/openai/models/live/sideband_client_event.rb +40 -1
  59. data/lib/openai/models/live/sideband_server_event.rb +43 -3
  60. data/lib/openai/models/realtime/audio_transcription.rb +15 -0
  61. data/lib/openai/models/realtime/conversation_item_added.rb +2 -2
  62. data/lib/openai/models/realtime/conversation_item_create_event.rb +2 -2
  63. data/lib/openai/models/realtime/conversation_item_created_event.rb +2 -2
  64. data/lib/openai/models/realtime/conversation_item_done.rb +2 -2
  65. data/lib/openai/models/realtime/realtime_response.rb +2 -2
  66. data/lib/openai/models/realtime/realtime_response_create_params.rb +2 -2
  67. data/lib/openai/models/realtime/realtime_server_event.rb +2 -2
  68. data/lib/openai/models/realtime/realtime_session.rb +18 -0
  69. data/lib/openai/models/realtime/realtime_session_create_request.rb +18 -0
  70. data/lib/openai/models/realtime/realtime_session_create_response.rb +18 -0
  71. data/lib/openai/models/realtime/response_output_item_added_event.rb +2 -2
  72. data/lib/openai/models/realtime/response_output_item_done_event.rb +2 -2
  73. data/lib/openai/models/responses/response.rb +221 -1
  74. data/lib/openai/models/responses/response_compact_params.rb +6 -0
  75. data/lib/openai/models/responses/response_configuration_update_item.rb +50 -3
  76. data/lib/openai/models/responses/response_configuration_update_item_param.rb +50 -4
  77. data/lib/openai/models/responses/response_input_item.rb +2 -3
  78. data/lib/openai/models/responses/response_item.rb +2 -2
  79. data/lib/openai/models/responses/response_tool_search_output_item_param.rb +6 -6
  80. data/lib/openai/models/responses/responses_client_event.rb +14 -1
  81. data/lib/openai/models/responses/tool.rb +6 -6
  82. data/lib/openai/net_http_client.rb +6 -0
  83. data/lib/openai/providers/vertex.rb +0 -10
  84. data/lib/openai/resources/admin/organization/external_keys.rb +132 -0
  85. data/lib/openai/resources/admin/organization.rb +4 -0
  86. data/lib/openai/resources/audio/speech.rb +8 -0
  87. data/lib/openai/resources/audio/translations.rb +8 -0
  88. data/lib/openai/resources/beta/agents/sessions.rb +22 -6
  89. data/lib/openai/resources/beta/agents.rb +17 -2
  90. data/lib/openai/resources/images.rb +36 -18
  91. data/lib/openai/version.rb +1 -1
  92. data/lib/openai.rb +8 -0
  93. data/rbi/openai/helpers/live/websocket.rbi +1 -12
  94. data/rbi/openai/helpers/realtime/connection.rbi +5 -0
  95. data/rbi/openai/helpers/realtime/transports/async_websocket.rbi +5 -0
  96. data/rbi/openai/helpers/responses_websocket/connection.rbi +7 -2
  97. data/rbi/openai/helpers/structured_output.rbi +10 -0
  98. data/rbi/openai/internal/type/array_of.rbi +1 -1
  99. data/rbi/openai/internal/type/hash_of.rbi +1 -1
  100. data/rbi/openai/internal/type/union.rbi +5 -0
  101. data/rbi/openai/models/admin/organization/external_key.rbi +301 -0
  102. data/rbi/openai/models/admin/organization/external_key_create_params.rbi +532 -0
  103. data/rbi/openai/models/admin/organization/external_key_delete_params.rbi +57 -0
  104. data/rbi/openai/models/admin/organization/external_key_list_params.rbi +129 -0
  105. data/rbi/openai/models/admin/organization/external_key_retrieve_params.rbi +57 -0
  106. data/rbi/openai/models/admin/organization/external_key_validate_params.rbi +57 -0
  107. data/rbi/openai/models/admin/organization/external_key_validate_response.rbi +50 -0
  108. data/rbi/openai/models/beta/agent.rbi +103 -1
  109. data/rbi/openai/models/beta/agent_create_params.rbi +109 -0
  110. data/rbi/openai/models/beta/agent_session.rbi +136 -3
  111. data/rbi/openai/models/beta/agent_update_params.rbi +120 -0
  112. data/rbi/openai/models/beta/agents/session_create_params.rbi +153 -0
  113. data/rbi/openai/models/beta/agents/session_list_params.rbi +19 -0
  114. data/rbi/openai/models/beta/agents/session_update_params.rbi +94 -6
  115. data/rbi/openai/models/beta/beta_response.rbi +394 -0
  116. data/rbi/openai/models/beta/beta_response_configuration_update_item.rbi +113 -3
  117. data/rbi/openai/models/beta/beta_response_configuration_update_item_param.rbi +125 -4
  118. data/rbi/openai/models/beta/beta_response_tool_search_output_item_param.rbi +6 -6
  119. data/rbi/openai/models/beta/beta_responses_client_event.rbi +17 -0
  120. data/rbi/openai/models/beta/beta_tool.rbi +6 -6
  121. data/rbi/openai/models/decision_create_params.rbi +4 -1
  122. data/rbi/openai/models/image_edit_params.rbi +49 -24
  123. data/rbi/openai/models/live/fork_server_event.rbi +65 -1
  124. data/rbi/openai/models/live/server_event.rbi +65 -1
  125. data/rbi/openai/models/live/sideband_client_event.rbi +60 -0
  126. data/rbi/openai/models/live/sideband_server_event.rbi +65 -1
  127. data/rbi/openai/models/realtime/conversation_item_added.rbi +6 -3
  128. data/rbi/openai/models/realtime/conversation_item_create_event.rbi +6 -3
  129. data/rbi/openai/models/realtime/conversation_item_created_event.rbi +6 -3
  130. data/rbi/openai/models/realtime/conversation_item_done.rbi +6 -3
  131. data/rbi/openai/models/realtime/realtime_response.rbi +8 -4
  132. data/rbi/openai/models/realtime/realtime_response_create_params.rbi +8 -4
  133. data/rbi/openai/models/realtime/realtime_server_event.rbi +6 -3
  134. data/rbi/openai/models/realtime/response_output_item_added_event.rbi +6 -3
  135. data/rbi/openai/models/realtime/response_output_item_done_event.rbi +6 -3
  136. data/rbi/openai/models/responses/response.rbi +394 -0
  137. data/rbi/openai/models/responses/response_configuration_update_item.rbi +76 -3
  138. data/rbi/openai/models/responses/response_configuration_update_item_param.rbi +74 -4
  139. data/rbi/openai/models/responses/response_tool_search_output_item_param.rbi +6 -6
  140. data/rbi/openai/models/responses/responses_client_event.rbi +17 -0
  141. data/rbi/openai/models/responses/tool.rbi +6 -6
  142. data/rbi/openai/net_http_client.rbi +5 -0
  143. data/rbi/openai/resources/admin/organization/external_keys.rbi +86 -0
  144. data/rbi/openai/resources/admin/organization.rbi +3 -0
  145. data/rbi/openai/resources/audio/speech.rbi +8 -0
  146. data/rbi/openai/resources/audio/translations.rbi +6 -0
  147. data/rbi/openai/resources/beta/agents/sessions.rbi +18 -2
  148. data/rbi/openai/resources/beta/agents.rbi +15 -0
  149. data/rbi/openai/resources/images.rbi +34 -16
  150. data/rbi/openai/resources/responses.rbi +2 -0
  151. data/realtime.md +6 -0
  152. data/responses-websocket.md +53 -0
  153. data/sig/openai/helpers/live/websocket.rbs +1 -9
  154. data/sig/openai/helpers/realtime/connection.rbs +3 -0
  155. data/sig/openai/helpers/realtime/transports/async_websocket.rbs +3 -0
  156. data/sig/openai/helpers/responses_websocket/connection.rbs +7 -1
  157. data/sig/openai/helpers/structured_output.rbs +9 -0
  158. data/sig/openai/internal/type/union.rbs +4 -0
  159. data/sig/openai/models/admin/organization/external_key.rbs +186 -0
  160. data/sig/openai/models/admin/organization/external_key_create_params.rbs +423 -0
  161. data/sig/openai/models/admin/organization/external_key_delete_params.rbs +27 -0
  162. data/sig/openai/models/admin/organization/external_key_list_params.rbs +81 -0
  163. data/sig/openai/models/admin/organization/external_key_retrieve_params.rbs +27 -0
  164. data/sig/openai/models/admin/organization/external_key_validate_params.rbs +27 -0
  165. data/sig/openai/models/admin/organization/external_key_validate_response.rbs +17 -0
  166. data/sig/openai/models/admin/organization/external_storage_create_params.rbs +72 -2
  167. data/sig/openai/models/audio/speech_create_params.rbs +15 -2
  168. data/sig/openai/models/audio/transcription_create_params.rbs +30 -2
  169. data/sig/openai/models/audio/voice_create_params.rbs +47 -2
  170. data/sig/openai/models/beta/agent.rbs +54 -2
  171. data/sig/openai/models/beta/agent_create_params.rbs +54 -0
  172. data/sig/openai/models/beta/agent_session.rbs +82 -3
  173. data/sig/openai/models/beta/agent_update_params.rbs +64 -0
  174. data/sig/openai/models/beta/agents/session_create_params.rbs +91 -0
  175. data/sig/openai/models/beta/agents/session_list_params.rbs +20 -0
  176. data/sig/openai/models/beta/agents/session_update_params.rbs +48 -6
  177. data/sig/openai/models/beta/assistant_create_params.rbs +5 -2
  178. data/sig/openai/models/beta/beta_response.rbs +223 -0
  179. data/sig/openai/models/beta/beta_response_configuration_update_item.rbs +58 -2
  180. data/sig/openai/models/beta/beta_response_configuration_update_item_param.rbs +58 -2
  181. data/sig/openai/models/beta/beta_response_tool_search_output_item_param.rbs +4 -4
  182. data/sig/openai/models/beta/beta_responses_client_event.rbs +17 -0
  183. data/sig/openai/models/beta/beta_tool.rbs +4 -4
  184. data/sig/openai/models/beta/response_create_params.rbs +5 -2
  185. data/sig/openai/models/beta/responses/input_token_count_params.rbs +10 -2
  186. data/sig/openai/models/beta/thread_create_and_run_params.rbs +11 -5
  187. data/sig/openai/models/beta/thread_create_params.rbs +11 -5
  188. data/sig/openai/models/beta/threads/message_create_params.rbs +6 -3
  189. data/sig/openai/models/beta/threads/run_create_params.rbs +6 -3
  190. data/sig/openai/models/decision_create_params.rbs +27 -2
  191. data/sig/openai/models/eval_create_params.rbs +25 -4
  192. data/sig/openai/models/evals/run_create_params.rbs +52 -8
  193. data/sig/openai/models/image_edit_params.rbs +47 -16
  194. data/sig/openai/models/live/fork_server_event.rbs +39 -0
  195. data/sig/openai/models/live/server_event.rbs +39 -0
  196. data/sig/openai/models/live/session_accept_params.rbs +39 -2
  197. data/sig/openai/models/live/sideband_client_event.rbs +32 -0
  198. data/sig/openai/models/live/sideband_server_event.rbs +39 -0
  199. data/sig/openai/models/realtime/conversation_item.rbs +1 -0
  200. data/sig/openai/models/responses/input_token_count_params.rbs +10 -2
  201. data/sig/openai/models/responses/response.rbs +223 -0
  202. data/sig/openai/models/responses/response_configuration_update_item.rbs +45 -2
  203. data/sig/openai/models/responses/response_configuration_update_item_param.rbs +45 -2
  204. data/sig/openai/models/responses/response_create_params.rbs +5 -2
  205. data/sig/openai/models/responses/response_tool_search_output_item_param.rbs +4 -4
  206. data/sig/openai/models/responses/responses_client_event.rbs +17 -0
  207. data/sig/openai/models/responses/tool.rbs +4 -4
  208. data/sig/openai/models/video_edit_params.rbs +11 -2
  209. data/sig/openai/models/video_extend_params.rbs +11 -2
  210. data/sig/openai/net_http_client.rbs +3 -0
  211. data/sig/openai/resources/admin/organization/external_keys.rbs +70 -0
  212. data/sig/openai/resources/admin/organization/external_storage.rbs +23 -1
  213. data/sig/openai/resources/admin/organization.rbs +2 -0
  214. data/sig/openai/resources/audio/speech.rbs +2 -1
  215. data/sig/openai/resources/audio/transcriptions.rbs +14 -2
  216. data/sig/openai/resources/audio/voices.rbs +14 -1
  217. data/sig/openai/resources/beta/agents/sessions.rbs +4 -0
  218. data/sig/openai/resources/beta/agents.rbs +4 -0
  219. data/sig/openai/resources/beta/responses/input_tokens.rbs +2 -1
  220. data/sig/openai/resources/beta/responses.rbs +4 -2
  221. data/sig/openai/resources/decisions.rbs +7 -1
  222. data/sig/openai/resources/images.rbs +2 -0
  223. data/sig/openai/resources/responses/input_tokens.rbs +2 -1
  224. data/sig/openai/resources/responses.rbs +5 -2
  225. data/sig/openai/resources/videos.rbs +2 -2
  226. metadata +25 -1
@@ -0,0 +1,186 @@
1
+ module OpenAI
2
+ module Models
3
+ module Admin
4
+ module Organization
5
+ type external_key =
6
+ {
7
+ id: String,
8
+ api_project_ids: ::Array[String],
9
+ created_at: Integer,
10
+ name: String,
11
+ object: String,
12
+ type: String,
13
+ workspace_id: String,
14
+ ?audience: String,
15
+ ?external_id: String,
16
+ ?key_name: String,
17
+ ?key_version: String,
18
+ ?kms_arn: String,
19
+ ?kms_key_location: String,
20
+ ?kms_key_name: String,
21
+ ?kms_key_ring_name: String,
22
+ ?kms_key_version: String,
23
+ ?kms_project_id: String,
24
+ ?purpose: OpenAI::Models::Admin::Organization::ExternalKey::purpose,
25
+ ?role_arn: String,
26
+ ?tenant_id: String,
27
+ ?vault_uri: String,
28
+ ?workload_identity_pool_id: String,
29
+ ?workload_identity_project_number: String,
30
+ ?workload_identity_provider_id: String
31
+ }
32
+
33
+ class ExternalKey < OpenAI::Internal::Type::BaseModel
34
+ attr_accessor id: String
35
+
36
+ attr_accessor api_project_ids: ::Array[String]
37
+
38
+ attr_accessor created_at: Integer
39
+
40
+ attr_accessor name: String
41
+
42
+ attr_accessor object: String
43
+
44
+ attr_accessor type: String
45
+
46
+ attr_accessor workspace_id: String
47
+
48
+ attr_reader audience: String?
49
+
50
+ def audience=: (String) -> String
51
+
52
+ attr_reader external_id: String?
53
+
54
+ def external_id=: (String) -> String
55
+
56
+ attr_reader key_name: String?
57
+
58
+ def key_name=: (String) -> String
59
+
60
+ attr_reader key_version: String?
61
+
62
+ def key_version=: (String) -> String
63
+
64
+ attr_reader kms_arn: String?
65
+
66
+ def kms_arn=: (String) -> String
67
+
68
+ attr_reader kms_key_location: String?
69
+
70
+ def kms_key_location=: (String) -> String
71
+
72
+ attr_reader kms_key_name: String?
73
+
74
+ def kms_key_name=: (String) -> String
75
+
76
+ attr_reader kms_key_ring_name: String?
77
+
78
+ def kms_key_ring_name=: (String) -> String
79
+
80
+ attr_reader kms_key_version: String?
81
+
82
+ def kms_key_version=: (String) -> String
83
+
84
+ attr_reader kms_project_id: String?
85
+
86
+ def kms_project_id=: (String) -> String
87
+
88
+ attr_reader purpose: OpenAI::Models::Admin::Organization::ExternalKey::purpose?
89
+
90
+ def purpose=: (
91
+ OpenAI::Models::Admin::Organization::ExternalKey::purpose
92
+ ) -> OpenAI::Models::Admin::Organization::ExternalKey::purpose
93
+
94
+ attr_reader role_arn: String?
95
+
96
+ def role_arn=: (String) -> String
97
+
98
+ attr_reader tenant_id: String?
99
+
100
+ def tenant_id=: (String) -> String
101
+
102
+ attr_reader vault_uri: String?
103
+
104
+ def vault_uri=: (String) -> String
105
+
106
+ attr_reader workload_identity_pool_id: String?
107
+
108
+ def workload_identity_pool_id=: (String) -> String
109
+
110
+ attr_reader workload_identity_project_number: String?
111
+
112
+ def workload_identity_project_number=: (String) -> String
113
+
114
+ attr_reader workload_identity_provider_id: String?
115
+
116
+ def workload_identity_provider_id=: (String) -> String
117
+
118
+ def initialize: (
119
+ id: String,
120
+ api_project_ids: ::Array[String],
121
+ created_at: Integer,
122
+ name: String,
123
+ object: String,
124
+ type: String,
125
+ workspace_id: String,
126
+ ?audience: String,
127
+ ?external_id: String,
128
+ ?key_name: String,
129
+ ?key_version: String,
130
+ ?kms_arn: String,
131
+ ?kms_key_location: String,
132
+ ?kms_key_name: String,
133
+ ?kms_key_ring_name: String,
134
+ ?kms_key_version: String,
135
+ ?kms_project_id: String,
136
+ ?purpose: OpenAI::Models::Admin::Organization::ExternalKey::purpose,
137
+ ?role_arn: String,
138
+ ?tenant_id: String,
139
+ ?vault_uri: String,
140
+ ?workload_identity_pool_id: String,
141
+ ?workload_identity_project_number: String,
142
+ ?workload_identity_provider_id: String
143
+ ) -> void
144
+
145
+ def to_hash: -> {
146
+ id: String,
147
+ api_project_ids: ::Array[String],
148
+ created_at: Integer,
149
+ name: String,
150
+ object: String,
151
+ type: String,
152
+ workspace_id: String,
153
+ ?audience: String,
154
+ ?external_id: String,
155
+ ?key_name: String,
156
+ ?key_version: String,
157
+ ?kms_arn: String,
158
+ ?kms_key_location: String,
159
+ ?kms_key_name: String,
160
+ ?kms_key_ring_name: String,
161
+ ?kms_key_version: String,
162
+ ?kms_project_id: String,
163
+ ?purpose: OpenAI::Models::Admin::Organization::ExternalKey::purpose,
164
+ ?role_arn: String,
165
+ ?tenant_id: String,
166
+ ?vault_uri: String,
167
+ ?workload_identity_pool_id: String,
168
+ ?workload_identity_project_number: String,
169
+ ?workload_identity_provider_id: String
170
+ }
171
+
172
+ type purpose = :ekm | :psp_decryption
173
+
174
+ module Purpose
175
+ extend OpenAI::Internal::Type::Enum
176
+
177
+ EKM: :ekm
178
+ PSP_DECRYPTION: :psp_decryption
179
+
180
+ def self?.values: -> ::Array[OpenAI::Models::Admin::Organization::ExternalKey::purpose]
181
+ end
182
+ end
183
+ end
184
+ end
185
+ end
186
+ end
@@ -0,0 +1,423 @@
1
+ module OpenAI
2
+ module Models
3
+ module Admin
4
+ module Organization
5
+ type external_key_create_params =
6
+ {
7
+ body: OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::body,
8
+ ?request_options: OpenAI::request_opts
9
+ }
10
+
11
+ class ExternalKeyCreateParams < OpenAI::Internal::Type::BaseModel
12
+ extend OpenAI::Internal::Type::RequestParameters::Converter
13
+ include OpenAI::Internal::Type::RequestParameters
14
+
15
+ attr_reader body: OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::body
16
+
17
+ def body=: (
18
+ OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::body
19
+ | {
20
+ external_id: String,
21
+ kms_arn: String,
22
+ name: String,
23
+ role_arn: String,
24
+ type: :aws,
25
+ ?purpose: :ekm | :psp_decryption
26
+ }
27
+ | {
28
+ audience: String,
29
+ kms_key_location: String,
30
+ kms_key_name: String,
31
+ kms_key_ring_name: String,
32
+ kms_project_id: String,
33
+ name: String,
34
+ type: :gcp,
35
+ workload_identity_pool_id: String,
36
+ workload_identity_project_number: String,
37
+ workload_identity_provider_id: String,
38
+ ?kms_key_version: String,
39
+ ?purpose: :ekm | :psp_decryption
40
+ }
41
+ | {
42
+ key_name: String,
43
+ name: String,
44
+ tenant_id: String,
45
+ type: :azure,
46
+ vault_uri: String,
47
+ ?key_version: String,
48
+ ?purpose: :ekm | :psp_decryption
49
+ }
50
+ ) -> (OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::body
51
+ | {
52
+ external_id: String,
53
+ kms_arn: String,
54
+ name: String,
55
+ role_arn: String,
56
+ type: :aws,
57
+ ?purpose: (:ekm | :psp_decryption)
58
+ }
59
+ | {
60
+ audience: String,
61
+ kms_key_location: String,
62
+ kms_key_name: String,
63
+ kms_key_ring_name: String,
64
+ kms_project_id: String,
65
+ name: String,
66
+ type: :gcp,
67
+ workload_identity_pool_id: String,
68
+ workload_identity_project_number: String,
69
+ workload_identity_provider_id: String,
70
+ ?kms_key_version: String,
71
+ ?purpose: (:ekm | :psp_decryption)
72
+ }
73
+ | {
74
+ key_name: String,
75
+ name: String,
76
+ tenant_id: String,
77
+ type: :azure,
78
+ vault_uri: String,
79
+ ?key_version: String,
80
+ ?purpose: (:ekm | :psp_decryption)
81
+ })
82
+
83
+ def initialize: (
84
+ body: OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::body
85
+ | {
86
+ external_id: String,
87
+ kms_arn: String,
88
+ name: String,
89
+ role_arn: String,
90
+ type: :aws,
91
+ ?purpose: :ekm | :psp_decryption
92
+ }
93
+ | {
94
+ audience: String,
95
+ kms_key_location: String,
96
+ kms_key_name: String,
97
+ kms_key_ring_name: String,
98
+ kms_project_id: String,
99
+ name: String,
100
+ type: :gcp,
101
+ workload_identity_pool_id: String,
102
+ workload_identity_project_number: String,
103
+ workload_identity_provider_id: String,
104
+ ?kms_key_version: String,
105
+ ?purpose: :ekm | :psp_decryption
106
+ }
107
+ | {
108
+ key_name: String,
109
+ name: String,
110
+ tenant_id: String,
111
+ type: :azure,
112
+ vault_uri: String,
113
+ ?key_version: String,
114
+ ?purpose: :ekm | :psp_decryption
115
+ },
116
+ ?request_options: OpenAI::request_opts
117
+ ) -> void
118
+
119
+ def to_hash: -> {
120
+ body: OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::body,
121
+ ?request_options: OpenAI::RequestOptions
122
+ }
123
+
124
+ type body =
125
+ OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Aws
126
+ | OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Gcp
127
+ | OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Azure
128
+
129
+ module Body
130
+ extend OpenAI::Internal::Type::Union
131
+
132
+ type aws =
133
+ {
134
+ external_id: String,
135
+ kms_arn: String,
136
+ name: String,
137
+ role_arn: String,
138
+ ?type: :aws,
139
+ ?purpose: OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::Body::Aws::purpose
140
+ }
141
+
142
+ class Aws < OpenAI::Internal::Type::BaseModel
143
+ # The ExternalID that OpenAI will pass in the AssumeRole call for the customer's
144
+ # AWS account. This must be the OpenAI organization ID or an API project ID that
145
+ # belongs to the organization.
146
+ attr_accessor external_id: String
147
+
148
+ # The Key Management System ARN for the master key you manage
149
+ attr_accessor kms_arn: String
150
+
151
+ # A friendly name to identify this config
152
+ attr_accessor name: String
153
+
154
+ # The Role ARN that OpenAI will assume to call your KMS
155
+ attr_accessor role_arn: String
156
+
157
+ attr_accessor type: :aws
158
+
159
+ attr_reader purpose: OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::Body::Aws::purpose?
160
+
161
+ def purpose=: (
162
+ OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::Body::Aws::purpose
163
+ ) -> OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::Body::Aws::purpose
164
+
165
+ # @param external_id
166
+ # The ExternalID that OpenAI will pass in the AssumeRole call for the customer's
167
+ # AWS account. This must be the OpenAI organization ID or an API project ID that
168
+ # belongs to the organization.
169
+ # @param kms_arn
170
+ # The Key Management System ARN for the master key you manage
171
+ # @param name
172
+ # A friendly name to identify this config
173
+ # @param role_arn
174
+ # The Role ARN that OpenAI will assume to call your KMS
175
+ def initialize: (
176
+ external_id: String,
177
+ kms_arn: String,
178
+ name: String,
179
+ role_arn: String,
180
+ ?purpose: OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::Body::Aws::purpose,
181
+ ?type: :aws
182
+ ) -> void
183
+
184
+ def to_hash: -> {
185
+ external_id: String,
186
+ kms_arn: String,
187
+ name: String,
188
+ role_arn: String,
189
+ ?type: :aws,
190
+ ?purpose: OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::Body::Aws::purpose
191
+ }
192
+
193
+ type purpose = :ekm | :psp_decryption
194
+
195
+ module Purpose
196
+ extend OpenAI::Internal::Type::Enum
197
+
198
+ EKM: :ekm
199
+ PSP_DECRYPTION: :psp_decryption
200
+
201
+ def self?.values: -> ::Array[OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::Body::Aws::purpose]
202
+ end
203
+ end
204
+
205
+ type gcp =
206
+ {
207
+ audience: String,
208
+ kms_key_location: String,
209
+ kms_key_name: String,
210
+ kms_key_ring_name: String,
211
+ kms_project_id: String,
212
+ name: String,
213
+ ?type: :gcp,
214
+ workload_identity_pool_id: String,
215
+ workload_identity_project_number: String,
216
+ workload_identity_provider_id: String,
217
+ ?kms_key_version: String,
218
+ ?purpose: OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::Body::Gcp::purpose
219
+ }
220
+
221
+ class Gcp < OpenAI::Internal::Type::BaseModel
222
+ # The aud field in the identity token OpenAI will pass in the call to the
223
+ # customer's GCP STS. This must be the OpenAI organization ID or an API project ID
224
+ # that belongs to the organization.
225
+ attr_accessor audience: String
226
+
227
+ # The region where your Key Management System master key is located
228
+ attr_accessor kms_key_location: String
229
+
230
+ # The name of the Key Management System master key you manage
231
+ attr_accessor kms_key_name: String
232
+
233
+ # The Key Management System key ring for the master key you manage
234
+ attr_accessor kms_key_ring_name: String
235
+
236
+ # The string GCP project name where your KMS resides
237
+ attr_accessor kms_project_id: String
238
+
239
+ # A friendly name to identify this config
240
+ attr_accessor name: String
241
+
242
+ attr_accessor type: :gcp
243
+
244
+ # The pool containing the Workload Identity provider that you registered for
245
+ # OpenAI
246
+ attr_accessor workload_identity_pool_id: String
247
+
248
+ # The numeric GCP project number where you registered OpenAI's workload identity
249
+ attr_accessor workload_identity_project_number: String
250
+
251
+ # The Workload Identity provider that you registered for OpenAI
252
+ attr_accessor workload_identity_provider_id: String
253
+
254
+ # An exact CryptoKeyVersion number. Required for PSP decryption; not accepted for
255
+ # EKM.
256
+ attr_reader kms_key_version: String?
257
+
258
+ # An exact CryptoKeyVersion number. Required for PSP decryption; not accepted for
259
+ # EKM.
260
+ def kms_key_version=: (String) -> String
261
+
262
+ attr_reader purpose: OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::Body::Gcp::purpose?
263
+
264
+ def purpose=: (
265
+ OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::Body::Gcp::purpose
266
+ ) -> OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::Body::Gcp::purpose
267
+
268
+ # @param audience
269
+ # The aud field in the identity token OpenAI will pass in the call to the
270
+ # customer's GCP STS. This must be the OpenAI organization ID or an API project ID
271
+ # that belongs to the organization.
272
+ # @param kms_key_location
273
+ # The region where your Key Management System master key is located
274
+ # @param kms_key_name
275
+ # The name of the Key Management System master key you manage
276
+ # @param kms_key_ring_name
277
+ # The Key Management System key ring for the master key you manage
278
+ # @param kms_project_id
279
+ # The string GCP project name where your KMS resides
280
+ # @param name
281
+ # A friendly name to identify this config
282
+ # @param workload_identity_pool_id
283
+ # The pool containing the Workload Identity provider that you registered for
284
+ # OpenAI
285
+ # @param workload_identity_project_number
286
+ # The numeric GCP project number where you registered OpenAI's workload identity
287
+ # @param workload_identity_provider_id
288
+ # The Workload Identity provider that you registered for OpenAI
289
+ # @param kms_key_version
290
+ # An exact CryptoKeyVersion number. Required for PSP decryption; not accepted for
291
+ # EKM.
292
+ def initialize: (
293
+ audience: String,
294
+ kms_key_location: String,
295
+ kms_key_name: String,
296
+ kms_key_ring_name: String,
297
+ kms_project_id: String,
298
+ name: String,
299
+ workload_identity_pool_id: String,
300
+ workload_identity_project_number: String,
301
+ workload_identity_provider_id: String,
302
+ ?kms_key_version: String,
303
+ ?purpose: OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::Body::Gcp::purpose,
304
+ ?type: :gcp
305
+ ) -> void
306
+
307
+ def to_hash: -> {
308
+ audience: String,
309
+ kms_key_location: String,
310
+ kms_key_name: String,
311
+ kms_key_ring_name: String,
312
+ kms_project_id: String,
313
+ name: String,
314
+ ?type: :gcp,
315
+ workload_identity_pool_id: String,
316
+ workload_identity_project_number: String,
317
+ workload_identity_provider_id: String,
318
+ ?kms_key_version: String,
319
+ ?purpose: OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::Body::Gcp::purpose
320
+ }
321
+
322
+ type purpose = :ekm | :psp_decryption
323
+
324
+ module Purpose
325
+ extend OpenAI::Internal::Type::Enum
326
+
327
+ EKM: :ekm
328
+ PSP_DECRYPTION: :psp_decryption
329
+
330
+ def self?.values: -> ::Array[OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::Body::Gcp::purpose]
331
+ end
332
+ end
333
+
334
+ type azure =
335
+ {
336
+ key_name: String,
337
+ name: String,
338
+ tenant_id: String,
339
+ ?type: :azure,
340
+ vault_uri: String,
341
+ ?key_version: String,
342
+ ?purpose: OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::Body::Azure::purpose
343
+ }
344
+
345
+ class Azure < OpenAI::Internal::Type::BaseModel
346
+ # The name of the Azure Key Vault master key that you manage
347
+ attr_accessor key_name: String
348
+
349
+ # A friendly name to identify this config
350
+ attr_accessor name: String
351
+
352
+ # Your Azure tenant UUID
353
+ attr_accessor tenant_id: String
354
+
355
+ attr_accessor type: :azure
356
+
357
+ # The URI of the Azure vault containing the master key you manage
358
+ attr_accessor vault_uri: String
359
+
360
+ # An exact Azure Key Vault key version. Required for PSP decryption; not accepted
361
+ # for EKM.
362
+ attr_reader key_version: String?
363
+
364
+ # An exact Azure Key Vault key version. Required for PSP decryption; not accepted
365
+ # for EKM.
366
+ def key_version=: (String) -> String
367
+
368
+ attr_reader purpose: OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::Body::Azure::purpose?
369
+
370
+ def purpose=: (
371
+ OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::Body::Azure::purpose
372
+ ) -> OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::Body::Azure::purpose
373
+
374
+ # @param key_name
375
+ # The name of the Azure Key Vault master key that you manage
376
+ # @param name
377
+ # A friendly name to identify this config
378
+ # @param tenant_id
379
+ # Your Azure tenant UUID
380
+ # @param vault_uri
381
+ # The URI of the Azure vault containing the master key you manage
382
+ # @param key_version
383
+ # An exact Azure Key Vault key version. Required for PSP decryption; not accepted
384
+ # for EKM.
385
+ def initialize: (
386
+ key_name: String,
387
+ name: String,
388
+ tenant_id: String,
389
+ vault_uri: String,
390
+ ?key_version: String,
391
+ ?purpose: OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::Body::Azure::purpose,
392
+ ?type: :azure
393
+ ) -> void
394
+
395
+ def to_hash: -> {
396
+ key_name: String,
397
+ name: String,
398
+ tenant_id: String,
399
+ ?type: :azure,
400
+ vault_uri: String,
401
+ ?key_version: String,
402
+ ?purpose: OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::Body::Azure::purpose
403
+ }
404
+
405
+ type purpose = :ekm | :psp_decryption
406
+
407
+ module Purpose
408
+ extend OpenAI::Internal::Type::Enum
409
+
410
+ EKM: :ekm
411
+ PSP_DECRYPTION: :psp_decryption
412
+
413
+ def self?.values: -> ::Array[OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::Body::Azure::purpose]
414
+ end
415
+ end
416
+
417
+ def self?.variants: -> ::Array[OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::body]
418
+ end
419
+ end
420
+ end
421
+ end
422
+ end
423
+ end
@@ -0,0 +1,27 @@
1
+ module OpenAI
2
+ module Models
3
+ module Admin
4
+ module Organization
5
+ type external_key_delete_params =
6
+ { external_key_id: String, ?request_options: OpenAI::request_opts }
7
+
8
+ class ExternalKeyDeleteParams < 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