Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "0.23.0"
".": "0.23.1"
}
6 changes: 3 additions & 3 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 118
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openai%2Fopenai-7807ec6037efcee1af7decbfd3974a42b761fb6c6a71b4050fe43484d7fcbac4.yml
openapi_spec_hash: da6851e3891ad2659a50ed6a736fd32a
config_hash: 74d955cdc2377213f5268ea309090f6c
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openai%2Fopenai-16cb18bed32bae8c5840fb39a1bf664026cc40463ad0c487dcb0df1bd3d72db0.yml
openapi_spec_hash: 4cb51b22f98dee1a90bc7add82d1d132
config_hash: 930dac3aa861344867e4ac84f037b5df
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# Changelog

## 0.23.1 (2025-09-10)

Full Changelog: [v0.23.0...v0.23.1](https://github.com/openai/openai-ruby/compare/v0.23.0...v0.23.1)

### Chores

* **api:** fix realtime GA types ([342f8d9](https://github.com/openai/openai-ruby/commit/342f8d9a4322cc1afba9aeabc1ff0fda5daec5c3))

## 0.23.0 (2025-09-08)

Full Changelog: [v0.22.1...v0.23.0](https://github.com/openai/openai-ruby/compare/v0.22.1...v0.23.0)
Expand Down
2 changes: 1 addition & 1 deletion Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ GIT
PATH
remote: .
specs:
openai (0.23.0)
openai (0.23.1)
connection_pool

GEM
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ To use this gem, install via Bundler by adding the following to your application
<!-- x-release-please-start-version -->

```ruby
gem "openai", "~> 0.23.0"
gem "openai", "~> 0.23.1"
```

<!-- x-release-please-end -->
Expand Down
5 changes: 1 addition & 4 deletions lib/openai.rb
Original file line number Diff line number Diff line change
Expand Up @@ -411,7 +411,6 @@
require_relative "openai/models/realtime/mcp_list_tools_completed"
require_relative "openai/models/realtime/mcp_list_tools_failed"
require_relative "openai/models/realtime/mcp_list_tools_in_progress"
require_relative "openai/models/realtime/models"
require_relative "openai/models/realtime/noise_reduction_type"
require_relative "openai/models/realtime/output_audio_buffer_clear_event"
require_relative "openai/models/realtime/rate_limits_updated_event"
Expand All @@ -428,6 +427,7 @@
require_relative "openai/models/realtime/realtime_conversation_item_user_message"
require_relative "openai/models/realtime/realtime_error"
require_relative "openai/models/realtime/realtime_error_event"
require_relative "openai/models/realtime/realtime_function_tool"
require_relative "openai/models/realtime/realtime_mcp_approval_request"
require_relative "openai/models/realtime/realtime_mcp_approval_response"
require_relative "openai/models/realtime/realtime_mcphttp_error"
Expand Down Expand Up @@ -455,10 +455,8 @@
require_relative "openai/models/realtime/realtime_transcription_session_audio"
require_relative "openai/models/realtime/realtime_transcription_session_audio_input"
require_relative "openai/models/realtime/realtime_transcription_session_audio_input_turn_detection"
require_relative "openai/models/realtime/realtime_transcription_session_client_secret"
require_relative "openai/models/realtime/realtime_transcription_session_create_request"
require_relative "openai/models/realtime/realtime_transcription_session_create_response"
require_relative "openai/models/realtime/realtime_transcription_session_input_audio_transcription"
require_relative "openai/models/realtime/realtime_transcription_session_turn_detection"
require_relative "openai/models/realtime/realtime_truncation"
require_relative "openai/models/realtime/realtime_truncation_retention_ratio"
Expand Down Expand Up @@ -486,7 +484,6 @@
require_relative "openai/models/realtime/session_created_event"
require_relative "openai/models/realtime/session_updated_event"
require_relative "openai/models/realtime/session_update_event"
require_relative "openai/models/realtime/transcription_session_created"
require_relative "openai/models/realtime/transcription_session_update"
require_relative "openai/models/realtime/transcription_session_updated_event"
require_relative "openai/models/reasoning"
Expand Down
14 changes: 6 additions & 8 deletions lib/openai/models/realtime/client_secret_create_response.rb
Original file line number Diff line number Diff line change
Expand Up @@ -41,16 +41,14 @@ class ClientSecretCreateResponse < OpenAI::Internal::Type::BaseModel
module Session
extend OpenAI::Internal::Type::Union

discriminator :type

# A new Realtime session configuration, with an ephemeral key. Default TTL
# for keys is one minute.
variant -> { OpenAI::Realtime::RealtimeSessionCreateResponse }

# A new Realtime transcription session configuration.
#
# When a session is created on the server via REST API, the session object
# also contains an ephemeral key. Default TTL for keys is 10 minutes. This
# property is not present when a session is updated via the WebSocket API.
variant -> { OpenAI::Realtime::RealtimeTranscriptionSessionCreateResponse }
variant :realtime, -> { OpenAI::Realtime::RealtimeSessionCreateResponse }

# A Realtime transcription session configuration object.
variant :transcription, -> { OpenAI::Realtime::RealtimeTranscriptionSessionCreateResponse }

# @!method self.variants
# @return [Array(OpenAI::Models::Realtime::RealtimeSessionCreateResponse, OpenAI::Models::Realtime::RealtimeTranscriptionSessionCreateResponse)]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ class RealtimeAudioInputTurnDetection < OpenAI::Internal::Type::BaseModel

# @!attribute idle_timeout_ms
# Optional idle timeout after which turn detection will auto-timeout when no
# additional audio is received.
# additional audio is received and emits a `timeout_triggered` event.
#
# @return [Integer, nil]
optional :idle_timeout_ms, Integer, nil?: true
Expand Down
8 changes: 2 additions & 6 deletions lib/openai/models/realtime/realtime_client_event.rb
Original file line number Diff line number Diff line change
Expand Up @@ -110,8 +110,7 @@ module RealtimeClientEvent

# Send this event to update the session’s configuration.
# The client may send this event at any time to update any field
# except for `voice` and `model`. `voice` can be updated only if there have been no other
# audio outputs yet.
# except for `voice` and `model`. `voice` can be updated only if there have been no other audio outputs yet.
#
# When the server receives a `session.update`, it will respond
# with a `session.updated` event showing the full, effective configuration.
Expand All @@ -120,11 +119,8 @@ module RealtimeClientEvent
# To clear a field like `turn_detection`, pass `null`.
variant :"session.update", -> { OpenAI::Realtime::SessionUpdateEvent }

# Send this event to update a transcription session.
variant :"transcription_session.update", -> { OpenAI::Realtime::TranscriptionSessionUpdate }

# @!method self.variants
# @return [Array(OpenAI::Models::Realtime::ConversationItemCreateEvent, OpenAI::Models::Realtime::ConversationItemDeleteEvent, OpenAI::Models::Realtime::ConversationItemRetrieveEvent, OpenAI::Models::Realtime::ConversationItemTruncateEvent, OpenAI::Models::Realtime::InputAudioBufferAppendEvent, OpenAI::Models::Realtime::InputAudioBufferClearEvent, OpenAI::Models::Realtime::OutputAudioBufferClearEvent, OpenAI::Models::Realtime::InputAudioBufferCommitEvent, OpenAI::Models::Realtime::ResponseCancelEvent, OpenAI::Models::Realtime::ResponseCreateEvent, OpenAI::Models::Realtime::SessionUpdateEvent, OpenAI::Models::Realtime::TranscriptionSessionUpdate)]
# @return [Array(OpenAI::Models::Realtime::ConversationItemCreateEvent, OpenAI::Models::Realtime::ConversationItemDeleteEvent, OpenAI::Models::Realtime::ConversationItemRetrieveEvent, OpenAI::Models::Realtime::ConversationItemTruncateEvent, OpenAI::Models::Realtime::InputAudioBufferAppendEvent, OpenAI::Models::Realtime::InputAudioBufferClearEvent, OpenAI::Models::Realtime::OutputAudioBufferClearEvent, OpenAI::Models::Realtime::InputAudioBufferCommitEvent, OpenAI::Models::Realtime::ResponseCancelEvent, OpenAI::Models::Realtime::ResponseCreateEvent, OpenAI::Models::Realtime::SessionUpdateEvent)]
end
end
end
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
module OpenAI
module Models
module Realtime
class Models < OpenAI::Internal::Type::BaseModel
class RealtimeFunctionTool < OpenAI::Internal::Type::BaseModel
# @!attribute description
# The description of the function, including guidance on when and how to call it,
# and guidance about what to tell the user when calling (if anything).
Expand All @@ -26,24 +26,24 @@ class Models < OpenAI::Internal::Type::BaseModel
# @!attribute type
# The type of the tool, i.e. `function`.
#
# @return [Symbol, OpenAI::Models::Realtime::Models::Type, nil]
optional :type, enum: -> { OpenAI::Realtime::Models::Type }
# @return [Symbol, OpenAI::Models::Realtime::RealtimeFunctionTool::Type, nil]
optional :type, enum: -> { OpenAI::Realtime::RealtimeFunctionTool::Type }

# @!method initialize(description: nil, name: nil, parameters: nil, type: nil)
# Some parameter documentations has been truncated, see
# {OpenAI::Models::Realtime::Models} for more details.
# {OpenAI::Models::Realtime::RealtimeFunctionTool} for more details.
#
# @param description [String] The description of the function, including guidance on when and how
#
# @param name [String] The name of the function.
#
# @param parameters [Object] Parameters of the function in JSON Schema.
#
# @param type [Symbol, OpenAI::Models::Realtime::Models::Type] The type of the tool, i.e. `function`.
# @param type [Symbol, OpenAI::Models::Realtime::RealtimeFunctionTool::Type] The type of the tool, i.e. `function`.

# The type of the tool, i.e. `function`.
#
# @see OpenAI::Models::Realtime::Models#type
# @see OpenAI::Models::Realtime::RealtimeFunctionTool#type
module Type
extend OpenAI::Internal::Type::Enum

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ class RealtimeResponseCreateParams < OpenAI::Internal::Type::BaseModel
# @!attribute tools
# Tools available to the model.
#
# @return [Array<OpenAI::Models::Realtime::Models, OpenAI::Models::Realtime::RealtimeResponseCreateMcpTool>, nil]
# @return [Array<OpenAI::Models::Realtime::RealtimeFunctionTool, OpenAI::Models::Realtime::RealtimeResponseCreateMcpTool>, nil]
optional :tools,
-> { OpenAI::Internal::Type::ArrayOf[union: OpenAI::Realtime::RealtimeResponseCreateParams::Tool] }

Expand Down Expand Up @@ -118,7 +118,7 @@ class RealtimeResponseCreateParams < OpenAI::Internal::Type::BaseModel
#
# @param tool_choice [Symbol, OpenAI::Models::Responses::ToolChoiceOptions, OpenAI::Models::Responses::ToolChoiceFunction, OpenAI::Models::Responses::ToolChoiceMcp] How the model chooses tools. Provide one of the string modes or force a specific
#
# @param tools [Array<OpenAI::Models::Realtime::Models, OpenAI::Models::Realtime::RealtimeResponseCreateMcpTool>] Tools available to the model.
# @param tools [Array<OpenAI::Models::Realtime::RealtimeFunctionTool, OpenAI::Models::Realtime::RealtimeResponseCreateMcpTool>] Tools available to the model.

# Controls which conversation the response is added to. Currently supports `auto`
# and `none`, with `auto` as the default value. The `auto` value means that the
Expand Down Expand Up @@ -210,14 +210,14 @@ module ToolChoice
module Tool
extend OpenAI::Internal::Type::Union

variant -> { OpenAI::Realtime::Models }
variant -> { OpenAI::Realtime::RealtimeFunctionTool }

# Give the model access to additional tools via remote Model Context Protocol
# (MCP) servers. [Learn more about MCP](https://platform.openai.com/docs/guides/tools-remote-mcp).
variant -> { OpenAI::Realtime::RealtimeResponseCreateMcpTool }

# @!method self.variants
# @return [Array(OpenAI::Models::Realtime::Models, OpenAI::Models::Realtime::RealtimeResponseCreateMcpTool)]
# @return [Array(OpenAI::Models::Realtime::RealtimeFunctionTool, OpenAI::Models::Realtime::RealtimeResponseCreateMcpTool)]
end
end
end
Expand Down
9 changes: 1 addition & 8 deletions lib/openai/models/realtime/realtime_server_event.rb
Original file line number Diff line number Diff line change
Expand Up @@ -173,13 +173,6 @@ module RealtimeServerEvent
# there is an error.
variant :"session.updated", -> { OpenAI::Realtime::SessionUpdatedEvent }

# Returned when a transcription session is updated with a `transcription_session.update` event, unless
# there is an error.
variant :"transcription_session.updated", -> { OpenAI::Realtime::TranscriptionSessionUpdatedEvent }

# Returned when a transcription session is created.
variant :"transcription_session.created", -> { OpenAI::Realtime::TranscriptionSessionCreated }

# **WebRTC Only:** Emitted when the server begins streaming audio to the client. This event is
# emitted after an audio content part has been added (`response.content_part.added`)
# to the response.
Expand Down Expand Up @@ -378,7 +371,7 @@ class OutputAudioBufferCleared < OpenAI::Internal::Type::BaseModel
end

# @!method self.variants
# @return [Array(OpenAI::Models::Realtime::ConversationCreatedEvent, OpenAI::Models::Realtime::ConversationItemCreatedEvent, OpenAI::Models::Realtime::ConversationItemDeletedEvent, OpenAI::Models::Realtime::ConversationItemInputAudioTranscriptionCompletedEvent, OpenAI::Models::Realtime::ConversationItemInputAudioTranscriptionDeltaEvent, OpenAI::Models::Realtime::ConversationItemInputAudioTranscriptionFailedEvent, OpenAI::Models::Realtime::RealtimeServerEvent::ConversationItemRetrieved, OpenAI::Models::Realtime::ConversationItemTruncatedEvent, OpenAI::Models::Realtime::RealtimeErrorEvent, OpenAI::Models::Realtime::InputAudioBufferClearedEvent, OpenAI::Models::Realtime::InputAudioBufferCommittedEvent, OpenAI::Models::Realtime::InputAudioBufferSpeechStartedEvent, OpenAI::Models::Realtime::InputAudioBufferSpeechStoppedEvent, OpenAI::Models::Realtime::RateLimitsUpdatedEvent, OpenAI::Models::Realtime::ResponseAudioDeltaEvent, OpenAI::Models::Realtime::ResponseAudioDoneEvent, OpenAI::Models::Realtime::ResponseAudioTranscriptDeltaEvent, OpenAI::Models::Realtime::ResponseAudioTranscriptDoneEvent, OpenAI::Models::Realtime::ResponseContentPartAddedEvent, OpenAI::Models::Realtime::ResponseContentPartDoneEvent, OpenAI::Models::Realtime::ResponseCreatedEvent, OpenAI::Models::Realtime::ResponseDoneEvent, OpenAI::Models::Realtime::ResponseFunctionCallArgumentsDeltaEvent, OpenAI::Models::Realtime::ResponseFunctionCallArgumentsDoneEvent, OpenAI::Models::Realtime::ResponseOutputItemAddedEvent, OpenAI::Models::Realtime::ResponseOutputItemDoneEvent, OpenAI::Models::Realtime::ResponseTextDeltaEvent, OpenAI::Models::Realtime::ResponseTextDoneEvent, OpenAI::Models::Realtime::SessionCreatedEvent, OpenAI::Models::Realtime::SessionUpdatedEvent, OpenAI::Models::Realtime::TranscriptionSessionUpdatedEvent, OpenAI::Models::Realtime::TranscriptionSessionCreated, OpenAI::Models::Realtime::RealtimeServerEvent::OutputAudioBufferStarted, OpenAI::Models::Realtime::RealtimeServerEvent::OutputAudioBufferStopped, OpenAI::Models::Realtime::RealtimeServerEvent::OutputAudioBufferCleared, OpenAI::Models::Realtime::ConversationItemAdded, OpenAI::Models::Realtime::ConversationItemDone, OpenAI::Models::Realtime::InputAudioBufferTimeoutTriggered, OpenAI::Models::Realtime::ConversationItemInputAudioTranscriptionSegment, OpenAI::Models::Realtime::McpListToolsInProgress, OpenAI::Models::Realtime::McpListToolsCompleted, OpenAI::Models::Realtime::McpListToolsFailed, OpenAI::Models::Realtime::ResponseMcpCallArgumentsDelta, OpenAI::Models::Realtime::ResponseMcpCallArgumentsDone, OpenAI::Models::Realtime::ResponseMcpCallInProgress, OpenAI::Models::Realtime::ResponseMcpCallCompleted, OpenAI::Models::Realtime::ResponseMcpCallFailed)]
# @return [Array(OpenAI::Models::Realtime::ConversationCreatedEvent, OpenAI::Models::Realtime::ConversationItemCreatedEvent, OpenAI::Models::Realtime::ConversationItemDeletedEvent, OpenAI::Models::Realtime::ConversationItemInputAudioTranscriptionCompletedEvent, OpenAI::Models::Realtime::ConversationItemInputAudioTranscriptionDeltaEvent, OpenAI::Models::Realtime::ConversationItemInputAudioTranscriptionFailedEvent, OpenAI::Models::Realtime::RealtimeServerEvent::ConversationItemRetrieved, OpenAI::Models::Realtime::ConversationItemTruncatedEvent, OpenAI::Models::Realtime::RealtimeErrorEvent, OpenAI::Models::Realtime::InputAudioBufferClearedEvent, OpenAI::Models::Realtime::InputAudioBufferCommittedEvent, OpenAI::Models::Realtime::InputAudioBufferSpeechStartedEvent, OpenAI::Models::Realtime::InputAudioBufferSpeechStoppedEvent, OpenAI::Models::Realtime::RateLimitsUpdatedEvent, OpenAI::Models::Realtime::ResponseAudioDeltaEvent, OpenAI::Models::Realtime::ResponseAudioDoneEvent, OpenAI::Models::Realtime::ResponseAudioTranscriptDeltaEvent, OpenAI::Models::Realtime::ResponseAudioTranscriptDoneEvent, OpenAI::Models::Realtime::ResponseContentPartAddedEvent, OpenAI::Models::Realtime::ResponseContentPartDoneEvent, OpenAI::Models::Realtime::ResponseCreatedEvent, OpenAI::Models::Realtime::ResponseDoneEvent, OpenAI::Models::Realtime::ResponseFunctionCallArgumentsDeltaEvent, OpenAI::Models::Realtime::ResponseFunctionCallArgumentsDoneEvent, OpenAI::Models::Realtime::ResponseOutputItemAddedEvent, OpenAI::Models::Realtime::ResponseOutputItemDoneEvent, OpenAI::Models::Realtime::ResponseTextDeltaEvent, OpenAI::Models::Realtime::ResponseTextDoneEvent, OpenAI::Models::Realtime::SessionCreatedEvent, OpenAI::Models::Realtime::SessionUpdatedEvent, OpenAI::Models::Realtime::RealtimeServerEvent::OutputAudioBufferStarted, OpenAI::Models::Realtime::RealtimeServerEvent::OutputAudioBufferStopped, OpenAI::Models::Realtime::RealtimeServerEvent::OutputAudioBufferCleared, OpenAI::Models::Realtime::ConversationItemAdded, OpenAI::Models::Realtime::ConversationItemDone, OpenAI::Models::Realtime::InputAudioBufferTimeoutTriggered, OpenAI::Models::Realtime::ConversationItemInputAudioTranscriptionSegment, OpenAI::Models::Realtime::McpListToolsInProgress, OpenAI::Models::Realtime::McpListToolsCompleted, OpenAI::Models::Realtime::McpListToolsFailed, OpenAI::Models::Realtime::ResponseMcpCallArgumentsDelta, OpenAI::Models::Realtime::ResponseMcpCallArgumentsDone, OpenAI::Models::Realtime::ResponseMcpCallInProgress, OpenAI::Models::Realtime::ResponseMcpCallCompleted, OpenAI::Models::Realtime::ResponseMcpCallFailed)]
end
end
end
Expand Down
6 changes: 3 additions & 3 deletions lib/openai/models/realtime/realtime_session.rb
Original file line number Diff line number Diff line change
Expand Up @@ -142,8 +142,8 @@ class RealtimeSession < OpenAI::Internal::Type::BaseModel
# @!attribute tools
# Tools (functions) available to the model.
#
# @return [Array<OpenAI::Models::Realtime::Models>, nil]
optional :tools, -> { OpenAI::Internal::Type::ArrayOf[OpenAI::Realtime::Models] }
# @return [Array<OpenAI::Models::Realtime::RealtimeFunctionTool>, nil]
optional :tools, -> { OpenAI::Internal::Type::ArrayOf[OpenAI::Realtime::RealtimeFunctionTool] }

# @!attribute tracing
# Configuration options for tracing. Set to null to disable tracing. Once tracing
Expand Down Expand Up @@ -216,7 +216,7 @@ class RealtimeSession < OpenAI::Internal::Type::BaseModel
#
# @param tool_choice [String] How the model chooses tools. Options are `auto`, `none`, `required`, or
#
# @param tools [Array<OpenAI::Models::Realtime::Models>] Tools (functions) available to the model.
# @param tools [Array<OpenAI::Models::Realtime::RealtimeFunctionTool>] Tools (functions) available to the model.
#
# @param tracing [Symbol, :auto, OpenAI::Models::Realtime::RealtimeSession::Tracing::TracingConfiguration, nil] Configuration options for tracing. Set to null to disable tracing. Once
#
Expand Down
Loading