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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +36 -0
- data/README.md +17 -2
- data/docs/architecture/security-model.md +11 -16
- data/examples/responses/websocket_workflows.rb +78 -3
- data/lib/openai/helpers/chat/tool_runner.rb +1 -1
- data/lib/openai/helpers/live/websocket.rb +31 -0
- data/lib/openai/helpers/realtime/connection.rb +33 -0
- data/lib/openai/helpers/realtime/connection_manager.rb +1 -0
- data/lib/openai/helpers/realtime/conversation_item_variant_resolver.rb +5 -0
- data/lib/openai/helpers/realtime/recovery.rb +5 -1
- data/lib/openai/helpers/realtime/translation.rb +5 -0
- data/lib/openai/helpers/realtime/transports/async_websocket.rb +19 -0
- data/lib/openai/helpers/responses_websocket/connection.rb +53 -15
- data/lib/openai/helpers/responses_websocket/connection_manager.rb +1 -0
- data/lib/openai/helpers/responses_websocket/connection_resources.rb +1 -1
- data/lib/openai/helpers/structured_output/response_parser.rb +1 -0
- data/lib/openai/helpers/structured_output.rb +58 -0
- data/lib/openai/helpers/websocket/connection_manager.rb +11 -0
- data/lib/openai/helpers/websocket/resource.rb +1 -0
- data/lib/openai/helpers/websocket/typed_connection.rb +1 -0
- data/lib/openai/internal/type/array_of.rb +1 -1
- data/lib/openai/internal/type/hash_of.rb +1 -1
- data/lib/openai/internal/type/request_parameters.rb +2 -1
- data/lib/openai/internal/type/union.rb +18 -6
- data/lib/openai/models/admin/organization/external_key.rb +169 -0
- data/lib/openai/models/admin/organization/external_key_create_params.rb +311 -0
- data/lib/openai/models/admin/organization/external_key_delete_params.rb +24 -0
- data/lib/openai/models/admin/organization/external_key_list_params.rb +69 -0
- data/lib/openai/models/admin/organization/external_key_retrieve_params.rb +24 -0
- data/lib/openai/models/admin/organization/external_key_validate_params.rb +24 -0
- data/lib/openai/models/admin/organization/external_key_validate_response.rb +20 -0
- data/lib/openai/models/audio/speech_model.rb +12 -0
- data/lib/openai/models/audio_model.rb +15 -0
- data/lib/openai/models/beta/agent.rb +49 -1
- data/lib/openai/models/beta/agent_create_params.rb +51 -1
- data/lib/openai/models/beta/agent_session.rb +75 -2
- data/lib/openai/models/beta/agent_update_params.rb +62 -1
- data/lib/openai/models/beta/agents/session_create_params.rb +94 -2
- data/lib/openai/models/beta/agents/session_list_params.rb +16 -1
- data/lib/openai/models/beta/agents/session_update_params.rb +50 -5
- data/lib/openai/models/beta/assistant_update_params.rb +18 -0
- data/lib/openai/models/beta/beta_response.rb +224 -1
- data/lib/openai/models/beta/beta_response_configuration_update_item.rb +64 -3
- data/lib/openai/models/beta/beta_response_configuration_update_item_param.rb +64 -4
- data/lib/openai/models/beta/beta_response_input_item.rb +2 -3
- data/lib/openai/models/beta/beta_response_item.rb +2 -2
- data/lib/openai/models/beta/beta_response_tool_search_output_item_param.rb +6 -6
- data/lib/openai/models/beta/beta_responses_client_event.rb +20 -1
- data/lib/openai/models/beta/beta_tool.rb +6 -6
- data/lib/openai/models/beta/response_compact_params.rb +6 -0
- data/lib/openai/models/beta/response_create_params.rb +6 -0
- data/lib/openai/models/chat_model.rb +6 -0
- data/lib/openai/models/conversations/conversation_item.rb +2 -2
- data/lib/openai/models/image_edit_params.rb +46 -25
- data/lib/openai/models/live/fork_server_event.rb +43 -3
- data/lib/openai/models/live/server_event.rb +43 -3
- data/lib/openai/models/live/sideband_client_event.rb +40 -1
- data/lib/openai/models/live/sideband_server_event.rb +43 -3
- data/lib/openai/models/realtime/audio_transcription.rb +15 -0
- data/lib/openai/models/realtime/conversation_item_added.rb +2 -2
- data/lib/openai/models/realtime/conversation_item_create_event.rb +2 -2
- data/lib/openai/models/realtime/conversation_item_created_event.rb +2 -2
- data/lib/openai/models/realtime/conversation_item_done.rb +2 -2
- data/lib/openai/models/realtime/realtime_response.rb +2 -2
- data/lib/openai/models/realtime/realtime_response_create_params.rb +2 -2
- data/lib/openai/models/realtime/realtime_server_event.rb +2 -2
- data/lib/openai/models/realtime/realtime_session.rb +18 -0
- data/lib/openai/models/realtime/realtime_session_create_request.rb +18 -0
- data/lib/openai/models/realtime/realtime_session_create_response.rb +18 -0
- data/lib/openai/models/realtime/response_output_item_added_event.rb +2 -2
- data/lib/openai/models/realtime/response_output_item_done_event.rb +2 -2
- data/lib/openai/models/responses/response.rb +221 -1
- data/lib/openai/models/responses/response_compact_params.rb +6 -0
- data/lib/openai/models/responses/response_configuration_update_item.rb +50 -3
- data/lib/openai/models/responses/response_configuration_update_item_param.rb +50 -4
- data/lib/openai/models/responses/response_input_item.rb +2 -3
- data/lib/openai/models/responses/response_item.rb +2 -2
- data/lib/openai/models/responses/response_tool_search_output_item_param.rb +6 -6
- data/lib/openai/models/responses/responses_client_event.rb +14 -1
- data/lib/openai/models/responses/tool.rb +6 -6
- data/lib/openai/net_http_client.rb +6 -0
- data/lib/openai/providers/vertex.rb +0 -10
- data/lib/openai/resources/admin/organization/external_keys.rb +132 -0
- data/lib/openai/resources/admin/organization.rb +4 -0
- data/lib/openai/resources/audio/speech.rb +8 -0
- data/lib/openai/resources/audio/translations.rb +8 -0
- data/lib/openai/resources/beta/agents/sessions.rb +22 -6
- data/lib/openai/resources/beta/agents.rb +17 -2
- data/lib/openai/resources/images.rb +36 -18
- data/lib/openai/version.rb +1 -1
- data/lib/openai.rb +8 -0
- data/rbi/openai/helpers/live/websocket.rbi +1 -12
- data/rbi/openai/helpers/realtime/connection.rbi +5 -0
- data/rbi/openai/helpers/realtime/transports/async_websocket.rbi +5 -0
- data/rbi/openai/helpers/responses_websocket/connection.rbi +7 -2
- data/rbi/openai/helpers/structured_output.rbi +10 -0
- data/rbi/openai/internal/type/array_of.rbi +1 -1
- data/rbi/openai/internal/type/hash_of.rbi +1 -1
- data/rbi/openai/internal/type/union.rbi +5 -0
- data/rbi/openai/models/admin/organization/external_key.rbi +301 -0
- data/rbi/openai/models/admin/organization/external_key_create_params.rbi +532 -0
- data/rbi/openai/models/admin/organization/external_key_delete_params.rbi +57 -0
- data/rbi/openai/models/admin/organization/external_key_list_params.rbi +129 -0
- data/rbi/openai/models/admin/organization/external_key_retrieve_params.rbi +57 -0
- data/rbi/openai/models/admin/organization/external_key_validate_params.rbi +57 -0
- data/rbi/openai/models/admin/organization/external_key_validate_response.rbi +50 -0
- data/rbi/openai/models/beta/agent.rbi +103 -1
- data/rbi/openai/models/beta/agent_create_params.rbi +109 -0
- data/rbi/openai/models/beta/agent_session.rbi +136 -3
- data/rbi/openai/models/beta/agent_update_params.rbi +120 -0
- data/rbi/openai/models/beta/agents/session_create_params.rbi +153 -0
- data/rbi/openai/models/beta/agents/session_list_params.rbi +19 -0
- data/rbi/openai/models/beta/agents/session_update_params.rbi +94 -6
- data/rbi/openai/models/beta/beta_response.rbi +394 -0
- data/rbi/openai/models/beta/beta_response_configuration_update_item.rbi +113 -3
- data/rbi/openai/models/beta/beta_response_configuration_update_item_param.rbi +125 -4
- data/rbi/openai/models/beta/beta_response_tool_search_output_item_param.rbi +6 -6
- data/rbi/openai/models/beta/beta_responses_client_event.rbi +17 -0
- data/rbi/openai/models/beta/beta_tool.rbi +6 -6
- data/rbi/openai/models/decision_create_params.rbi +4 -1
- data/rbi/openai/models/image_edit_params.rbi +49 -24
- data/rbi/openai/models/live/fork_server_event.rbi +65 -1
- data/rbi/openai/models/live/server_event.rbi +65 -1
- data/rbi/openai/models/live/sideband_client_event.rbi +60 -0
- data/rbi/openai/models/live/sideband_server_event.rbi +65 -1
- data/rbi/openai/models/realtime/conversation_item_added.rbi +6 -3
- data/rbi/openai/models/realtime/conversation_item_create_event.rbi +6 -3
- data/rbi/openai/models/realtime/conversation_item_created_event.rbi +6 -3
- data/rbi/openai/models/realtime/conversation_item_done.rbi +6 -3
- data/rbi/openai/models/realtime/realtime_response.rbi +8 -4
- data/rbi/openai/models/realtime/realtime_response_create_params.rbi +8 -4
- data/rbi/openai/models/realtime/realtime_server_event.rbi +6 -3
- data/rbi/openai/models/realtime/response_output_item_added_event.rbi +6 -3
- data/rbi/openai/models/realtime/response_output_item_done_event.rbi +6 -3
- data/rbi/openai/models/responses/response.rbi +394 -0
- data/rbi/openai/models/responses/response_configuration_update_item.rbi +76 -3
- data/rbi/openai/models/responses/response_configuration_update_item_param.rbi +74 -4
- data/rbi/openai/models/responses/response_tool_search_output_item_param.rbi +6 -6
- data/rbi/openai/models/responses/responses_client_event.rbi +17 -0
- data/rbi/openai/models/responses/tool.rbi +6 -6
- data/rbi/openai/net_http_client.rbi +5 -0
- data/rbi/openai/resources/admin/organization/external_keys.rbi +86 -0
- data/rbi/openai/resources/admin/organization.rbi +3 -0
- data/rbi/openai/resources/audio/speech.rbi +8 -0
- data/rbi/openai/resources/audio/translations.rbi +6 -0
- data/rbi/openai/resources/beta/agents/sessions.rbi +18 -2
- data/rbi/openai/resources/beta/agents.rbi +15 -0
- data/rbi/openai/resources/images.rbi +34 -16
- data/rbi/openai/resources/responses.rbi +2 -0
- data/realtime.md +6 -0
- data/responses-websocket.md +53 -0
- data/sig/openai/helpers/live/websocket.rbs +1 -9
- data/sig/openai/helpers/realtime/connection.rbs +3 -0
- data/sig/openai/helpers/realtime/transports/async_websocket.rbs +3 -0
- data/sig/openai/helpers/responses_websocket/connection.rbs +7 -1
- data/sig/openai/helpers/structured_output.rbs +9 -0
- data/sig/openai/internal/type/union.rbs +4 -0
- data/sig/openai/models/admin/organization/external_key.rbs +186 -0
- data/sig/openai/models/admin/organization/external_key_create_params.rbs +423 -0
- data/sig/openai/models/admin/organization/external_key_delete_params.rbs +27 -0
- data/sig/openai/models/admin/organization/external_key_list_params.rbs +81 -0
- data/sig/openai/models/admin/organization/external_key_retrieve_params.rbs +27 -0
- data/sig/openai/models/admin/organization/external_key_validate_params.rbs +27 -0
- data/sig/openai/models/admin/organization/external_key_validate_response.rbs +17 -0
- data/sig/openai/models/admin/organization/external_storage_create_params.rbs +72 -2
- data/sig/openai/models/audio/speech_create_params.rbs +15 -2
- data/sig/openai/models/audio/transcription_create_params.rbs +30 -2
- data/sig/openai/models/audio/voice_create_params.rbs +47 -2
- data/sig/openai/models/beta/agent.rbs +54 -2
- data/sig/openai/models/beta/agent_create_params.rbs +54 -0
- data/sig/openai/models/beta/agent_session.rbs +82 -3
- data/sig/openai/models/beta/agent_update_params.rbs +64 -0
- data/sig/openai/models/beta/agents/session_create_params.rbs +91 -0
- data/sig/openai/models/beta/agents/session_list_params.rbs +20 -0
- data/sig/openai/models/beta/agents/session_update_params.rbs +48 -6
- data/sig/openai/models/beta/assistant_create_params.rbs +5 -2
- data/sig/openai/models/beta/beta_response.rbs +223 -0
- data/sig/openai/models/beta/beta_response_configuration_update_item.rbs +58 -2
- data/sig/openai/models/beta/beta_response_configuration_update_item_param.rbs +58 -2
- data/sig/openai/models/beta/beta_response_tool_search_output_item_param.rbs +4 -4
- data/sig/openai/models/beta/beta_responses_client_event.rbs +17 -0
- data/sig/openai/models/beta/beta_tool.rbs +4 -4
- data/sig/openai/models/beta/response_create_params.rbs +5 -2
- data/sig/openai/models/beta/responses/input_token_count_params.rbs +10 -2
- data/sig/openai/models/beta/thread_create_and_run_params.rbs +11 -5
- data/sig/openai/models/beta/thread_create_params.rbs +11 -5
- data/sig/openai/models/beta/threads/message_create_params.rbs +6 -3
- data/sig/openai/models/beta/threads/run_create_params.rbs +6 -3
- data/sig/openai/models/decision_create_params.rbs +27 -2
- data/sig/openai/models/eval_create_params.rbs +25 -4
- data/sig/openai/models/evals/run_create_params.rbs +52 -8
- data/sig/openai/models/image_edit_params.rbs +47 -16
- data/sig/openai/models/live/fork_server_event.rbs +39 -0
- data/sig/openai/models/live/server_event.rbs +39 -0
- data/sig/openai/models/live/session_accept_params.rbs +39 -2
- data/sig/openai/models/live/sideband_client_event.rbs +32 -0
- data/sig/openai/models/live/sideband_server_event.rbs +39 -0
- data/sig/openai/models/realtime/conversation_item.rbs +1 -0
- data/sig/openai/models/responses/input_token_count_params.rbs +10 -2
- data/sig/openai/models/responses/response.rbs +223 -0
- data/sig/openai/models/responses/response_configuration_update_item.rbs +45 -2
- data/sig/openai/models/responses/response_configuration_update_item_param.rbs +45 -2
- data/sig/openai/models/responses/response_create_params.rbs +5 -2
- data/sig/openai/models/responses/response_tool_search_output_item_param.rbs +4 -4
- data/sig/openai/models/responses/responses_client_event.rbs +17 -0
- data/sig/openai/models/responses/tool.rbs +4 -4
- data/sig/openai/models/video_edit_params.rbs +11 -2
- data/sig/openai/models/video_extend_params.rbs +11 -2
- data/sig/openai/net_http_client.rbs +3 -0
- data/sig/openai/resources/admin/organization/external_keys.rbs +70 -0
- data/sig/openai/resources/admin/organization/external_storage.rbs +23 -1
- data/sig/openai/resources/admin/organization.rbs +2 -0
- data/sig/openai/resources/audio/speech.rbs +2 -1
- data/sig/openai/resources/audio/transcriptions.rbs +14 -2
- data/sig/openai/resources/audio/voices.rbs +14 -1
- data/sig/openai/resources/beta/agents/sessions.rbs +4 -0
- data/sig/openai/resources/beta/agents.rbs +4 -0
- data/sig/openai/resources/beta/responses/input_tokens.rbs +2 -1
- data/sig/openai/resources/beta/responses.rbs +4 -2
- data/sig/openai/resources/decisions.rbs +7 -1
- data/sig/openai/resources/images.rbs +2 -0
- data/sig/openai/resources/responses/input_tokens.rbs +2 -1
- data/sig/openai/resources/responses.rbs +5 -2
- data/sig/openai/resources/videos.rbs +2 -2
- metadata +25 -1
|
@@ -14,7 +14,7 @@ module OpenAI
|
|
|
14
14
|
# @return [nil]
|
|
15
15
|
def create(**params)
|
|
16
16
|
event_params = params.reject { |key, _value| key == :type || key == "type" }
|
|
17
|
-
@connection.
|
|
17
|
+
@connection.send_response_create(**event_params, type: :"response.create")
|
|
18
18
|
end
|
|
19
19
|
end
|
|
20
20
|
end
|
|
@@ -11,6 +11,64 @@ module OpenAI
|
|
|
11
11
|
#
|
|
12
12
|
# Supported types: {NilClass} {String} {Symbol} {Integer} {Float} {OpenAI::Boolean}, {OpenAI::EnumOf}, {OpenAI::UnionOf}, {OpenAI::ArrayOf}, {OpenAI::BaseModel}
|
|
13
13
|
module StructuredOutput
|
|
14
|
+
# Carries a visible format update's local parser without adding a wire field.
|
|
15
|
+
# A nil model means the update explicitly cleared typed parsing.
|
|
16
|
+
# @api private
|
|
17
|
+
module RequestWithFormatUpdate
|
|
18
|
+
attr_accessor :text_model
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private_constant :RequestWithFormatUpdate
|
|
22
|
+
|
|
23
|
+
# Convert schemas in input items after the SDK has copied the request or event.
|
|
24
|
+
#
|
|
25
|
+
# @api private
|
|
26
|
+
def self.prepare_configuration_updates!(request)
|
|
27
|
+
input = request[:input] || request["input"]
|
|
28
|
+
items = request[:items] || request["items"]
|
|
29
|
+
if input.is_a?(Array)
|
|
30
|
+
input.each do |item|
|
|
31
|
+
prepare_configuration_update!(item) do |model|
|
|
32
|
+
request.extend(RequestWithFormatUpdate) unless request.is_a?(RequestWithFormatUpdate)
|
|
33
|
+
request.text_model = model
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
items.each { |item| prepare_configuration_update!(item) } if items.is_a?(Array)
|
|
39
|
+
prepare_configuration_update!(request[:item] || request["item"])
|
|
40
|
+
request
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def self.prepare_configuration_update!(item)
|
|
44
|
+
return unless item.is_a?(Hash)
|
|
45
|
+
type = item[:type] || item["type"]
|
|
46
|
+
return unless type == :configuration_update || type == "configuration_update"
|
|
47
|
+
|
|
48
|
+
text = item[:text] || item["text"]
|
|
49
|
+
return unless text.is_a?(Hash)
|
|
50
|
+
unless text.key?(:format) || text.key?("format")
|
|
51
|
+
key = text.key?(:format_) ? :format_ : "format_"
|
|
52
|
+
text[:format] = text.delete(key) if text.key?(key)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
format = text[:format] || text["format"]
|
|
56
|
+
return unless format.is_a?(Hash)
|
|
57
|
+
type = format[:type] || format["type"]
|
|
58
|
+
model = nil
|
|
59
|
+
if type == :json_schema || type == "json_schema"
|
|
60
|
+
key = format.key?(:schema) ? :schema : "schema"
|
|
61
|
+
schema = format[key]
|
|
62
|
+
if schema.is_a?(JsonSchemaConverter)
|
|
63
|
+
model = schema
|
|
64
|
+
format[key] = JsonSchemaConverter.to_json_schema(schema)
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
yield model if block_given?
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
private_class_method :prepare_configuration_update!
|
|
14
72
|
end
|
|
15
73
|
end
|
|
16
74
|
end
|
|
@@ -20,6 +20,7 @@ module OpenAI
|
|
|
20
20
|
|
|
21
21
|
# @api private
|
|
22
22
|
def initialize(
|
|
23
|
+
client:,
|
|
23
24
|
transport:,
|
|
24
25
|
transport_options:,
|
|
25
26
|
default_transport:,
|
|
@@ -32,6 +33,7 @@ module OpenAI
|
|
|
32
33
|
reserved_options_error_message: nil,
|
|
33
34
|
connection_options: {}
|
|
34
35
|
)
|
|
36
|
+
@client = client
|
|
35
37
|
@transport = transport
|
|
36
38
|
@default_transport = default_transport
|
|
37
39
|
@connection_class = connection_class
|
|
@@ -52,6 +54,15 @@ module OpenAI
|
|
|
52
54
|
transport = @transport || @default_transport.call
|
|
53
55
|
raise ArgumentError, @transport_error_message unless transport.respond_to?(:open)
|
|
54
56
|
|
|
57
|
+
requester = @client.requester
|
|
58
|
+
unless @transport || (requester.instance_of?(OpenAI::NetHTTPClient) && requester.default_configuration?)
|
|
59
|
+
raise(
|
|
60
|
+
ArgumentError,
|
|
61
|
+
"This HTTP transport's connection policy cannot be used by the default WebSocket " \
|
|
62
|
+
"transport. Pass a compatible WebSocket transport with its own connection settings."
|
|
63
|
+
)
|
|
64
|
+
end
|
|
65
|
+
|
|
55
66
|
@request.call do |request, mark_handshake_completed|
|
|
56
67
|
block_error = nil
|
|
57
68
|
transport
|
|
@@ -38,6 +38,7 @@ module OpenAI
|
|
|
38
38
|
raise ArgumentError, client_event_error_message
|
|
39
39
|
end
|
|
40
40
|
|
|
41
|
+
OpenAI::Helpers::StructuredOutput.prepare_configuration_updates!(payload) if @client_event
|
|
41
42
|
payload = coerce_client_event(payload) if @client_event
|
|
42
43
|
payload = OpenAI::Internal::Type::Converter.dump(@client_event, payload) if @client_event
|
|
43
44
|
validate_event_tree!(payload, json_only: true)
|
|
@@ -30,7 +30,8 @@ module OpenAI
|
|
|
30
30
|
in Hash
|
|
31
31
|
options = OpenAI::Internal::Util.coerce_hash!(dumped[:request_options]).to_h
|
|
32
32
|
request_options = state.fetch(:can_retry) ? options : {**options, max_retries: 0}
|
|
33
|
-
|
|
33
|
+
body = OpenAI::Helpers::StructuredOutput.prepare_configuration_updates!(dumped.except(:request_options))
|
|
34
|
+
[body, request_options]
|
|
34
35
|
else
|
|
35
36
|
[dumped, nil]
|
|
36
37
|
end
|
|
@@ -216,6 +216,23 @@ module OpenAI
|
|
|
216
216
|
state[:strictness] = strictness
|
|
217
217
|
end
|
|
218
218
|
|
|
219
|
+
# @api private
|
|
220
|
+
#
|
|
221
|
+
# @param value [Object]
|
|
222
|
+
#
|
|
223
|
+
# @return [OpenAI::Internal::Type::Converter, Class, nil]
|
|
224
|
+
def variant_for_dump(value)
|
|
225
|
+
target = resolve_variant(value)
|
|
226
|
+
return target if target
|
|
227
|
+
|
|
228
|
+
known_variants.each do
|
|
229
|
+
target = _2.call
|
|
230
|
+
return target if target === value
|
|
231
|
+
end
|
|
232
|
+
|
|
233
|
+
nil
|
|
234
|
+
end
|
|
235
|
+
|
|
219
236
|
# @api private
|
|
220
237
|
#
|
|
221
238
|
# @param value [Object]
|
|
@@ -226,15 +243,10 @@ module OpenAI
|
|
|
226
243
|
#
|
|
227
244
|
# @return [Object]
|
|
228
245
|
def dump(value, state:)
|
|
229
|
-
if (target =
|
|
246
|
+
if (target = variant_for_dump(value))
|
|
230
247
|
return OpenAI::Internal::Type::Converter.dump(target, value, state: state)
|
|
231
248
|
end
|
|
232
249
|
|
|
233
|
-
known_variants.each do
|
|
234
|
-
target = _2.call
|
|
235
|
-
return OpenAI::Internal::Type::Converter.dump(target, value, state: state) if target === value
|
|
236
|
-
end
|
|
237
|
-
|
|
238
250
|
super
|
|
239
251
|
end
|
|
240
252
|
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module OpenAI
|
|
4
|
+
module Models
|
|
5
|
+
module Admin
|
|
6
|
+
module Organization
|
|
7
|
+
# @see OpenAI::Resources::Admin::Organization::ExternalKeys#create
|
|
8
|
+
class ExternalKey < OpenAI::Internal::Type::BaseModel
|
|
9
|
+
# @!attribute id
|
|
10
|
+
#
|
|
11
|
+
# @return [String]
|
|
12
|
+
required :id, String
|
|
13
|
+
|
|
14
|
+
# @!attribute api_project_ids
|
|
15
|
+
#
|
|
16
|
+
# @return [Array<String>]
|
|
17
|
+
required :api_project_ids, OpenAI::Internal::Type::ArrayOf[String]
|
|
18
|
+
|
|
19
|
+
# @!attribute created_at
|
|
20
|
+
#
|
|
21
|
+
# @return [Integer]
|
|
22
|
+
required :created_at, Integer
|
|
23
|
+
|
|
24
|
+
# @!attribute name
|
|
25
|
+
#
|
|
26
|
+
# @return [String]
|
|
27
|
+
required :name, String
|
|
28
|
+
|
|
29
|
+
# @!attribute object
|
|
30
|
+
#
|
|
31
|
+
# @return [String]
|
|
32
|
+
required :object, String
|
|
33
|
+
|
|
34
|
+
# @!attribute type
|
|
35
|
+
#
|
|
36
|
+
# @return [String]
|
|
37
|
+
required :type, String
|
|
38
|
+
|
|
39
|
+
# @!attribute workspace_id
|
|
40
|
+
#
|
|
41
|
+
# @return [String]
|
|
42
|
+
required :workspace_id, String
|
|
43
|
+
|
|
44
|
+
# @!attribute audience
|
|
45
|
+
#
|
|
46
|
+
# @return [String, nil]
|
|
47
|
+
optional :audience, String
|
|
48
|
+
|
|
49
|
+
# @!attribute external_id
|
|
50
|
+
#
|
|
51
|
+
# @return [String, nil]
|
|
52
|
+
optional :external_id, String
|
|
53
|
+
|
|
54
|
+
# @!attribute key_name
|
|
55
|
+
#
|
|
56
|
+
# @return [String, nil]
|
|
57
|
+
optional :key_name, String
|
|
58
|
+
|
|
59
|
+
# @!attribute key_version
|
|
60
|
+
#
|
|
61
|
+
# @return [String, nil]
|
|
62
|
+
optional :key_version, String
|
|
63
|
+
|
|
64
|
+
# @!attribute kms_arn
|
|
65
|
+
#
|
|
66
|
+
# @return [String, nil]
|
|
67
|
+
optional :kms_arn, String
|
|
68
|
+
|
|
69
|
+
# @!attribute kms_key_location
|
|
70
|
+
#
|
|
71
|
+
# @return [String, nil]
|
|
72
|
+
optional :kms_key_location, String
|
|
73
|
+
|
|
74
|
+
# @!attribute kms_key_name
|
|
75
|
+
#
|
|
76
|
+
# @return [String, nil]
|
|
77
|
+
optional :kms_key_name, String
|
|
78
|
+
|
|
79
|
+
# @!attribute kms_key_ring_name
|
|
80
|
+
#
|
|
81
|
+
# @return [String, nil]
|
|
82
|
+
optional :kms_key_ring_name, String
|
|
83
|
+
|
|
84
|
+
# @!attribute kms_key_version
|
|
85
|
+
#
|
|
86
|
+
# @return [String, nil]
|
|
87
|
+
optional :kms_key_version, String
|
|
88
|
+
|
|
89
|
+
# @!attribute kms_project_id
|
|
90
|
+
#
|
|
91
|
+
# @return [String, nil]
|
|
92
|
+
optional :kms_project_id, String
|
|
93
|
+
|
|
94
|
+
# @!attribute purpose
|
|
95
|
+
#
|
|
96
|
+
# @return [Symbol, OpenAI::Models::Admin::Organization::ExternalKey::Purpose, nil]
|
|
97
|
+
optional :purpose, enum: -> { OpenAI::Admin::Organization::ExternalKey::Purpose }
|
|
98
|
+
|
|
99
|
+
# @!attribute role_arn
|
|
100
|
+
#
|
|
101
|
+
# @return [String, nil]
|
|
102
|
+
optional :role_arn, String
|
|
103
|
+
|
|
104
|
+
# @!attribute tenant_id
|
|
105
|
+
#
|
|
106
|
+
# @return [String, nil]
|
|
107
|
+
optional :tenant_id, String
|
|
108
|
+
|
|
109
|
+
# @!attribute vault_uri
|
|
110
|
+
#
|
|
111
|
+
# @return [String, nil]
|
|
112
|
+
optional :vault_uri, String
|
|
113
|
+
|
|
114
|
+
# @!attribute workload_identity_pool_id
|
|
115
|
+
#
|
|
116
|
+
# @return [String, nil]
|
|
117
|
+
optional :workload_identity_pool_id, String
|
|
118
|
+
|
|
119
|
+
# @!attribute workload_identity_project_number
|
|
120
|
+
#
|
|
121
|
+
# @return [String, nil]
|
|
122
|
+
optional :workload_identity_project_number, String
|
|
123
|
+
|
|
124
|
+
# @!attribute workload_identity_provider_id
|
|
125
|
+
#
|
|
126
|
+
# @return [String, nil]
|
|
127
|
+
optional :workload_identity_provider_id, String
|
|
128
|
+
|
|
129
|
+
# @!method initialize(id:, api_project_ids:, created_at:, name:, object:, type:, workspace_id:, audience: nil, external_id: nil, key_name: nil, key_version: nil, kms_arn: nil, kms_key_location: nil, kms_key_name: nil, kms_key_ring_name: nil, kms_key_version: nil, kms_project_id: nil, purpose: nil, role_arn: nil, tenant_id: nil, vault_uri: nil, workload_identity_pool_id: nil, workload_identity_project_number: nil, workload_identity_provider_id: nil)
|
|
130
|
+
# @param id [String]
|
|
131
|
+
# @param api_project_ids [Array<String>]
|
|
132
|
+
# @param created_at [Integer]
|
|
133
|
+
# @param name [String]
|
|
134
|
+
# @param object [String]
|
|
135
|
+
# @param type [String]
|
|
136
|
+
# @param workspace_id [String]
|
|
137
|
+
# @param audience [String]
|
|
138
|
+
# @param external_id [String]
|
|
139
|
+
# @param key_name [String]
|
|
140
|
+
# @param key_version [String]
|
|
141
|
+
# @param kms_arn [String]
|
|
142
|
+
# @param kms_key_location [String]
|
|
143
|
+
# @param kms_key_name [String]
|
|
144
|
+
# @param kms_key_ring_name [String]
|
|
145
|
+
# @param kms_key_version [String]
|
|
146
|
+
# @param kms_project_id [String]
|
|
147
|
+
# @param purpose [Symbol, OpenAI::Models::Admin::Organization::ExternalKey::Purpose]
|
|
148
|
+
# @param role_arn [String]
|
|
149
|
+
# @param tenant_id [String]
|
|
150
|
+
# @param vault_uri [String]
|
|
151
|
+
# @param workload_identity_pool_id [String]
|
|
152
|
+
# @param workload_identity_project_number [String]
|
|
153
|
+
# @param workload_identity_provider_id [String]
|
|
154
|
+
|
|
155
|
+
# @see OpenAI::Models::Admin::Organization::ExternalKey#purpose
|
|
156
|
+
module Purpose
|
|
157
|
+
extend OpenAI::Internal::Type::Enum
|
|
158
|
+
|
|
159
|
+
EKM = :ekm
|
|
160
|
+
PSP_DECRYPTION = :psp_decryption
|
|
161
|
+
|
|
162
|
+
# @!method self.values
|
|
163
|
+
# @return [Array<Symbol>]
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
end
|
|
167
|
+
end
|
|
168
|
+
end
|
|
169
|
+
end
|
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module OpenAI
|
|
4
|
+
module Models
|
|
5
|
+
module Admin
|
|
6
|
+
module Organization
|
|
7
|
+
# @see OpenAI::Resources::Admin::Organization::ExternalKeys#create
|
|
8
|
+
class ExternalKeyCreateParams < OpenAI::Internal::Type::BaseModel
|
|
9
|
+
extend OpenAI::Internal::Type::RequestParameters::Converter
|
|
10
|
+
include OpenAI::Internal::Type::RequestParameters
|
|
11
|
+
|
|
12
|
+
# @!attribute body
|
|
13
|
+
#
|
|
14
|
+
# @return [OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::Body::Aws, OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::Body::Gcp, OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::Body::Azure]
|
|
15
|
+
required :body, union: -> { OpenAI::Admin::Organization::ExternalKeyCreateParams::Body }
|
|
16
|
+
|
|
17
|
+
# @!method initialize(body:, request_options: {})
|
|
18
|
+
# @param body [OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::Body::Aws, OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::Body::Gcp, OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::Body::Azure]
|
|
19
|
+
# @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}]
|
|
20
|
+
|
|
21
|
+
module Body
|
|
22
|
+
extend OpenAI::Internal::Type::Union
|
|
23
|
+
|
|
24
|
+
discriminator :type
|
|
25
|
+
|
|
26
|
+
variant :aws, -> { OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Aws }
|
|
27
|
+
|
|
28
|
+
variant :gcp, -> { OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Gcp }
|
|
29
|
+
|
|
30
|
+
variant :azure, -> { OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Azure }
|
|
31
|
+
|
|
32
|
+
class Aws < OpenAI::Internal::Type::BaseModel
|
|
33
|
+
# @!attribute external_id
|
|
34
|
+
# The ExternalID that OpenAI will pass in the AssumeRole call for the customer's
|
|
35
|
+
# AWS account. This must be the OpenAI organization ID or an API project ID that
|
|
36
|
+
# belongs to the organization.
|
|
37
|
+
#
|
|
38
|
+
# @return [String]
|
|
39
|
+
required :external_id, String
|
|
40
|
+
|
|
41
|
+
# @!attribute kms_arn
|
|
42
|
+
# The Key Management System ARN for the master key you manage
|
|
43
|
+
#
|
|
44
|
+
# @return [String]
|
|
45
|
+
required :kms_arn, String
|
|
46
|
+
|
|
47
|
+
# @!attribute name
|
|
48
|
+
# A friendly name to identify this config
|
|
49
|
+
#
|
|
50
|
+
# @return [String]
|
|
51
|
+
required :name, String
|
|
52
|
+
|
|
53
|
+
# @!attribute role_arn
|
|
54
|
+
# The Role ARN that OpenAI will assume to call your KMS
|
|
55
|
+
#
|
|
56
|
+
# @return [String]
|
|
57
|
+
required :role_arn, String
|
|
58
|
+
|
|
59
|
+
# @!attribute type
|
|
60
|
+
#
|
|
61
|
+
# @return [Symbol, :aws]
|
|
62
|
+
required :type, const: :aws
|
|
63
|
+
|
|
64
|
+
# @!attribute purpose
|
|
65
|
+
#
|
|
66
|
+
# @return [Symbol, OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::Body::Aws::Purpose, nil]
|
|
67
|
+
optional :purpose, enum: -> { OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Aws::Purpose }
|
|
68
|
+
|
|
69
|
+
# @!method initialize(external_id:, kms_arn:, name:, role_arn:, purpose: nil, type: :aws)
|
|
70
|
+
# @param external_id [String]
|
|
71
|
+
# The ExternalID that OpenAI will pass in the AssumeRole call for the customer's
|
|
72
|
+
# AWS account. This must be the OpenAI organization ID or an API project ID that
|
|
73
|
+
# belongs to the organization.
|
|
74
|
+
#
|
|
75
|
+
# @param kms_arn [String]
|
|
76
|
+
# The Key Management System ARN for the master key you manage
|
|
77
|
+
#
|
|
78
|
+
# @param name [String]
|
|
79
|
+
# A friendly name to identify this config
|
|
80
|
+
#
|
|
81
|
+
# @param role_arn [String]
|
|
82
|
+
# The Role ARN that OpenAI will assume to call your KMS
|
|
83
|
+
#
|
|
84
|
+
# @param purpose [Symbol, OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::Body::Aws::Purpose]
|
|
85
|
+
#
|
|
86
|
+
# @param type [Symbol, :aws]
|
|
87
|
+
|
|
88
|
+
# @see OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::Body::Aws#purpose
|
|
89
|
+
module Purpose
|
|
90
|
+
extend OpenAI::Internal::Type::Enum
|
|
91
|
+
|
|
92
|
+
EKM = :ekm
|
|
93
|
+
PSP_DECRYPTION = :psp_decryption
|
|
94
|
+
|
|
95
|
+
# @!method self.values
|
|
96
|
+
# @return [Array<Symbol>]
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
class Gcp < OpenAI::Internal::Type::BaseModel
|
|
101
|
+
# @!attribute audience
|
|
102
|
+
# The aud field in the identity token OpenAI will pass in the call to the
|
|
103
|
+
# customer's GCP STS. This must be the OpenAI organization ID or an API project ID
|
|
104
|
+
# that belongs to the organization.
|
|
105
|
+
#
|
|
106
|
+
# @return [String]
|
|
107
|
+
required :audience, String
|
|
108
|
+
|
|
109
|
+
# @!attribute kms_key_location
|
|
110
|
+
# The region where your Key Management System master key is located
|
|
111
|
+
#
|
|
112
|
+
# @return [String]
|
|
113
|
+
required :kms_key_location, String
|
|
114
|
+
|
|
115
|
+
# @!attribute kms_key_name
|
|
116
|
+
# The name of the Key Management System master key you manage
|
|
117
|
+
#
|
|
118
|
+
# @return [String]
|
|
119
|
+
required :kms_key_name, String
|
|
120
|
+
|
|
121
|
+
# @!attribute kms_key_ring_name
|
|
122
|
+
# The Key Management System key ring for the master key you manage
|
|
123
|
+
#
|
|
124
|
+
# @return [String]
|
|
125
|
+
required :kms_key_ring_name, String
|
|
126
|
+
|
|
127
|
+
# @!attribute kms_project_id
|
|
128
|
+
# The string GCP project name where your KMS resides
|
|
129
|
+
#
|
|
130
|
+
# @return [String]
|
|
131
|
+
required :kms_project_id, String
|
|
132
|
+
|
|
133
|
+
# @!attribute name
|
|
134
|
+
# A friendly name to identify this config
|
|
135
|
+
#
|
|
136
|
+
# @return [String]
|
|
137
|
+
required :name, String
|
|
138
|
+
|
|
139
|
+
# @!attribute type
|
|
140
|
+
#
|
|
141
|
+
# @return [Symbol, :gcp]
|
|
142
|
+
required :type, const: :gcp
|
|
143
|
+
|
|
144
|
+
# @!attribute workload_identity_pool_id
|
|
145
|
+
# The pool containing the Workload Identity provider that you registered for
|
|
146
|
+
# OpenAI
|
|
147
|
+
#
|
|
148
|
+
# @return [String]
|
|
149
|
+
required :workload_identity_pool_id, String
|
|
150
|
+
|
|
151
|
+
# @!attribute workload_identity_project_number
|
|
152
|
+
# The numeric GCP project number where you registered OpenAI's workload identity
|
|
153
|
+
#
|
|
154
|
+
# @return [String]
|
|
155
|
+
required :workload_identity_project_number, String
|
|
156
|
+
|
|
157
|
+
# @!attribute workload_identity_provider_id
|
|
158
|
+
# The Workload Identity provider that you registered for OpenAI
|
|
159
|
+
#
|
|
160
|
+
# @return [String]
|
|
161
|
+
required :workload_identity_provider_id, String
|
|
162
|
+
|
|
163
|
+
# @!attribute kms_key_version
|
|
164
|
+
# An exact CryptoKeyVersion number. Required for PSP decryption; not accepted for
|
|
165
|
+
# EKM.
|
|
166
|
+
#
|
|
167
|
+
# @return [String, nil]
|
|
168
|
+
optional :kms_key_version, String
|
|
169
|
+
|
|
170
|
+
# @!attribute purpose
|
|
171
|
+
#
|
|
172
|
+
# @return [Symbol, OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::Body::Gcp::Purpose, nil]
|
|
173
|
+
optional :purpose, enum: -> { OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Gcp::Purpose }
|
|
174
|
+
|
|
175
|
+
# @!method initialize(audience:, kms_key_location:, kms_key_name:, kms_key_ring_name:, kms_project_id:, name:, workload_identity_pool_id:, workload_identity_project_number:, workload_identity_provider_id:, kms_key_version: nil, purpose: nil, type: :gcp)
|
|
176
|
+
# @param audience [String]
|
|
177
|
+
# The aud field in the identity token OpenAI will pass in the call to the
|
|
178
|
+
# customer's GCP STS. This must be the OpenAI organization ID or an API project ID
|
|
179
|
+
# that belongs to the organization.
|
|
180
|
+
#
|
|
181
|
+
# @param kms_key_location [String]
|
|
182
|
+
# The region where your Key Management System master key is located
|
|
183
|
+
#
|
|
184
|
+
# @param kms_key_name [String]
|
|
185
|
+
# The name of the Key Management System master key you manage
|
|
186
|
+
#
|
|
187
|
+
# @param kms_key_ring_name [String]
|
|
188
|
+
# The Key Management System key ring for the master key you manage
|
|
189
|
+
#
|
|
190
|
+
# @param kms_project_id [String]
|
|
191
|
+
# The string GCP project name where your KMS resides
|
|
192
|
+
#
|
|
193
|
+
# @param name [String]
|
|
194
|
+
# A friendly name to identify this config
|
|
195
|
+
#
|
|
196
|
+
# @param workload_identity_pool_id [String]
|
|
197
|
+
# The pool containing the Workload Identity provider that you registered for
|
|
198
|
+
# OpenAI
|
|
199
|
+
#
|
|
200
|
+
# @param workload_identity_project_number [String]
|
|
201
|
+
# The numeric GCP project number where you registered OpenAI's workload identity
|
|
202
|
+
#
|
|
203
|
+
# @param workload_identity_provider_id [String]
|
|
204
|
+
# The Workload Identity provider that you registered for OpenAI
|
|
205
|
+
#
|
|
206
|
+
# @param kms_key_version [String]
|
|
207
|
+
# An exact CryptoKeyVersion number. Required for PSP decryption; not accepted for
|
|
208
|
+
# EKM.
|
|
209
|
+
#
|
|
210
|
+
# @param purpose [Symbol, OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::Body::Gcp::Purpose]
|
|
211
|
+
#
|
|
212
|
+
# @param type [Symbol, :gcp]
|
|
213
|
+
|
|
214
|
+
# @see OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::Body::Gcp#purpose
|
|
215
|
+
module Purpose
|
|
216
|
+
extend OpenAI::Internal::Type::Enum
|
|
217
|
+
|
|
218
|
+
EKM = :ekm
|
|
219
|
+
PSP_DECRYPTION = :psp_decryption
|
|
220
|
+
|
|
221
|
+
# @!method self.values
|
|
222
|
+
# @return [Array<Symbol>]
|
|
223
|
+
end
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
class Azure < OpenAI::Internal::Type::BaseModel
|
|
227
|
+
# @!attribute key_name
|
|
228
|
+
# The name of the Azure Key Vault master key that you manage
|
|
229
|
+
#
|
|
230
|
+
# @return [String]
|
|
231
|
+
required :key_name, String
|
|
232
|
+
|
|
233
|
+
# @!attribute name
|
|
234
|
+
# A friendly name to identify this config
|
|
235
|
+
#
|
|
236
|
+
# @return [String]
|
|
237
|
+
required :name, String
|
|
238
|
+
|
|
239
|
+
# @!attribute tenant_id
|
|
240
|
+
# Your Azure tenant UUID
|
|
241
|
+
#
|
|
242
|
+
# @return [String]
|
|
243
|
+
required :tenant_id, String
|
|
244
|
+
|
|
245
|
+
# @!attribute type
|
|
246
|
+
#
|
|
247
|
+
# @return [Symbol, :azure]
|
|
248
|
+
required :type, const: :azure
|
|
249
|
+
|
|
250
|
+
# @!attribute vault_uri
|
|
251
|
+
# The URI of the Azure vault containing the master key you manage
|
|
252
|
+
#
|
|
253
|
+
# @return [String]
|
|
254
|
+
required :vault_uri, String
|
|
255
|
+
|
|
256
|
+
# @!attribute key_version
|
|
257
|
+
# An exact Azure Key Vault key version. Required for PSP decryption; not accepted
|
|
258
|
+
# for EKM.
|
|
259
|
+
#
|
|
260
|
+
# @return [String, nil]
|
|
261
|
+
optional :key_version, String
|
|
262
|
+
|
|
263
|
+
# @!attribute purpose
|
|
264
|
+
#
|
|
265
|
+
# @return [Symbol, OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::Body::Azure::Purpose, nil]
|
|
266
|
+
optional(
|
|
267
|
+
:purpose,
|
|
268
|
+
enum: -> { OpenAI::Admin::Organization::ExternalKeyCreateParams::Body::Azure::Purpose }
|
|
269
|
+
)
|
|
270
|
+
|
|
271
|
+
# @!method initialize(key_name:, name:, tenant_id:, vault_uri:, key_version: nil, purpose: nil, type: :azure)
|
|
272
|
+
# @param key_name [String]
|
|
273
|
+
# The name of the Azure Key Vault master key that you manage
|
|
274
|
+
#
|
|
275
|
+
# @param name [String]
|
|
276
|
+
# A friendly name to identify this config
|
|
277
|
+
#
|
|
278
|
+
# @param tenant_id [String]
|
|
279
|
+
# Your Azure tenant UUID
|
|
280
|
+
#
|
|
281
|
+
# @param vault_uri [String]
|
|
282
|
+
# The URI of the Azure vault containing the master key you manage
|
|
283
|
+
#
|
|
284
|
+
# @param key_version [String]
|
|
285
|
+
# An exact Azure Key Vault key version. Required for PSP decryption; not accepted
|
|
286
|
+
# for EKM.
|
|
287
|
+
#
|
|
288
|
+
# @param purpose [Symbol, OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::Body::Azure::Purpose]
|
|
289
|
+
#
|
|
290
|
+
# @param type [Symbol, :azure]
|
|
291
|
+
|
|
292
|
+
# @see OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::Body::Azure#purpose
|
|
293
|
+
module Purpose
|
|
294
|
+
extend OpenAI::Internal::Type::Enum
|
|
295
|
+
|
|
296
|
+
EKM = :ekm
|
|
297
|
+
PSP_DECRYPTION = :psp_decryption
|
|
298
|
+
|
|
299
|
+
# @!method self.values
|
|
300
|
+
# @return [Array<Symbol>]
|
|
301
|
+
end
|
|
302
|
+
end
|
|
303
|
+
|
|
304
|
+
# @!method self.variants
|
|
305
|
+
# @return [Array(OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::Body::Aws, OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::Body::Gcp, OpenAI::Models::Admin::Organization::ExternalKeyCreateParams::Body::Azure)]
|
|
306
|
+
end
|
|
307
|
+
end
|
|
308
|
+
end
|
|
309
|
+
end
|
|
310
|
+
end
|
|
311
|
+
end
|