openai 0.61.0 → 0.63.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 (164) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +26 -0
  3. data/README.md +2 -5
  4. data/lib/openai/auth/workload_identity.rb +2 -2
  5. data/lib/openai/auth/workload_identity_auth.rb +4 -3
  6. data/lib/openai/models/admin/organization/usage_audio_speeches_response.rb +10 -1
  7. data/lib/openai/models/admin/organization/usage_audio_transcriptions_response.rb +10 -1
  8. data/lib/openai/models/admin/organization/usage_code_interpreter_sessions_response.rb +10 -1
  9. data/lib/openai/models/admin/organization/usage_completions_response.rb +10 -1
  10. data/lib/openai/models/admin/organization/usage_costs_response.rb +10 -1
  11. data/lib/openai/models/admin/organization/usage_embeddings_response.rb +10 -1
  12. data/lib/openai/models/admin/organization/usage_images_response.rb +10 -1
  13. data/lib/openai/models/admin/organization/usage_moderations_response.rb +10 -1
  14. data/lib/openai/models/admin/organization/usage_vector_stores_response.rb +10 -1
  15. data/lib/openai/models/chat/chat_completion_token_logprob.rb +1 -2
  16. data/lib/openai/models/chat/completion_create_params.rb +4 -3
  17. data/lib/openai/models/image_edit_params.rb +85 -31
  18. data/lib/openai/models/image_generate_params.rb +78 -26
  19. data/lib/openai/models/image_model.rb +5 -2
  20. data/lib/openai/models/realtime/audio_transcription.rb +37 -5
  21. data/lib/openai/models/realtime/client_secret_create_response.rb +1 -2
  22. data/lib/openai/models/realtime/realtime_audio_config_input.rb +3 -0
  23. data/lib/openai/models/realtime/realtime_audio_input_turn_detection.rb +3 -0
  24. data/lib/openai/models/realtime/realtime_reasoning.rb +24 -0
  25. data/lib/openai/models/realtime/realtime_reasoning_effort.rb +22 -0
  26. data/lib/openai/models/realtime/realtime_response_create_params.rb +18 -1
  27. data/lib/openai/models/realtime/realtime_session.rb +6 -0
  28. data/lib/openai/models/realtime/realtime_session_create_request.rb +21 -1
  29. data/lib/openai/models/realtime/realtime_session_create_response.rb +41 -17
  30. data/lib/openai/models/realtime/realtime_transcription_session_audio_input.rb +3 -0
  31. data/lib/openai/models/realtime/realtime_transcription_session_audio_input_turn_detection.rb +3 -0
  32. data/lib/openai/models/realtime/realtime_transcription_session_create_response.rb +9 -5
  33. data/lib/openai/models/realtime/realtime_transcription_session_turn_detection.rb +2 -1
  34. data/lib/openai/models/realtime/realtime_translation_client_event.rb +45 -0
  35. data/lib/openai/models/realtime/realtime_translation_client_secret_create_request.rb +85 -0
  36. data/lib/openai/models/realtime/realtime_translation_client_secret_create_response.rb +42 -0
  37. data/lib/openai/models/realtime/realtime_translation_input_audio_buffer_append_event.rb +51 -0
  38. data/lib/openai/models/realtime/realtime_translation_input_transcript_delta_event.rb +55 -0
  39. data/lib/openai/models/realtime/realtime_translation_output_audio_delta_event.rb +89 -0
  40. data/lib/openai/models/realtime/realtime_translation_output_transcript_delta_event.rb +54 -0
  41. data/lib/openai/models/realtime/realtime_translation_server_event.rb +53 -0
  42. data/lib/openai/models/realtime/realtime_translation_session.rb +158 -0
  43. data/lib/openai/models/realtime/realtime_translation_session_close_event.rb +30 -0
  44. data/lib/openai/models/realtime/realtime_translation_session_closed_event.rb +28 -0
  45. data/lib/openai/models/realtime/realtime_translation_session_create_request.rb +138 -0
  46. data/lib/openai/models/realtime/realtime_translation_session_created_event.rb +38 -0
  47. data/lib/openai/models/realtime/realtime_translation_session_update_event.rb +43 -0
  48. data/lib/openai/models/realtime/realtime_translation_session_update_request.rb +129 -0
  49. data/lib/openai/models/realtime/realtime_translation_session_updated_event.rb +37 -0
  50. data/lib/openai/models/realtime/transcription_session_updated_event.rb +1 -2
  51. data/lib/openai/models/responses/response.rb +4 -3
  52. data/lib/openai/models/responses/response_compact_params.rb +22 -1
  53. data/lib/openai/models/responses/response_create_params.rb +4 -3
  54. data/lib/openai/models/responses/response_includable.rb +2 -0
  55. data/lib/openai/models/responses/response_text_delta_event.rb +2 -2
  56. data/lib/openai/models/responses/response_text_done_event.rb +2 -2
  57. data/lib/openai/models/responses/responses_client_event.rb +4 -3
  58. data/lib/openai/models/responses/tool.rb +81 -16
  59. data/lib/openai/resources/chat/completions.rb +2 -2
  60. data/lib/openai/resources/images.rb +6 -6
  61. data/lib/openai/resources/realtime/calls.rb +5 -1
  62. data/lib/openai/resources/responses.rb +5 -3
  63. data/lib/openai/version.rb +1 -1
  64. data/lib/openai.rb +18 -1
  65. data/rbi/openai/auth.rbi +3 -3
  66. data/rbi/openai/models/admin/organization/usage_audio_speeches_response.rbi +11 -1
  67. data/rbi/openai/models/admin/organization/usage_audio_transcriptions_response.rbi +11 -1
  68. data/rbi/openai/models/admin/organization/usage_code_interpreter_sessions_response.rbi +11 -1
  69. data/rbi/openai/models/admin/organization/usage_completions_response.rbi +11 -1
  70. data/rbi/openai/models/admin/organization/usage_costs_response.rbi +11 -1
  71. data/rbi/openai/models/admin/organization/usage_embeddings_response.rbi +11 -1
  72. data/rbi/openai/models/admin/organization/usage_images_response.rbi +11 -1
  73. data/rbi/openai/models/admin/organization/usage_moderations_response.rbi +11 -1
  74. data/rbi/openai/models/admin/organization/usage_vector_stores_response.rbi +11 -1
  75. data/rbi/openai/models/chat/chat_completion_token_logprob.rbi +2 -4
  76. data/rbi/openai/models/chat/completion_create_params.rbi +6 -4
  77. data/rbi/openai/models/image_edit_params.rbi +102 -45
  78. data/rbi/openai/models/image_generate_params.rbi +93 -39
  79. data/rbi/openai/models/image_model.rbi +8 -3
  80. data/rbi/openai/models/realtime/audio_transcription.rbi +85 -6
  81. data/rbi/openai/models/realtime/realtime_audio_config_input.rbi +6 -0
  82. data/rbi/openai/models/realtime/realtime_audio_input_turn_detection.rbi +3 -0
  83. data/rbi/openai/models/realtime/realtime_reasoning.rbi +54 -0
  84. data/rbi/openai/models/realtime/realtime_reasoning_effort.rbi +44 -0
  85. data/rbi/openai/models/realtime/realtime_response_create_params.rbi +26 -0
  86. data/rbi/openai/models/realtime/realtime_session.rbi +9 -0
  87. data/rbi/openai/models/realtime/realtime_session_create_request.rbi +31 -0
  88. data/rbi/openai/models/realtime/realtime_session_create_response.rbi +53 -32
  89. data/rbi/openai/models/realtime/realtime_transcription_session_audio_input.rbi +6 -0
  90. data/rbi/openai/models/realtime/realtime_transcription_session_audio_input_turn_detection.rbi +3 -0
  91. data/rbi/openai/models/realtime/realtime_transcription_session_create_response.rbi +13 -7
  92. data/rbi/openai/models/realtime/realtime_transcription_session_turn_detection.rbi +2 -1
  93. data/rbi/openai/models/realtime/realtime_translation_client_event.rbi +29 -0
  94. data/rbi/openai/models/realtime/realtime_translation_client_secret_create_request.rbi +193 -0
  95. data/rbi/openai/models/realtime/realtime_translation_client_secret_create_response.rbi +69 -0
  96. data/rbi/openai/models/realtime/realtime_translation_input_audio_buffer_append_event.rbi +69 -0
  97. data/rbi/openai/models/realtime/realtime_translation_input_transcript_delta_event.rbi +77 -0
  98. data/rbi/openai/models/realtime/realtime_translation_output_audio_delta_event.rbi +148 -0
  99. data/rbi/openai/models/realtime/realtime_translation_output_transcript_delta_event.rbi +76 -0
  100. data/rbi/openai/models/realtime/realtime_translation_server_event.rbi +33 -0
  101. data/rbi/openai/models/realtime/realtime_translation_session.rbi +339 -0
  102. data/rbi/openai/models/realtime/realtime_translation_session_close_event.rbi +44 -0
  103. data/rbi/openai/models/realtime/realtime_translation_session_closed_event.rbi +39 -0
  104. data/rbi/openai/models/realtime/realtime_translation_session_create_request.rbi +322 -0
  105. data/rbi/openai/models/realtime/realtime_translation_session_created_event.rbi +68 -0
  106. data/rbi/openai/models/realtime/realtime_translation_session_update_event.rbi +78 -0
  107. data/rbi/openai/models/realtime/realtime_translation_session_update_request.rbi +313 -0
  108. data/rbi/openai/models/realtime/realtime_translation_session_updated_event.rbi +67 -0
  109. data/rbi/openai/models/realtime/transcription_session_updated_event.rbi +0 -2
  110. data/rbi/openai/models/responses/response.rbi +6 -4
  111. data/rbi/openai/models/responses/response_compact_params.rbi +65 -0
  112. data/rbi/openai/models/responses/response_create_params.rbi +6 -4
  113. data/rbi/openai/models/responses/response_includable.rbi +2 -0
  114. data/rbi/openai/models/responses/response_text_delta_event.rbi +2 -2
  115. data/rbi/openai/models/responses/response_text_done_event.rbi +2 -2
  116. data/rbi/openai/models/responses/responses_client_event.rbi +6 -4
  117. data/rbi/openai/models/responses/tool.rbi +122 -27
  118. data/rbi/openai/resources/chat/completions.rbi +6 -4
  119. data/rbi/openai/resources/images.rbi +110 -44
  120. data/rbi/openai/resources/realtime/calls.rbi +7 -0
  121. data/rbi/openai/resources/responses.rbi +12 -4
  122. data/sig/openai/models/admin/organization/usage_audio_speeches_response.rbs +7 -2
  123. data/sig/openai/models/admin/organization/usage_audio_transcriptions_response.rbs +7 -2
  124. data/sig/openai/models/admin/organization/usage_code_interpreter_sessions_response.rbs +7 -2
  125. data/sig/openai/models/admin/organization/usage_completions_response.rbs +7 -2
  126. data/sig/openai/models/admin/organization/usage_costs_response.rbs +7 -2
  127. data/sig/openai/models/admin/organization/usage_embeddings_response.rbs +7 -2
  128. data/sig/openai/models/admin/organization/usage_images_response.rbs +7 -2
  129. data/sig/openai/models/admin/organization/usage_moderations_response.rbs +7 -2
  130. data/sig/openai/models/admin/organization/usage_vector_stores_response.rbs +7 -2
  131. data/sig/openai/models/image_edit_params.rbs +5 -4
  132. data/sig/openai/models/image_generate_params.rbs +5 -4
  133. data/sig/openai/models/image_model.rbs +11 -5
  134. data/sig/openai/models/realtime/audio_transcription.rbs +25 -0
  135. data/sig/openai/models/realtime/realtime_reasoning.rbs +24 -0
  136. data/sig/openai/models/realtime/realtime_reasoning_effort.rbs +20 -0
  137. data/sig/openai/models/realtime/realtime_response_create_params.rbs +16 -0
  138. data/sig/openai/models/realtime/realtime_session_create_request.rbs +18 -0
  139. data/sig/openai/models/realtime/realtime_session_create_response.rbs +27 -4
  140. data/sig/openai/models/realtime/realtime_transcription_session_create_response.rbs +4 -8
  141. data/sig/openai/models/realtime/realtime_translation_client_event.rbs +16 -0
  142. data/sig/openai/models/realtime/realtime_translation_client_secret_create_request.rbs +69 -0
  143. data/sig/openai/models/realtime/realtime_translation_client_secret_create_response.rbs +32 -0
  144. data/sig/openai/models/realtime/realtime_translation_input_audio_buffer_append_event.rbs +34 -0
  145. data/sig/openai/models/realtime/realtime_translation_input_transcript_delta_event.rbs +37 -0
  146. data/sig/openai/models/realtime/realtime_translation_output_audio_delta_event.rbs +70 -0
  147. data/sig/openai/models/realtime/realtime_translation_output_transcript_delta_event.rbs +37 -0
  148. data/sig/openai/models/realtime/realtime_translation_server_event.rbs +20 -0
  149. data/sig/openai/models/realtime/realtime_translation_session.rbs +131 -0
  150. data/sig/openai/models/realtime/realtime_translation_session_close_event.rbs +20 -0
  151. data/sig/openai/models/realtime/realtime_translation_session_closed_event.rbs +18 -0
  152. data/sig/openai/models/realtime/realtime_translation_session_create_request.rbs +120 -0
  153. data/sig/openai/models/realtime/realtime_translation_session_created_event.rbs +32 -0
  154. data/sig/openai/models/realtime/realtime_translation_session_update_event.rbs +34 -0
  155. data/sig/openai/models/realtime/realtime_translation_session_update_request.rbs +115 -0
  156. data/sig/openai/models/realtime/realtime_translation_session_updated_event.rbs +32 -0
  157. data/sig/openai/models/responses/response_compact_params.rbs +19 -1
  158. data/sig/openai/models/responses/tool.rbs +15 -5
  159. data/sig/openai/resources/realtime/calls.rbs +2 -0
  160. data/sig/openai/resources/responses.rbs +1 -0
  161. metadata +56 -5
  162. data/lib/openai/models/realtime/realtime_session_client_secret.rb +0 -36
  163. data/rbi/openai/models/realtime/realtime_session_client_secret.rbi +0 -49
  164. data/sig/openai/models/realtime/realtime_session_client_secret.rbs +0 -20
@@ -0,0 +1,69 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Realtime
6
+ class RealtimeTranslationInputAudioBufferAppendEvent < OpenAI::Internal::Type::BaseModel
7
+ OrHash =
8
+ T.type_alias do
9
+ T.any(
10
+ OpenAI::Realtime::RealtimeTranslationInputAudioBufferAppendEvent,
11
+ OpenAI::Internal::AnyHash
12
+ )
13
+ end
14
+
15
+ # Base64-encoded 24 kHz PCM16 mono audio bytes.
16
+ sig { returns(String) }
17
+ attr_accessor :audio
18
+
19
+ # The event type, must be `session.input_audio_buffer.append`.
20
+ sig { returns(Symbol) }
21
+ attr_accessor :type
22
+
23
+ # Optional client-generated ID used to identify this event.
24
+ sig { returns(T.nilable(String)) }
25
+ attr_reader :event_id
26
+
27
+ sig { params(event_id: String).void }
28
+ attr_writer :event_id
29
+
30
+ # Send this event to append audio bytes to the translation session input audio
31
+ # buffer.
32
+ #
33
+ # WebSocket translation sessions accept base64-encoded 24 kHz PCM16 mono
34
+ # little-endian raw audio bytes. Unsupported websocket audio formats return a
35
+ # validation error because lower-quality audio materially degrades translation
36
+ # quality.
37
+ #
38
+ # Translation consumes 200 ms engine frames. For best realtime behavior, append
39
+ # audio in 200 ms chunks. If a chunk is shorter, the server buffers it until it
40
+ # has enough audio for one frame. If a chunk is longer, the server splits it into
41
+ # 200 ms frames and enqueues them back-to-back.
42
+ #
43
+ # Keep appending silence while the session is active. If a client stops sending
44
+ # audio and later resumes, model time treats the resumed audio as contiguous with
45
+ # the previous audio rather than as a real-world pause.
46
+ sig do
47
+ params(audio: String, event_id: String, type: Symbol).returns(
48
+ T.attached_class
49
+ )
50
+ end
51
+ def self.new(
52
+ # Base64-encoded 24 kHz PCM16 mono audio bytes.
53
+ audio:,
54
+ # Optional client-generated ID used to identify this event.
55
+ event_id: nil,
56
+ # The event type, must be `session.input_audio_buffer.append`.
57
+ type: :"session.input_audio_buffer.append"
58
+ )
59
+ end
60
+
61
+ sig do
62
+ override.returns({ audio: String, type: Symbol, event_id: String })
63
+ end
64
+ def to_hash
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,77 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Realtime
6
+ class RealtimeTranslationInputTranscriptDeltaEvent < OpenAI::Internal::Type::BaseModel
7
+ OrHash =
8
+ T.type_alias do
9
+ T.any(
10
+ OpenAI::Realtime::RealtimeTranslationInputTranscriptDeltaEvent,
11
+ OpenAI::Internal::AnyHash
12
+ )
13
+ end
14
+
15
+ # Append-only source-language transcript text.
16
+ sig { returns(String) }
17
+ attr_accessor :delta
18
+
19
+ # The unique ID of the server event.
20
+ sig { returns(String) }
21
+ attr_accessor :event_id
22
+
23
+ # The event type, must be `session.input_transcript.delta`.
24
+ sig { returns(Symbol) }
25
+ attr_accessor :type
26
+
27
+ # Timing metadata for stream alignment, derived from the translation frame when
28
+ # available. It advances in 200 ms increments, but multiple transcript deltas may
29
+ # share the same `elapsed_ms`. Treat it as alignment metadata, not a unique
30
+ # transcript-delta identifier.
31
+ sig { returns(T.nilable(Integer)) }
32
+ attr_accessor :elapsed_ms
33
+
34
+ # Returned when optional source-language transcript text is available. This event
35
+ # is emitted only when `audio.input.transcription` is configured.
36
+ #
37
+ # Transcript deltas are append-only text fragments. Clients should not insert
38
+ # unconditional spaces between deltas.
39
+ sig do
40
+ params(
41
+ delta: String,
42
+ event_id: String,
43
+ elapsed_ms: T.nilable(Integer),
44
+ type: Symbol
45
+ ).returns(T.attached_class)
46
+ end
47
+ def self.new(
48
+ # Append-only source-language transcript text.
49
+ delta:,
50
+ # The unique ID of the server event.
51
+ event_id:,
52
+ # Timing metadata for stream alignment, derived from the translation frame when
53
+ # available. It advances in 200 ms increments, but multiple transcript deltas may
54
+ # share the same `elapsed_ms`. Treat it as alignment metadata, not a unique
55
+ # transcript-delta identifier.
56
+ elapsed_ms: nil,
57
+ # The event type, must be `session.input_transcript.delta`.
58
+ type: :"session.input_transcript.delta"
59
+ )
60
+ end
61
+
62
+ sig do
63
+ override.returns(
64
+ {
65
+ delta: String,
66
+ event_id: String,
67
+ type: Symbol,
68
+ elapsed_ms: T.nilable(Integer)
69
+ }
70
+ )
71
+ end
72
+ def to_hash
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,148 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Realtime
6
+ class RealtimeTranslationOutputAudioDeltaEvent < OpenAI::Internal::Type::BaseModel
7
+ OrHash =
8
+ T.type_alias do
9
+ T.any(
10
+ OpenAI::Realtime::RealtimeTranslationOutputAudioDeltaEvent,
11
+ OpenAI::Internal::AnyHash
12
+ )
13
+ end
14
+
15
+ # Base64-encoded translated audio data.
16
+ sig { returns(String) }
17
+ attr_accessor :delta
18
+
19
+ # The unique ID of the server event.
20
+ sig { returns(String) }
21
+ attr_accessor :event_id
22
+
23
+ # The event type, must be `session.output_audio.delta`.
24
+ sig { returns(Symbol) }
25
+ attr_accessor :type
26
+
27
+ # Number of audio channels.
28
+ sig { returns(T.nilable(Integer)) }
29
+ attr_reader :channels
30
+
31
+ sig { params(channels: Integer).void }
32
+ attr_writer :channels
33
+
34
+ # Timing metadata for stream alignment, derived from the translation frame when
35
+ # available. Treat `elapsed_ms` as alignment metadata, not a unique event
36
+ # identifier.
37
+ sig { returns(T.nilable(Integer)) }
38
+ attr_accessor :elapsed_ms
39
+
40
+ # Audio encoding for `delta`.
41
+ sig do
42
+ returns(
43
+ T.nilable(
44
+ OpenAI::Realtime::RealtimeTranslationOutputAudioDeltaEvent::Format::OrSymbol
45
+ )
46
+ )
47
+ end
48
+ attr_reader :format_
49
+
50
+ sig do
51
+ params(
52
+ format_:
53
+ OpenAI::Realtime::RealtimeTranslationOutputAudioDeltaEvent::Format::OrSymbol
54
+ ).void
55
+ end
56
+ attr_writer :format_
57
+
58
+ # Sample rate of the audio delta.
59
+ sig { returns(T.nilable(Integer)) }
60
+ attr_reader :sample_rate
61
+
62
+ sig { params(sample_rate: Integer).void }
63
+ attr_writer :sample_rate
64
+
65
+ # Returned when translated output audio is available. Output audio deltas are 200
66
+ # ms frames of PCM16 audio.
67
+ sig do
68
+ params(
69
+ delta: String,
70
+ event_id: String,
71
+ channels: Integer,
72
+ elapsed_ms: T.nilable(Integer),
73
+ format_:
74
+ OpenAI::Realtime::RealtimeTranslationOutputAudioDeltaEvent::Format::OrSymbol,
75
+ sample_rate: Integer,
76
+ type: Symbol
77
+ ).returns(T.attached_class)
78
+ end
79
+ def self.new(
80
+ # Base64-encoded translated audio data.
81
+ delta:,
82
+ # The unique ID of the server event.
83
+ event_id:,
84
+ # Number of audio channels.
85
+ channels: nil,
86
+ # Timing metadata for stream alignment, derived from the translation frame when
87
+ # available. Treat `elapsed_ms` as alignment metadata, not a unique event
88
+ # identifier.
89
+ elapsed_ms: nil,
90
+ # Audio encoding for `delta`.
91
+ format_: nil,
92
+ # Sample rate of the audio delta.
93
+ sample_rate: nil,
94
+ # The event type, must be `session.output_audio.delta`.
95
+ type: :"session.output_audio.delta"
96
+ )
97
+ end
98
+
99
+ sig do
100
+ override.returns(
101
+ {
102
+ delta: String,
103
+ event_id: String,
104
+ type: Symbol,
105
+ channels: Integer,
106
+ elapsed_ms: T.nilable(Integer),
107
+ format_:
108
+ OpenAI::Realtime::RealtimeTranslationOutputAudioDeltaEvent::Format::OrSymbol,
109
+ sample_rate: Integer
110
+ }
111
+ )
112
+ end
113
+ def to_hash
114
+ end
115
+
116
+ # Audio encoding for `delta`.
117
+ module Format
118
+ extend OpenAI::Internal::Type::Enum
119
+
120
+ TaggedSymbol =
121
+ T.type_alias do
122
+ T.all(
123
+ Symbol,
124
+ OpenAI::Realtime::RealtimeTranslationOutputAudioDeltaEvent::Format
125
+ )
126
+ end
127
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
128
+
129
+ PCM16 =
130
+ T.let(
131
+ :pcm16,
132
+ OpenAI::Realtime::RealtimeTranslationOutputAudioDeltaEvent::Format::TaggedSymbol
133
+ )
134
+
135
+ sig do
136
+ override.returns(
137
+ T::Array[
138
+ OpenAI::Realtime::RealtimeTranslationOutputAudioDeltaEvent::Format::TaggedSymbol
139
+ ]
140
+ )
141
+ end
142
+ def self.values
143
+ end
144
+ end
145
+ end
146
+ end
147
+ end
148
+ end
@@ -0,0 +1,76 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Realtime
6
+ class RealtimeTranslationOutputTranscriptDeltaEvent < OpenAI::Internal::Type::BaseModel
7
+ OrHash =
8
+ T.type_alias do
9
+ T.any(
10
+ OpenAI::Realtime::RealtimeTranslationOutputTranscriptDeltaEvent,
11
+ OpenAI::Internal::AnyHash
12
+ )
13
+ end
14
+
15
+ # Append-only transcript text for the translated output audio.
16
+ sig { returns(String) }
17
+ attr_accessor :delta
18
+
19
+ # The unique ID of the server event.
20
+ sig { returns(String) }
21
+ attr_accessor :event_id
22
+
23
+ # The event type, must be `session.output_transcript.delta`.
24
+ sig { returns(Symbol) }
25
+ attr_accessor :type
26
+
27
+ # Timing metadata for stream alignment, derived from the translation frame when
28
+ # available. It advances in 200 ms increments, but multiple transcript deltas may
29
+ # share the same `elapsed_ms`. Treat it as alignment metadata, not a unique
30
+ # transcript-delta identifier.
31
+ sig { returns(T.nilable(Integer)) }
32
+ attr_accessor :elapsed_ms
33
+
34
+ # Returned when translated transcript text is available.
35
+ #
36
+ # Transcript deltas are append-only text fragments. Clients should not insert
37
+ # unconditional spaces between deltas.
38
+ sig do
39
+ params(
40
+ delta: String,
41
+ event_id: String,
42
+ elapsed_ms: T.nilable(Integer),
43
+ type: Symbol
44
+ ).returns(T.attached_class)
45
+ end
46
+ def self.new(
47
+ # Append-only transcript text for the translated output audio.
48
+ delta:,
49
+ # The unique ID of the server event.
50
+ event_id:,
51
+ # Timing metadata for stream alignment, derived from the translation frame when
52
+ # available. It advances in 200 ms increments, but multiple transcript deltas may
53
+ # share the same `elapsed_ms`. Treat it as alignment metadata, not a unique
54
+ # transcript-delta identifier.
55
+ elapsed_ms: nil,
56
+ # The event type, must be `session.output_transcript.delta`.
57
+ type: :"session.output_transcript.delta"
58
+ )
59
+ end
60
+
61
+ sig do
62
+ override.returns(
63
+ {
64
+ delta: String,
65
+ event_id: String,
66
+ type: Symbol,
67
+ elapsed_ms: T.nilable(Integer)
68
+ }
69
+ )
70
+ end
71
+ def to_hash
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,33 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Realtime
6
+ # A Realtime translation server event.
7
+ module RealtimeTranslationServerEvent
8
+ extend OpenAI::Internal::Type::Union
9
+
10
+ Variants =
11
+ T.type_alias do
12
+ T.any(
13
+ OpenAI::Realtime::RealtimeErrorEvent,
14
+ OpenAI::Realtime::RealtimeTranslationSessionCreatedEvent,
15
+ OpenAI::Realtime::RealtimeTranslationSessionUpdatedEvent,
16
+ OpenAI::Realtime::RealtimeTranslationSessionClosedEvent,
17
+ OpenAI::Realtime::RealtimeTranslationInputTranscriptDeltaEvent,
18
+ OpenAI::Realtime::RealtimeTranslationOutputTranscriptDeltaEvent,
19
+ OpenAI::Realtime::RealtimeTranslationOutputAudioDeltaEvent
20
+ )
21
+ end
22
+
23
+ sig do
24
+ override.returns(
25
+ T::Array[OpenAI::Realtime::RealtimeTranslationServerEvent::Variants]
26
+ )
27
+ end
28
+ def self.variants
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end