openai 0.114.0 → 0.115.1

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 (226) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +43 -0
  3. data/README.md +17 -2
  4. data/docs/architecture/security-model.md +11 -16
  5. data/examples/responses/websocket_workflows.rb +78 -3
  6. data/lib/openai/helpers/chat/tool_runner.rb +1 -1
  7. data/lib/openai/helpers/live/websocket.rb +31 -0
  8. data/lib/openai/helpers/realtime/connection.rb +33 -0
  9. data/lib/openai/helpers/realtime/connection_manager.rb +1 -0
  10. data/lib/openai/helpers/realtime/conversation_item_variant_resolver.rb +5 -0
  11. data/lib/openai/helpers/realtime/recovery.rb +5 -1
  12. data/lib/openai/helpers/realtime/translation.rb +5 -0
  13. data/lib/openai/helpers/realtime/transports/async_websocket.rb +19 -0
  14. data/lib/openai/helpers/responses_websocket/connection.rb +53 -15
  15. data/lib/openai/helpers/responses_websocket/connection_manager.rb +1 -0
  16. data/lib/openai/helpers/responses_websocket/connection_resources.rb +1 -1
  17. data/lib/openai/helpers/structured_output/response_parser.rb +1 -0
  18. data/lib/openai/helpers/structured_output.rb +58 -0
  19. data/lib/openai/helpers/websocket/connection_manager.rb +11 -0
  20. data/lib/openai/helpers/websocket/resource.rb +1 -0
  21. data/lib/openai/helpers/websocket/typed_connection.rb +1 -0
  22. data/lib/openai/internal/type/array_of.rb +1 -1
  23. data/lib/openai/internal/type/hash_of.rb +1 -1
  24. data/lib/openai/internal/type/request_parameters.rb +2 -1
  25. data/lib/openai/internal/type/union.rb +18 -6
  26. data/lib/openai/models/admin/organization/external_key.rb +169 -0
  27. data/lib/openai/models/admin/organization/external_key_create_params.rb +311 -0
  28. data/lib/openai/models/admin/organization/external_key_delete_params.rb +24 -0
  29. data/lib/openai/models/admin/organization/external_key_list_params.rb +69 -0
  30. data/lib/openai/models/admin/organization/external_key_retrieve_params.rb +24 -0
  31. data/lib/openai/models/admin/organization/external_key_validate_params.rb +24 -0
  32. data/lib/openai/models/admin/organization/external_key_validate_response.rb +20 -0
  33. data/lib/openai/models/audio/speech_model.rb +12 -0
  34. data/lib/openai/models/audio_model.rb +15 -0
  35. data/lib/openai/models/beta/agent.rb +49 -1
  36. data/lib/openai/models/beta/agent_create_params.rb +51 -1
  37. data/lib/openai/models/beta/agent_session.rb +75 -2
  38. data/lib/openai/models/beta/agent_update_params.rb +62 -1
  39. data/lib/openai/models/beta/agents/session_create_params.rb +94 -2
  40. data/lib/openai/models/beta/agents/session_list_params.rb +16 -1
  41. data/lib/openai/models/beta/agents/session_update_params.rb +50 -5
  42. data/lib/openai/models/beta/assistant_update_params.rb +18 -0
  43. data/lib/openai/models/beta/beta_response.rb +224 -1
  44. data/lib/openai/models/beta/beta_response_configuration_update_item.rb +64 -3
  45. data/lib/openai/models/beta/beta_response_configuration_update_item_param.rb +64 -4
  46. data/lib/openai/models/beta/beta_response_input_item.rb +2 -3
  47. data/lib/openai/models/beta/beta_response_item.rb +2 -2
  48. data/lib/openai/models/beta/beta_response_tool_search_output_item_param.rb +6 -6
  49. data/lib/openai/models/beta/beta_responses_client_event.rb +20 -1
  50. data/lib/openai/models/beta/beta_tool.rb +6 -6
  51. data/lib/openai/models/beta/response_compact_params.rb +6 -0
  52. data/lib/openai/models/beta/response_create_params.rb +6 -0
  53. data/lib/openai/models/chat_model.rb +6 -0
  54. data/lib/openai/models/conversations/conversation_item.rb +2 -2
  55. data/lib/openai/models/image_edit_params.rb +46 -25
  56. data/lib/openai/models/live/fork_server_event.rb +43 -3
  57. data/lib/openai/models/live/server_event.rb +43 -3
  58. data/lib/openai/models/live/sideband_client_event.rb +40 -1
  59. data/lib/openai/models/live/sideband_server_event.rb +43 -3
  60. data/lib/openai/models/realtime/audio_transcription.rb +15 -0
  61. data/lib/openai/models/realtime/conversation_item_added.rb +2 -2
  62. data/lib/openai/models/realtime/conversation_item_create_event.rb +2 -2
  63. data/lib/openai/models/realtime/conversation_item_created_event.rb +2 -2
  64. data/lib/openai/models/realtime/conversation_item_done.rb +2 -2
  65. data/lib/openai/models/realtime/realtime_response.rb +2 -2
  66. data/lib/openai/models/realtime/realtime_response_create_params.rb +2 -2
  67. data/lib/openai/models/realtime/realtime_server_event.rb +2 -2
  68. data/lib/openai/models/realtime/realtime_session.rb +18 -0
  69. data/lib/openai/models/realtime/realtime_session_create_request.rb +18 -0
  70. data/lib/openai/models/realtime/realtime_session_create_response.rb +18 -0
  71. data/lib/openai/models/realtime/response_output_item_added_event.rb +2 -2
  72. data/lib/openai/models/realtime/response_output_item_done_event.rb +2 -2
  73. data/lib/openai/models/responses/response.rb +221 -1
  74. data/lib/openai/models/responses/response_compact_params.rb +6 -0
  75. data/lib/openai/models/responses/response_configuration_update_item.rb +50 -3
  76. data/lib/openai/models/responses/response_configuration_update_item_param.rb +50 -4
  77. data/lib/openai/models/responses/response_input_item.rb +2 -3
  78. data/lib/openai/models/responses/response_item.rb +2 -2
  79. data/lib/openai/models/responses/response_tool_search_output_item_param.rb +6 -6
  80. data/lib/openai/models/responses/responses_client_event.rb +14 -1
  81. data/lib/openai/models/responses/tool.rb +6 -6
  82. data/lib/openai/net_http_client.rb +6 -0
  83. data/lib/openai/providers/vertex.rb +0 -10
  84. data/lib/openai/resources/admin/organization/external_keys.rb +132 -0
  85. data/lib/openai/resources/admin/organization.rb +4 -0
  86. data/lib/openai/resources/audio/speech.rb +8 -0
  87. data/lib/openai/resources/audio/translations.rb +8 -0
  88. data/lib/openai/resources/beta/agents/sessions.rb +22 -6
  89. data/lib/openai/resources/beta/agents.rb +17 -2
  90. data/lib/openai/resources/images.rb +36 -18
  91. data/lib/openai/version.rb +1 -1
  92. data/lib/openai.rb +8 -0
  93. data/rbi/openai/helpers/live/websocket.rbi +1 -12
  94. data/rbi/openai/helpers/realtime/connection.rbi +5 -0
  95. data/rbi/openai/helpers/realtime/transports/async_websocket.rbi +5 -0
  96. data/rbi/openai/helpers/responses_websocket/connection.rbi +7 -2
  97. data/rbi/openai/helpers/structured_output.rbi +10 -0
  98. data/rbi/openai/internal/type/array_of.rbi +1 -1
  99. data/rbi/openai/internal/type/hash_of.rbi +1 -1
  100. data/rbi/openai/internal/type/union.rbi +5 -0
  101. data/rbi/openai/models/admin/organization/external_key.rbi +301 -0
  102. data/rbi/openai/models/admin/organization/external_key_create_params.rbi +532 -0
  103. data/rbi/openai/models/admin/organization/external_key_delete_params.rbi +57 -0
  104. data/rbi/openai/models/admin/organization/external_key_list_params.rbi +129 -0
  105. data/rbi/openai/models/admin/organization/external_key_retrieve_params.rbi +57 -0
  106. data/rbi/openai/models/admin/organization/external_key_validate_params.rbi +57 -0
  107. data/rbi/openai/models/admin/organization/external_key_validate_response.rbi +50 -0
  108. data/rbi/openai/models/beta/agent.rbi +103 -1
  109. data/rbi/openai/models/beta/agent_create_params.rbi +109 -0
  110. data/rbi/openai/models/beta/agent_session.rbi +136 -3
  111. data/rbi/openai/models/beta/agent_update_params.rbi +120 -0
  112. data/rbi/openai/models/beta/agents/session_create_params.rbi +153 -0
  113. data/rbi/openai/models/beta/agents/session_list_params.rbi +19 -0
  114. data/rbi/openai/models/beta/agents/session_update_params.rbi +94 -6
  115. data/rbi/openai/models/beta/beta_response.rbi +394 -0
  116. data/rbi/openai/models/beta/beta_response_configuration_update_item.rbi +113 -3
  117. data/rbi/openai/models/beta/beta_response_configuration_update_item_param.rbi +125 -4
  118. data/rbi/openai/models/beta/beta_response_tool_search_output_item_param.rbi +6 -6
  119. data/rbi/openai/models/beta/beta_responses_client_event.rbi +17 -0
  120. data/rbi/openai/models/beta/beta_tool.rbi +6 -6
  121. data/rbi/openai/models/decision_create_params.rbi +4 -1
  122. data/rbi/openai/models/image_edit_params.rbi +49 -24
  123. data/rbi/openai/models/live/fork_server_event.rbi +65 -1
  124. data/rbi/openai/models/live/server_event.rbi +65 -1
  125. data/rbi/openai/models/live/sideband_client_event.rbi +60 -0
  126. data/rbi/openai/models/live/sideband_server_event.rbi +65 -1
  127. data/rbi/openai/models/realtime/conversation_item_added.rbi +6 -3
  128. data/rbi/openai/models/realtime/conversation_item_create_event.rbi +6 -3
  129. data/rbi/openai/models/realtime/conversation_item_created_event.rbi +6 -3
  130. data/rbi/openai/models/realtime/conversation_item_done.rbi +6 -3
  131. data/rbi/openai/models/realtime/realtime_response.rbi +8 -4
  132. data/rbi/openai/models/realtime/realtime_response_create_params.rbi +8 -4
  133. data/rbi/openai/models/realtime/realtime_server_event.rbi +6 -3
  134. data/rbi/openai/models/realtime/response_output_item_added_event.rbi +6 -3
  135. data/rbi/openai/models/realtime/response_output_item_done_event.rbi +6 -3
  136. data/rbi/openai/models/responses/response.rbi +394 -0
  137. data/rbi/openai/models/responses/response_configuration_update_item.rbi +76 -3
  138. data/rbi/openai/models/responses/response_configuration_update_item_param.rbi +74 -4
  139. data/rbi/openai/models/responses/response_tool_search_output_item_param.rbi +6 -6
  140. data/rbi/openai/models/responses/responses_client_event.rbi +17 -0
  141. data/rbi/openai/models/responses/tool.rbi +6 -6
  142. data/rbi/openai/net_http_client.rbi +5 -0
  143. data/rbi/openai/resources/admin/organization/external_keys.rbi +86 -0
  144. data/rbi/openai/resources/admin/organization.rbi +3 -0
  145. data/rbi/openai/resources/audio/speech.rbi +8 -0
  146. data/rbi/openai/resources/audio/translations.rbi +6 -0
  147. data/rbi/openai/resources/beta/agents/sessions.rbi +18 -2
  148. data/rbi/openai/resources/beta/agents.rbi +15 -0
  149. data/rbi/openai/resources/images.rbi +34 -16
  150. data/rbi/openai/resources/responses.rbi +2 -0
  151. data/realtime.md +6 -0
  152. data/responses-websocket.md +53 -0
  153. data/sig/openai/helpers/live/websocket.rbs +1 -9
  154. data/sig/openai/helpers/realtime/connection.rbs +3 -0
  155. data/sig/openai/helpers/realtime/transports/async_websocket.rbs +3 -0
  156. data/sig/openai/helpers/responses_websocket/connection.rbs +7 -1
  157. data/sig/openai/helpers/structured_output.rbs +9 -0
  158. data/sig/openai/internal/type/union.rbs +4 -0
  159. data/sig/openai/models/admin/organization/external_key.rbs +186 -0
  160. data/sig/openai/models/admin/organization/external_key_create_params.rbs +423 -0
  161. data/sig/openai/models/admin/organization/external_key_delete_params.rbs +27 -0
  162. data/sig/openai/models/admin/organization/external_key_list_params.rbs +81 -0
  163. data/sig/openai/models/admin/organization/external_key_retrieve_params.rbs +27 -0
  164. data/sig/openai/models/admin/organization/external_key_validate_params.rbs +27 -0
  165. data/sig/openai/models/admin/organization/external_key_validate_response.rbs +17 -0
  166. data/sig/openai/models/admin/organization/external_storage_create_params.rbs +72 -2
  167. data/sig/openai/models/audio/speech_create_params.rbs +15 -2
  168. data/sig/openai/models/audio/transcription_create_params.rbs +30 -2
  169. data/sig/openai/models/audio/voice_create_params.rbs +47 -2
  170. data/sig/openai/models/beta/agent.rbs +54 -2
  171. data/sig/openai/models/beta/agent_create_params.rbs +54 -0
  172. data/sig/openai/models/beta/agent_session.rbs +82 -3
  173. data/sig/openai/models/beta/agent_update_params.rbs +64 -0
  174. data/sig/openai/models/beta/agents/session_create_params.rbs +91 -0
  175. data/sig/openai/models/beta/agents/session_list_params.rbs +20 -0
  176. data/sig/openai/models/beta/agents/session_update_params.rbs +48 -6
  177. data/sig/openai/models/beta/assistant_create_params.rbs +5 -2
  178. data/sig/openai/models/beta/beta_response.rbs +223 -0
  179. data/sig/openai/models/beta/beta_response_configuration_update_item.rbs +58 -2
  180. data/sig/openai/models/beta/beta_response_configuration_update_item_param.rbs +58 -2
  181. data/sig/openai/models/beta/beta_response_tool_search_output_item_param.rbs +4 -4
  182. data/sig/openai/models/beta/beta_responses_client_event.rbs +17 -0
  183. data/sig/openai/models/beta/beta_tool.rbs +4 -4
  184. data/sig/openai/models/beta/response_create_params.rbs +5 -2
  185. data/sig/openai/models/beta/responses/input_token_count_params.rbs +10 -2
  186. data/sig/openai/models/beta/thread_create_and_run_params.rbs +11 -5
  187. data/sig/openai/models/beta/thread_create_params.rbs +11 -5
  188. data/sig/openai/models/beta/threads/message_create_params.rbs +6 -3
  189. data/sig/openai/models/beta/threads/run_create_params.rbs +6 -3
  190. data/sig/openai/models/decision_create_params.rbs +27 -2
  191. data/sig/openai/models/eval_create_params.rbs +25 -4
  192. data/sig/openai/models/evals/run_create_params.rbs +52 -8
  193. data/sig/openai/models/image_edit_params.rbs +47 -16
  194. data/sig/openai/models/live/fork_server_event.rbs +39 -0
  195. data/sig/openai/models/live/server_event.rbs +39 -0
  196. data/sig/openai/models/live/session_accept_params.rbs +39 -2
  197. data/sig/openai/models/live/sideband_client_event.rbs +32 -0
  198. data/sig/openai/models/live/sideband_server_event.rbs +39 -0
  199. data/sig/openai/models/realtime/conversation_item.rbs +1 -0
  200. data/sig/openai/models/responses/input_token_count_params.rbs +10 -2
  201. data/sig/openai/models/responses/response.rbs +223 -0
  202. data/sig/openai/models/responses/response_configuration_update_item.rbs +45 -2
  203. data/sig/openai/models/responses/response_configuration_update_item_param.rbs +45 -2
  204. data/sig/openai/models/responses/response_create_params.rbs +5 -2
  205. data/sig/openai/models/responses/response_tool_search_output_item_param.rbs +4 -4
  206. data/sig/openai/models/responses/responses_client_event.rbs +17 -0
  207. data/sig/openai/models/responses/tool.rbs +4 -4
  208. data/sig/openai/models/video_edit_params.rbs +11 -2
  209. data/sig/openai/models/video_extend_params.rbs +11 -2
  210. data/sig/openai/net_http_client.rbs +3 -0
  211. data/sig/openai/resources/admin/organization/external_keys.rbs +70 -0
  212. data/sig/openai/resources/admin/organization/external_storage.rbs +23 -1
  213. data/sig/openai/resources/admin/organization.rbs +2 -0
  214. data/sig/openai/resources/audio/speech.rbs +2 -1
  215. data/sig/openai/resources/audio/transcriptions.rbs +14 -2
  216. data/sig/openai/resources/audio/voices.rbs +14 -1
  217. data/sig/openai/resources/beta/agents/sessions.rbs +4 -0
  218. data/sig/openai/resources/beta/agents.rbs +4 -0
  219. data/sig/openai/resources/beta/responses/input_tokens.rbs +2 -1
  220. data/sig/openai/resources/beta/responses.rbs +4 -2
  221. data/sig/openai/resources/decisions.rbs +7 -1
  222. data/sig/openai/resources/images.rbs +2 -0
  223. data/sig/openai/resources/responses/input_tokens.rbs +2 -1
  224. data/sig/openai/resources/responses.rbs +5 -2
  225. data/sig/openai/resources/videos.rbs +2 -2
  226. metadata +43 -1
@@ -38,9 +38,15 @@ module OpenAI
38
38
  sig { params(reasoning: OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Reasoning::OrHash).void }
39
39
  attr_writer :reasoning
40
40
 
41
- # An update to the conversation's response configuration. The configuration
42
- # remains in effect for subsequent responses until it is replaced by another
43
- # configuration update.
41
+ # The text output configuration for subsequent responses.
42
+ sig { returns(T.nilable(OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Text)) }
43
+ attr_reader :text
44
+
45
+ sig { params(text: OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Text::OrHash).void }
46
+ attr_writer :text
47
+
48
+ # An update to the conversation's response configuration. Supply reasoning, text,
49
+ # or both. Each setting stays in effect until a later update replaces it.
44
50
  sig do
45
51
  params(
46
52
 
@@ -50,6 +56,8 @@ module OpenAI
50
56
 
51
57
  reasoning: OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Reasoning::OrHash,
52
58
 
59
+ text: OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Text::OrHash,
60
+
53
61
  type: Symbol
54
62
  )
55
63
  .returns(T.attached_class)
@@ -65,6 +73,9 @@ module OpenAI
65
73
  # Updates to reasoning configuration. Only effort is supported.
66
74
  reasoning: nil,
67
75
 
76
+ # The text output configuration for subsequent responses.
77
+ text: nil,
78
+
68
79
  # The item type. Always `configuration_update`.
69
80
 
70
81
  type: :configuration_update
@@ -77,7 +88,8 @@ module OpenAI
77
88
  type: Symbol,
78
89
  id: T.nilable(String),
79
90
  agent: T.nilable(OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Agent),
80
- reasoning: OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Reasoning
91
+ reasoning: OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Reasoning,
92
+ text: OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Text
81
93
  }
82
94
  )
83
95
  end
@@ -199,6 +211,115 @@ module OpenAI
199
211
  end
200
212
  end
201
213
 
214
+ class Text < OpenAI::Internal::Type::BaseModel
215
+ OrHash = T.type_alias do
216
+ T.any(
217
+ OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Text,
218
+ OpenAI::Internal::AnyHash
219
+ )
220
+ end
221
+
222
+ # Use a JSON schema for structured output or text to return to plain text.
223
+ sig {
224
+ returns(
225
+ T.any(
226
+ OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Text::Format::Text,
227
+ OpenAI::Beta::BetaResponseFormatTextJSONSchemaConfig
228
+ )
229
+ )
230
+ }
231
+ attr_accessor :format_
232
+
233
+ # The text output configuration for subsequent responses.
234
+ sig do
235
+ params(
236
+
237
+ format_: T.any(
238
+ OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Text::Format::Text::OrHash,
239
+ OpenAI::Beta::BetaResponseFormatTextJSONSchemaConfig::OrHash
240
+ )
241
+ )
242
+ .returns(T.attached_class)
243
+ end
244
+ def self.new(
245
+
246
+ # Use a JSON schema for structured output or text to return to plain text.
247
+
248
+ format_:
249
+ )
250
+ end
251
+
252
+ sig do
253
+ override.returns(
254
+ {
255
+ format_: T.any(
256
+ OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Text::Format::Text,
257
+ OpenAI::Beta::BetaResponseFormatTextJSONSchemaConfig
258
+ )
259
+ }
260
+ )
261
+ end
262
+ def to_hash
263
+ end
264
+
265
+ # Use a JSON schema for structured output or text to return to plain text.
266
+ module Format
267
+ extend OpenAI::Internal::Type::Union
268
+
269
+ Variants = T.type_alias {
270
+ T.any(
271
+ OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Text::Format::Text,
272
+ OpenAI::Beta::BetaResponseFormatTextJSONSchemaConfig
273
+ )
274
+ }
275
+
276
+ class Text < OpenAI::Internal::Type::BaseModel
277
+ OrHash = T.type_alias do
278
+ T.any(
279
+ OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Text::Format::Text,
280
+ OpenAI::Internal::AnyHash
281
+ )
282
+ end
283
+
284
+ # The type of response format being defined. Always `text`.
285
+ sig { returns(Symbol) }
286
+ attr_accessor :type
287
+
288
+ # Default response format. Used to generate text responses.
289
+ sig do
290
+ params(
291
+
292
+ type: Symbol
293
+ )
294
+ .returns(T.attached_class)
295
+ end
296
+ def self.new(
297
+
298
+ # The type of response format being defined. Always `text`.
299
+
300
+ type: :text
301
+ )
302
+ end
303
+
304
+ sig do
305
+ override.returns(
306
+ {type: Symbol}
307
+ )
308
+ end
309
+ def to_hash
310
+ end
311
+
312
+ end
313
+
314
+ sig {
315
+ override.returns(T::Array[OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Text::Format::Variants])
316
+ }
317
+ def self.variants
318
+ end
319
+
320
+ end
321
+ end
322
+
202
323
  end
203
324
 
204
325
  end
@@ -1308,8 +1308,8 @@ module OpenAI
1308
1308
 
1309
1309
  # Control how much effort the model will exert to match the style and features,
1310
1310
  # especially facial features, of input images. Supports `high` and `low` on
1311
- # `gpt-image-1` and `gpt-image-1.5`; `gpt-image-1-mini` supports only `low`. For
1312
- # `gpt-image-2`, omit this parameter. Defaults to `low` on supported models.
1311
+ # `gpt-image-1.5`; `gpt-image-1-mini` supports only `low`. For `gpt-image-2`, omit
1312
+ # this parameter. Defaults to `low` on supported models.
1313
1313
  sig {
1314
1314
  returns(
1315
1315
  T.nilable(
@@ -1527,8 +1527,8 @@ module OpenAI
1527
1527
 
1528
1528
  # Control how much effort the model will exert to match the style and features,
1529
1529
  # especially facial features, of input images. Supports `high` and `low` on
1530
- # `gpt-image-1` and `gpt-image-1.5`; `gpt-image-1-mini` supports only `low`. For
1531
- # `gpt-image-2`, omit this parameter. Defaults to `low` on supported models.
1530
+ # `gpt-image-1.5`; `gpt-image-1-mini` supports only `low`. For `gpt-image-2`, omit
1531
+ # this parameter. Defaults to `low` on supported models.
1532
1532
  input_fidelity: nil,
1533
1533
 
1534
1534
  # Optional mask for inpainting. Contains `image_url` (string, optional) and
@@ -1688,8 +1688,8 @@ module OpenAI
1688
1688
 
1689
1689
  # Control how much effort the model will exert to match the style and features,
1690
1690
  # especially facial features, of input images. Supports `high` and `low` on
1691
- # `gpt-image-1` and `gpt-image-1.5`; `gpt-image-1-mini` supports only `low`. For
1692
- # `gpt-image-2`, omit this parameter. Defaults to `low` on supported models.
1691
+ # `gpt-image-1.5`; `gpt-image-1-mini` supports only `low`. For `gpt-image-2`, omit
1692
+ # this parameter. Defaults to `low` on supported models.
1693
1693
  module InputFidelity
1694
1694
  extend OpenAI::Internal::Type::Enum
1695
1695
 
@@ -58,6 +58,15 @@ module OpenAI
58
58
  sig { returns(T.nilable(T.any(String, OpenAI::Beta::BetaResponseConversationParam))) }
59
59
  attr_accessor :conversation
60
60
 
61
+ # Whether to generate output for this response. Defaults to true when omitted. Set
62
+ # to false to prepare request state without model output; the response ID can be
63
+ # used as previous_response_id on a later turn.
64
+ sig { returns(T.nilable(T::Boolean)) }
65
+ attr_reader :generate
66
+
67
+ sig { params(generate: T::Boolean).void }
68
+ attr_writer :generate
69
+
61
70
  # Specify additional output data to include in the model response. Currently
62
71
  # supported values are:
63
72
  #
@@ -503,6 +512,8 @@ module OpenAI
503
512
 
504
513
  conversation: T.nilable(T.any(String, OpenAI::Beta::BetaResponseConversationParam::OrHash)),
505
514
 
515
+ generate: T::Boolean,
516
+
506
517
  include: T.nilable(T::Array[OpenAI::Beta::BetaResponseIncludable::OrSymbol]),
507
518
 
508
519
  input: OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::Input::Variants,
@@ -616,6 +627,11 @@ module OpenAI
616
627
  # response completes.
617
628
  conversation: nil,
618
629
 
630
+ # Whether to generate output for this response. Defaults to true when omitted. Set
631
+ # to false to prepare request state without model output; the response ID can be
632
+ # used as previous_response_id on a later turn.
633
+ generate: nil,
634
+
619
635
  # Specify additional output data to include in the model response. Currently
620
636
  # supported values are:
621
637
  #
@@ -882,6 +898,7 @@ module OpenAI
882
898
  T::Array[OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::ContextManagement]
883
899
  ),
884
900
  conversation: T.nilable(T.any(String, OpenAI::Beta::BetaResponseConversationParam)),
901
+ generate: T.nilable(T::Boolean),
885
902
  include: T.nilable(T::Array[OpenAI::Beta::BetaResponseIncludable::OrSymbol]),
886
903
  input: T.nilable(OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::Input::Variants),
887
904
  instructions: T.nilable(String),
@@ -978,8 +978,8 @@ module OpenAI
978
978
 
979
979
  # Control how much effort the model will exert to match the style and features,
980
980
  # especially facial features, of input images. Supports `high` and `low` on
981
- # `gpt-image-1` and `gpt-image-1.5`; `gpt-image-1-mini` supports only `low`. For
982
- # `gpt-image-2`, omit this parameter. Defaults to `low` on supported models.
981
+ # `gpt-image-1.5`; `gpt-image-1-mini` supports only `low`. For `gpt-image-2`, omit
982
+ # this parameter. Defaults to `low` on supported models.
983
983
  sig { returns(T.nilable(OpenAI::Beta::BetaTool::ImageGeneration::InputFidelity::OrSymbol)) }
984
984
  attr_accessor :input_fidelity
985
985
 
@@ -1109,8 +1109,8 @@ module OpenAI
1109
1109
 
1110
1110
  # Control how much effort the model will exert to match the style and features,
1111
1111
  # especially facial features, of input images. Supports `high` and `low` on
1112
- # `gpt-image-1` and `gpt-image-1.5`; `gpt-image-1-mini` supports only `low`. For
1113
- # `gpt-image-2`, omit this parameter. Defaults to `low` on supported models.
1112
+ # `gpt-image-1.5`; `gpt-image-1-mini` supports only `low`. For `gpt-image-2`, omit
1113
+ # this parameter. Defaults to `low` on supported models.
1114
1114
  input_fidelity: nil,
1115
1115
 
1116
1116
  # Optional mask for inpainting. Contains `image_url` (string, optional) and
@@ -1228,8 +1228,8 @@ module OpenAI
1228
1228
 
1229
1229
  # Control how much effort the model will exert to match the style and features,
1230
1230
  # especially facial features, of input images. Supports `high` and `low` on
1231
- # `gpt-image-1` and `gpt-image-1.5`; `gpt-image-1-mini` supports only `low`. For
1232
- # `gpt-image-2`, omit this parameter. Defaults to `low` on supported models.
1231
+ # `gpt-image-1.5`; `gpt-image-1-mini` supports only `low`. For `gpt-image-2`, omit
1232
+ # this parameter. Defaults to `low` on supported models.
1233
1233
  module InputFidelity
1234
1234
  extend OpenAI::Internal::Type::Enum
1235
1235
 
@@ -160,7 +160,10 @@ module OpenAI
160
160
 
161
161
  Variants = T.type_alias {
162
162
  T.any(
163
- OpenAI::DecisionInputMessage::Variants,
163
+ T.any(
164
+ OpenAI::DecisionInputMessage::Variants,
165
+ OpenAI::DecisionCreateParams::Input::UnionMember1::DecisionInputUserMessage
166
+ ),
164
167
  OpenAI::DecisionCreateParams::Input::UnionMember1::DecisionInputDeveloperMessage,
165
168
  OpenAI::DecisionCreateParams::Input::UnionMember1::DecisionInputSystemMessage,
166
169
  OpenAI::DecisionCreateParams::Input::UnionMember1::DecisionInputAssistantMessage,
@@ -17,12 +17,12 @@ module OpenAI
17
17
 
18
18
  # The image(s) to edit. Must be a supported image file or an array of images.
19
19
  #
20
- # For the GPT image models (`gpt-image-1`, `gpt-image-1-mini`, `gpt-image-1.5`,
21
- # `gpt-image-2`, `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
22
- # `gpt-image-2.5-sunburst-2026-09-08`, `gpt-image-2.5-flare`,
23
- # `gpt-image-2.5-flare-2026-09-08`, and `chatgpt-image-latest`), each image should
24
- # be a `png`, `webp`, or `jpg` file less than 50MB. You can provide up to 16
25
- # images.
20
+ # For the GPT image models (`gpt-image-1-mini`, `gpt-image-1.5`, `gpt-image-2`,
21
+ # `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
22
+ # `gpt-image-2.5-sunburst-2026-09-08`, `gpt-image-2.5-flare`, and
23
+ # `gpt-image-2.5-flare-2026-09-08`), each image should be a `png`, `webp`, or
24
+ # `jpg` file less than 50MB. You can provide up to 16 images.
25
+ # `chatgpt-image-latest` follows the same input constraints as GPT image models.
26
26
  #
27
27
  # `String`, `StringIO`, and pathless `IO` inputs are sent with generic upload
28
28
  # metadata. Use `OpenAI::FilePart` when you need to override the filename or
@@ -49,11 +49,24 @@ module OpenAI
49
49
 
50
50
  # Control how much effort the model will exert to match the style and features,
51
51
  # especially facial features, of input images. Supports `high` and `low` on
52
- # `gpt-image-1` and `gpt-image-1.5`; `gpt-image-1-mini` supports only `low`. For
53
- # `gpt-image-2`, omit this parameter. Defaults to `low` on supported models.
52
+ # `gpt-image-1.5`; `gpt-image-1-mini` supports only `low`. For `gpt-image-2`, omit
53
+ # this parameter. Defaults to `low` on supported models.
54
54
  sig { returns(T.nilable(OpenAI::ImageEditParams::InputFidelity::OrSymbol)) }
55
55
  attr_accessor :input_fidelity
56
56
 
57
+ # A transparent PNG overlaid on the first image to guide the edit. Must match that
58
+ # image's dimensions after orientation and contain transparent pixels. Supports
59
+ # GPT Image 2.5 and 2.6. Cannot be combined with mask.
60
+ #
61
+ # `String`, `StringIO`, and pathless `IO` inputs are sent with generic upload
62
+ # metadata. Use `OpenAI::FilePart` when you need to override the filename or
63
+ # content type.
64
+ sig { returns(T.nilable(OpenAI::Internal::FileInput)) }
65
+ attr_reader :markup
66
+
67
+ sig { params(markup: OpenAI::Internal::FileInput).void }
68
+ attr_writer :markup
69
+
57
70
  # An additional image whose fully transparent areas (e.g. where alpha is zero)
58
71
  # indicate where `image` should be edited. If there are multiple images provided,
59
72
  # the mask will be applied on the first image. Must be a valid PNG file, less than
@@ -160,6 +173,8 @@ module OpenAI
160
173
 
161
174
  input_fidelity: T.nilable(OpenAI::ImageEditParams::InputFidelity::OrSymbol),
162
175
 
176
+ markup: OpenAI::Internal::FileInput,
177
+
163
178
  mask: OpenAI::Internal::FileInput,
164
179
 
165
180
  model: T.nilable(T.any(String, OpenAI::ImageModel::OrSymbol)),
@@ -190,12 +205,12 @@ module OpenAI
190
205
 
191
206
  # The image(s) to edit. Must be a supported image file or an array of images.
192
207
  #
193
- # For the GPT image models (`gpt-image-1`, `gpt-image-1-mini`, `gpt-image-1.5`,
194
- # `gpt-image-2`, `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
195
- # `gpt-image-2.5-sunburst-2026-09-08`, `gpt-image-2.5-flare`,
196
- # `gpt-image-2.5-flare-2026-09-08`, and `chatgpt-image-latest`), each image should
197
- # be a `png`, `webp`, or `jpg` file less than 50MB. You can provide up to 16
198
- # images.
208
+ # For the GPT image models (`gpt-image-1-mini`, `gpt-image-1.5`, `gpt-image-2`,
209
+ # `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
210
+ # `gpt-image-2.5-sunburst-2026-09-08`, `gpt-image-2.5-flare`, and
211
+ # `gpt-image-2.5-flare-2026-09-08`), each image should be a `png`, `webp`, or
212
+ # `jpg` file less than 50MB. You can provide up to 16 images.
213
+ # `chatgpt-image-latest` follows the same input constraints as GPT image models.
199
214
  #
200
215
  # `String`, `StringIO`, and pathless `IO` inputs are sent with generic upload
201
216
  # metadata. Use `OpenAI::FilePart` when you need to override the filename or
@@ -219,10 +234,19 @@ module OpenAI
219
234
 
220
235
  # Control how much effort the model will exert to match the style and features,
221
236
  # especially facial features, of input images. Supports `high` and `low` on
222
- # `gpt-image-1` and `gpt-image-1.5`; `gpt-image-1-mini` supports only `low`. For
223
- # `gpt-image-2`, omit this parameter. Defaults to `low` on supported models.
237
+ # `gpt-image-1.5`; `gpt-image-1-mini` supports only `low`. For `gpt-image-2`, omit
238
+ # this parameter. Defaults to `low` on supported models.
224
239
  input_fidelity: nil,
225
240
 
241
+ # A transparent PNG overlaid on the first image to guide the edit. Must match that
242
+ # image's dimensions after orientation and contain transparent pixels. Supports
243
+ # GPT Image 2.5 and 2.6. Cannot be combined with mask.
244
+ #
245
+ # `String`, `StringIO`, and pathless `IO` inputs are sent with generic upload
246
+ # metadata. Use `OpenAI::FilePart` when you need to override the filename or
247
+ # content type.
248
+ markup: nil,
249
+
226
250
  # An additional image whose fully transparent areas (e.g. where alpha is zero)
227
251
  # indicate where `image` should be edited. If there are multiple images provided,
228
252
  # the mask will be applied on the first image. Must be a valid PNG file, less than
@@ -312,6 +336,7 @@ module OpenAI
312
336
  prompt: String,
313
337
  background: T.nilable(OpenAI::ImageEditParams::Background::OrSymbol),
314
338
  input_fidelity: T.nilable(OpenAI::ImageEditParams::InputFidelity::OrSymbol),
339
+ markup: OpenAI::Internal::FileInput,
315
340
  mask: OpenAI::Internal::FileInput,
316
341
  model: T.nilable(T.any(String, OpenAI::ImageModel::OrSymbol)),
317
342
  n: T.nilable(Integer),
@@ -332,12 +357,12 @@ module OpenAI
332
357
 
333
358
  # The image(s) to edit. Must be a supported image file or an array of images.
334
359
  #
335
- # For the GPT image models (`gpt-image-1`, `gpt-image-1-mini`, `gpt-image-1.5`,
336
- # `gpt-image-2`, `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
337
- # `gpt-image-2.5-sunburst-2026-09-08`, `gpt-image-2.5-flare`,
338
- # `gpt-image-2.5-flare-2026-09-08`, and `chatgpt-image-latest`), each image should
339
- # be a `png`, `webp`, or `jpg` file less than 50MB. You can provide up to 16
340
- # images.
360
+ # For the GPT image models (`gpt-image-1-mini`, `gpt-image-1.5`, `gpt-image-2`,
361
+ # `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
362
+ # `gpt-image-2.5-sunburst-2026-09-08`, `gpt-image-2.5-flare`, and
363
+ # `gpt-image-2.5-flare-2026-09-08`), each image should be a `png`, `webp`, or
364
+ # `jpg` file less than 50MB. You can provide up to 16 images.
365
+ # `chatgpt-image-latest` follows the same input constraints as GPT image models.
341
366
  module Image
342
367
  extend OpenAI::Internal::Type::Union
343
368
 
@@ -380,8 +405,8 @@ module OpenAI
380
405
 
381
406
  # Control how much effort the model will exert to match the style and features,
382
407
  # especially facial features, of input images. Supports `high` and `low` on
383
- # `gpt-image-1` and `gpt-image-1.5`; `gpt-image-1-mini` supports only `low`. For
384
- # `gpt-image-2`, omit this parameter. Defaults to `low` on supported models.
408
+ # `gpt-image-1.5`; `gpt-image-1-mini` supports only `low`. For `gpt-image-2`, omit
409
+ # this parameter. Defaults to `low` on supported models.
385
410
  module InputFidelity
386
411
  extend OpenAI::Internal::Type::Enum
387
412
 
@@ -39,6 +39,7 @@ module OpenAI
39
39
  OpenAI::Live::InfoEvent,
40
40
  OpenAI::Live::ForkServerEvent::TransportDtmfReceived,
41
41
  OpenAI::Live::ForkServerEvent::TransportDtmfSend,
42
+ OpenAI::Live::ForkServerEvent::TransportDtmfSent,
42
43
  OpenAI::Live::ForkServerEvent::TransportRinging,
43
44
  OpenAI::Live::ForkServerEvent::TransportAnswered,
44
45
  OpenAI::Live::ForkServerEvent::TransportFailed
@@ -171,6 +172,69 @@ module OpenAI
171
172
  sig { params(client_event_id: String).void }
172
173
  attr_writer :client_event_id
173
174
 
175
+ # Legacy SIP DTMF delivery notification retained for SDK compatibility and saved
176
+ # events. Current servers confirm delivery with transport.dtmf.sent;
177
+ # transport.dtmf.send is now the client command.
178
+ sig do
179
+ params(
180
+
181
+ event: String,
182
+
183
+ event_id: String,
184
+
185
+ client_event_id: String,
186
+
187
+ type: Symbol
188
+ )
189
+ .returns(T.attached_class)
190
+ end
191
+ def self.new(
192
+
193
+ event:,
194
+
195
+ event_id:,
196
+
197
+ # The event_id of the client command, when supplied.
198
+ client_event_id: nil,
199
+
200
+ type: :"transport.dtmf.send"
201
+ )
202
+ end
203
+
204
+ sig do
205
+ override.returns(
206
+ {event: String, event_id: String, type: Symbol, client_event_id: T.nilable(String)}
207
+ )
208
+ end
209
+ def to_hash
210
+ end
211
+
212
+ end
213
+
214
+ class TransportDtmfSent < OpenAI::Internal::Type::BaseModel
215
+ OrHash = T.type_alias do
216
+ T.any(
217
+ OpenAI::Live::ForkServerEvent::TransportDtmfSent,
218
+ OpenAI::Internal::AnyHash
219
+ )
220
+ end
221
+
222
+ sig { returns(String) }
223
+ attr_accessor :event
224
+
225
+ sig { returns(String) }
226
+ attr_accessor :event_id
227
+
228
+ sig { returns(Symbol) }
229
+ attr_accessor :type
230
+
231
+ # The event_id of the client command, when supplied.
232
+ sig { returns(T.nilable(String)) }
233
+ attr_reader :client_event_id
234
+
235
+ sig { params(client_event_id: String).void }
236
+ attr_writer :client_event_id
237
+
174
238
  # A SIP DTMF keypress successfully sent to the SIP trunk. Delivered only to
175
239
  # sideband observers; this is not a client command.
176
240
  sig do
@@ -195,7 +259,7 @@ module OpenAI
195
259
  # The event_id of the client command, when supplied.
196
260
  client_event_id: nil,
197
261
 
198
- type: :"transport.dtmf.send"
262
+ type: :"transport.dtmf.sent"
199
263
  )
200
264
  end
201
265
 
@@ -39,6 +39,7 @@ module OpenAI
39
39
  OpenAI::Live::InfoEvent,
40
40
  OpenAI::Live::ServerEvent::TransportDtmfReceived,
41
41
  OpenAI::Live::ServerEvent::TransportDtmfSend,
42
+ OpenAI::Live::ServerEvent::TransportDtmfSent,
42
43
  OpenAI::Live::ServerEvent::TransportRinging,
43
44
  OpenAI::Live::ServerEvent::TransportAnswered,
44
45
  OpenAI::Live::ServerEvent::TransportFailed
@@ -171,6 +172,69 @@ module OpenAI
171
172
  sig { params(client_event_id: String).void }
172
173
  attr_writer :client_event_id
173
174
 
175
+ # Legacy SIP DTMF delivery notification retained for SDK compatibility and saved
176
+ # events. Current servers confirm delivery with transport.dtmf.sent;
177
+ # transport.dtmf.send is now the client command.
178
+ sig do
179
+ params(
180
+
181
+ event: String,
182
+
183
+ event_id: String,
184
+
185
+ client_event_id: String,
186
+
187
+ type: Symbol
188
+ )
189
+ .returns(T.attached_class)
190
+ end
191
+ def self.new(
192
+
193
+ event:,
194
+
195
+ event_id:,
196
+
197
+ # The event_id of the client command, when supplied.
198
+ client_event_id: nil,
199
+
200
+ type: :"transport.dtmf.send"
201
+ )
202
+ end
203
+
204
+ sig do
205
+ override.returns(
206
+ {event: String, event_id: String, type: Symbol, client_event_id: T.nilable(String)}
207
+ )
208
+ end
209
+ def to_hash
210
+ end
211
+
212
+ end
213
+
214
+ class TransportDtmfSent < OpenAI::Internal::Type::BaseModel
215
+ OrHash = T.type_alias do
216
+ T.any(
217
+ OpenAI::Live::ServerEvent::TransportDtmfSent,
218
+ OpenAI::Internal::AnyHash
219
+ )
220
+ end
221
+
222
+ sig { returns(String) }
223
+ attr_accessor :event
224
+
225
+ sig { returns(String) }
226
+ attr_accessor :event_id
227
+
228
+ sig { returns(Symbol) }
229
+ attr_accessor :type
230
+
231
+ # The event_id of the client command, when supplied.
232
+ sig { returns(T.nilable(String)) }
233
+ attr_reader :client_event_id
234
+
235
+ sig { params(client_event_id: String).void }
236
+ attr_writer :client_event_id
237
+
174
238
  # A SIP DTMF keypress successfully sent to the SIP trunk. Delivered only to
175
239
  # sideband observers; this is not a client command.
176
240
  sig do
@@ -195,7 +259,7 @@ module OpenAI
195
259
  # The event_id of the client command, when supplied.
196
260
  client_event_id: nil,
197
261
 
198
- type: :"transport.dtmf.send"
262
+ type: :"transport.dtmf.sent"
199
263
  )
200
264
  end
201
265
 
@@ -16,6 +16,7 @@ module OpenAI
16
16
  OpenAI::Live::InputAudioMuteEvent,
17
17
  OpenAI::Live::InputAudioUnmuteEvent,
18
18
  OpenAI::Live::OutputAudioFixturePlayEvent,
19
+ OpenAI::Live::SidebandClientEvent::TransportDtmfSend,
19
20
  OpenAI::Live::InstructionsAppendEvent,
20
21
  OpenAI::Live::ThinkingAppendEvent,
21
22
  OpenAI::Live::CommentaryAppendEvent,
@@ -28,6 +29,65 @@ module OpenAI
28
29
  )
29
30
  end
30
31
 
32
+ class TransportDtmfSend < OpenAI::Internal::Type::BaseModel
33
+ OrHash = T.type_alias do
34
+ T.any(
35
+ OpenAI::Live::SidebandClientEvent::TransportDtmfSend,
36
+ OpenAI::Internal::AnyHash
37
+ )
38
+ end
39
+
40
+ # The DTMF key to send: one of `0`–`9`, `A`–`D`, `*`, or `#`.
41
+ sig { returns(String) }
42
+ attr_accessor :event
43
+
44
+ sig { returns(Symbol) }
45
+ attr_accessor :type
46
+
47
+ # Optional client identifier for correlating this command with a server event's
48
+ # client_event_id or error.client_event_id.
49
+ sig { returns(T.nilable(String)) }
50
+ attr_accessor :event_id
51
+
52
+ # Send one DTMF keypress to the SIP trunk through a Live sideband connection. This
53
+ # command is supported only for SIP calls. A successful send emits
54
+ # `transport.dtmf.sent` on sideband. If you provide `event_id`, the success
55
+ # notification includes it as `client_event_id`; a failure includes it as
56
+ # `error.client_event_id`. Send separate events for multiple keypresses.
57
+ sig do
58
+ params(
59
+
60
+ event: String,
61
+
62
+ event_id: T.nilable(String),
63
+
64
+ type: Symbol
65
+ )
66
+ .returns(T.attached_class)
67
+ end
68
+ def self.new(
69
+
70
+ # The DTMF key to send: one of `0`–`9`, `A`–`D`, `*`, or `#`.
71
+ event:,
72
+
73
+ # Optional client identifier for correlating this command with a server event's
74
+ # client_event_id or error.client_event_id.
75
+ event_id: nil,
76
+
77
+ type: :"transport.dtmf.send"
78
+ )
79
+ end
80
+
81
+ sig do
82
+ override.returns(
83
+ {event: String, type: Symbol, event_id: T.nilable(String)}
84
+ )
85
+ end
86
+ def to_hash
87
+ end
88
+
89
+ end
90
+
31
91
  sig { override.returns(T::Array[OpenAI::Live::SidebandClientEvent::Variants]) }
32
92
  def self.variants
33
93
  end