diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 2fbefb94..85c31182 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.58.0" + ".": "0.59.0" } \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index 869b1915..f4cf00e9 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 151 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openai%2Fopenai-a6eca1bd01e0c434af356fe5275c206057216a4e626d1051d294c27016cd6d05.yml -openapi_spec_hash: 68abda9122013a9ae3f084cfdbe8e8c1 -config_hash: 4975e16a94e8f9901428022044131888 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openai%2Fopenai-7c540cce6eb30401259f4831ea9803b6d88501605d13734f98212cbb3b199e10.yml +openapi_spec_hash: 06e656be22bbb92689954253668b42fc +config_hash: 1a88b104658b6c854117996c080ebe6b diff --git a/CHANGELOG.md b/CHANGELOG.md index dfc5357c..169cef67 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## 0.59.0 (2026-04-14) + +Full Changelog: [v0.58.0...v0.59.0](https://github.com/openai/openai-ruby/compare/v0.58.0...v0.59.0) + +### Features + +* **api:** Add detail to InputFileContent ([b747a16](https://github.com/openai/openai-ruby/commit/b747a16153e76eafadd54fd21a58db3f71d5e597)) +* **api:** add OAuthErrorCode type ([643311e](https://github.com/openai/openai-ruby/commit/643311e02e36e0cbd58f7ae954735e690d788db2)) + + +### Documentation + +* improve examples ([5aa2eba](https://github.com/openai/openai-ruby/commit/5aa2ebae024c57a4e577f52088dd5f86713da8f5)) + ## 0.58.0 (2026-04-08) Full Changelog: [v0.57.0...v0.58.0](https://github.com/openai/openai-ruby/compare/v0.57.0...v0.58.0) diff --git a/Gemfile.lock b/Gemfile.lock index d5f20b66..28c2bb4c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: . specs: - openai (0.58.0) + openai (0.59.0) base64 cgi connection_pool diff --git a/README.md b/README.md index c507300c..257cb6d5 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ To use this gem, install via Bundler by adding the following to your application ```ruby -gem "openai", "~> 0.58.0" +gem "openai", "~> 0.59.0" ``` diff --git a/lib/openai/models/responses/response_input_file.rb b/lib/openai/models/responses/response_input_file.rb index 9aee8404..b88616eb 100644 --- a/lib/openai/models/responses/response_input_file.rb +++ b/lib/openai/models/responses/response_input_file.rb @@ -10,6 +10,14 @@ class ResponseInputFile < OpenAI::Internal::Type::BaseModel # @return [Symbol, :input_file] required :type, const: :input_file + # @!attribute detail + # The detail level of the file to be sent to the model. Use `low` for the default + # rendering behavior, or `high` to render the file at higher quality. Defaults to + # `low`. + # + # @return [Symbol, OpenAI::Models::Responses::ResponseInputFile::Detail, nil] + optional :detail, enum: -> { OpenAI::Responses::ResponseInputFile::Detail } + # @!attribute file_data # The content of the file to be sent to the model. # @@ -34,12 +42,14 @@ class ResponseInputFile < OpenAI::Internal::Type::BaseModel # @return [String, nil] optional :filename, String - # @!method initialize(file_data: nil, file_id: nil, file_url: nil, filename: nil, type: :input_file) + # @!method initialize(detail: nil, file_data: nil, file_id: nil, file_url: nil, filename: nil, type: :input_file) # Some parameter documentations has been truncated, see # {OpenAI::Models::Responses::ResponseInputFile} for more details. # # A file input to the model. # + # @param detail [Symbol, OpenAI::Models::Responses::ResponseInputFile::Detail] The detail level of the file to be sent to the model. Use `low` for the default + # # @param file_data [String] The content of the file to be sent to the model. # # @param file_id [String, nil] The ID of the file to be sent to the model. @@ -49,6 +59,21 @@ class ResponseInputFile < OpenAI::Internal::Type::BaseModel # @param filename [String] The name of the file to be sent to the model. # # @param type [Symbol, :input_file] The type of the input item. Always `input_file`. + + # The detail level of the file to be sent to the model. Use `low` for the default + # rendering behavior, or `high` to render the file at higher quality. Defaults to + # `low`. + # + # @see OpenAI::Models::Responses::ResponseInputFile#detail + module Detail + extend OpenAI::Internal::Type::Enum + + LOW = :low + HIGH = :high + + # @!method self.values + # @return [Array] + end end end end diff --git a/lib/openai/models/responses/response_input_file_content.rb b/lib/openai/models/responses/response_input_file_content.rb index 311ed24d..01fc339d 100644 --- a/lib/openai/models/responses/response_input_file_content.rb +++ b/lib/openai/models/responses/response_input_file_content.rb @@ -10,6 +10,14 @@ class ResponseInputFileContent < OpenAI::Internal::Type::BaseModel # @return [Symbol, :input_file] required :type, const: :input_file + # @!attribute detail + # The detail level of the file to be sent to the model. Use `low` for the default + # rendering behavior, or `high` to render the file at higher quality. Defaults to + # `low`. + # + # @return [Symbol, OpenAI::Models::Responses::ResponseInputFileContent::Detail, nil] + optional :detail, enum: -> { OpenAI::Responses::ResponseInputFileContent::Detail } + # @!attribute file_data # The base64-encoded data of the file to be sent to the model. # @@ -34,9 +42,14 @@ class ResponseInputFileContent < OpenAI::Internal::Type::BaseModel # @return [String, nil] optional :filename, String, nil?: true - # @!method initialize(file_data: nil, file_id: nil, file_url: nil, filename: nil, type: :input_file) + # @!method initialize(detail: nil, file_data: nil, file_id: nil, file_url: nil, filename: nil, type: :input_file) + # Some parameter documentations has been truncated, see + # {OpenAI::Models::Responses::ResponseInputFileContent} for more details. + # # A file input to the model. # + # @param detail [Symbol, OpenAI::Models::Responses::ResponseInputFileContent::Detail] The detail level of the file to be sent to the model. Use `low` for the default + # # @param file_data [String, nil] The base64-encoded data of the file to be sent to the model. # # @param file_id [String, nil] The ID of the file to be sent to the model. @@ -46,6 +59,21 @@ class ResponseInputFileContent < OpenAI::Internal::Type::BaseModel # @param filename [String, nil] The name of the file to be sent to the model. # # @param type [Symbol, :input_file] The type of the input item. Always `input_file`. + + # The detail level of the file to be sent to the model. Use `low` for the default + # rendering behavior, or `high` to render the file at higher quality. Defaults to + # `low`. + # + # @see OpenAI::Models::Responses::ResponseInputFileContent#detail + module Detail + extend OpenAI::Internal::Type::Enum + + LOW = :low + HIGH = :high + + # @!method self.values + # @return [Array] + end end end end diff --git a/lib/openai/version.rb b/lib/openai/version.rb index 0b27f05b..c6c4c0d1 100644 --- a/lib/openai/version.rb +++ b/lib/openai/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module OpenAI - VERSION = "0.58.0" + VERSION = "0.59.0" end diff --git a/rbi/openai/models/responses/response_input_file.rbi b/rbi/openai/models/responses/response_input_file.rbi index bfa515c2..7df1606d 100644 --- a/rbi/openai/models/responses/response_input_file.rbi +++ b/rbi/openai/models/responses/response_input_file.rbi @@ -16,6 +16,23 @@ module OpenAI sig { returns(Symbol) } attr_accessor :type + # The detail level of the file to be sent to the model. Use `low` for the default + # rendering behavior, or `high` to render the file at higher quality. Defaults to + # `low`. + sig do + returns( + T.nilable(OpenAI::Responses::ResponseInputFile::Detail::OrSymbol) + ) + end + attr_reader :detail + + sig do + params( + detail: OpenAI::Responses::ResponseInputFile::Detail::OrSymbol + ).void + end + attr_writer :detail + # The content of the file to be sent to the model. sig { returns(T.nilable(String)) } attr_reader :file_data @@ -44,6 +61,7 @@ module OpenAI # A file input to the model. sig do params( + detail: OpenAI::Responses::ResponseInputFile::Detail::OrSymbol, file_data: String, file_id: T.nilable(String), file_url: String, @@ -52,6 +70,10 @@ module OpenAI ).returns(T.attached_class) end def self.new( + # The detail level of the file to be sent to the model. Use `low` for the default + # rendering behavior, or `high` to render the file at higher quality. Defaults to + # `low`. + detail: nil, # The content of the file to be sent to the model. file_data: nil, # The ID of the file to be sent to the model. @@ -69,6 +91,7 @@ module OpenAI override.returns( { type: Symbol, + detail: OpenAI::Responses::ResponseInputFile::Detail::OrSymbol, file_data: String, file_id: T.nilable(String), file_url: String, @@ -78,6 +101,40 @@ module OpenAI end def to_hash end + + # The detail level of the file to be sent to the model. Use `low` for the default + # rendering behavior, or `high` to render the file at higher quality. Defaults to + # `low`. + module Detail + extend OpenAI::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all(Symbol, OpenAI::Responses::ResponseInputFile::Detail) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + LOW = + T.let( + :low, + OpenAI::Responses::ResponseInputFile::Detail::TaggedSymbol + ) + HIGH = + T.let( + :high, + OpenAI::Responses::ResponseInputFile::Detail::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + OpenAI::Responses::ResponseInputFile::Detail::TaggedSymbol + ] + ) + end + def self.values + end + end end end end diff --git a/rbi/openai/models/responses/response_input_file_content.rbi b/rbi/openai/models/responses/response_input_file_content.rbi index ae35f7a3..a8402e1a 100644 --- a/rbi/openai/models/responses/response_input_file_content.rbi +++ b/rbi/openai/models/responses/response_input_file_content.rbi @@ -16,6 +16,26 @@ module OpenAI sig { returns(Symbol) } attr_accessor :type + # The detail level of the file to be sent to the model. Use `low` for the default + # rendering behavior, or `high` to render the file at higher quality. Defaults to + # `low`. + sig do + returns( + T.nilable( + OpenAI::Responses::ResponseInputFileContent::Detail::OrSymbol + ) + ) + end + attr_reader :detail + + sig do + params( + detail: + OpenAI::Responses::ResponseInputFileContent::Detail::OrSymbol + ).void + end + attr_writer :detail + # The base64-encoded data of the file to be sent to the model. sig { returns(T.nilable(String)) } attr_accessor :file_data @@ -35,6 +55,8 @@ module OpenAI # A file input to the model. sig do params( + detail: + OpenAI::Responses::ResponseInputFileContent::Detail::OrSymbol, file_data: T.nilable(String), file_id: T.nilable(String), file_url: T.nilable(String), @@ -43,6 +65,10 @@ module OpenAI ).returns(T.attached_class) end def self.new( + # The detail level of the file to be sent to the model. Use `low` for the default + # rendering behavior, or `high` to render the file at higher quality. Defaults to + # `low`. + detail: nil, # The base64-encoded data of the file to be sent to the model. file_data: nil, # The ID of the file to be sent to the model. @@ -60,6 +86,8 @@ module OpenAI override.returns( { type: Symbol, + detail: + OpenAI::Responses::ResponseInputFileContent::Detail::OrSymbol, file_data: T.nilable(String), file_id: T.nilable(String), file_url: T.nilable(String), @@ -69,6 +97,40 @@ module OpenAI end def to_hash end + + # The detail level of the file to be sent to the model. Use `low` for the default + # rendering behavior, or `high` to render the file at higher quality. Defaults to + # `low`. + module Detail + extend OpenAI::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all(Symbol, OpenAI::Responses::ResponseInputFileContent::Detail) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + LOW = + T.let( + :low, + OpenAI::Responses::ResponseInputFileContent::Detail::TaggedSymbol + ) + HIGH = + T.let( + :high, + OpenAI::Responses::ResponseInputFileContent::Detail::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + OpenAI::Responses::ResponseInputFileContent::Detail::TaggedSymbol + ] + ) + end + def self.values + end + end end end end diff --git a/sig/openai/models/responses/response_input_file.rbs b/sig/openai/models/responses/response_input_file.rbs index 5241e013..0b7ef19d 100644 --- a/sig/openai/models/responses/response_input_file.rbs +++ b/sig/openai/models/responses/response_input_file.rbs @@ -4,6 +4,7 @@ module OpenAI type response_input_file = { type: :input_file, + detail: OpenAI::Models::Responses::ResponseInputFile::detail, file_data: String, file_id: String?, file_url: String, @@ -13,6 +14,12 @@ module OpenAI class ResponseInputFile < OpenAI::Internal::Type::BaseModel attr_accessor type: :input_file + attr_reader detail: OpenAI::Models::Responses::ResponseInputFile::detail? + + def detail=: ( + OpenAI::Models::Responses::ResponseInputFile::detail + ) -> OpenAI::Models::Responses::ResponseInputFile::detail + attr_reader file_data: String? def file_data=: (String) -> String @@ -28,6 +35,7 @@ module OpenAI def filename=: (String) -> String def initialize: ( + ?detail: OpenAI::Models::Responses::ResponseInputFile::detail, ?file_data: String, ?file_id: String?, ?file_url: String, @@ -37,11 +45,23 @@ module OpenAI def to_hash: -> { type: :input_file, + detail: OpenAI::Models::Responses::ResponseInputFile::detail, file_data: String, file_id: String?, file_url: String, filename: String } + + type detail = :low | :high + + module Detail + extend OpenAI::Internal::Type::Enum + + LOW: :low + HIGH: :high + + def self?.values: -> ::Array[OpenAI::Models::Responses::ResponseInputFile::detail] + end end end end diff --git a/sig/openai/models/responses/response_input_file_content.rbs b/sig/openai/models/responses/response_input_file_content.rbs index 7aaf5c9d..605a86b3 100644 --- a/sig/openai/models/responses/response_input_file_content.rbs +++ b/sig/openai/models/responses/response_input_file_content.rbs @@ -4,6 +4,7 @@ module OpenAI type response_input_file_content = { type: :input_file, + detail: OpenAI::Models::Responses::ResponseInputFileContent::detail, file_data: String?, file_id: String?, file_url: String?, @@ -13,6 +14,12 @@ module OpenAI class ResponseInputFileContent < OpenAI::Internal::Type::BaseModel attr_accessor type: :input_file + attr_reader detail: OpenAI::Models::Responses::ResponseInputFileContent::detail? + + def detail=: ( + OpenAI::Models::Responses::ResponseInputFileContent::detail + ) -> OpenAI::Models::Responses::ResponseInputFileContent::detail + attr_accessor file_data: String? attr_accessor file_id: String? @@ -22,6 +29,7 @@ module OpenAI attr_accessor filename: String? def initialize: ( + ?detail: OpenAI::Models::Responses::ResponseInputFileContent::detail, ?file_data: String?, ?file_id: String?, ?file_url: String?, @@ -31,11 +39,23 @@ module OpenAI def to_hash: -> { type: :input_file, + detail: OpenAI::Models::Responses::ResponseInputFileContent::detail, file_data: String?, file_id: String?, file_url: String?, filename: String? } + + type detail = :low | :high + + module Detail + extend OpenAI::Internal::Type::Enum + + LOW: :low + HIGH: :high + + def self?.values: -> ::Array[OpenAI::Models::Responses::ResponseInputFileContent::detail] + end end end end diff --git a/test/openai/resources/audio/speech_test.rb b/test/openai/resources/audio/speech_test.rb index 8ec56d01..e1588426 100644 --- a/test/openai/resources/audio/speech_test.rb +++ b/test/openai/resources/audio/speech_test.rb @@ -4,7 +4,7 @@ class OpenAI::Test::Resources::Audio::SpeechTest < OpenAI::Test::ResourceTest def test_create_required_params - response = @openai.audio.speech.create(input: "input", model: :"tts-1", voice: "string") + response = @openai.audio.speech.create(input: "input", model: :"tts-1", voice: :alloy) assert_pattern do response => StringIO