openai 0.88.0 → 0.89.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 (239) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +12 -0
  3. data/README.md +1 -1
  4. data/lib/openai/client.rb +4 -0
  5. data/lib/openai/models/beta/beta_response_input_item.rb +91 -1
  6. data/lib/openai/models/beta/beta_response_item.rb +93 -1
  7. data/lib/openai/models/beta/beta_response_output_item.rb +91 -1
  8. data/lib/openai/models/conversations/conversation_item.rb +91 -1
  9. data/lib/openai/models/live/audio_format.rb +109 -0
  10. data/lib/openai/models/live/built_in_voice.rb +38 -0
  11. data/lib/openai/models/live/client_config.rb +22 -0
  12. data/lib/openai/models/live/client_delegation.rb +22 -0
  13. data/lib/openai/models/live/client_event.rb +54 -0
  14. data/lib/openai/models/live/commentary_append_event.rb +59 -0
  15. data/lib/openai/models/live/commentary_appended_event.rb +65 -0
  16. data/lib/openai/models/live/custom_voice.rb +17 -0
  17. data/lib/openai/models/live/data_channel_config.rb +81 -0
  18. data/lib/openai/models/live/delegation_created_event.rb +140 -0
  19. data/lib/openai/models/live/error.rb +60 -0
  20. data/lib/openai/models/live/error_event.rb +52 -0
  21. data/lib/openai/models/live/fork_client_event.rb +53 -0
  22. data/lib/openai/models/live/fork_server_event.rb +295 -0
  23. data/lib/openai/models/live/fork_session_config.rb +107 -0
  24. data/lib/openai/models/live/fork_session_start_event.rb +48 -0
  25. data/lib/openai/models/live/function_tool.rb +60 -0
  26. data/lib/openai/models/live/info_event.rb +60 -0
  27. data/lib/openai/models/live/initial_item.rb +419 -0
  28. data/lib/openai/models/live/input_audio_append_event.rb +50 -0
  29. data/lib/openai/models/live/input_audio_mute_event.rb +33 -0
  30. data/lib/openai/models/live/input_audio_muted_event.rb +42 -0
  31. data/lib/openai/models/live/input_audio_unmute_event.rb +33 -0
  32. data/lib/openai/models/live/input_audio_unmuted_event.rb +42 -0
  33. data/lib/openai/models/live/input_transcript_delta_event.rb +76 -0
  34. data/lib/openai/models/live/instructions_append_event.rb +57 -0
  35. data/lib/openai/models/live/instructions_appended_event.rb +65 -0
  36. data/lib/openai/models/live/live_create_params.rb +57 -0
  37. data/lib/openai/models/live/live_create_response.rb +77 -0
  38. data/lib/openai/models/live/media_session_config.rb +227 -0
  39. data/lib/openai/models/live/media_session_fork_config.rb +75 -0
  40. data/lib/openai/models/live/output_audio_delta_event.rb +58 -0
  41. data/lib/openai/models/live/output_transcript_delta_event.rb +76 -0
  42. data/lib/openai/models/live/response_create_event.rb +33 -0
  43. data/lib/openai/models/live/response_event.rb +67 -0
  44. data/lib/openai/models/live/response_item_create_event.rb +44 -0
  45. data/lib/openai/models/live/responses_delegation_config.rb +332 -0
  46. data/lib/openai/models/live/responses_delegation_update_config.rb +332 -0
  47. data/lib/openai/models/live/server_event.rb +295 -0
  48. data/lib/openai/models/live/server_event_selector.rb +32 -0
  49. data/lib/openai/models/live/session_accept_params.rb +257 -0
  50. data/lib/openai/models/live/session_close_event.rb +33 -0
  51. data/lib/openai/models/live/session_closed_event.rb +113 -0
  52. data/lib/openai/models/live/session_config.rb +236 -0
  53. data/lib/openai/models/live/session_download_recording_params.rb +27 -0
  54. data/lib/openai/models/live/session_fork_params.rb +66 -0
  55. data/lib/openai/models/live/session_fork_response.rb +77 -0
  56. data/lib/openai/models/live/session_hangup_params.rb +22 -0
  57. data/lib/openai/models/live/session_refer_params.rb +34 -0
  58. data/lib/openai/models/live/session_reject_params.rb +32 -0
  59. data/lib/openai/models/live/session_resource.rb +268 -0
  60. data/lib/openai/models/live/session_start_event.rb +46 -0
  61. data/lib/openai/models/live/session_started_event.rb +51 -0
  62. data/lib/openai/models/live/session_update_config.rb +69 -0
  63. data/lib/openai/models/live/session_update_event.rb +46 -0
  64. data/lib/openai/models/live/session_updated_event.rb +51 -0
  65. data/lib/openai/models/live/session_usage.rb +24 -0
  66. data/lib/openai/models/live/session_usage_updated_event.rb +81 -0
  67. data/lib/openai/models/live/thinking_append_event.rb +59 -0
  68. data/lib/openai/models/live/thinking_appended_event.rb +65 -0
  69. data/lib/openai/models/responses/response_input_item.rb +91 -1
  70. data/lib/openai/models/responses/response_item.rb +93 -1
  71. data/lib/openai/models/responses/response_output_item.rb +91 -1
  72. data/lib/openai/models/webhooks/live_call_incoming_webhook_event.rb +12 -7
  73. data/lib/openai/models/webhooks/live_transport_incoming_webhook_event.rb +137 -0
  74. data/lib/openai/models/webhooks/realtime_call_incoming_webhook_event.rb +4 -4
  75. data/lib/openai/models/webhooks/unwrap_webhook_event.rb +9 -2
  76. data/lib/openai/models.rb +2 -0
  77. data/lib/openai/resources/live/forks.rb +16 -0
  78. data/lib/openai/resources/live/sessions.rb +180 -0
  79. data/lib/openai/resources/live/sideband.rb +16 -0
  80. data/lib/openai/resources/live.rb +54 -0
  81. data/lib/openai/resources/webhooks.rb +1 -1
  82. data/lib/openai/version.rb +1 -1
  83. data/lib/openai.rb +65 -0
  84. data/rbi/openai/client.rbi +3 -0
  85. data/rbi/openai/models/beta/beta_response_input_item.rbi +109 -0
  86. data/rbi/openai/models/beta/beta_response_item.rbi +105 -0
  87. data/rbi/openai/models/beta/beta_response_output_item.rbi +119 -0
  88. data/rbi/openai/models/conversations/conversation_item.rbi +133 -0
  89. data/rbi/openai/models/live/audio_format.rbi +185 -0
  90. data/rbi/openai/models/live/built_in_voice.rbi +46 -0
  91. data/rbi/openai/models/live/client_config.rbi +54 -0
  92. data/rbi/openai/models/live/client_delegation.rbi +51 -0
  93. data/rbi/openai/models/live/client_event.rbi +41 -0
  94. data/rbi/openai/models/live/commentary_append_event.rbi +88 -0
  95. data/rbi/openai/models/live/commentary_appended_event.rbi +97 -0
  96. data/rbi/openai/models/live/custom_voice.rbi +46 -0
  97. data/rbi/openai/models/live/data_channel_config.rbi +119 -0
  98. data/rbi/openai/models/live/delegation_created_event.rbi +207 -0
  99. data/rbi/openai/models/live/error.rbi +95 -0
  100. data/rbi/openai/models/live/error_event.rbi +87 -0
  101. data/rbi/openai/models/live/fork_client_event.rbi +40 -0
  102. data/rbi/openai/models/live/fork_server_event.rbi +436 -0
  103. data/rbi/openai/models/live/fork_session_config.rbi +234 -0
  104. data/rbi/openai/models/live/fork_session_start_event.rbi +80 -0
  105. data/rbi/openai/models/live/function_tool.rbi +95 -0
  106. data/rbi/openai/models/live/info_event.rbi +92 -0
  107. data/rbi/openai/models/live/initial_item.rbi +661 -0
  108. data/rbi/openai/models/live/input_audio_append_event.rbi +79 -0
  109. data/rbi/openai/models/live/input_audio_mute_event.rbi +62 -0
  110. data/rbi/openai/models/live/input_audio_muted_event.rbi +74 -0
  111. data/rbi/openai/models/live/input_audio_unmute_event.rbi +62 -0
  112. data/rbi/openai/models/live/input_audio_unmuted_event.rbi +74 -0
  113. data/rbi/openai/models/live/input_transcript_delta_event.rbi +115 -0
  114. data/rbi/openai/models/live/instructions_append_event.rbi +86 -0
  115. data/rbi/openai/models/live/instructions_appended_event.rbi +97 -0
  116. data/rbi/openai/models/live/live_create_params.rbi +121 -0
  117. data/rbi/openai/models/live/live_create_response.rbi +160 -0
  118. data/rbi/openai/models/live/media_session_config.rbi +390 -0
  119. data/rbi/openai/models/live/media_session_fork_config.rbi +143 -0
  120. data/rbi/openai/models/live/output_audio_delta_event.rbi +93 -0
  121. data/rbi/openai/models/live/output_transcript_delta_event.rbi +115 -0
  122. data/rbi/openai/models/live/response_create_event.rbi +62 -0
  123. data/rbi/openai/models/live/response_event.rbi +105 -0
  124. data/rbi/openai/models/live/response_item_create_event.rbi +183 -0
  125. data/rbi/openai/models/live/responses_delegation_config.rbi +562 -0
  126. data/rbi/openai/models/live/responses_delegation_update_config.rbi +585 -0
  127. data/rbi/openai/models/live/server_event.rbi +436 -0
  128. data/rbi/openai/models/live/server_event_selector.rbi +64 -0
  129. data/rbi/openai/models/live/session_accept_params.rbi +451 -0
  130. data/rbi/openai/models/live/session_close_event.rbi +62 -0
  131. data/rbi/openai/models/live/session_closed_event.rbi +148 -0
  132. data/rbi/openai/models/live/session_config.rbi +427 -0
  133. data/rbi/openai/models/live/session_download_recording_params.rbi +57 -0
  134. data/rbi/openai/models/live/session_fork_params.rbi +131 -0
  135. data/rbi/openai/models/live/session_fork_response.rbi +160 -0
  136. data/rbi/openai/models/live/session_hangup_params.rbi +53 -0
  137. data/rbi/openai/models/live/session_refer_params.rbi +64 -0
  138. data/rbi/openai/models/live/session_reject_params.rbi +62 -0
  139. data/rbi/openai/models/live/session_resource.rbi +461 -0
  140. data/rbi/openai/models/live/session_start_event.rbi +78 -0
  141. data/rbi/openai/models/live/session_started_event.rbi +86 -0
  142. data/rbi/openai/models/live/session_update_config.rbi +134 -0
  143. data/rbi/openai/models/live/session_update_event.rbi +78 -0
  144. data/rbi/openai/models/live/session_updated_event.rbi +86 -0
  145. data/rbi/openai/models/live/session_usage.rbi +53 -0
  146. data/rbi/openai/models/live/session_usage_updated_event.rbi +148 -0
  147. data/rbi/openai/models/live/thinking_append_event.rbi +88 -0
  148. data/rbi/openai/models/live/thinking_appended_event.rbi +97 -0
  149. data/rbi/openai/models/responses/response_input_item.rbi +113 -0
  150. data/rbi/openai/models/responses/response_item.rbi +105 -0
  151. data/rbi/openai/models/responses/response_output_item.rbi +125 -0
  152. data/rbi/openai/models/webhooks/live_call_incoming_webhook_event.rbi +11 -7
  153. data/rbi/openai/models/webhooks/live_transport_incoming_webhook_event.rbi +226 -0
  154. data/rbi/openai/models/webhooks/realtime_call_incoming_webhook_event.rbi +4 -4
  155. data/rbi/openai/models/webhooks/unwrap_webhook_event.rbi +1 -0
  156. data/rbi/openai/models.rbi +2 -0
  157. data/rbi/openai/resources/live/forks.rbi +19 -0
  158. data/rbi/openai/resources/live/sessions.rbi +110 -0
  159. data/rbi/openai/resources/live/sideband.rbi +19 -0
  160. data/rbi/openai/resources/live.rbi +43 -0
  161. data/rbi/openai/resources/responses.rbi +75 -38
  162. data/rbi/openai/resources/webhooks.rbi +1 -0
  163. data/sig/openai/client.rbs +2 -0
  164. data/sig/openai/models/beta/beta_response_input_item.rbs +56 -0
  165. data/sig/openai/models/beta/beta_response_item.rbs +56 -0
  166. data/sig/openai/models/beta/beta_response_output_item.rbs +56 -0
  167. data/sig/openai/models/conversations/conversation_item.rbs +56 -0
  168. data/sig/openai/models/live/audio_format.rbs +73 -0
  169. data/sig/openai/models/live/built_in_voice.rbs +58 -0
  170. data/sig/openai/models/live/client_config.rbs +15 -0
  171. data/sig/openai/models/live/client_delegation.rbs +15 -0
  172. data/sig/openai/models/live/client_event.rbs +24 -0
  173. data/sig/openai/models/live/commentary_append_event.rbs +37 -0
  174. data/sig/openai/models/live/commentary_appended_event.rbs +44 -0
  175. data/sig/openai/models/live/custom_voice.rbs +15 -0
  176. data/sig/openai/models/live/data_channel_config.rbs +56 -0
  177. data/sig/openai/models/live/delegation_created_event.rbs +89 -0
  178. data/sig/openai/models/live/error.rbs +46 -0
  179. data/sig/openai/models/live/error_event.rbs +39 -0
  180. data/sig/openai/models/live/fork_client_event.rbs +24 -0
  181. data/sig/openai/models/live/fork_server_event.rbs +212 -0
  182. data/sig/openai/models/live/fork_session_config.rbs +89 -0
  183. data/sig/openai/models/live/fork_session_start_event.rbs +32 -0
  184. data/sig/openai/models/live/function_tool.rbs +42 -0
  185. data/sig/openai/models/live/info_event.rbs +44 -0
  186. data/sig/openai/models/live/initial_item.rbs +332 -0
  187. data/sig/openai/models/live/input_audio_append_event.rbs +32 -0
  188. data/sig/openai/models/live/input_audio_mute_event.rbs +24 -0
  189. data/sig/openai/models/live/input_audio_muted_event.rbs +34 -0
  190. data/sig/openai/models/live/input_audio_unmute_event.rbs +24 -0
  191. data/sig/openai/models/live/input_audio_unmuted_event.rbs +34 -0
  192. data/sig/openai/models/live/input_transcript_delta_event.rbs +49 -0
  193. data/sig/openai/models/live/instructions_append_event.rbs +37 -0
  194. data/sig/openai/models/live/instructions_appended_event.rbs +44 -0
  195. data/sig/openai/models/live/live_create_params.rbs +45 -0
  196. data/sig/openai/models/live/live_create_response.rbs +49 -0
  197. data/sig/openai/models/live/media_session_config.rbs +157 -0
  198. data/sig/openai/models/live/media_session_fork_config.rbs +66 -0
  199. data/sig/openai/models/live/output_audio_delta_event.rbs +41 -0
  200. data/sig/openai/models/live/output_transcript_delta_event.rbs +49 -0
  201. data/sig/openai/models/live/response_create_event.rbs +18 -0
  202. data/sig/openai/models/live/response_event.rbs +44 -0
  203. data/sig/openai/models/live/response_item_create_event.rbs +32 -0
  204. data/sig/openai/models/live/responses_delegation_config.rbs +244 -0
  205. data/sig/openai/models/live/responses_delegation_update_config.rbs +246 -0
  206. data/sig/openai/models/live/server_event.rbs +212 -0
  207. data/sig/openai/models/live/server_event_selector.rbs +19 -0
  208. data/sig/openai/models/live/session_accept_params.rbs +185 -0
  209. data/sig/openai/models/live/session_close_event.rbs +17 -0
  210. data/sig/openai/models/live/session_closed_event.rbs +68 -0
  211. data/sig/openai/models/live/session_config.rbs +168 -0
  212. data/sig/openai/models/live/session_download_recording_params.rbs +25 -0
  213. data/sig/openai/models/live/session_fork_params.rbs +54 -0
  214. data/sig/openai/models/live/session_fork_response.rbs +49 -0
  215. data/sig/openai/models/live/session_hangup_params.rbs +25 -0
  216. data/sig/openai/models/live/session_refer_params.rbs +33 -0
  217. data/sig/openai/models/live/session_reject_params.rbs +33 -0
  218. data/sig/openai/models/live/session_resource.rbs +183 -0
  219. data/sig/openai/models/live/session_start_event.rbs +32 -0
  220. data/sig/openai/models/live/session_started_event.rbs +39 -0
  221. data/sig/openai/models/live/session_update_config.rbs +56 -0
  222. data/sig/openai/models/live/session_update_event.rbs +32 -0
  223. data/sig/openai/models/live/session_updated_event.rbs +39 -0
  224. data/sig/openai/models/live/session_usage.rbs +15 -0
  225. data/sig/openai/models/live/session_usage_updated_event.rbs +58 -0
  226. data/sig/openai/models/live/thinking_append_event.rbs +37 -0
  227. data/sig/openai/models/live/thinking_appended_event.rbs +44 -0
  228. data/sig/openai/models/responses/response_input_item.rbs +56 -0
  229. data/sig/openai/models/responses/response_item.rbs +56 -0
  230. data/sig/openai/models/responses/response_output_item.rbs +56 -0
  231. data/sig/openai/models/webhooks/live_transport_incoming_webhook_event.rbs +95 -0
  232. data/sig/openai/models/webhooks/unwrap_webhook_event.rbs +1 -0
  233. data/sig/openai/models.rbs +2 -0
  234. data/sig/openai/resources/live/forks.rbs +9 -0
  235. data/sig/openai/resources/live/sessions.rbs +44 -0
  236. data/sig/openai/resources/live/sideband.rbs +9 -0
  237. data/sig/openai/resources/live.rbs +19 -0
  238. data/sig/openai/resources/webhooks.rbs +1 -0
  239. metadata +196 -1
@@ -71,6 +71,24 @@ module OpenAI
71
71
  sig { returns(Symbol) }
72
72
  attr_accessor :type
73
73
 
74
+ # The action used for image generation.
75
+ sig {
76
+ returns(T.nilable(OpenAI::Conversations::ConversationItem::ImageGenerationCall::Action::TaggedSymbol))
77
+ }
78
+ attr_accessor :action
79
+
80
+ # The background setting used for generation.
81
+ sig {
82
+ returns(T.nilable(OpenAI::Conversations::ConversationItem::ImageGenerationCall::Background::TaggedSymbol))
83
+ }
84
+ attr_accessor :background
85
+
86
+ # The output format used for generation.
87
+ sig {
88
+ returns(T.nilable(OpenAI::Conversations::ConversationItem::ImageGenerationCall::OutputFormat::TaggedSymbol))
89
+ }
90
+ attr_accessor :output_format
91
+
74
92
  # The quality of the image generated by the image generation tool call. One of
75
93
  # `low`, `medium`, `high`, `xhigh`, `max`, or `auto`.
76
94
  sig {
@@ -78,6 +96,10 @@ module OpenAI
78
96
  }
79
97
  attr_accessor :quality
80
98
 
99
+ # The prompt that was used after any model prompt rewriting.
100
+ sig { returns(T.nilable(String)) }
101
+ attr_accessor :revised_prompt
102
+
81
103
  # The image dimensions as a `WIDTHxHEIGHT` string, for example `1536x864`.
82
104
  sig { returns(T.nilable(OpenAI::Conversations::ConversationItem::ImageGenerationCall::Size::Variants)) }
83
105
  attr_accessor :size
@@ -92,8 +114,18 @@ module OpenAI
92
114
 
93
115
  status: OpenAI::Conversations::ConversationItem::ImageGenerationCall::Status::OrSymbol,
94
116
 
117
+ action: T.nilable(OpenAI::Conversations::ConversationItem::ImageGenerationCall::Action::OrSymbol),
118
+
119
+ background: T.nilable(OpenAI::Conversations::ConversationItem::ImageGenerationCall::Background::OrSymbol),
120
+
121
+ output_format: T.nilable(
122
+ OpenAI::Conversations::ConversationItem::ImageGenerationCall::OutputFormat::OrSymbol
123
+ ),
124
+
95
125
  quality: T.nilable(OpenAI::Conversations::ConversationItem::ImageGenerationCall::Quality::OrSymbol),
96
126
 
127
+ revised_prompt: T.nilable(String),
128
+
97
129
  size: T.nilable(
98
130
  T.any(String, OpenAI::Conversations::ConversationItem::ImageGenerationCall::Size::OrSymbol)
99
131
  ),
@@ -113,10 +145,22 @@ module OpenAI
113
145
  # The status of the image generation call.
114
146
  status:,
115
147
 
148
+ # The action used for image generation.
149
+ action: nil,
150
+
151
+ # The background setting used for generation.
152
+ background: nil,
153
+
154
+ # The output format used for generation.
155
+ output_format: nil,
156
+
116
157
  # The quality of the image generated by the image generation tool call. One of
117
158
  # `low`, `medium`, `high`, `xhigh`, `max`, or `auto`.
118
159
  quality: nil,
119
160
 
161
+ # The prompt that was used after any model prompt rewriting.
162
+ revised_prompt: nil,
163
+
120
164
  # The image dimensions as a `WIDTHxHEIGHT` string, for example `1536x864`.
121
165
  size: nil,
122
166
 
@@ -133,7 +177,15 @@ module OpenAI
133
177
  result: T.nilable(String),
134
178
  status: OpenAI::Conversations::ConversationItem::ImageGenerationCall::Status::TaggedSymbol,
135
179
  type: Symbol,
180
+ action: T.nilable(OpenAI::Conversations::ConversationItem::ImageGenerationCall::Action::TaggedSymbol),
181
+ background: T.nilable(
182
+ OpenAI::Conversations::ConversationItem::ImageGenerationCall::Background::TaggedSymbol
183
+ ),
184
+ output_format: T.nilable(
185
+ OpenAI::Conversations::ConversationItem::ImageGenerationCall::OutputFormat::TaggedSymbol
186
+ ),
136
187
  quality: T.nilable(OpenAI::Conversations::ConversationItem::ImageGenerationCall::Quality::TaggedSymbol),
188
+ revised_prompt: T.nilable(String),
137
189
  size: T.nilable(OpenAI::Conversations::ConversationItem::ImageGenerationCall::Size::Variants)
138
190
  }
139
191
  )
@@ -173,6 +225,87 @@ module OpenAI
173
225
  end
174
226
  end
175
227
 
228
+ # The action used for image generation.
229
+ module Action
230
+ extend OpenAI::Internal::Type::Enum
231
+
232
+ TaggedSymbol = T.type_alias {
233
+ T.all(Symbol, OpenAI::Conversations::ConversationItem::ImageGenerationCall::Action)
234
+ }
235
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
236
+
237
+ GENERATE = T.let(
238
+ :generate,
239
+ OpenAI::Conversations::ConversationItem::ImageGenerationCall::Action::TaggedSymbol
240
+ )
241
+ EDIT = T.let(:edit, OpenAI::Conversations::ConversationItem::ImageGenerationCall::Action::TaggedSymbol)
242
+ AUTO = T.let(:auto, OpenAI::Conversations::ConversationItem::ImageGenerationCall::Action::TaggedSymbol)
243
+
244
+ sig {
245
+ override.returns(
246
+ T::Array[OpenAI::Conversations::ConversationItem::ImageGenerationCall::Action::TaggedSymbol]
247
+ )
248
+ }
249
+ def self.values
250
+ end
251
+ end
252
+
253
+ # The background setting used for generation.
254
+ module Background
255
+ extend OpenAI::Internal::Type::Enum
256
+
257
+ TaggedSymbol = T.type_alias {
258
+ T.all(Symbol, OpenAI::Conversations::ConversationItem::ImageGenerationCall::Background)
259
+ }
260
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
261
+
262
+ TRANSPARENT = T.let(
263
+ :transparent,
264
+ OpenAI::Conversations::ConversationItem::ImageGenerationCall::Background::TaggedSymbol
265
+ )
266
+ OPAQUE = T.let(
267
+ :opaque,
268
+ OpenAI::Conversations::ConversationItem::ImageGenerationCall::Background::TaggedSymbol
269
+ )
270
+ AUTO = T.let(:auto, OpenAI::Conversations::ConversationItem::ImageGenerationCall::Background::TaggedSymbol)
271
+
272
+ sig {
273
+ override.returns(
274
+ T::Array[OpenAI::Conversations::ConversationItem::ImageGenerationCall::Background::TaggedSymbol]
275
+ )
276
+ }
277
+ def self.values
278
+ end
279
+ end
280
+
281
+ # The output format used for generation.
282
+ module OutputFormat
283
+ extend OpenAI::Internal::Type::Enum
284
+
285
+ TaggedSymbol = T.type_alias {
286
+ T.all(Symbol, OpenAI::Conversations::ConversationItem::ImageGenerationCall::OutputFormat)
287
+ }
288
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
289
+
290
+ PNG = T.let(:png, OpenAI::Conversations::ConversationItem::ImageGenerationCall::OutputFormat::TaggedSymbol)
291
+ WEBP = T.let(
292
+ :webp,
293
+ OpenAI::Conversations::ConversationItem::ImageGenerationCall::OutputFormat::TaggedSymbol
294
+ )
295
+ JPEG = T.let(
296
+ :jpeg,
297
+ OpenAI::Conversations::ConversationItem::ImageGenerationCall::OutputFormat::TaggedSymbol
298
+ )
299
+
300
+ sig {
301
+ override.returns(
302
+ T::Array[OpenAI::Conversations::ConversationItem::ImageGenerationCall::OutputFormat::TaggedSymbol]
303
+ )
304
+ }
305
+ def self.values
306
+ end
307
+ end
308
+
176
309
  # The quality of the image generated by the image generation tool call. One of
177
310
  # `low`, `medium`, `high`, `xhigh`, `max`, or `auto`.
178
311
  module Quality
@@ -0,0 +1,185 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ module Live
7
+
8
+ # Audio encoding and sample rate for audio sent and received over a Live WebSocket
9
+ # connection. WebRTC and SIP negotiate their media format separately.
10
+ module AudioFormat
11
+ extend OpenAI::Internal::Type::Union
12
+
13
+ Variants = T.type_alias do
14
+ T.any(
15
+ OpenAI::Live::AudioFormat::AudioPCM,
16
+ OpenAI::Live::AudioFormat::AudioPCMU,
17
+ OpenAI::Live::AudioFormat::AudioPCMA
18
+ )
19
+ end
20
+
21
+ class AudioPCM < OpenAI::Internal::Type::BaseModel
22
+ OrHash = T.type_alias do
23
+ T.any(
24
+ OpenAI::Live::AudioFormat::AudioPCM,
25
+ OpenAI::Internal::AnyHash
26
+ )
27
+ end
28
+
29
+ # Audio sample rate in hertz. Live WebSocket PCM audio supports 16000 or 24000 Hz.
30
+ sig { returns(OpenAI::Live::AudioFormat::AudioPCM::Rate::OrInteger) }
31
+ attr_accessor :rate
32
+
33
+ # The audio encoding. Always `audio/pcm`.
34
+ sig { returns(Symbol) }
35
+ attr_accessor :type
36
+
37
+ # Raw, mono 16-bit little-endian PCM audio for a Live WebSocket connection.
38
+ sig do
39
+ params(
40
+
41
+ rate: OpenAI::Live::AudioFormat::AudioPCM::Rate::OrInteger,
42
+
43
+ type: Symbol
44
+ )
45
+ .returns(T.attached_class)
46
+ end
47
+ def self.new(
48
+
49
+ # Audio sample rate in hertz. Live WebSocket PCM audio supports 16000 or 24000 Hz.
50
+ rate:,
51
+
52
+ # The audio encoding. Always `audio/pcm`.
53
+
54
+ type: :"audio/pcm"
55
+ )
56
+ end
57
+
58
+ sig do
59
+ override.returns(
60
+ {rate: OpenAI::Live::AudioFormat::AudioPCM::Rate::OrInteger, type: Symbol}
61
+ )
62
+ end
63
+ def to_hash
64
+ end
65
+
66
+ # Audio sample rate in hertz. Live WebSocket PCM audio supports 16000 or 24000 Hz.
67
+ module Rate
68
+ extend OpenAI::Internal::Type::Enum
69
+
70
+ TaggedInteger = T.type_alias { T.all(Integer, OpenAI::Live::AudioFormat::AudioPCM::Rate) }
71
+ OrInteger = T.type_alias { Integer }
72
+
73
+ RATE_16000 = T.let(16_000, OpenAI::Live::AudioFormat::AudioPCM::Rate::TaggedInteger)
74
+ RATE_24000 = T.let(24_000, OpenAI::Live::AudioFormat::AudioPCM::Rate::TaggedInteger)
75
+
76
+ sig { override.returns(T::Array[OpenAI::Live::AudioFormat::AudioPCM::Rate::TaggedInteger]) }
77
+ def self.values
78
+ end
79
+ end
80
+ end
81
+
82
+ class AudioPCMU < OpenAI::Internal::Type::BaseModel
83
+ OrHash = T.type_alias do
84
+ T.any(
85
+ OpenAI::Live::AudioFormat::AudioPCMU,
86
+ OpenAI::Internal::AnyHash
87
+ )
88
+ end
89
+
90
+ # Audio sample rate in hertz. G.711 audio uses 8000 Hz.
91
+ sig { returns(Integer) }
92
+ attr_accessor :rate
93
+
94
+ # The audio encoding. Always `audio/pcmu`.
95
+ sig { returns(Symbol) }
96
+ attr_accessor :type
97
+
98
+ # Raw, mono G.711 μ-law audio for a Live WebSocket connection.
99
+ sig do
100
+ params(
101
+
102
+ rate: Integer,
103
+
104
+ type: Symbol
105
+ )
106
+ .returns(T.attached_class)
107
+ end
108
+ def self.new(
109
+
110
+ # Audio sample rate in hertz. G.711 audio uses 8000 Hz.
111
+ rate:,
112
+
113
+ # The audio encoding. Always `audio/pcmu`.
114
+
115
+ type: :"audio/pcmu"
116
+ )
117
+ end
118
+
119
+ sig do
120
+ override.returns(
121
+ {rate: Integer, type: Symbol}
122
+ )
123
+ end
124
+ def to_hash
125
+ end
126
+
127
+ end
128
+
129
+ class AudioPCMA < OpenAI::Internal::Type::BaseModel
130
+ OrHash = T.type_alias do
131
+ T.any(
132
+ OpenAI::Live::AudioFormat::AudioPCMA,
133
+ OpenAI::Internal::AnyHash
134
+ )
135
+ end
136
+
137
+ # Audio sample rate in hertz. G.711 audio uses 8000 Hz.
138
+ sig { returns(Integer) }
139
+ attr_accessor :rate
140
+
141
+ # The audio encoding. Always `audio/pcma`.
142
+ sig { returns(Symbol) }
143
+ attr_accessor :type
144
+
145
+ # Raw, mono G.711 A-law audio for a Live WebSocket connection.
146
+ sig do
147
+ params(
148
+
149
+ rate: Integer,
150
+
151
+ type: Symbol
152
+ )
153
+ .returns(T.attached_class)
154
+ end
155
+ def self.new(
156
+
157
+ # Audio sample rate in hertz. G.711 audio uses 8000 Hz.
158
+ rate:,
159
+
160
+ # The audio encoding. Always `audio/pcma`.
161
+
162
+ type: :"audio/pcma"
163
+ )
164
+ end
165
+
166
+ sig do
167
+ override.returns(
168
+ {rate: Integer, type: Symbol}
169
+ )
170
+ end
171
+ def to_hash
172
+ end
173
+
174
+ end
175
+
176
+ sig { override.returns(T::Array[OpenAI::Live::AudioFormat::Variants]) }
177
+ def self.variants
178
+ end
179
+
180
+ end
181
+
182
+ end
183
+
184
+ end
185
+ end
@@ -0,0 +1,46 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ module Live
7
+
8
+ # A built-in voice available for Live speech.
9
+ module BuiltInVoice
10
+ extend OpenAI::Internal::Type::Enum
11
+
12
+ TaggedSymbol = T.type_alias { T.all(Symbol, OpenAI::Live::BuiltInVoice) }
13
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
14
+
15
+ ALLOY = T.let(:alloy, OpenAI::Live::BuiltInVoice::TaggedSymbol)
16
+ ASH = T.let(:ash, OpenAI::Live::BuiltInVoice::TaggedSymbol)
17
+ BALLAD = T.let(:ballad, OpenAI::Live::BuiltInVoice::TaggedSymbol)
18
+ BEACON = T.let(:beacon, OpenAI::Live::BuiltInVoice::TaggedSymbol)
19
+ BOSSA = T.let(:bossa, OpenAI::Live::BuiltInVoice::TaggedSymbol)
20
+ CEDAR = T.let(:cedar, OpenAI::Live::BuiltInVoice::TaggedSymbol)
21
+ CINDER = T.let(:cinder, OpenAI::Live::BuiltInVoice::TaggedSymbol)
22
+ CORAL = T.let(:coral, OpenAI::Live::BuiltInVoice::TaggedSymbol)
23
+ DELTA = T.let(:delta, OpenAI::Live::BuiltInVoice::TaggedSymbol)
24
+ ECHO = T.let(:echo, OpenAI::Live::BuiltInVoice::TaggedSymbol)
25
+ GLEAM = T.let(:gleam, OpenAI::Live::BuiltInVoice::TaggedSymbol)
26
+ MARIN = T.let(:marin, OpenAI::Live::BuiltInVoice::TaggedSymbol)
27
+ MERIDIAN = T.let(:meridian, OpenAI::Live::BuiltInVoice::TaggedSymbol)
28
+ QUARTZ = T.let(:quartz, OpenAI::Live::BuiltInVoice::TaggedSymbol)
29
+ RIPPLE = T.let(:ripple, OpenAI::Live::BuiltInVoice::TaggedSymbol)
30
+ SAGE = T.let(:sage, OpenAI::Live::BuiltInVoice::TaggedSymbol)
31
+ SHIMMER = T.let(:shimmer, OpenAI::Live::BuiltInVoice::TaggedSymbol)
32
+ STONE = T.let(:stone, OpenAI::Live::BuiltInVoice::TaggedSymbol)
33
+ TEMPO = T.let(:tempo, OpenAI::Live::BuiltInVoice::TaggedSymbol)
34
+ VERSE = T.let(:verse, OpenAI::Live::BuiltInVoice::TaggedSymbol)
35
+ VESPER = T.let(:vesper, OpenAI::Live::BuiltInVoice::TaggedSymbol)
36
+ WILLOW = T.let(:willow, OpenAI::Live::BuiltInVoice::TaggedSymbol)
37
+
38
+ sig { override.returns(T::Array[OpenAI::Live::BuiltInVoice::TaggedSymbol]) }
39
+ def self.values
40
+ end
41
+ end
42
+
43
+ end
44
+
45
+ end
46
+ end
@@ -0,0 +1,54 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ module Live
7
+
8
+ class ClientConfig < OpenAI::Internal::Type::BaseModel
9
+
10
+ OrHash = T.type_alias do
11
+ T.any(
12
+ OpenAI::Live::ClientConfig,
13
+ OpenAI::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ # Client and server event permissions for the WebRTC frontend data channel.
18
+ sig { returns(OpenAI::Live::DataChannelConfig) }
19
+ attr_reader :data_channel
20
+
21
+ sig { params(data_channel: OpenAI::Live::DataChannelConfig::OrHash).void }
22
+ attr_writer :data_channel
23
+
24
+ # Startup-only capabilities for an untrusted frontend attached to a unified WebRTC
25
+ # session. Trusted sideband connections are unaffected.
26
+ sig do
27
+ params(
28
+
29
+ data_channel: OpenAI::Live::DataChannelConfig::OrHash
30
+ )
31
+ .returns(T.attached_class)
32
+ end
33
+ def self.new(
34
+
35
+ # Client and server event permissions for the WebRTC frontend data channel.
36
+
37
+ data_channel:
38
+ )
39
+ end
40
+
41
+ sig do
42
+ override.returns(
43
+ {data_channel: OpenAI::Live::DataChannelConfig}
44
+ )
45
+ end
46
+ def to_hash
47
+ end
48
+
49
+ end
50
+
51
+ end
52
+
53
+ end
54
+ end
@@ -0,0 +1,51 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ module Live
7
+
8
+ class ClientDelegation < OpenAI::Internal::Type::BaseModel
9
+
10
+ OrHash = T.type_alias do
11
+ T.any(
12
+ OpenAI::Live::ClientDelegation,
13
+ OpenAI::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ # The delegation owner. Always `client` for tasks handled by your application.
18
+ sig { returns(Symbol) }
19
+ attr_accessor :type
20
+
21
+ # Delegate tasks to your application. The Live session emits delegation events
22
+ # that your backend handles.
23
+ sig do
24
+ params(
25
+
26
+ type: Symbol
27
+ )
28
+ .returns(T.attached_class)
29
+ end
30
+ def self.new(
31
+
32
+ # The delegation owner. Always `client` for tasks handled by your application.
33
+
34
+ type: :client
35
+ )
36
+ end
37
+
38
+ sig do
39
+ override.returns(
40
+ {type: Symbol}
41
+ )
42
+ end
43
+ def to_hash
44
+ end
45
+
46
+ end
47
+
48
+ end
49
+
50
+ end
51
+ end
@@ -0,0 +1,41 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ module Live
7
+
8
+ # Client events for Live. Initialize a primary WebSocket with session.start and
9
+ # wait for session.started. WebRTC creation already starts the session. Audio
10
+ # append is primary WebSocket-only. See the
11
+ # [Live prompting guide](https://developers.openai.com/api/docs/guides/live-prompting)
12
+ # before writing frontend instructions and delegation policies.
13
+ module ClientEvent
14
+ extend OpenAI::Internal::Type::Union
15
+
16
+ Variants = T.type_alias do
17
+ T.any(
18
+ OpenAI::Live::SessionStartEvent,
19
+ OpenAI::Live::SessionUpdateEvent,
20
+ OpenAI::Live::InputAudioAppendEvent,
21
+ OpenAI::Live::InputAudioMuteEvent,
22
+ OpenAI::Live::InputAudioUnmuteEvent,
23
+ OpenAI::Live::InstructionsAppendEvent,
24
+ OpenAI::Live::ThinkingAppendEvent,
25
+ OpenAI::Live::CommentaryAppendEvent,
26
+ OpenAI::Live::ResponseItemCreateEvent,
27
+ OpenAI::Live::ResponseCreateEvent,
28
+ OpenAI::Live::SessionCloseEvent
29
+ )
30
+ end
31
+
32
+ sig { override.returns(T::Array[OpenAI::Live::ClientEvent::Variants]) }
33
+ def self.variants
34
+ end
35
+
36
+ end
37
+
38
+ end
39
+
40
+ end
41
+ end
@@ -0,0 +1,88 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ module Live
7
+
8
+ class CommentaryAppendEvent < OpenAI::Internal::Type::BaseModel
9
+
10
+ OrHash = T.type_alias do
11
+ T.any(
12
+ OpenAI::Live::CommentaryAppendEvent,
13
+ OpenAI::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ # Speakable context for the Live model, limited to 500 tokens. Use this for a
18
+ # result the model should communicate; use session.thinking.append for silent
19
+ # context.
20
+ sig { returns(String) }
21
+ attr_accessor :content
22
+
23
+ # Required, nullable. Set null for general session context, or use the ID from
24
+ # session.delegation.created for an existing client delegation. Non-null IDs are
25
+ # not accepted with Responses delegation.
26
+ sig { returns(T.nilable(String)) }
27
+ attr_accessor :delegation_id
28
+
29
+ # The Live client event type. Always `session.commentary.append`.
30
+ sig { returns(Symbol) }
31
+ attr_accessor :type
32
+
33
+ # Optional client identifier for correlating this command with a server event's
34
+ # client_event_id or error.client_event_id.
35
+ sig { returns(T.nilable(String)) }
36
+ attr_accessor :event_id
37
+
38
+ # Provide context the Live model can communicate to the user, optionally for an
39
+ # existing client delegation.
40
+ sig do
41
+ params(
42
+
43
+ content: String,
44
+
45
+ delegation_id: T.nilable(String),
46
+
47
+ event_id: T.nilable(String),
48
+
49
+ type: Symbol
50
+ )
51
+ .returns(T.attached_class)
52
+ end
53
+ def self.new(
54
+
55
+ # Speakable context for the Live model, limited to 500 tokens. Use this for a
56
+ # result the model should communicate; use session.thinking.append for silent
57
+ # context.
58
+ content:,
59
+
60
+ # Required, nullable. Set null for general session context, or use the ID from
61
+ # session.delegation.created for an existing client delegation. Non-null IDs are
62
+ # not accepted with Responses delegation.
63
+ delegation_id:,
64
+
65
+ # Optional client identifier for correlating this command with a server event's
66
+ # client_event_id or error.client_event_id.
67
+ event_id: nil,
68
+
69
+ # The Live client event type. Always `session.commentary.append`.
70
+
71
+ type: :"session.commentary.append"
72
+ )
73
+ end
74
+
75
+ sig do
76
+ override.returns(
77
+ {content: String, delegation_id: T.nilable(String), type: Symbol, event_id: T.nilable(String)}
78
+ )
79
+ end
80
+ def to_hash
81
+ end
82
+
83
+ end
84
+
85
+ end
86
+
87
+ end
88
+ end