openai 0.22.1 → 0.23.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 (158) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -0
  3. data/README.md +1 -1
  4. data/lib/openai/models/realtime/audio_transcription.rb +60 -0
  5. data/lib/openai/models/realtime/client_secret_create_params.rb +18 -9
  6. data/lib/openai/models/realtime/client_secret_create_response.rb +11 -250
  7. data/lib/openai/models/realtime/conversation_item.rb +1 -1
  8. data/lib/openai/models/realtime/conversation_item_added.rb +14 -1
  9. data/lib/openai/models/realtime/conversation_item_done.rb +3 -0
  10. data/lib/openai/models/realtime/conversation_item_input_audio_transcription_completed_event.rb +10 -8
  11. data/lib/openai/models/realtime/conversation_item_input_audio_transcription_delta_event.rb +14 -5
  12. data/lib/openai/models/realtime/conversation_item_truncate_event.rb +2 -2
  13. data/lib/openai/models/realtime/input_audio_buffer_append_event.rb +10 -5
  14. data/lib/openai/models/realtime/models.rb +58 -0
  15. data/lib/openai/models/realtime/noise_reduction_type.rb +20 -0
  16. data/lib/openai/models/realtime/realtime_audio_config.rb +6 -427
  17. data/lib/openai/models/realtime/realtime_audio_config_input.rb +89 -0
  18. data/lib/openai/models/realtime/realtime_audio_config_output.rb +100 -0
  19. data/lib/openai/models/realtime/realtime_audio_formats.rb +121 -0
  20. data/lib/openai/models/realtime/realtime_audio_input_turn_detection.rb +131 -0
  21. data/lib/openai/models/realtime/realtime_client_event.rb +31 -23
  22. data/lib/openai/models/realtime/realtime_conversation_item_assistant_message.rb +43 -10
  23. data/lib/openai/models/realtime/realtime_conversation_item_function_call.rb +16 -7
  24. data/lib/openai/models/realtime/realtime_conversation_item_function_call_output.rb +15 -7
  25. data/lib/openai/models/realtime/realtime_conversation_item_system_message.rb +18 -6
  26. data/lib/openai/models/realtime/realtime_conversation_item_user_message.rb +62 -13
  27. data/lib/openai/models/realtime/realtime_response.rb +117 -107
  28. data/lib/openai/models/realtime/realtime_response_create_audio_output.rb +100 -0
  29. data/lib/openai/models/realtime/realtime_response_create_mcp_tool.rb +310 -0
  30. data/lib/openai/models/realtime/realtime_response_create_params.rb +225 -0
  31. data/lib/openai/models/realtime/realtime_response_status.rb +1 -1
  32. data/lib/openai/models/realtime/realtime_response_usage.rb +5 -2
  33. data/lib/openai/models/realtime/realtime_response_usage_input_token_details.rb +58 -8
  34. data/lib/openai/models/realtime/realtime_server_event.rb +21 -5
  35. data/lib/openai/models/realtime/realtime_session.rb +9 -125
  36. data/lib/openai/models/realtime/realtime_session_client_secret.rb +36 -0
  37. data/lib/openai/models/realtime/realtime_session_create_request.rb +50 -71
  38. data/lib/openai/models/realtime/realtime_session_create_response.rb +621 -219
  39. data/lib/openai/models/realtime/realtime_tools_config_union.rb +2 -53
  40. data/lib/openai/models/realtime/realtime_tracing_config.rb +7 -6
  41. data/lib/openai/models/realtime/realtime_transcription_session_audio.rb +19 -0
  42. data/lib/openai/models/realtime/realtime_transcription_session_audio_input.rb +90 -0
  43. data/lib/openai/models/realtime/realtime_transcription_session_audio_input_turn_detection.rb +131 -0
  44. data/lib/openai/models/realtime/realtime_transcription_session_client_secret.rb +38 -0
  45. data/lib/openai/models/realtime/realtime_transcription_session_create_request.rb +12 -270
  46. data/lib/openai/models/realtime/realtime_transcription_session_create_response.rb +78 -0
  47. data/lib/openai/models/realtime/realtime_transcription_session_input_audio_transcription.rb +66 -0
  48. data/lib/openai/models/realtime/realtime_transcription_session_turn_detection.rb +57 -0
  49. data/lib/openai/models/realtime/realtime_truncation.rb +8 -40
  50. data/lib/openai/models/realtime/realtime_truncation_retention_ratio.rb +34 -0
  51. data/lib/openai/models/realtime/response_cancel_event.rb +3 -1
  52. data/lib/openai/models/realtime/response_create_event.rb +18 -348
  53. data/lib/openai/models/realtime/response_done_event.rb +7 -0
  54. data/lib/openai/models/realtime/session_created_event.rb +20 -4
  55. data/lib/openai/models/realtime/session_update_event.rb +36 -12
  56. data/lib/openai/models/realtime/session_updated_event.rb +20 -4
  57. data/lib/openai/models/realtime/transcription_session_created.rb +8 -243
  58. data/lib/openai/models/realtime/transcription_session_update.rb +179 -3
  59. data/lib/openai/models/realtime/transcription_session_updated_event.rb +8 -243
  60. data/lib/openai/resources/realtime/client_secrets.rb +2 -3
  61. data/lib/openai/version.rb +1 -1
  62. data/lib/openai.rb +19 -1
  63. data/rbi/openai/models/realtime/audio_transcription.rbi +132 -0
  64. data/rbi/openai/models/realtime/client_secret_create_params.rbi +25 -11
  65. data/rbi/openai/models/realtime/client_secret_create_response.rbi +2 -587
  66. data/rbi/openai/models/realtime/conversation_item_added.rbi +14 -1
  67. data/rbi/openai/models/realtime/conversation_item_done.rbi +3 -0
  68. data/rbi/openai/models/realtime/conversation_item_input_audio_transcription_completed_event.rbi +11 -8
  69. data/rbi/openai/models/realtime/conversation_item_input_audio_transcription_delta_event.rbi +15 -5
  70. data/rbi/openai/models/realtime/conversation_item_truncate_event.rbi +2 -2
  71. data/rbi/openai/models/realtime/input_audio_buffer_append_event.rbi +10 -5
  72. data/rbi/openai/models/realtime/models.rbi +97 -0
  73. data/rbi/openai/models/realtime/noise_reduction_type.rbi +31 -0
  74. data/rbi/openai/models/realtime/realtime_audio_config.rbi +8 -956
  75. data/rbi/openai/models/realtime/realtime_audio_config_input.rbi +221 -0
  76. data/rbi/openai/models/realtime/realtime_audio_config_output.rbi +222 -0
  77. data/rbi/openai/models/realtime/realtime_audio_formats.rbi +329 -0
  78. data/rbi/openai/models/realtime/realtime_audio_input_turn_detection.rbi +262 -0
  79. data/rbi/openai/models/realtime/realtime_conversation_item_assistant_message.rbi +51 -10
  80. data/rbi/openai/models/realtime/realtime_conversation_item_function_call.rbi +16 -7
  81. data/rbi/openai/models/realtime/realtime_conversation_item_function_call_output.rbi +14 -7
  82. data/rbi/openai/models/realtime/realtime_conversation_item_system_message.rbi +16 -6
  83. data/rbi/openai/models/realtime/realtime_conversation_item_user_message.rbi +110 -12
  84. data/rbi/openai/models/realtime/realtime_response.rbi +287 -212
  85. data/rbi/openai/models/realtime/realtime_response_create_audio_output.rbi +250 -0
  86. data/rbi/openai/models/realtime/realtime_response_create_mcp_tool.rbi +616 -0
  87. data/rbi/openai/models/realtime/realtime_response_create_params.rbi +529 -0
  88. data/rbi/openai/models/realtime/realtime_response_usage.rbi +8 -2
  89. data/rbi/openai/models/realtime/realtime_response_usage_input_token_details.rbi +106 -7
  90. data/rbi/openai/models/realtime/realtime_server_event.rbi +4 -1
  91. data/rbi/openai/models/realtime/realtime_session.rbi +12 -262
  92. data/rbi/openai/models/realtime/realtime_session_client_secret.rbi +49 -0
  93. data/rbi/openai/models/realtime/realtime_session_create_request.rbi +112 -133
  94. data/rbi/openai/models/realtime/realtime_session_create_response.rbi +1229 -405
  95. data/rbi/openai/models/realtime/realtime_tools_config_union.rbi +1 -117
  96. data/rbi/openai/models/realtime/realtime_tracing_config.rbi +11 -10
  97. data/rbi/openai/models/realtime/realtime_transcription_session_audio.rbi +50 -0
  98. data/rbi/openai/models/realtime/realtime_transcription_session_audio_input.rbi +226 -0
  99. data/rbi/openai/models/realtime/realtime_transcription_session_audio_input_turn_detection.rbi +259 -0
  100. data/rbi/openai/models/realtime/realtime_transcription_session_client_secret.rbi +51 -0
  101. data/rbi/openai/models/realtime/realtime_transcription_session_create_request.rbi +25 -597
  102. data/rbi/openai/models/realtime/realtime_transcription_session_create_response.rbi +195 -0
  103. data/rbi/openai/models/realtime/realtime_transcription_session_input_audio_transcription.rbi +144 -0
  104. data/rbi/openai/models/realtime/realtime_transcription_session_turn_detection.rbi +94 -0
  105. data/rbi/openai/models/realtime/realtime_truncation.rbi +5 -56
  106. data/rbi/openai/models/realtime/realtime_truncation_retention_ratio.rbi +45 -0
  107. data/rbi/openai/models/realtime/response_cancel_event.rbi +3 -1
  108. data/rbi/openai/models/realtime/response_create_event.rbi +19 -786
  109. data/rbi/openai/models/realtime/response_done_event.rbi +7 -0
  110. data/rbi/openai/models/realtime/session_created_event.rbi +42 -9
  111. data/rbi/openai/models/realtime/session_update_event.rbi +57 -19
  112. data/rbi/openai/models/realtime/session_updated_event.rbi +42 -9
  113. data/rbi/openai/models/realtime/transcription_session_created.rbi +17 -591
  114. data/rbi/openai/models/realtime/transcription_session_update.rbi +425 -7
  115. data/rbi/openai/models/realtime/transcription_session_updated_event.rbi +14 -591
  116. data/rbi/openai/resources/realtime/client_secrets.rbi +5 -3
  117. data/sig/openai/models/realtime/audio_transcription.rbs +57 -0
  118. data/sig/openai/models/realtime/client_secret_create_response.rbs +1 -251
  119. data/sig/openai/models/realtime/models.rbs +57 -0
  120. data/sig/openai/models/realtime/noise_reduction_type.rbs +16 -0
  121. data/sig/openai/models/realtime/realtime_audio_config.rbs +12 -331
  122. data/sig/openai/models/realtime/realtime_audio_config_input.rbs +72 -0
  123. data/sig/openai/models/realtime/realtime_audio_config_output.rbs +72 -0
  124. data/sig/openai/models/realtime/realtime_audio_formats.rbs +128 -0
  125. data/sig/openai/models/realtime/realtime_audio_input_turn_detection.rbs +99 -0
  126. data/sig/openai/models/realtime/realtime_conversation_item_assistant_message.rbs +17 -2
  127. data/sig/openai/models/realtime/realtime_conversation_item_user_message.rbs +30 -1
  128. data/sig/openai/models/realtime/realtime_response.rbs +103 -82
  129. data/sig/openai/models/realtime/realtime_response_create_audio_output.rbs +84 -0
  130. data/sig/openai/models/realtime/realtime_response_create_mcp_tool.rbs +218 -0
  131. data/sig/openai/models/realtime/realtime_response_create_params.rbs +148 -0
  132. data/sig/openai/models/realtime/realtime_response_usage_input_token_details.rbs +50 -1
  133. data/sig/openai/models/realtime/realtime_session.rbs +16 -106
  134. data/sig/openai/models/realtime/realtime_session_client_secret.rbs +20 -0
  135. data/sig/openai/models/realtime/realtime_session_create_request.rbs +27 -43
  136. data/sig/openai/models/realtime/realtime_session_create_response.rbs +389 -187
  137. data/sig/openai/models/realtime/realtime_tools_config_union.rbs +1 -53
  138. data/sig/openai/models/realtime/realtime_transcription_session_audio.rbs +24 -0
  139. data/sig/openai/models/realtime/realtime_transcription_session_audio_input.rbs +72 -0
  140. data/sig/openai/models/realtime/realtime_transcription_session_audio_input_turn_detection.rbs +99 -0
  141. data/sig/openai/models/realtime/realtime_transcription_session_client_secret.rbs +20 -0
  142. data/sig/openai/models/realtime/realtime_transcription_session_create_request.rbs +11 -203
  143. data/sig/openai/models/realtime/realtime_transcription_session_create_response.rbs +69 -0
  144. data/sig/openai/models/realtime/realtime_transcription_session_input_audio_transcription.rbs +59 -0
  145. data/sig/openai/models/realtime/realtime_transcription_session_turn_detection.rbs +47 -0
  146. data/sig/openai/models/realtime/realtime_truncation.rbs +1 -28
  147. data/sig/openai/models/realtime/realtime_truncation_retention_ratio.rbs +21 -0
  148. data/sig/openai/models/realtime/response_create_event.rbs +6 -249
  149. data/sig/openai/models/realtime/session_created_event.rbs +14 -4
  150. data/sig/openai/models/realtime/session_update_event.rbs +14 -4
  151. data/sig/openai/models/realtime/session_updated_event.rbs +14 -4
  152. data/sig/openai/models/realtime/transcription_session_created.rbs +4 -254
  153. data/sig/openai/models/realtime/transcription_session_update.rbs +154 -4
  154. data/sig/openai/models/realtime/transcription_session_updated_event.rbs +4 -254
  155. metadata +59 -5
  156. data/lib/openai/models/realtime/realtime_client_secret_config.rb +0 -64
  157. data/rbi/openai/models/realtime/realtime_client_secret_config.rbi +0 -147
  158. data/sig/openai/models/realtime/realtime_client_secret_config.rbs +0 -60
@@ -5,35 +5,33 @@ module OpenAI
5
5
  module Realtime
6
6
  type realtime_session_create_response =
7
7
  {
8
- id: String,
9
8
  audio: OpenAI::Realtime::RealtimeSessionCreateResponse::Audio,
10
- expires_at: Integer,
9
+ client_secret: OpenAI::Realtime::RealtimeSessionClientSecret,
11
10
  include: ::Array[OpenAI::Models::Realtime::RealtimeSessionCreateResponse::include_],
12
11
  instructions: String,
13
12
  max_output_tokens: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::max_output_tokens,
14
- model: String,
15
- object: String,
13
+ model: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::model,
16
14
  output_modalities: ::Array[OpenAI::Models::Realtime::RealtimeSessionCreateResponse::output_modality],
17
- tool_choice: String,
18
- tools: ::Array[OpenAI::Realtime::RealtimeSessionCreateResponse::Tool],
19
- tracing: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::tracing,
20
- turn_detection: OpenAI::Realtime::RealtimeSessionCreateResponse::TurnDetection
15
+ prompt: OpenAI::Responses::ResponsePrompt?,
16
+ tool_choice: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::tool_choice,
17
+ tools: ::Array[OpenAI::Models::Realtime::RealtimeSessionCreateResponse::tool],
18
+ tracing: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::tracing?,
19
+ truncation: OpenAI::Models::Realtime::realtime_truncation,
20
+ type: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::type_
21
21
  }
22
22
 
23
23
  class RealtimeSessionCreateResponse < OpenAI::Internal::Type::BaseModel
24
- attr_reader id: String?
25
-
26
- def id=: (String) -> String
27
-
28
24
  attr_reader audio: OpenAI::Realtime::RealtimeSessionCreateResponse::Audio?
29
25
 
30
26
  def audio=: (
31
27
  OpenAI::Realtime::RealtimeSessionCreateResponse::Audio
32
28
  ) -> OpenAI::Realtime::RealtimeSessionCreateResponse::Audio
33
29
 
34
- attr_reader expires_at: Integer?
30
+ attr_reader client_secret: OpenAI::Realtime::RealtimeSessionClientSecret?
35
31
 
36
- def expires_at=: (Integer) -> Integer
32
+ def client_secret=: (
33
+ OpenAI::Realtime::RealtimeSessionClientSecret
34
+ ) -> OpenAI::Realtime::RealtimeSessionClientSecret
37
35
 
38
36
  attr_reader include: ::Array[OpenAI::Models::Realtime::RealtimeSessionCreateResponse::include_]?
39
37
 
@@ -51,13 +49,11 @@ module OpenAI
51
49
  OpenAI::Models::Realtime::RealtimeSessionCreateResponse::max_output_tokens
52
50
  ) -> OpenAI::Models::Realtime::RealtimeSessionCreateResponse::max_output_tokens
53
51
 
54
- attr_reader model: String?
55
-
56
- def model=: (String) -> String
52
+ attr_reader model: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::model?
57
53
 
58
- attr_reader object: String?
59
-
60
- def object=: (String) -> String
54
+ def model=: (
55
+ OpenAI::Models::Realtime::RealtimeSessionCreateResponse::model
56
+ ) -> OpenAI::Models::Realtime::RealtimeSessionCreateResponse::model
61
57
 
62
58
  attr_reader output_modalities: ::Array[OpenAI::Models::Realtime::RealtimeSessionCreateResponse::output_modality]?
63
59
 
@@ -65,58 +61,64 @@ module OpenAI
65
61
  ::Array[OpenAI::Models::Realtime::RealtimeSessionCreateResponse::output_modality]
66
62
  ) -> ::Array[OpenAI::Models::Realtime::RealtimeSessionCreateResponse::output_modality]
67
63
 
68
- attr_reader tool_choice: String?
64
+ attr_accessor prompt: OpenAI::Responses::ResponsePrompt?
65
+
66
+ attr_reader tool_choice: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::tool_choice?
69
67
 
70
- def tool_choice=: (String) -> String
68
+ def tool_choice=: (
69
+ OpenAI::Models::Realtime::RealtimeSessionCreateResponse::tool_choice
70
+ ) -> OpenAI::Models::Realtime::RealtimeSessionCreateResponse::tool_choice
71
71
 
72
- attr_reader tools: ::Array[OpenAI::Realtime::RealtimeSessionCreateResponse::Tool]?
72
+ attr_reader tools: ::Array[OpenAI::Models::Realtime::RealtimeSessionCreateResponse::tool]?
73
73
 
74
74
  def tools=: (
75
- ::Array[OpenAI::Realtime::RealtimeSessionCreateResponse::Tool]
76
- ) -> ::Array[OpenAI::Realtime::RealtimeSessionCreateResponse::Tool]
75
+ ::Array[OpenAI::Models::Realtime::RealtimeSessionCreateResponse::tool]
76
+ ) -> ::Array[OpenAI::Models::Realtime::RealtimeSessionCreateResponse::tool]
77
77
 
78
- attr_reader tracing: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::tracing?
78
+ attr_accessor tracing: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::tracing?
79
79
 
80
- def tracing=: (
81
- OpenAI::Models::Realtime::RealtimeSessionCreateResponse::tracing
82
- ) -> OpenAI::Models::Realtime::RealtimeSessionCreateResponse::tracing
80
+ attr_reader truncation: OpenAI::Models::Realtime::realtime_truncation?
83
81
 
84
- attr_reader turn_detection: OpenAI::Realtime::RealtimeSessionCreateResponse::TurnDetection?
82
+ def truncation=: (
83
+ OpenAI::Models::Realtime::realtime_truncation
84
+ ) -> OpenAI::Models::Realtime::realtime_truncation
85
85
 
86
- def turn_detection=: (
87
- OpenAI::Realtime::RealtimeSessionCreateResponse::TurnDetection
88
- ) -> OpenAI::Realtime::RealtimeSessionCreateResponse::TurnDetection
86
+ attr_reader type: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::type_?
87
+
88
+ def type=: (
89
+ OpenAI::Models::Realtime::RealtimeSessionCreateResponse::type_
90
+ ) -> OpenAI::Models::Realtime::RealtimeSessionCreateResponse::type_
89
91
 
90
92
  def initialize: (
91
- ?id: String,
92
93
  ?audio: OpenAI::Realtime::RealtimeSessionCreateResponse::Audio,
93
- ?expires_at: Integer,
94
+ ?client_secret: OpenAI::Realtime::RealtimeSessionClientSecret,
94
95
  ?include: ::Array[OpenAI::Models::Realtime::RealtimeSessionCreateResponse::include_],
95
96
  ?instructions: String,
96
97
  ?max_output_tokens: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::max_output_tokens,
97
- ?model: String,
98
- ?object: String,
98
+ ?model: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::model,
99
99
  ?output_modalities: ::Array[OpenAI::Models::Realtime::RealtimeSessionCreateResponse::output_modality],
100
- ?tool_choice: String,
101
- ?tools: ::Array[OpenAI::Realtime::RealtimeSessionCreateResponse::Tool],
102
- ?tracing: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::tracing,
103
- ?turn_detection: OpenAI::Realtime::RealtimeSessionCreateResponse::TurnDetection
100
+ ?prompt: OpenAI::Responses::ResponsePrompt?,
101
+ ?tool_choice: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::tool_choice,
102
+ ?tools: ::Array[OpenAI::Models::Realtime::RealtimeSessionCreateResponse::tool],
103
+ ?tracing: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::tracing?,
104
+ ?truncation: OpenAI::Models::Realtime::realtime_truncation,
105
+ ?type: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::type_
104
106
  ) -> void
105
107
 
106
108
  def to_hash: -> {
107
- id: String,
108
109
  audio: OpenAI::Realtime::RealtimeSessionCreateResponse::Audio,
109
- expires_at: Integer,
110
+ client_secret: OpenAI::Realtime::RealtimeSessionClientSecret,
110
111
  include: ::Array[OpenAI::Models::Realtime::RealtimeSessionCreateResponse::include_],
111
112
  instructions: String,
112
113
  max_output_tokens: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::max_output_tokens,
113
- model: String,
114
- object: String,
114
+ model: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::model,
115
115
  output_modalities: ::Array[OpenAI::Models::Realtime::RealtimeSessionCreateResponse::output_modality],
116
- tool_choice: String,
117
- tools: ::Array[OpenAI::Realtime::RealtimeSessionCreateResponse::Tool],
118
- tracing: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::tracing,
119
- turn_detection: OpenAI::Realtime::RealtimeSessionCreateResponse::TurnDetection
116
+ prompt: OpenAI::Responses::ResponsePrompt?,
117
+ tool_choice: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::tool_choice,
118
+ tools: ::Array[OpenAI::Models::Realtime::RealtimeSessionCreateResponse::tool],
119
+ tracing: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::tracing?,
120
+ truncation: OpenAI::Models::Realtime::realtime_truncation,
121
+ type: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::type_
120
122
  }
121
123
 
122
124
  type audio =
@@ -150,16 +152,18 @@ module OpenAI
150
152
 
151
153
  type input =
152
154
  {
153
- format_: String,
155
+ format_: OpenAI::Models::Realtime::realtime_audio_formats,
154
156
  noise_reduction: OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::NoiseReduction,
155
- transcription: OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::Transcription,
157
+ transcription: OpenAI::Realtime::AudioTranscription,
156
158
  turn_detection: OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::TurnDetection
157
159
  }
158
160
 
159
161
  class Input < OpenAI::Internal::Type::BaseModel
160
- attr_reader format_: String?
162
+ attr_reader format_: OpenAI::Models::Realtime::realtime_audio_formats?
161
163
 
162
- def format_=: (String) -> String
164
+ def format_=: (
165
+ OpenAI::Models::Realtime::realtime_audio_formats
166
+ ) -> OpenAI::Models::Realtime::realtime_audio_formats
163
167
 
164
168
  attr_reader noise_reduction: OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::NoiseReduction?
165
169
 
@@ -167,11 +171,11 @@ module OpenAI
167
171
  OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::NoiseReduction
168
172
  ) -> OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::NoiseReduction
169
173
 
170
- attr_reader transcription: OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::Transcription?
174
+ attr_reader transcription: OpenAI::Realtime::AudioTranscription?
171
175
 
172
176
  def transcription=: (
173
- OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::Transcription
174
- ) -> OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::Transcription
177
+ OpenAI::Realtime::AudioTranscription
178
+ ) -> OpenAI::Realtime::AudioTranscription
175
179
 
176
180
  attr_reader turn_detection: OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::TurnDetection?
177
181
 
@@ -180,89 +184,67 @@ module OpenAI
180
184
  ) -> OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::TurnDetection
181
185
 
182
186
  def initialize: (
183
- ?format_: String,
187
+ ?format_: OpenAI::Models::Realtime::realtime_audio_formats,
184
188
  ?noise_reduction: OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::NoiseReduction,
185
- ?transcription: OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::Transcription,
189
+ ?transcription: OpenAI::Realtime::AudioTranscription,
186
190
  ?turn_detection: OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::TurnDetection
187
191
  ) -> void
188
192
 
189
193
  def to_hash: -> {
190
- format_: String,
194
+ format_: OpenAI::Models::Realtime::realtime_audio_formats,
191
195
  noise_reduction: OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::NoiseReduction,
192
- transcription: OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::Transcription,
196
+ transcription: OpenAI::Realtime::AudioTranscription,
193
197
  turn_detection: OpenAI::Realtime::RealtimeSessionCreateResponse::Audio::Input::TurnDetection
194
198
  }
195
199
 
196
200
  type noise_reduction =
197
- {
198
- type: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Audio::Input::NoiseReduction::type_
199
- }
201
+ { type: OpenAI::Models::Realtime::noise_reduction_type }
200
202
 
201
203
  class NoiseReduction < OpenAI::Internal::Type::BaseModel
202
- attr_reader type: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Audio::Input::NoiseReduction::type_?
204
+ attr_reader type: OpenAI::Models::Realtime::noise_reduction_type?
203
205
 
204
206
  def type=: (
205
- OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Audio::Input::NoiseReduction::type_
206
- ) -> OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Audio::Input::NoiseReduction::type_
207
+ OpenAI::Models::Realtime::noise_reduction_type
208
+ ) -> OpenAI::Models::Realtime::noise_reduction_type
207
209
 
208
210
  def initialize: (
209
- ?type: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Audio::Input::NoiseReduction::type_
211
+ ?type: OpenAI::Models::Realtime::noise_reduction_type
210
212
  ) -> void
211
213
 
212
214
  def to_hash: -> {
213
- type: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Audio::Input::NoiseReduction::type_
214
- }
215
-
216
- type type_ = :near_field | :far_field
217
-
218
- module Type
219
- extend OpenAI::Internal::Type::Enum
220
-
221
- NEAR_FIELD: :near_field
222
- FAR_FIELD: :far_field
223
-
224
- def self?.values: -> ::Array[OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Audio::Input::NoiseReduction::type_]
225
- end
226
- end
227
-
228
- type transcription =
229
- { language: String, model: String, prompt: String }
230
-
231
- class Transcription < OpenAI::Internal::Type::BaseModel
232
- attr_reader language: String?
233
-
234
- def language=: (String) -> String
235
-
236
- attr_reader model: String?
237
-
238
- def model=: (String) -> String
239
-
240
- attr_reader prompt: String?
241
-
242
- def prompt=: (String) -> String
243
-
244
- def initialize: (
245
- ?language: String,
246
- ?model: String,
247
- ?prompt: String
248
- ) -> void
249
-
250
- def to_hash: -> {
251
- language: String,
252
- model: String,
253
- prompt: String
215
+ type: OpenAI::Models::Realtime::noise_reduction_type
254
216
  }
255
217
  end
256
218
 
257
219
  type turn_detection =
258
220
  {
221
+ create_response: bool,
222
+ eagerness: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Audio::Input::TurnDetection::eagerness,
223
+ idle_timeout_ms: Integer?,
224
+ interrupt_response: bool,
259
225
  prefix_padding_ms: Integer,
260
226
  silence_duration_ms: Integer,
261
227
  threshold: Float,
262
- type: String
228
+ type: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Audio::Input::TurnDetection::type_
263
229
  }
264
230
 
265
231
  class TurnDetection < OpenAI::Internal::Type::BaseModel
232
+ attr_reader create_response: bool?
233
+
234
+ def create_response=: (bool) -> bool
235
+
236
+ attr_reader eagerness: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Audio::Input::TurnDetection::eagerness?
237
+
238
+ def eagerness=: (
239
+ OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Audio::Input::TurnDetection::eagerness
240
+ ) -> OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Audio::Input::TurnDetection::eagerness
241
+
242
+ attr_accessor idle_timeout_ms: Integer?
243
+
244
+ attr_reader interrupt_response: bool?
245
+
246
+ def interrupt_response=: (bool) -> bool
247
+
266
248
  attr_reader prefix_padding_ms: Integer?
267
249
 
268
250
  def prefix_padding_ms=: (Integer) -> Integer
@@ -275,37 +257,73 @@ module OpenAI
275
257
 
276
258
  def threshold=: (Float) -> Float
277
259
 
278
- attr_reader type: String?
260
+ attr_reader type: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Audio::Input::TurnDetection::type_?
279
261
 
280
- def type=: (String) -> String
262
+ def type=: (
263
+ OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Audio::Input::TurnDetection::type_
264
+ ) -> OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Audio::Input::TurnDetection::type_
281
265
 
282
266
  def initialize: (
267
+ ?create_response: bool,
268
+ ?eagerness: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Audio::Input::TurnDetection::eagerness,
269
+ ?idle_timeout_ms: Integer?,
270
+ ?interrupt_response: bool,
283
271
  ?prefix_padding_ms: Integer,
284
272
  ?silence_duration_ms: Integer,
285
273
  ?threshold: Float,
286
- ?type: String
274
+ ?type: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Audio::Input::TurnDetection::type_
287
275
  ) -> void
288
276
 
289
277
  def to_hash: -> {
278
+ create_response: bool,
279
+ eagerness: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Audio::Input::TurnDetection::eagerness,
280
+ idle_timeout_ms: Integer?,
281
+ interrupt_response: bool,
290
282
  prefix_padding_ms: Integer,
291
283
  silence_duration_ms: Integer,
292
284
  threshold: Float,
293
- type: String
285
+ type: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Audio::Input::TurnDetection::type_
294
286
  }
287
+
288
+ type eagerness = :low | :medium | :high | :auto
289
+
290
+ module Eagerness
291
+ extend OpenAI::Internal::Type::Enum
292
+
293
+ LOW: :low
294
+ MEDIUM: :medium
295
+ HIGH: :high
296
+ AUTO: :auto
297
+
298
+ def self?.values: -> ::Array[OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Audio::Input::TurnDetection::eagerness]
299
+ end
300
+
301
+ type type_ = :server_vad | :semantic_vad
302
+
303
+ module Type
304
+ extend OpenAI::Internal::Type::Enum
305
+
306
+ SERVER_VAD: :server_vad
307
+ SEMANTIC_VAD: :semantic_vad
308
+
309
+ def self?.values: -> ::Array[OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Audio::Input::TurnDetection::type_]
310
+ end
295
311
  end
296
312
  end
297
313
 
298
314
  type output =
299
315
  {
300
- format_: String,
316
+ format_: OpenAI::Models::Realtime::realtime_audio_formats,
301
317
  speed: Float,
302
318
  voice: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Audio::Output::voice
303
319
  }
304
320
 
305
321
  class Output < OpenAI::Internal::Type::BaseModel
306
- attr_reader format_: String?
322
+ attr_reader format_: OpenAI::Models::Realtime::realtime_audio_formats?
307
323
 
308
- def format_=: (String) -> String
324
+ def format_=: (
325
+ OpenAI::Models::Realtime::realtime_audio_formats
326
+ ) -> OpenAI::Models::Realtime::realtime_audio_formats
309
327
 
310
328
  attr_reader speed: Float?
311
329
 
@@ -318,13 +336,13 @@ module OpenAI
318
336
  ) -> OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Audio::Output::voice
319
337
 
320
338
  def initialize: (
321
- ?format_: String,
339
+ ?format_: OpenAI::Models::Realtime::realtime_audio_formats,
322
340
  ?speed: Float,
323
341
  ?voice: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Audio::Output::voice
324
342
  ) -> void
325
343
 
326
344
  def to_hash: -> {
327
- format_: String,
345
+ format_: OpenAI::Models::Realtime::realtime_audio_formats,
328
346
  speed: Float,
329
347
  voice: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Audio::Output::voice
330
348
  }
@@ -379,6 +397,32 @@ module OpenAI
379
397
  def self?.variants: -> ::Array[OpenAI::Models::Realtime::RealtimeSessionCreateResponse::max_output_tokens]
380
398
  end
381
399
 
400
+ type model =
401
+ String
402
+ | :"gpt-realtime"
403
+ | :"gpt-realtime-2025-08-28"
404
+ | :"gpt-4o-realtime-preview"
405
+ | :"gpt-4o-realtime-preview-2024-10-01"
406
+ | :"gpt-4o-realtime-preview-2024-12-17"
407
+ | :"gpt-4o-realtime-preview-2025-06-03"
408
+ | :"gpt-4o-mini-realtime-preview"
409
+ | :"gpt-4o-mini-realtime-preview-2024-12-17"
410
+
411
+ module Model
412
+ extend OpenAI::Internal::Type::Union
413
+
414
+ def self?.variants: -> ::Array[OpenAI::Models::Realtime::RealtimeSessionCreateResponse::model]
415
+
416
+ GPT_REALTIME: :"gpt-realtime"
417
+ GPT_REALTIME_2025_08_28: :"gpt-realtime-2025-08-28"
418
+ GPT_4O_REALTIME_PREVIEW: :"gpt-4o-realtime-preview"
419
+ GPT_4O_REALTIME_PREVIEW_2024_10_01: :"gpt-4o-realtime-preview-2024-10-01"
420
+ GPT_4O_REALTIME_PREVIEW_2024_12_17: :"gpt-4o-realtime-preview-2024-12-17"
421
+ GPT_4O_REALTIME_PREVIEW_2025_06_03: :"gpt-4o-realtime-preview-2025-06-03"
422
+ GPT_4O_MINI_REALTIME_PREVIEW: :"gpt-4o-mini-realtime-preview"
423
+ GPT_4O_MINI_REALTIME_PREVIEW_2024_12_17: :"gpt-4o-mini-realtime-preview-2024-12-17"
424
+ end
425
+
382
426
  type output_modality = :text | :audio
383
427
 
384
428
  module OutputModality
@@ -390,56 +434,244 @@ module OpenAI
390
434
  def self?.values: -> ::Array[OpenAI::Models::Realtime::RealtimeSessionCreateResponse::output_modality]
391
435
  end
392
436
 
437
+ type tool_choice =
438
+ OpenAI::Models::Responses::tool_choice_options
439
+ | OpenAI::Responses::ToolChoiceFunction
440
+ | OpenAI::Responses::ToolChoiceMcp
441
+
442
+ module ToolChoice
443
+ extend OpenAI::Internal::Type::Union
444
+
445
+ def self?.variants: -> ::Array[OpenAI::Models::Realtime::RealtimeSessionCreateResponse::tool_choice]
446
+ end
447
+
393
448
  type tool =
394
- {
395
- description: String,
396
- name: String,
397
- parameters: top,
398
- type: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Tool::type_
399
- }
449
+ OpenAI::Realtime::Models
450
+ | OpenAI::Realtime::RealtimeSessionCreateResponse::Tool::McpTool
400
451
 
401
- class Tool < OpenAI::Internal::Type::BaseModel
402
- attr_reader description: String?
452
+ module Tool
453
+ extend OpenAI::Internal::Type::Union
403
454
 
404
- def description=: (String) -> String
455
+ type mcp_tool =
456
+ {
457
+ server_label: String,
458
+ type: :mcp,
459
+ allowed_tools: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Tool::McpTool::allowed_tools?,
460
+ authorization: String,
461
+ connector_id: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Tool::McpTool::connector_id,
462
+ headers: ::Hash[Symbol, String]?,
463
+ require_approval: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Tool::McpTool::require_approval?,
464
+ server_description: String,
465
+ server_url: String
466
+ }
405
467
 
406
- attr_reader name: String?
468
+ class McpTool < OpenAI::Internal::Type::BaseModel
469
+ attr_accessor server_label: String
407
470
 
408
- def name=: (String) -> String
471
+ attr_accessor type: :mcp
409
472
 
410
- attr_reader parameters: top?
473
+ attr_accessor allowed_tools: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Tool::McpTool::allowed_tools?
411
474
 
412
- def parameters=: (top) -> top
475
+ attr_reader authorization: String?
413
476
 
414
- attr_reader type: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Tool::type_?
477
+ def authorization=: (String) -> String
415
478
 
416
- def type=: (
417
- OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Tool::type_
418
- ) -> OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Tool::type_
479
+ attr_reader connector_id: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Tool::McpTool::connector_id?
419
480
 
420
- def initialize: (
421
- ?description: String,
422
- ?name: String,
423
- ?parameters: top,
424
- ?type: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Tool::type_
425
- ) -> void
481
+ def connector_id=: (
482
+ OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Tool::McpTool::connector_id
483
+ ) -> OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Tool::McpTool::connector_id
426
484
 
427
- def to_hash: -> {
428
- description: String,
429
- name: String,
430
- parameters: top,
431
- type: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Tool::type_
432
- }
485
+ attr_accessor headers: ::Hash[Symbol, String]?
486
+
487
+ attr_accessor require_approval: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Tool::McpTool::require_approval?
433
488
 
434
- type type_ = :function
489
+ attr_reader server_description: String?
435
490
 
436
- module Type
437
- extend OpenAI::Internal::Type::Enum
491
+ def server_description=: (String) -> String
438
492
 
439
- FUNCTION: :function
493
+ attr_reader server_url: String?
440
494
 
441
- def self?.values: -> ::Array[OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Tool::type_]
495
+ def server_url=: (String) -> String
496
+
497
+ def initialize: (
498
+ server_label: String,
499
+ ?allowed_tools: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Tool::McpTool::allowed_tools?,
500
+ ?authorization: String,
501
+ ?connector_id: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Tool::McpTool::connector_id,
502
+ ?headers: ::Hash[Symbol, String]?,
503
+ ?require_approval: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Tool::McpTool::require_approval?,
504
+ ?server_description: String,
505
+ ?server_url: String,
506
+ ?type: :mcp
507
+ ) -> void
508
+
509
+ def to_hash: -> {
510
+ server_label: String,
511
+ type: :mcp,
512
+ allowed_tools: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Tool::McpTool::allowed_tools?,
513
+ authorization: String,
514
+ connector_id: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Tool::McpTool::connector_id,
515
+ headers: ::Hash[Symbol, String]?,
516
+ require_approval: OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Tool::McpTool::require_approval?,
517
+ server_description: String,
518
+ server_url: String
519
+ }
520
+
521
+ type allowed_tools =
522
+ ::Array[String]
523
+ | OpenAI::Realtime::RealtimeSessionCreateResponse::Tool::McpTool::AllowedTools::McpToolFilter
524
+
525
+ module AllowedTools
526
+ extend OpenAI::Internal::Type::Union
527
+
528
+ type mcp_tool_filter =
529
+ { read_only: bool, tool_names: ::Array[String] }
530
+
531
+ class McpToolFilter < OpenAI::Internal::Type::BaseModel
532
+ attr_reader read_only: bool?
533
+
534
+ def read_only=: (bool) -> bool
535
+
536
+ attr_reader tool_names: ::Array[String]?
537
+
538
+ def tool_names=: (::Array[String]) -> ::Array[String]
539
+
540
+ def initialize: (
541
+ ?read_only: bool,
542
+ ?tool_names: ::Array[String]
543
+ ) -> void
544
+
545
+ def to_hash: -> { read_only: bool, tool_names: ::Array[String] }
546
+ end
547
+
548
+ def self?.variants: -> ::Array[OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Tool::McpTool::allowed_tools]
549
+
550
+ StringArray: OpenAI::Internal::Type::Converter
551
+ end
552
+
553
+ type connector_id =
554
+ :connector_dropbox
555
+ | :connector_gmail
556
+ | :connector_googlecalendar
557
+ | :connector_googledrive
558
+ | :connector_microsoftteams
559
+ | :connector_outlookcalendar
560
+ | :connector_outlookemail
561
+ | :connector_sharepoint
562
+
563
+ module ConnectorID
564
+ extend OpenAI::Internal::Type::Enum
565
+
566
+ CONNECTOR_DROPBOX: :connector_dropbox
567
+ CONNECTOR_GMAIL: :connector_gmail
568
+ CONNECTOR_GOOGLECALENDAR: :connector_googlecalendar
569
+ CONNECTOR_GOOGLEDRIVE: :connector_googledrive
570
+ CONNECTOR_MICROSOFTTEAMS: :connector_microsoftteams
571
+ CONNECTOR_OUTLOOKCALENDAR: :connector_outlookcalendar
572
+ CONNECTOR_OUTLOOKEMAIL: :connector_outlookemail
573
+ CONNECTOR_SHAREPOINT: :connector_sharepoint
574
+
575
+ def self?.values: -> ::Array[OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Tool::McpTool::connector_id]
576
+ end
577
+
578
+ type require_approval =
579
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Tool::McpTool::RequireApproval::McpToolApprovalFilter
580
+ | OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Tool::McpTool::RequireApproval::mcp_tool_approval_setting
581
+
582
+ module RequireApproval
583
+ extend OpenAI::Internal::Type::Union
584
+
585
+ type mcp_tool_approval_filter =
586
+ {
587
+ always: OpenAI::Realtime::RealtimeSessionCreateResponse::Tool::McpTool::RequireApproval::McpToolApprovalFilter::Always,
588
+ never: OpenAI::Realtime::RealtimeSessionCreateResponse::Tool::McpTool::RequireApproval::McpToolApprovalFilter::Never
589
+ }
590
+
591
+ class McpToolApprovalFilter < OpenAI::Internal::Type::BaseModel
592
+ attr_reader always: OpenAI::Realtime::RealtimeSessionCreateResponse::Tool::McpTool::RequireApproval::McpToolApprovalFilter::Always?
593
+
594
+ def always=: (
595
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Tool::McpTool::RequireApproval::McpToolApprovalFilter::Always
596
+ ) -> OpenAI::Realtime::RealtimeSessionCreateResponse::Tool::McpTool::RequireApproval::McpToolApprovalFilter::Always
597
+
598
+ attr_reader never: OpenAI::Realtime::RealtimeSessionCreateResponse::Tool::McpTool::RequireApproval::McpToolApprovalFilter::Never?
599
+
600
+ def never=: (
601
+ OpenAI::Realtime::RealtimeSessionCreateResponse::Tool::McpTool::RequireApproval::McpToolApprovalFilter::Never
602
+ ) -> OpenAI::Realtime::RealtimeSessionCreateResponse::Tool::McpTool::RequireApproval::McpToolApprovalFilter::Never
603
+
604
+ def initialize: (
605
+ ?always: OpenAI::Realtime::RealtimeSessionCreateResponse::Tool::McpTool::RequireApproval::McpToolApprovalFilter::Always,
606
+ ?never: OpenAI::Realtime::RealtimeSessionCreateResponse::Tool::McpTool::RequireApproval::McpToolApprovalFilter::Never
607
+ ) -> void
608
+
609
+ def to_hash: -> {
610
+ always: OpenAI::Realtime::RealtimeSessionCreateResponse::Tool::McpTool::RequireApproval::McpToolApprovalFilter::Always,
611
+ never: OpenAI::Realtime::RealtimeSessionCreateResponse::Tool::McpTool::RequireApproval::McpToolApprovalFilter::Never
612
+ }
613
+
614
+ type always = { read_only: bool, tool_names: ::Array[String] }
615
+
616
+ class Always < OpenAI::Internal::Type::BaseModel
617
+ attr_reader read_only: bool?
618
+
619
+ def read_only=: (bool) -> bool
620
+
621
+ attr_reader tool_names: ::Array[String]?
622
+
623
+ def tool_names=: (::Array[String]) -> ::Array[String]
624
+
625
+ def initialize: (
626
+ ?read_only: bool,
627
+ ?tool_names: ::Array[String]
628
+ ) -> void
629
+
630
+ def to_hash: -> {
631
+ read_only: bool,
632
+ tool_names: ::Array[String]
633
+ }
634
+ end
635
+
636
+ type never = { read_only: bool, tool_names: ::Array[String] }
637
+
638
+ class Never < OpenAI::Internal::Type::BaseModel
639
+ attr_reader read_only: bool?
640
+
641
+ def read_only=: (bool) -> bool
642
+
643
+ attr_reader tool_names: ::Array[String]?
644
+
645
+ def tool_names=: (::Array[String]) -> ::Array[String]
646
+
647
+ def initialize: (
648
+ ?read_only: bool,
649
+ ?tool_names: ::Array[String]
650
+ ) -> void
651
+
652
+ def to_hash: -> {
653
+ read_only: bool,
654
+ tool_names: ::Array[String]
655
+ }
656
+ end
657
+ end
658
+
659
+ type mcp_tool_approval_setting = :always | :never
660
+
661
+ module McpToolApprovalSetting
662
+ extend OpenAI::Internal::Type::Enum
663
+
664
+ ALWAYS: :always
665
+ NEVER: :never
666
+
667
+ def self?.values: -> ::Array[OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Tool::McpTool::RequireApproval::mcp_tool_approval_setting]
668
+ end
669
+
670
+ def self?.variants: -> ::Array[OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Tool::McpTool::require_approval]
671
+ end
442
672
  end
673
+
674
+ def self?.variants: -> ::Array[OpenAI::Models::Realtime::RealtimeSessionCreateResponse::tool]
443
675
  end
444
676
 
445
677
  type tracing =
@@ -481,44 +713,14 @@ module OpenAI
481
713
  def self?.variants: -> ::Array[OpenAI::Models::Realtime::RealtimeSessionCreateResponse::tracing]
482
714
  end
483
715
 
484
- type turn_detection =
485
- {
486
- prefix_padding_ms: Integer,
487
- silence_duration_ms: Integer,
488
- threshold: Float,
489
- type: String
490
- }
491
-
492
- class TurnDetection < OpenAI::Internal::Type::BaseModel
493
- attr_reader prefix_padding_ms: Integer?
494
-
495
- def prefix_padding_ms=: (Integer) -> Integer
496
-
497
- attr_reader silence_duration_ms: Integer?
498
-
499
- def silence_duration_ms=: (Integer) -> Integer
716
+ type type_ = :realtime
500
717
 
501
- attr_reader threshold: Float?
502
-
503
- def threshold=: (Float) -> Float
504
-
505
- attr_reader type: String?
506
-
507
- def type=: (String) -> String
718
+ module Type
719
+ extend OpenAI::Internal::Type::Enum
508
720
 
509
- def initialize: (
510
- ?prefix_padding_ms: Integer,
511
- ?silence_duration_ms: Integer,
512
- ?threshold: Float,
513
- ?type: String
514
- ) -> void
721
+ REALTIME: :realtime
515
722
 
516
- def to_hash: -> {
517
- prefix_padding_ms: Integer,
518
- silence_duration_ms: Integer,
519
- threshold: Float,
520
- type: String
521
- }
723
+ def self?.values: -> ::Array[OpenAI::Models::Realtime::RealtimeSessionCreateResponse::type_]
522
724
  end
523
725
  end
524
726
  end