openai 0.53.0 → 0.55.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 (58) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +25 -0
  3. data/README.md +1 -1
  4. data/lib/openai/models/audio/speech_create_params.rb +32 -8
  5. data/lib/openai/models/chat/chat_completion_audio_param.rb +30 -6
  6. data/lib/openai/models/image_input_reference_param.rb +23 -0
  7. data/lib/openai/models/realtime/realtime_audio_config_output.rb +34 -8
  8. data/lib/openai/models/realtime/realtime_response_create_audio_output.rb +34 -8
  9. data/lib/openai/models/responses/response_input_file.rb +1 -24
  10. data/lib/openai/models/responses/response_input_file_content.rb +1 -27
  11. data/lib/openai/models/video_create_character_params.rb +30 -0
  12. data/lib/openai/models/video_create_character_response.rb +33 -0
  13. data/lib/openai/models/video_create_params.rb +17 -4
  14. data/lib/openai/models/video_edit_params.rb +57 -0
  15. data/lib/openai/models/video_extend_params.rb +69 -0
  16. data/lib/openai/models/video_get_character_params.rb +20 -0
  17. data/lib/openai/models/video_get_character_response.rb +33 -0
  18. data/lib/openai/models.rb +10 -0
  19. data/lib/openai/resources/audio/speech.rb +1 -1
  20. data/lib/openai/resources/videos.rb +102 -1
  21. data/lib/openai/version.rb +1 -1
  22. data/lib/openai.rb +7 -0
  23. data/rbi/openai/client.rbi +6 -0
  24. data/rbi/openai/models/audio/speech_create_params.rbi +49 -10
  25. data/rbi/openai/models/chat/chat_completion_audio_param.rbi +40 -7
  26. data/rbi/openai/models/image_input_reference_param.rbi +39 -0
  27. data/rbi/openai/models/realtime/realtime_audio_config_output.rbi +48 -11
  28. data/rbi/openai/models/realtime/realtime_response_create_audio_output.rbi +48 -11
  29. data/rbi/openai/models/responses/response_input_file.rbi +0 -54
  30. data/rbi/openai/models/responses/response_input_file_content.rbi +0 -59
  31. data/rbi/openai/models/video_create_character_params.rbi +51 -0
  32. data/rbi/openai/models/video_create_character_response.rbi +56 -0
  33. data/rbi/openai/models/video_create_params.rbi +44 -6
  34. data/rbi/openai/models/video_edit_params.rbi +111 -0
  35. data/rbi/openai/models/video_extend_params.rbi +121 -0
  36. data/rbi/openai/models/video_get_character_params.rbi +35 -0
  37. data/rbi/openai/models/video_get_character_response.rbi +56 -0
  38. data/rbi/openai/models.rbi +10 -0
  39. data/rbi/openai/resources/audio/speech.rbi +8 -3
  40. data/rbi/openai/resources/videos.rbi +84 -2
  41. data/sig/openai/client.rbs +3 -0
  42. data/sig/openai/models/audio/speech_create_params.rbs +11 -0
  43. data/sig/openai/models/chat/chat_completion_audio_param.rbs +11 -0
  44. data/sig/openai/models/image_input_reference_param.rbs +19 -0
  45. data/sig/openai/models/realtime/realtime_audio_config_output.rbs +11 -0
  46. data/sig/openai/models/realtime/realtime_response_create_audio_output.rbs +11 -0
  47. data/sig/openai/models/responses/response_input_file.rbs +0 -20
  48. data/sig/openai/models/responses/response_input_file_content.rbs +0 -20
  49. data/sig/openai/models/video_create_character_params.rbs +28 -0
  50. data/sig/openai/models/video_create_character_response.rbs +18 -0
  51. data/sig/openai/models/video_create_params.rbs +15 -6
  52. data/sig/openai/models/video_edit_params.rbs +48 -0
  53. data/sig/openai/models/video_extend_params.rbs +56 -0
  54. data/sig/openai/models/video_get_character_params.rbs +23 -0
  55. data/sig/openai/models/video_get_character_response.rbs +18 -0
  56. data/sig/openai/models.rbs +10 -0
  57. data/sig/openai/resources/videos.rbs +25 -1
  58. metadata +23 -2
@@ -0,0 +1,69 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Models
5
+ # @see OpenAI::Resources::Videos#extend_
6
+ class VideoExtendParams < OpenAI::Internal::Type::BaseModel
7
+ extend OpenAI::Internal::Type::RequestParameters::Converter
8
+ include OpenAI::Internal::Type::RequestParameters
9
+
10
+ # @!attribute prompt
11
+ # Updated text prompt that directs the extension generation.
12
+ #
13
+ # @return [String]
14
+ required :prompt, String
15
+
16
+ # @!attribute seconds
17
+ # Length of the newly generated extension segment in seconds (allowed values: 4,
18
+ # 8, 12, 16, 20).
19
+ #
20
+ # @return [Symbol, OpenAI::Models::VideoSeconds]
21
+ required :seconds, enum: -> { OpenAI::VideoSeconds }
22
+
23
+ # @!attribute video
24
+ # Reference to the completed video to extend.
25
+ #
26
+ # @return [Pathname, StringIO, IO, String, OpenAI::FilePart, OpenAI::Models::VideoExtendParams::Video::VideoReferenceInputParam]
27
+ required :video, union: -> { OpenAI::VideoExtendParams::Video }
28
+
29
+ # @!method initialize(prompt:, seconds:, video:, request_options: {})
30
+ # Some parameter documentations has been truncated, see
31
+ # {OpenAI::Models::VideoExtendParams} for more details.
32
+ #
33
+ # @param prompt [String] Updated text prompt that directs the extension generation.
34
+ #
35
+ # @param seconds [Symbol, OpenAI::Models::VideoSeconds] Length of the newly generated extension segment in seconds (allowed values: 4, 8
36
+ #
37
+ # @param video [Pathname, StringIO, IO, String, OpenAI::FilePart, OpenAI::Models::VideoExtendParams::Video::VideoReferenceInputParam] Reference to the completed video to extend.
38
+ #
39
+ # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}]
40
+
41
+ # Reference to the completed video to extend.
42
+ module Video
43
+ extend OpenAI::Internal::Type::Union
44
+
45
+ # Reference to the completed video to extend.
46
+ variant OpenAI::Internal::Type::FileInput
47
+
48
+ # Reference to the completed video.
49
+ variant -> { OpenAI::VideoExtendParams::Video::VideoReferenceInputParam }
50
+
51
+ class VideoReferenceInputParam < OpenAI::Internal::Type::BaseModel
52
+ # @!attribute id
53
+ # The identifier of the completed video.
54
+ #
55
+ # @return [String]
56
+ required :id, String
57
+
58
+ # @!method initialize(id:)
59
+ # Reference to the completed video.
60
+ #
61
+ # @param id [String] The identifier of the completed video.
62
+ end
63
+
64
+ # @!method self.variants
65
+ # @return [Array(StringIO, OpenAI::Models::VideoExtendParams::Video::VideoReferenceInputParam)]
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Models
5
+ # @see OpenAI::Resources::Videos#get_character
6
+ class VideoGetCharacterParams < OpenAI::Internal::Type::BaseModel
7
+ extend OpenAI::Internal::Type::RequestParameters::Converter
8
+ include OpenAI::Internal::Type::RequestParameters
9
+
10
+ # @!attribute character_id
11
+ #
12
+ # @return [String]
13
+ required :character_id, String
14
+
15
+ # @!method initialize(character_id:, request_options: {})
16
+ # @param character_id [String]
17
+ # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}]
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Models
5
+ # @see OpenAI::Resources::Videos#get_character
6
+ class VideoGetCharacterResponse < OpenAI::Internal::Type::BaseModel
7
+ # @!attribute id
8
+ # Identifier for the character creation cameo.
9
+ #
10
+ # @return [String, nil]
11
+ required :id, String, nil?: true
12
+
13
+ # @!attribute created_at
14
+ # Unix timestamp (in seconds) when the character was created.
15
+ #
16
+ # @return [Integer]
17
+ required :created_at, Integer
18
+
19
+ # @!attribute name
20
+ # Display name for the character.
21
+ #
22
+ # @return [String, nil]
23
+ required :name, String, nil?: true
24
+
25
+ # @!method initialize(id:, created_at:, name:)
26
+ # @param id [String, nil] Identifier for the character creation cameo.
27
+ #
28
+ # @param created_at [Integer] Unix timestamp (in seconds) when the character was created.
29
+ #
30
+ # @param name [String, nil] Display name for the character.
31
+ end
32
+ end
33
+ end
data/lib/openai/models.rb CHANGED
@@ -176,6 +176,8 @@ module OpenAI
176
176
 
177
177
  ImageGenStreamEvent = OpenAI::Models::ImageGenStreamEvent
178
178
 
179
+ ImageInputReferenceParam = OpenAI::Models::ImageInputReferenceParam
180
+
179
181
  ImageModel = OpenAI::Models::ImageModel
180
182
 
181
183
  ImagesResponse = OpenAI::Models::ImagesResponse
@@ -279,6 +281,8 @@ module OpenAI
279
281
 
280
282
  Video = OpenAI::Models::Video
281
283
 
284
+ VideoCreateCharacterParams = OpenAI::Models::VideoCreateCharacterParams
285
+
282
286
  VideoCreateError = OpenAI::Models::VideoCreateError
283
287
 
284
288
  VideoCreateParams = OpenAI::Models::VideoCreateParams
@@ -287,6 +291,12 @@ module OpenAI
287
291
 
288
292
  VideoDownloadContentParams = OpenAI::Models::VideoDownloadContentParams
289
293
 
294
+ VideoEditParams = OpenAI::Models::VideoEditParams
295
+
296
+ VideoExtendParams = OpenAI::Models::VideoExtendParams
297
+
298
+ VideoGetCharacterParams = OpenAI::Models::VideoGetCharacterParams
299
+
290
300
  VideoListParams = OpenAI::Models::VideoListParams
291
301
 
292
302
  VideoModel = OpenAI::Models::VideoModel
@@ -18,7 +18,7 @@ module OpenAI
18
18
  #
19
19
  # @param model [String, Symbol, OpenAI::Models::Audio::SpeechModel] One of the available [TTS models](https://platform.openai.com/docs/models#tts):
20
20
  #
21
- # @param voice [String, Symbol, OpenAI::Models::Audio::SpeechCreateParams::Voice] The voice to use when generating the audio. Supported built-in voices are `alloy
21
+ # @param voice [String, Symbol, OpenAI::Models::Audio::SpeechCreateParams::Voice::ID, OpenAI::Models::Audio::SpeechCreateParams::Voice] The voice to use when generating the audio. Supported built-in voices are `alloy
22
22
  #
23
23
  # @param instructions [String] Control the voice of your generated audio with additional instructions. Does not
24
24
  #
@@ -12,7 +12,7 @@ module OpenAI
12
12
  #
13
13
  # @param prompt [String] Text prompt that describes the video to generate.
14
14
  #
15
- # @param input_reference [Pathname, StringIO, IO, String, OpenAI::FilePart] Optional multipart reference asset that guides generation.
15
+ # @param input_reference [Pathname, StringIO, IO, String, OpenAI::FilePart, OpenAI::Models::ImageInputReferenceParam] Optional reference asset upload or reference object that guides generation.
16
16
  #
17
17
  # @param model [String, Symbol, OpenAI::Models::VideoModel] The video generation model to use (allowed values: sora-2, sora-2-pro). Defaults
18
18
  #
@@ -108,6 +108,31 @@ module OpenAI
108
108
  )
109
109
  end
110
110
 
111
+ # Create a character from an uploaded video.
112
+ #
113
+ # @overload create_character(name:, video:, request_options: {})
114
+ #
115
+ # @param name [String] Display name for this API character.
116
+ #
117
+ # @param video [Pathname, StringIO, IO, String, OpenAI::FilePart] Video file used to create a character.
118
+ #
119
+ # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
120
+ #
121
+ # @return [OpenAI::Models::VideoCreateCharacterResponse]
122
+ #
123
+ # @see OpenAI::Models::VideoCreateCharacterParams
124
+ def create_character(params)
125
+ parsed, options = OpenAI::VideoCreateCharacterParams.dump_request(params)
126
+ @client.request(
127
+ method: :post,
128
+ path: "videos/characters",
129
+ headers: {"content-type" => "multipart/form-data"},
130
+ body: parsed,
131
+ model: OpenAI::Models::VideoCreateCharacterResponse,
132
+ options: options
133
+ )
134
+ end
135
+
111
136
  # Download the generated video bytes or a derived preview asset.
112
137
  #
113
138
  # Streams the rendered video content for the specified video job.
@@ -136,6 +161,82 @@ module OpenAI
136
161
  )
137
162
  end
138
163
 
164
+ # Create a new video generation job by editing a source video or existing
165
+ # generated video.
166
+ #
167
+ # @overload edit(prompt:, video:, request_options: {})
168
+ #
169
+ # @param prompt [String] Text prompt that describes how to edit the source video.
170
+ #
171
+ # @param video [Pathname, StringIO, IO, String, OpenAI::FilePart, OpenAI::Models::VideoEditParams::Video::VideoReferenceInputParam] Reference to the completed video to edit.
172
+ #
173
+ # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
174
+ #
175
+ # @return [OpenAI::Models::Video]
176
+ #
177
+ # @see OpenAI::Models::VideoEditParams
178
+ def edit(params)
179
+ parsed, options = OpenAI::VideoEditParams.dump_request(params)
180
+ @client.request(
181
+ method: :post,
182
+ path: "videos/edits",
183
+ headers: {"content-type" => "multipart/form-data"},
184
+ body: parsed,
185
+ model: OpenAI::Video,
186
+ options: options
187
+ )
188
+ end
189
+
190
+ # Some parameter documentations has been truncated, see
191
+ # {OpenAI::Models::VideoExtendParams} for more details.
192
+ #
193
+ # Create an extension of a completed video.
194
+ #
195
+ # @overload extend_(prompt:, seconds:, video:, request_options: {})
196
+ #
197
+ # @param prompt [String] Updated text prompt that directs the extension generation.
198
+ #
199
+ # @param seconds [Symbol, OpenAI::Models::VideoSeconds] Length of the newly generated extension segment in seconds (allowed values: 4, 8
200
+ #
201
+ # @param video [Pathname, StringIO, IO, String, OpenAI::FilePart, OpenAI::Models::VideoExtendParams::Video::VideoReferenceInputParam] Reference to the completed video to extend.
202
+ #
203
+ # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
204
+ #
205
+ # @return [OpenAI::Models::Video]
206
+ #
207
+ # @see OpenAI::Models::VideoExtendParams
208
+ def extend_(params)
209
+ parsed, options = OpenAI::VideoExtendParams.dump_request(params)
210
+ @client.request(
211
+ method: :post,
212
+ path: "videos/extensions",
213
+ headers: {"content-type" => "multipart/form-data"},
214
+ body: parsed,
215
+ model: OpenAI::Video,
216
+ options: options
217
+ )
218
+ end
219
+
220
+ # Fetch a character.
221
+ #
222
+ # @overload get_character(character_id, request_options: {})
223
+ #
224
+ # @param character_id [String] The identifier of the character to retrieve.
225
+ #
226
+ # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
227
+ #
228
+ # @return [OpenAI::Models::VideoGetCharacterResponse]
229
+ #
230
+ # @see OpenAI::Models::VideoGetCharacterParams
231
+ def get_character(character_id, params = {})
232
+ @client.request(
233
+ method: :get,
234
+ path: ["videos/characters/%1$s", character_id],
235
+ model: OpenAI::Models::VideoGetCharacterResponse,
236
+ options: params[:request_options]
237
+ )
238
+ end
239
+
139
240
  # Create a remix of a completed video using a refreshed prompt.
140
241
  #
141
242
  # @overload remix(video_id, prompt:, request_options: {})
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OpenAI
4
- VERSION = "0.53.0"
4
+ VERSION = "0.55.0"
5
5
  end
data/lib/openai.rb CHANGED
@@ -403,6 +403,7 @@ require_relative "openai/models/image_gen_completed_event"
403
403
  require_relative "openai/models/image_generate_params"
404
404
  require_relative "openai/models/image_gen_partial_image_event"
405
405
  require_relative "openai/models/image_gen_stream_event"
406
+ require_relative "openai/models/image_input_reference_param"
406
407
  require_relative "openai/models/image_model"
407
408
  require_relative "openai/models/images_response"
408
409
  require_relative "openai/models/metadata"
@@ -733,11 +734,17 @@ require_relative "openai/models/vector_store_search_params"
733
734
  require_relative "openai/models/vector_store_search_response"
734
735
  require_relative "openai/models/vector_store_update_params"
735
736
  require_relative "openai/models/video"
737
+ require_relative "openai/models/video_create_character_params"
738
+ require_relative "openai/models/video_create_character_response"
736
739
  require_relative "openai/models/video_create_error"
737
740
  require_relative "openai/models/video_create_params"
738
741
  require_relative "openai/models/video_delete_params"
739
742
  require_relative "openai/models/video_delete_response"
740
743
  require_relative "openai/models/video_download_content_params"
744
+ require_relative "openai/models/video_edit_params"
745
+ require_relative "openai/models/video_extend_params"
746
+ require_relative "openai/models/video_get_character_params"
747
+ require_relative "openai/models/video_get_character_response"
741
748
  require_relative "openai/models/video_list_params"
742
749
  require_relative "openai/models/video_model"
743
750
  require_relative "openai/models/video_remix_params"
@@ -19,6 +19,9 @@ module OpenAI
19
19
  sig { returns(T.nilable(String)) }
20
20
  attr_reader :project
21
21
 
22
+ sig { returns(T.nilable(String)) }
23
+ attr_reader :webhook_secret
24
+
22
25
  # Given a prompt, the model will return one or more predicted completions, and can
23
26
  # also return the probabilities of alternative tokens at each position.
24
27
  sig { returns(OpenAI::Resources::Completions) }
@@ -110,6 +113,7 @@ module OpenAI
110
113
  api_key: T.nilable(String),
111
114
  organization: T.nilable(String),
112
115
  project: T.nilable(String),
116
+ webhook_secret: T.nilable(String),
113
117
  base_url: T.nilable(String),
114
118
  max_retries: Integer,
115
119
  timeout: Float,
@@ -124,6 +128,8 @@ module OpenAI
124
128
  organization: ENV["OPENAI_ORG_ID"],
125
129
  # Defaults to `ENV["OPENAI_PROJECT_ID"]`
126
130
  project: ENV["OPENAI_PROJECT_ID"],
131
+ # Defaults to `ENV["OPENAI_WEBHOOK_SECRET"]`
132
+ webhook_secret: ENV["OPENAI_WEBHOOK_SECRET"],
127
133
  # Override the default base URL for the API, e.g.,
128
134
  # `"https://api.example.com/v2/"`. Defaults to `ENV["OPENAI_BASE_URL"]`
129
135
  base_url: ENV["OPENAI_BASE_URL"],
@@ -23,12 +23,17 @@ module OpenAI
23
23
 
24
24
  # The voice to use when generating the audio. Supported built-in voices are
25
25
  # `alloy`, `ash`, `ballad`, `coral`, `echo`, `fable`, `onyx`, `nova`, `sage`,
26
- # `shimmer`, `verse`, `marin`, and `cedar`. Previews of the voices are available
27
- # in the
26
+ # `shimmer`, `verse`, `marin`, and `cedar`. You may also provide a custom voice
27
+ # object with an `id`, for example `{ "id": "voice_1234" }`. Previews of the
28
+ # voices are available in the
28
29
  # [Text to speech guide](https://platform.openai.com/docs/guides/text-to-speech#voice-options).
29
30
  sig do
30
31
  returns(
31
- T.any(String, OpenAI::Audio::SpeechCreateParams::Voice::OrSymbol)
32
+ T.any(
33
+ String,
34
+ OpenAI::Audio::SpeechCreateParams::Voice::OrSymbol,
35
+ OpenAI::Audio::SpeechCreateParams::Voice::ID
36
+ )
32
37
  )
33
38
  end
34
39
  attr_accessor :voice
@@ -90,7 +95,11 @@ module OpenAI
90
95
  input: String,
91
96
  model: T.any(String, OpenAI::Audio::SpeechModel::OrSymbol),
92
97
  voice:
93
- T.any(String, OpenAI::Audio::SpeechCreateParams::Voice::OrSymbol),
98
+ T.any(
99
+ String,
100
+ OpenAI::Audio::SpeechCreateParams::Voice::OrSymbol,
101
+ OpenAI::Audio::SpeechCreateParams::Voice::ID::OrHash
102
+ ),
94
103
  instructions: String,
95
104
  response_format:
96
105
  OpenAI::Audio::SpeechCreateParams::ResponseFormat::OrSymbol,
@@ -108,8 +117,9 @@ module OpenAI
108
117
  model:,
109
118
  # The voice to use when generating the audio. Supported built-in voices are
110
119
  # `alloy`, `ash`, `ballad`, `coral`, `echo`, `fable`, `onyx`, `nova`, `sage`,
111
- # `shimmer`, `verse`, `marin`, and `cedar`. Previews of the voices are available
112
- # in the
120
+ # `shimmer`, `verse`, `marin`, and `cedar`. You may also provide a custom voice
121
+ # object with an `id`, for example `{ "id": "voice_1234" }`. Previews of the
122
+ # voices are available in the
113
123
  # [Text to speech guide](https://platform.openai.com/docs/guides/text-to-speech#voice-options).
114
124
  voice:,
115
125
  # Control the voice of your generated audio with additional instructions. Does not
@@ -136,7 +146,8 @@ module OpenAI
136
146
  voice:
137
147
  T.any(
138
148
  String,
139
- OpenAI::Audio::SpeechCreateParams::Voice::OrSymbol
149
+ OpenAI::Audio::SpeechCreateParams::Voice::OrSymbol,
150
+ OpenAI::Audio::SpeechCreateParams::Voice::ID
140
151
  ),
141
152
  instructions: String,
142
153
  response_format:
@@ -172,8 +183,9 @@ module OpenAI
172
183
 
173
184
  # The voice to use when generating the audio. Supported built-in voices are
174
185
  # `alloy`, `ash`, `ballad`, `coral`, `echo`, `fable`, `onyx`, `nova`, `sage`,
175
- # `shimmer`, `verse`, `marin`, and `cedar`. Previews of the voices are available
176
- # in the
186
+ # `shimmer`, `verse`, `marin`, and `cedar`. You may also provide a custom voice
187
+ # object with an `id`, for example `{ "id": "voice_1234" }`. Previews of the
188
+ # voices are available in the
177
189
  # [Text to speech guide](https://platform.openai.com/docs/guides/text-to-speech#voice-options).
178
190
  module Voice
179
191
  extend OpenAI::Internal::Type::Union
@@ -182,10 +194,37 @@ module OpenAI
182
194
  T.type_alias do
183
195
  T.any(
184
196
  String,
185
- OpenAI::Audio::SpeechCreateParams::Voice::TaggedSymbol
197
+ OpenAI::Audio::SpeechCreateParams::Voice::TaggedSymbol,
198
+ OpenAI::Audio::SpeechCreateParams::Voice::ID
186
199
  )
187
200
  end
188
201
 
202
+ class ID < OpenAI::Internal::Type::BaseModel
203
+ OrHash =
204
+ T.type_alias do
205
+ T.any(
206
+ OpenAI::Audio::SpeechCreateParams::Voice::ID,
207
+ OpenAI::Internal::AnyHash
208
+ )
209
+ end
210
+
211
+ # The custom voice ID, e.g. `voice_1234`.
212
+ sig { returns(String) }
213
+ attr_accessor :id
214
+
215
+ # Custom voice reference.
216
+ sig { params(id: String).returns(T.attached_class) }
217
+ def self.new(
218
+ # The custom voice ID, e.g. `voice_1234`.
219
+ id:
220
+ )
221
+ end
222
+
223
+ sig { override.returns({ id: String }) }
224
+ def to_hash
225
+ end
226
+ end
227
+
189
228
  sig do
190
229
  override.returns(
191
230
  T::Array[OpenAI::Audio::SpeechCreateParams::Voice::Variants]
@@ -23,12 +23,14 @@ module OpenAI
23
23
 
24
24
  # The voice the model uses to respond. Supported built-in voices are `alloy`,
25
25
  # `ash`, `ballad`, `coral`, `echo`, `fable`, `nova`, `onyx`, `sage`, `shimmer`,
26
- # `marin`, and `cedar`.
26
+ # `marin`, and `cedar`. You may also provide a custom voice object with an `id`,
27
+ # for example `{ "id": "voice_1234" }`.
27
28
  sig do
28
29
  returns(
29
30
  T.any(
30
31
  String,
31
- OpenAI::Chat::ChatCompletionAudioParam::Voice::OrSymbol
32
+ OpenAI::Chat::ChatCompletionAudioParam::Voice::OrSymbol,
33
+ OpenAI::Chat::ChatCompletionAudioParam::Voice::ID
32
34
  )
33
35
  )
34
36
  end
@@ -43,7 +45,8 @@ module OpenAI
43
45
  voice:
44
46
  T.any(
45
47
  String,
46
- OpenAI::Chat::ChatCompletionAudioParam::Voice::OrSymbol
48
+ OpenAI::Chat::ChatCompletionAudioParam::Voice::OrSymbol,
49
+ OpenAI::Chat::ChatCompletionAudioParam::Voice::ID::OrHash
47
50
  )
48
51
  ).returns(T.attached_class)
49
52
  end
@@ -53,7 +56,8 @@ module OpenAI
53
56
  format_:,
54
57
  # The voice the model uses to respond. Supported built-in voices are `alloy`,
55
58
  # `ash`, `ballad`, `coral`, `echo`, `fable`, `nova`, `onyx`, `sage`, `shimmer`,
56
- # `marin`, and `cedar`.
59
+ # `marin`, and `cedar`. You may also provide a custom voice object with an `id`,
60
+ # for example `{ "id": "voice_1234" }`.
57
61
  voice:
58
62
  )
59
63
  end
@@ -65,7 +69,8 @@ module OpenAI
65
69
  voice:
66
70
  T.any(
67
71
  String,
68
- OpenAI::Chat::ChatCompletionAudioParam::Voice::OrSymbol
72
+ OpenAI::Chat::ChatCompletionAudioParam::Voice::OrSymbol,
73
+ OpenAI::Chat::ChatCompletionAudioParam::Voice::ID
69
74
  )
70
75
  }
71
76
  )
@@ -128,7 +133,8 @@ module OpenAI
128
133
 
129
134
  # The voice the model uses to respond. Supported built-in voices are `alloy`,
130
135
  # `ash`, `ballad`, `coral`, `echo`, `fable`, `nova`, `onyx`, `sage`, `shimmer`,
131
- # `marin`, and `cedar`.
136
+ # `marin`, and `cedar`. You may also provide a custom voice object with an `id`,
137
+ # for example `{ "id": "voice_1234" }`.
132
138
  module Voice
133
139
  extend OpenAI::Internal::Type::Union
134
140
 
@@ -136,10 +142,37 @@ module OpenAI
136
142
  T.type_alias do
137
143
  T.any(
138
144
  String,
139
- OpenAI::Chat::ChatCompletionAudioParam::Voice::TaggedSymbol
145
+ OpenAI::Chat::ChatCompletionAudioParam::Voice::TaggedSymbol,
146
+ OpenAI::Chat::ChatCompletionAudioParam::Voice::ID
140
147
  )
141
148
  end
142
149
 
150
+ class ID < OpenAI::Internal::Type::BaseModel
151
+ OrHash =
152
+ T.type_alias do
153
+ T.any(
154
+ OpenAI::Chat::ChatCompletionAudioParam::Voice::ID,
155
+ OpenAI::Internal::AnyHash
156
+ )
157
+ end
158
+
159
+ # The custom voice ID, e.g. `voice_1234`.
160
+ sig { returns(String) }
161
+ attr_accessor :id
162
+
163
+ # Custom voice reference.
164
+ sig { params(id: String).returns(T.attached_class) }
165
+ def self.new(
166
+ # The custom voice ID, e.g. `voice_1234`.
167
+ id:
168
+ )
169
+ end
170
+
171
+ sig { override.returns({ id: String }) }
172
+ def to_hash
173
+ end
174
+ end
175
+
143
176
  sig do
144
177
  override.returns(
145
178
  T::Array[OpenAI::Chat::ChatCompletionAudioParam::Voice::Variants]
@@ -0,0 +1,39 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+ class ImageInputReferenceParam < OpenAI::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(OpenAI::ImageInputReferenceParam, OpenAI::Internal::AnyHash)
9
+ end
10
+
11
+ sig { returns(T.nilable(String)) }
12
+ attr_reader :file_id
13
+
14
+ sig { params(file_id: String).void }
15
+ attr_writer :file_id
16
+
17
+ # A fully qualified URL or base64-encoded data URL.
18
+ sig { returns(T.nilable(String)) }
19
+ attr_reader :image_url
20
+
21
+ sig { params(image_url: String).void }
22
+ attr_writer :image_url
23
+
24
+ sig do
25
+ params(file_id: String, image_url: String).returns(T.attached_class)
26
+ end
27
+ def self.new(
28
+ file_id: nil,
29
+ # A fully qualified URL or base64-encoded data URL.
30
+ image_url: nil
31
+ )
32
+ end
33
+
34
+ sig { override.returns({ file_id: String, image_url: String }) }
35
+ def to_hash
36
+ end
37
+ end
38
+ end
39
+ end