openai 0.104.0 → 0.106.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 (71) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +33 -0
  3. data/README.md +1 -1
  4. data/lib/openai/models/admin/organization/external_storage_configuration.rb +1 -0
  5. data/lib/openai/models/beta/agent_create_params.rb +3 -0
  6. data/lib/openai/models/beta/agent_update_params.rb +3 -0
  7. data/lib/openai/models/beta/agents/session_create_params.rb +3 -0
  8. data/lib/openai/models/beta/agents/session_update_params.rb +3 -0
  9. data/lib/openai/models/beta/assistant_update_params.rb +12 -0
  10. data/lib/openai/models/beta/beta_response.rb +12 -0
  11. data/lib/openai/models/beta/beta_responses_client_event.rb +12 -0
  12. data/lib/openai/models/beta/response_compact_params.rb +12 -0
  13. data/lib/openai/models/beta/response_create_params.rb +12 -0
  14. data/lib/openai/models/chat_model.rb +12 -0
  15. data/lib/openai/models/decision_create_params.rb +112 -1
  16. data/lib/openai/models/decision_input_image.rb +14 -1
  17. data/lib/openai/models/decision_input_text.rb +15 -1
  18. data/lib/openai/models/decision_prompt_cache_breakpoint.rb +21 -0
  19. data/lib/openai/models/image_edit_completed_event.rb +14 -1
  20. data/lib/openai/models/image_edit_params.rb +28 -5
  21. data/lib/openai/models/image_gen_completed_event.rb +14 -1
  22. data/lib/openai/models/image_generate_params.rb +28 -5
  23. data/lib/openai/models/images_response.rb +14 -1
  24. data/lib/openai/models/live/sideband_server_event.rb +243 -3
  25. data/lib/openai/models/responses/response_compact_params.rb +12 -0
  26. data/lib/openai/models.rb +2 -0
  27. data/lib/openai/resources/beta/responses.rb +19 -0
  28. data/lib/openai/resources/decisions.rb +15 -1
  29. data/lib/openai/resources/images.rb +50 -12
  30. data/lib/openai/version.rb +1 -1
  31. data/lib/openai.rb +1 -0
  32. data/rbi/openai/models/admin/organization/external_storage_configuration.rbi +1 -0
  33. data/rbi/openai/models/beta/agent_create_params.rbi +3 -0
  34. data/rbi/openai/models/beta/agent_update_params.rbi +3 -0
  35. data/rbi/openai/models/beta/agents/session_create_params.rbi +3 -0
  36. data/rbi/openai/models/beta/agents/session_update_params.rbi +3 -0
  37. data/rbi/openai/models/decision_create_params.rbi +146 -0
  38. data/rbi/openai/models/decision_input_image.rbi +22 -1
  39. data/rbi/openai/models/decision_input_text.rbi +21 -1
  40. data/rbi/openai/models/decision_prompt_cache_breakpoint.rbi +48 -0
  41. data/rbi/openai/models/image_edit_completed_event.rbi +15 -1
  42. data/rbi/openai/models/image_edit_params.rbi +26 -4
  43. data/rbi/openai/models/image_gen_completed_event.rbi +15 -1
  44. data/rbi/openai/models/image_generate_params.rbi +26 -4
  45. data/rbi/openai/models/images_response.rbi +14 -0
  46. data/rbi/openai/models/live/output_audio_delta_event.rbi +1 -1
  47. data/rbi/openai/models/live/sideband_server_event.rbi +406 -3
  48. data/rbi/openai/models.rbi +2 -0
  49. data/rbi/openai/resources/beta/responses.rbi +17 -0
  50. data/rbi/openai/resources/decisions.rbi +14 -0
  51. data/rbi/openai/resources/images.rbi +44 -8
  52. data/sig/openai/models/admin/organization/external_storage_configuration.rbs +2 -1
  53. data/sig/openai/models/beta/agent_create_params.rbs +5 -1
  54. data/sig/openai/models/beta/agent_update_params.rbs +5 -1
  55. data/sig/openai/models/beta/agents/session_create_params.rbs +5 -1
  56. data/sig/openai/models/beta/agents/session_update_params.rbs +5 -1
  57. data/sig/openai/models/decision_create_params.rbs +106 -0
  58. data/sig/openai/models/decision_input_image.rbs +18 -2
  59. data/sig/openai/models/decision_input_text.rbs +29 -3
  60. data/sig/openai/models/decision_prompt_cache_breakpoint.rbs +16 -0
  61. data/sig/openai/models/image_edit_completed_event.rbs +14 -2
  62. data/sig/openai/models/image_edit_params.rbs +27 -6
  63. data/sig/openai/models/image_gen_completed_event.rbs +14 -2
  64. data/sig/openai/models/image_generate_params.rbs +27 -6
  65. data/sig/openai/models/images_response.rbs +12 -0
  66. data/sig/openai/models/live/sideband_server_event.rbs +225 -0
  67. data/sig/openai/models.rbs +2 -0
  68. data/sig/openai/resources/beta/responses.rbs +7 -0
  69. data/sig/openai/resources/decisions.rbs +3 -0
  70. data/sig/openai/resources/images.rbs +4 -0
  71. metadata +4 -1
@@ -52,7 +52,15 @@ module OpenAI
52
52
  # @return [OpenAI::Models::ImageGenCompletedEvent::Usage]
53
53
  required :usage, -> { OpenAI::ImageGenCompletedEvent::Usage }
54
54
 
55
- # @!method initialize(b64_json:, background:, created_at:, output_format:, quality:, size:, usage:, type: :"image_generation.completed")
55
+ # @!attribute safety_identifier
56
+ # The effective safety identifier used for safety monitoring and abuse detection.
57
+ # This is the non-empty `safety_identifier` from the request, or the deprecated
58
+ # `user` value when `safety_identifier` is omitted, null, or empty.
59
+ #
60
+ # @return [String, nil]
61
+ optional :safety_identifier, String, nil?: true
62
+
63
+ # @!method initialize(b64_json:, background:, created_at:, output_format:, quality:, size:, usage:, safety_identifier: nil, type: :"image_generation.completed")
56
64
  # Emitted when image generation has completed and the final image is available.
57
65
  #
58
66
  # @param b64_json [String]
@@ -77,6 +85,11 @@ module OpenAI
77
85
  # For the GPT image models only, the token usage information for the image
78
86
  # generation.
79
87
  #
88
+ # @param safety_identifier [String, nil]
89
+ # The effective safety identifier used for safety monitoring and abuse detection.
90
+ # This is the non-empty `safety_identifier` from the request, or the deprecated
91
+ # `user` value when `safety_identifier` is omitted, null, or empty.
92
+ #
80
93
  # @param type [Symbol, :"image_generation.completed"]
81
94
  # The type of the event. Always `image_generation.completed`.
82
95
 
@@ -101,6 +101,17 @@ module OpenAI
101
101
  # @return [Symbol, OpenAI::Models::ImageGenerateParams::ResponseFormat, nil]
102
102
  optional :response_format, enum: -> { OpenAI::ImageGenerateParams::ResponseFormat }, nil?: true
103
103
 
104
+ # @!attribute safety_identifier
105
+ # A stable identifier for an end user in your organization, used for safety
106
+ # monitoring and abuse detection. Hash a username or email address to avoid
107
+ # sending identifying information. A non-empty value takes precedence over the
108
+ # deprecated `user` parameter. If omitted, null, or empty, the API uses `user`
109
+ # when available.
110
+ # [Learn more](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers).
111
+ #
112
+ # @return [String, nil]
113
+ optional :safety_identifier, String, nil?: true
114
+
104
115
  # @!attribute size
105
116
  # The size of the generated images. For `gpt-image-2`, `gpt-image-2-2026-04-21`,
106
117
  # `gpt-image-2.5-sunburst`, `gpt-image-2.5-sunburst-2026-09-08`,
@@ -126,14 +137,17 @@ module OpenAI
126
137
  optional :style, enum: -> { OpenAI::ImageGenerateParams::Style }, nil?: true
127
138
 
128
139
  # @!attribute user
129
- # A unique identifier representing your end-user, which can help OpenAI to monitor
130
- # and detect abuse.
140
+ # @deprecated
141
+ #
142
+ # Deprecated: use `safety_identifier` instead. This parameter remains accepted for
143
+ # backward compatibility and is used when `safety_identifier` is omitted, null, or
144
+ # empty.
131
145
  # [Learn more](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers).
132
146
  #
133
147
  # @return [String, nil]
134
148
  optional :user, String
135
149
 
136
- # @!method initialize(prompt:, background: nil, model: nil, moderation: nil, n: nil, output_compression: nil, output_format: nil, partial_images: nil, quality: nil, response_format: nil, size: nil, style: nil, user: nil, request_options: {})
150
+ # @!method initialize(prompt:, background: nil, model: nil, moderation: nil, n: nil, output_compression: nil, output_format: nil, partial_images: nil, quality: nil, response_format: nil, safety_identifier: nil, size: nil, style: nil, user: nil, request_options: {})
137
151
  # @param prompt [String]
138
152
  # A text description of the desired image(s). The maximum length is 32000
139
153
  # characters.
@@ -194,6 +208,14 @@ module OpenAI
194
208
  # Legacy response format parameter for retired image models. Unsupported for GPT
195
209
  # image models, which always return base64-encoded images.
196
210
  #
211
+ # @param safety_identifier [String, nil]
212
+ # A stable identifier for an end user in your organization, used for safety
213
+ # monitoring and abuse detection. Hash a username or email address to avoid
214
+ # sending identifying information. A non-empty value takes precedence over the
215
+ # deprecated `user` parameter. If omitted, null, or empty, the API uses `user`
216
+ # when available.
217
+ # [Learn more](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers).
218
+ #
197
219
  # @param size [String, Symbol, OpenAI::Models::ImageGenerateParams::Size, nil]
198
220
  # The size of the generated images. For `gpt-image-2`, `gpt-image-2-2026-04-21`,
199
221
  # `gpt-image-2.5-sunburst`, `gpt-image-2.5-sunburst-2026-09-08`,
@@ -211,8 +233,9 @@ module OpenAI
211
233
  # models; describe the desired style in the prompt instead.
212
234
  #
213
235
  # @param user [String]
214
- # A unique identifier representing your end-user, which can help OpenAI to monitor
215
- # and detect abuse.
236
+ # Deprecated: use `safety_identifier` instead. This parameter remains accepted for
237
+ # backward compatibility and is used when `safety_identifier` is omitted, null, or
238
+ # empty.
216
239
  # [Learn more](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers).
217
240
  #
218
241
  # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}]
@@ -36,6 +36,14 @@ module OpenAI
36
36
  # @return [Symbol, OpenAI::Models::ImagesResponse::Quality, nil]
37
37
  optional :quality, enum: -> { OpenAI::ImagesResponse::Quality }
38
38
 
39
+ # @!attribute safety_identifier
40
+ # The effective safety identifier used for safety monitoring and abuse detection.
41
+ # This is the non-empty `safety_identifier` from the request, or the deprecated
42
+ # `user` value when `safety_identifier` is omitted, null, or empty.
43
+ #
44
+ # @return [String, nil]
45
+ optional :safety_identifier, String, nil?: true
46
+
39
47
  # @!attribute size
40
48
  # The image dimensions as a `WIDTHxHEIGHT` string, for example `1536x864`.
41
49
  #
@@ -48,7 +56,7 @@ module OpenAI
48
56
  # @return [OpenAI::Models::ImagesResponse::Usage, nil]
49
57
  optional :usage, -> { OpenAI::ImagesResponse::Usage }
50
58
 
51
- # @!method initialize(created:, background: nil, data: nil, output_format: nil, quality: nil, size: nil, usage: nil)
59
+ # @!method initialize(created:, background: nil, data: nil, output_format: nil, quality: nil, safety_identifier: nil, size: nil, usage: nil)
52
60
  # The response from the image generation endpoint.
53
61
  #
54
62
  # @param created [Integer]
@@ -68,6 +76,11 @@ module OpenAI
68
76
  # The quality of the image generated. One of `low`, `medium`, `high`, `xhigh`, or
69
77
  # `max`.
70
78
  #
79
+ # @param safety_identifier [String, nil]
80
+ # The effective safety identifier used for safety monitoring and abuse detection.
81
+ # This is the non-empty `safety_identifier` from the request, or the deprecated
82
+ # `user` value when `safety_identifier` is omitted, null, or empty.
83
+ #
71
84
  # @param size [String, Symbol, OpenAI::Models::ImagesResponse::Size]
72
85
  # The image dimensions as a `WIDTHxHEIGHT` string, for example `1536x864`.
73
86
  #
@@ -3,8 +3,8 @@
3
3
  module OpenAI
4
4
  module Models
5
5
  module Live
6
- # Server events received by an attached Live sideband WebSocket. Audio deltas are
7
- # delivered over the primary connection.
6
+ # Server events received by an attached Live sideband WebSocket, including
7
+ # reflected input and output audio and transport notifications.
8
8
  module SidebandServerEvent
9
9
  extend OpenAI::Internal::Type::Union
10
10
 
@@ -70,8 +70,248 @@ module OpenAI
70
70
  # An informational notice about the Live session, such as the event permissions applied to a frontend data channel.
71
71
  variant :info, -> { OpenAI::Live::InfoEvent }
72
72
 
73
+ # Input audio received from the primary transport and reflected to a Live sideband connection before model-input muting.
74
+ variant :"session.input_audio.append", -> { OpenAI::Live::SidebandServerEvent::SessionInputAudioAppend }
75
+
76
+ # An audio chunk generated by the Live model. Decode and play primary WebSocket chunks in delivery order using the configured session audio format. Sideband connections receive reflected output audio with timestamps.
77
+ variant :"session.output_audio.delta", -> { OpenAI::Live::OutputAudioDeltaEvent }
78
+
79
+ # A SIP DTMF keypress received from the caller. Delivered only to sideband observers.
80
+ variant :"transport.dtmf.received", -> { OpenAI::Live::SidebandServerEvent::TransportDtmfReceived }
81
+
82
+ # A SIP DTMF keypress successfully sent to the SIP trunk. Delivered only to sideband observers; this is not a client command.
83
+ variant :"transport.dtmf.send", -> { OpenAI::Live::SidebandServerEvent::TransportDtmfSend }
84
+
85
+ # The outbound SIP provider leg is ringing or providing early media. Delivered only to sideband observers.
86
+ variant :"transport.ringing", -> { OpenAI::Live::SidebandServerEvent::TransportRinging }
87
+
88
+ # The outbound SIP provider leg answered and media is established. Delivered only to sideband observers.
89
+ variant :"transport.answered", -> { OpenAI::Live::SidebandServerEvent::TransportAnswered }
90
+
91
+ # An asynchronous outbound SIP setup failure. Delivered only to sideband observers.
92
+ variant :"transport.failed", -> { OpenAI::Live::SidebandServerEvent::TransportFailed }
93
+
94
+ class SessionInputAudioAppend < OpenAI::Internal::Type::BaseModel
95
+ # @!attribute audio
96
+ # Base64-encoded raw mono PCM16LE at 24 kHz received from the primary transport,
97
+ # reflected to the sideband before model-input muting. This server event uses the
98
+ # same audio key as the client command, but is not an acknowledgment of it.
99
+ #
100
+ # @return [String]
101
+ required :audio, String
102
+
103
+ # @!attribute type
104
+ # The event type, always `session.input_audio.append`.
105
+ #
106
+ # @return [Symbol, :"session.input_audio.append"]
107
+ required :type, const: :"session.input_audio.append"
108
+
109
+ # @!method initialize(audio:, type: :"session.input_audio.append")
110
+ # Input audio received from the primary transport and reflected to a Live sideband
111
+ # connection before model-input muting.
112
+ #
113
+ # @param audio [String]
114
+ # Base64-encoded raw mono PCM16LE at 24 kHz received from the primary transport,
115
+ # reflected to the sideband before model-input muting. This server event uses the
116
+ # same audio key as the client command, but is not an acknowledgment of it.
117
+ #
118
+ # @param type [Symbol, :"session.input_audio.append"]
119
+ # The event type, always `session.input_audio.append`.
120
+ end
121
+
122
+ class TransportDtmfReceived < OpenAI::Internal::Type::BaseModel
123
+ # @!attribute event
124
+ #
125
+ # @return [String]
126
+ required :event, String
127
+
128
+ # @!attribute event_id
129
+ #
130
+ # @return [String]
131
+ required :event_id, String
132
+
133
+ # @!attribute type
134
+ #
135
+ # @return [Symbol, :"transport.dtmf.received"]
136
+ required :type, const: :"transport.dtmf.received"
137
+
138
+ # @!method initialize(event:, event_id:, type: :"transport.dtmf.received")
139
+ # A SIP DTMF keypress received from the caller. Delivered only to sideband
140
+ # observers.
141
+ #
142
+ # @param event [String]
143
+ # @param event_id [String]
144
+ # @param type [Symbol, :"transport.dtmf.received"]
145
+ end
146
+
147
+ class TransportDtmfSend < OpenAI::Internal::Type::BaseModel
148
+ # @!attribute event
149
+ #
150
+ # @return [String]
151
+ required :event, String
152
+
153
+ # @!attribute event_id
154
+ #
155
+ # @return [String]
156
+ required :event_id, String
157
+
158
+ # @!attribute type
159
+ #
160
+ # @return [Symbol, :"transport.dtmf.send"]
161
+ required :type, const: :"transport.dtmf.send"
162
+
163
+ # @!attribute client_event_id
164
+ # The event_id of the client command, when supplied.
165
+ #
166
+ # @return [String, nil]
167
+ optional :client_event_id, String
168
+
169
+ # @!method initialize(event:, event_id:, client_event_id: nil, type: :"transport.dtmf.send")
170
+ # A SIP DTMF keypress successfully sent to the SIP trunk. Delivered only to
171
+ # sideband observers; this is not a client command.
172
+ #
173
+ # @param event [String]
174
+ #
175
+ # @param event_id [String]
176
+ #
177
+ # @param client_event_id [String]
178
+ # The event_id of the client command, when supplied.
179
+ #
180
+ # @param type [Symbol, :"transport.dtmf.send"]
181
+ end
182
+
183
+ class TransportRinging < OpenAI::Internal::Type::BaseModel
184
+ # @!attribute event_id
185
+ #
186
+ # @return [String]
187
+ required :event_id, String
188
+
189
+ # @!attribute session_id
190
+ # The canonical Live session ID.
191
+ #
192
+ # @return [String]
193
+ required :session_id, String
194
+
195
+ # @!attribute type
196
+ #
197
+ # @return [Symbol, :"transport.ringing"]
198
+ required :type, const: :"transport.ringing"
199
+
200
+ # @!method initialize(event_id:, session_id:, type: :"transport.ringing")
201
+ # The outbound SIP provider leg is ringing or providing early media. Delivered
202
+ # only to sideband observers.
203
+ #
204
+ # @param event_id [String]
205
+ #
206
+ # @param session_id [String]
207
+ # The canonical Live session ID.
208
+ #
209
+ # @param type [Symbol, :"transport.ringing"]
210
+ end
211
+
212
+ class TransportAnswered < OpenAI::Internal::Type::BaseModel
213
+ # @!attribute event_id
214
+ #
215
+ # @return [String]
216
+ required :event_id, String
217
+
218
+ # @!attribute session_id
219
+ # The canonical Live session ID.
220
+ #
221
+ # @return [String]
222
+ required :session_id, String
223
+
224
+ # @!attribute type
225
+ #
226
+ # @return [Symbol, :"transport.answered"]
227
+ required :type, const: :"transport.answered"
228
+
229
+ # @!method initialize(event_id:, session_id:, type: :"transport.answered")
230
+ # The outbound SIP provider leg answered and media is established. Delivered only
231
+ # to sideband observers.
232
+ #
233
+ # @param event_id [String]
234
+ #
235
+ # @param session_id [String]
236
+ # The canonical Live session ID.
237
+ #
238
+ # @param type [Symbol, :"transport.answered"]
239
+ end
240
+
241
+ class TransportFailed < OpenAI::Internal::Type::BaseModel
242
+ # @!attribute error
243
+ #
244
+ # @return [OpenAI::Models::Live::SidebandServerEvent::TransportFailed::Error]
245
+ required :error, -> { OpenAI::Live::SidebandServerEvent::TransportFailed::Error }
246
+
247
+ # @!attribute event_id
248
+ #
249
+ # @return [String]
250
+ required :event_id, String
251
+
252
+ # @!attribute session_id
253
+ # The canonical Live session ID.
254
+ #
255
+ # @return [String]
256
+ required :session_id, String
257
+
258
+ # @!attribute type
259
+ #
260
+ # @return [Symbol, :"transport.failed"]
261
+ required :type, const: :"transport.failed"
262
+
263
+ # @!method initialize(error:, event_id:, session_id:, type: :"transport.failed")
264
+ # An asynchronous outbound SIP setup failure. Delivered only to sideband
265
+ # observers.
266
+ #
267
+ # @param error [OpenAI::Models::Live::SidebandServerEvent::TransportFailed::Error]
268
+ #
269
+ # @param event_id [String]
270
+ #
271
+ # @param session_id [String]
272
+ # The canonical Live session ID.
273
+ #
274
+ # @param type [Symbol, :"transport.failed"]
275
+
276
+ # @see OpenAI::Models::Live::SidebandServerEvent::TransportFailed#error
277
+ class Error < OpenAI::Internal::Type::BaseModel
278
+ # @!attribute code
279
+ # The call setup failure code.
280
+ #
281
+ # @return [String]
282
+ required :code, String
283
+
284
+ # @!attribute message
285
+ #
286
+ # @return [String]
287
+ required :message, String
288
+
289
+ # @!attribute type
290
+ #
291
+ # @return [Symbol, :call_error]
292
+ required :type, const: :call_error
293
+
294
+ # @!attribute param
295
+ # The parameter related to the error, if any. Empty when no parameter applies.
296
+ #
297
+ # @return [String, nil]
298
+ optional :param, String
299
+
300
+ # @!method initialize(code:, message:, param: nil, type: :call_error)
301
+ # @param code [String]
302
+ # The call setup failure code.
303
+ #
304
+ # @param message [String]
305
+ #
306
+ # @param param [String]
307
+ # The parameter related to the error, if any. Empty when no parameter applies.
308
+ #
309
+ # @param type [Symbol, :call_error]
310
+ end
311
+ end
312
+
73
313
  # @!method self.variants
74
- # @return [Array(OpenAI::Models::Live::SessionStartedEvent, OpenAI::Models::Live::SessionUpdatedEvent, OpenAI::Models::Live::InputAudioMutedEvent, OpenAI::Models::Live::InputAudioUnmutedEvent, OpenAI::Models::Live::OutputAudioFixturePlayingEvent, OpenAI::Models::Live::OutputAudioFixturePlayedEvent, OpenAI::Models::Live::InstructionsAppendedEvent, OpenAI::Models::Live::ThinkingAppendedEvent, OpenAI::Models::Live::CommentaryAppendedEvent, OpenAI::Models::Live::InputTranscriptDeltaEvent, OpenAI::Models::Live::OutputTranscriptDeltaEvent, OpenAI::Models::Live::DelegationCreatedEvent, OpenAI::Models::Live::DecisionEvent, OpenAI::Models::Live::DecisionItemCreatedEvent, OpenAI::Models::Live::DecisionItemDeletedEvent, OpenAI::Models::Live::ResponseEvent, OpenAI::Models::Live::SessionUsageUpdatedEvent, OpenAI::Models::Live::SessionClosedEvent, OpenAI::Models::Live::ErrorEvent, OpenAI::Models::Live::InfoEvent)]
314
+ # @return [Array(OpenAI::Models::Live::SessionStartedEvent, OpenAI::Models::Live::SessionUpdatedEvent, OpenAI::Models::Live::InputAudioMutedEvent, OpenAI::Models::Live::InputAudioUnmutedEvent, OpenAI::Models::Live::OutputAudioFixturePlayingEvent, OpenAI::Models::Live::OutputAudioFixturePlayedEvent, OpenAI::Models::Live::InstructionsAppendedEvent, OpenAI::Models::Live::ThinkingAppendedEvent, OpenAI::Models::Live::CommentaryAppendedEvent, OpenAI::Models::Live::InputTranscriptDeltaEvent, OpenAI::Models::Live::OutputTranscriptDeltaEvent, OpenAI::Models::Live::DelegationCreatedEvent, OpenAI::Models::Live::DecisionEvent, OpenAI::Models::Live::DecisionItemCreatedEvent, OpenAI::Models::Live::DecisionItemDeletedEvent, OpenAI::Models::Live::ResponseEvent, OpenAI::Models::Live::SessionUsageUpdatedEvent, OpenAI::Models::Live::SessionClosedEvent, OpenAI::Models::Live::ErrorEvent, OpenAI::Models::Live::InfoEvent, OpenAI::Models::Live::SidebandServerEvent::SessionInputAudioAppend, OpenAI::Models::Live::OutputAudioDeltaEvent, OpenAI::Models::Live::SidebandServerEvent::TransportDtmfReceived, OpenAI::Models::Live::SidebandServerEvent::TransportDtmfSend, OpenAI::Models::Live::SidebandServerEvent::TransportRinging, OpenAI::Models::Live::SidebandServerEvent::TransportAnswered, OpenAI::Models::Live::SidebandServerEvent::TransportFailed)]
75
315
  end
76
316
  end
77
317
  end
@@ -486,7 +486,13 @@ module OpenAI
486
486
  # https://developers.openai.com/api/docs/deprecations for details and recommended
487
487
  # replacements.
488
488
  GPT_5_CHAT_LATEST = :"gpt-5-chat-latest"
489
+ # @deprecated Announced shutdown date: 2027-01-14. See
490
+ # https://developers.openai.com/api/docs/deprecations for details and recommended
491
+ # replacements.
489
492
  GPT_4_1 = :"gpt-4.1"
493
+ # @deprecated Announced shutdown date: 2027-01-14. See
494
+ # https://developers.openai.com/api/docs/deprecations for details and recommended
495
+ # replacements.
490
496
  GPT_4_1_MINI = :"gpt-4.1-mini"
491
497
  # @deprecated Announced shutdown date: 2026-10-23. See
492
498
  # https://developers.openai.com/api/docs/deprecations for details and recommended
@@ -552,6 +558,9 @@ module OpenAI
552
558
  # https://developers.openai.com/api/docs/deprecations for details and recommended
553
559
  # replacements.
554
560
  O1_MINI_2024_09_12 = :"o1-mini-2024-09-12"
561
+ # @deprecated Announced shutdown date: 2027-01-14. See
562
+ # https://developers.openai.com/api/docs/deprecations for details and recommended
563
+ # replacements.
555
564
  GPT_4O = :"gpt-4o"
556
565
  # @deprecated Announced shutdown date: 2027-01-14. See
557
566
  # https://developers.openai.com/api/docs/deprecations for details and recommended
@@ -621,6 +630,9 @@ module OpenAI
621
630
  # https://developers.openai.com/api/docs/deprecations for details and recommended
622
631
  # replacements.
623
632
  CODEX_MINI_LATEST = :"codex-mini-latest"
633
+ # @deprecated Announced shutdown date: 2027-01-14. See
634
+ # https://developers.openai.com/api/docs/deprecations for details and recommended
635
+ # replacements.
624
636
  GPT_4O_MINI = :"gpt-4o-mini"
625
637
  # @deprecated Announced shutdown date: 2027-01-14. See
626
638
  # https://developers.openai.com/api/docs/deprecations for details and recommended
data/lib/openai/models.rb CHANGED
@@ -125,6 +125,8 @@ module OpenAI
125
125
 
126
126
  DecisionInputText = OpenAI::Models::DecisionInputText
127
127
 
128
+ DecisionPromptCacheBreakpoint = OpenAI::Models::DecisionPromptCacheBreakpoint
129
+
128
130
  DeletedSkill = OpenAI::Models::DeletedSkill
129
131
 
130
132
  Embedding = OpenAI::Models::Embedding
@@ -1,10 +1,29 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative "../../helpers/websocket/resource"
4
+
3
5
  module OpenAI
4
6
  module Resources
5
7
  class Beta
6
8
  # Create and manage model responses.
7
9
  class Responses
10
+ include OpenAI::WebSocket::Resource
11
+
12
+ # @api private
13
+ def __websocket_request(query: {})
14
+ {method: :get, path: "responses", query: query, security: {bearer_auth: true}}
15
+ end
16
+
17
+ # @api private
18
+ def __websocket_client_event
19
+ OpenAI::Models::Beta::BetaResponsesClientEvent
20
+ end
21
+
22
+ # @api private
23
+ def __websocket_server_event
24
+ OpenAI::Models::Beta::BetaResponsesServerEvent
25
+ end
26
+
8
27
  # Create and manage model responses.
9
28
  # @return [OpenAI::Resources::Beta::Responses::InputItems]
10
29
  attr_reader :input_items
@@ -6,7 +6,7 @@ module OpenAI
6
6
  # Use this endpoint to quickly answer classification or scoring questions about
7
7
  # some input. You can ask multiple questions in one request.
8
8
  #
9
- # @overload create(input:, model:, questions:, safety_identifier: nil, request_options: {})
9
+ # @overload create(input:, model:, questions:, prompt_cache_key: nil, prompt_cache_options: nil, safety_identifier: nil, request_options: {})
10
10
  #
11
11
  # @param input [String, Array<OpenAI::Models::DecisionInputMessage>]
12
12
  # The text or images to evaluate for every question. Provide a text string or user
@@ -21,6 +21,20 @@ module OpenAI
21
21
  # Ask 1–200 questions about the input. Each question can be a predicate, choice,
22
22
  # or score. Answers come back in the same order.
23
23
  #
24
+ # @param prompt_cache_key [String, nil]
25
+ # Partition prompt cache reuse by caller-provided key.
26
+ #
27
+ # @param prompt_cache_options [OpenAI::Models::DecisionCreateParams::PromptCacheOptions, nil]
28
+ # Options for prompt caching. Supported for `gpt-5.6` and later models. By
29
+ # default, OpenAI automatically chooses one implicit cache breakpoint. You can add
30
+ # explicit breakpoints to content blocks with `prompt_cache_breakpoint`. Each
31
+ # request can write up to four breakpoints. For cache matching, OpenAI considers
32
+ # up to the latest 80 breakpoints in the conversation, without a content-block
33
+ # lookback limit. Set `mode` to `explicit` to disable the implicit breakpoint. The
34
+ # `ttl` defaults to `30m`, which is currently the only supported value. See the
35
+ # [prompt caching guide](https://developers.openai.com/api/docs/guides/prompt-caching)
36
+ # for current details.
37
+ #
24
38
  # @param safety_identifier [String, nil]
25
39
  # Opaque caller-provided end-user identifier, scoped by the verified org. Match
26
40
  # Responses' limit; this is never the authenticated user identity.
@@ -72,7 +72,7 @@ module OpenAI
72
72
  # metadata. Use `OpenAI::FilePart` when you need to override the filename or
73
73
  # content type.
74
74
  #
75
- # @overload edit(image:, prompt:, background: nil, input_fidelity: nil, mask: nil, model: nil, n: nil, output_compression: nil, output_format: nil, partial_images: nil, quality: nil, response_format: nil, size: nil, user: nil, request_options: {})
75
+ # @overload edit(image:, prompt:, background: nil, input_fidelity: nil, mask: nil, model: nil, n: nil, output_compression: nil, output_format: nil, partial_images: nil, quality: nil, response_format: nil, safety_identifier: nil, size: nil, user: nil, request_options: {})
76
76
  #
77
77
  # @param image [Pathname, StringIO, IO, String, OpenAI::FilePart, Array<Pathname, StringIO, IO, String, OpenAI::FilePart>]
78
78
  # The image(s) to edit. Must be a supported image file or an array of images.
@@ -157,6 +157,14 @@ module OpenAI
157
157
  # Legacy response format parameter for retired image models. Unsupported for GPT
158
158
  # image models, which always return base64-encoded images.
159
159
  #
160
+ # @param safety_identifier [String, nil]
161
+ # A stable identifier for an end user in your organization, used for safety
162
+ # monitoring and abuse detection. Hash a username or email address to avoid
163
+ # sending identifying information. A non-empty value takes precedence over the
164
+ # deprecated `user` parameter. If omitted, null, or empty, the API uses `user`
165
+ # when available.
166
+ # [Learn more](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers).
167
+ #
160
168
  # @param size [String, Symbol, OpenAI::Models::ImageEditParams::Size, nil]
161
169
  # The size of the generated images. Defaults to `auto`. For `gpt-image-2`,
162
170
  # `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
@@ -171,8 +179,9 @@ module OpenAI
171
179
  # models that allow automatic sizing.
172
180
  #
173
181
  # @param user [String]
174
- # A unique identifier representing your end-user, which can help OpenAI to monitor
175
- # and detect abuse.
182
+ # Deprecated: use `safety_identifier` instead. This parameter remains accepted for
183
+ # backward compatibility and is used when `safety_identifier` is omitted, null, or
184
+ # empty.
176
185
  # [Learn more](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers).
177
186
  #
178
187
  # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
@@ -187,6 +196,7 @@ module OpenAI
187
196
  raise ArgumentError.new(message)
188
197
  end
189
198
 
199
+ parsed.delete(:safety_identifier) if parsed[:safety_identifier].nil?
190
200
  @client.request(
191
201
  method: :post,
192
202
  path: "images/edits",
@@ -207,7 +217,7 @@ module OpenAI
207
217
  # metadata. Use `OpenAI::FilePart` when you need to override the filename or
208
218
  # content type.
209
219
  #
210
- # @overload edit_stream_raw(image:, prompt:, background: nil, input_fidelity: nil, mask: nil, model: nil, n: nil, output_compression: nil, output_format: nil, partial_images: nil, quality: nil, response_format: nil, size: nil, user: nil, request_options: {})
220
+ # @overload edit_stream_raw(image:, prompt:, background: nil, input_fidelity: nil, mask: nil, model: nil, n: nil, output_compression: nil, output_format: nil, partial_images: nil, quality: nil, response_format: nil, safety_identifier: nil, size: nil, user: nil, request_options: {})
211
221
  #
212
222
  # @param image [Pathname, StringIO, IO, String, OpenAI::FilePart, Array<Pathname, StringIO, IO, String, OpenAI::FilePart>]
213
223
  # The image(s) to edit. Must be a supported image file or an array of images.
@@ -292,6 +302,14 @@ module OpenAI
292
302
  # Legacy response format parameter for retired image models. Unsupported for GPT
293
303
  # image models, which always return base64-encoded images.
294
304
  #
305
+ # @param safety_identifier [String, nil]
306
+ # A stable identifier for an end user in your organization, used for safety
307
+ # monitoring and abuse detection. Hash a username or email address to avoid
308
+ # sending identifying information. A non-empty value takes precedence over the
309
+ # deprecated `user` parameter. If omitted, null, or empty, the API uses `user`
310
+ # when available.
311
+ # [Learn more](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers).
312
+ #
295
313
  # @param size [String, Symbol, OpenAI::Models::ImageEditParams::Size, nil]
296
314
  # The size of the generated images. Defaults to `auto`. For `gpt-image-2`,
297
315
  # `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
@@ -306,8 +324,9 @@ module OpenAI
306
324
  # models that allow automatic sizing.
307
325
  #
308
326
  # @param user [String]
309
- # A unique identifier representing your end-user, which can help OpenAI to monitor
310
- # and detect abuse.
327
+ # Deprecated: use `safety_identifier` instead. This parameter remains accepted for
328
+ # backward compatibility and is used when `safety_identifier` is omitted, null, or
329
+ # empty.
311
330
  # [Learn more](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers).
312
331
  #
313
332
  # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
@@ -323,6 +342,7 @@ module OpenAI
323
342
  end
324
343
 
325
344
  parsed.store(:stream, true)
345
+ parsed.delete(:safety_identifier) if parsed[:safety_identifier].nil?
326
346
  @client.request(
327
347
  method: :post,
328
348
  path: "images/edits",
@@ -344,7 +364,7 @@ module OpenAI
344
364
  # Creates an image given a prompt using a GPT Image model.
345
365
  # [Learn more](https://developers.openai.com/api/docs/guides/images-vision).
346
366
  #
347
- # @overload generate(prompt:, background: nil, model: nil, moderation: nil, n: nil, output_compression: nil, output_format: nil, partial_images: nil, quality: nil, response_format: nil, size: nil, style: nil, user: nil, request_options: {})
367
+ # @overload generate(prompt:, background: nil, model: nil, moderation: nil, n: nil, output_compression: nil, output_format: nil, partial_images: nil, quality: nil, response_format: nil, safety_identifier: nil, size: nil, style: nil, user: nil, request_options: {})
348
368
  #
349
369
  # @param prompt [String]
350
370
  # A text description of the desired image(s). The maximum length is 32000
@@ -406,6 +426,14 @@ module OpenAI
406
426
  # Legacy response format parameter for retired image models. Unsupported for GPT
407
427
  # image models, which always return base64-encoded images.
408
428
  #
429
+ # @param safety_identifier [String, nil]
430
+ # A stable identifier for an end user in your organization, used for safety
431
+ # monitoring and abuse detection. Hash a username or email address to avoid
432
+ # sending identifying information. A non-empty value takes precedence over the
433
+ # deprecated `user` parameter. If omitted, null, or empty, the API uses `user`
434
+ # when available.
435
+ # [Learn more](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers).
436
+ #
409
437
  # @param size [String, Symbol, OpenAI::Models::ImageGenerateParams::Size, nil]
410
438
  # The size of the generated images. For `gpt-image-2`, `gpt-image-2-2026-04-21`,
411
439
  # `gpt-image-2.5-sunburst`, `gpt-image-2.5-sunburst-2026-09-08`,
@@ -423,8 +451,9 @@ module OpenAI
423
451
  # models; describe the desired style in the prompt instead.
424
452
  #
425
453
  # @param user [String]
426
- # A unique identifier representing your end-user, which can help OpenAI to monitor
427
- # and detect abuse.
454
+ # Deprecated: use `safety_identifier` instead. This parameter remains accepted for
455
+ # backward compatibility and is used when `safety_identifier` is omitted, null, or
456
+ # empty.
428
457
  # [Learn more](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers).
429
458
  #
430
459
  # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
@@ -454,7 +483,7 @@ module OpenAI
454
483
  # Creates an image given a prompt using a GPT Image model.
455
484
  # [Learn more](https://developers.openai.com/api/docs/guides/images-vision).
456
485
  #
457
- # @overload generate_stream_raw(prompt:, background: nil, model: nil, moderation: nil, n: nil, output_compression: nil, output_format: nil, partial_images: nil, quality: nil, response_format: nil, size: nil, style: nil, user: nil, request_options: {})
486
+ # @overload generate_stream_raw(prompt:, background: nil, model: nil, moderation: nil, n: nil, output_compression: nil, output_format: nil, partial_images: nil, quality: nil, response_format: nil, safety_identifier: nil, size: nil, style: nil, user: nil, request_options: {})
458
487
  #
459
488
  # @param prompt [String]
460
489
  # A text description of the desired image(s). The maximum length is 32000
@@ -516,6 +545,14 @@ module OpenAI
516
545
  # Legacy response format parameter for retired image models. Unsupported for GPT
517
546
  # image models, which always return base64-encoded images.
518
547
  #
548
+ # @param safety_identifier [String, nil]
549
+ # A stable identifier for an end user in your organization, used for safety
550
+ # monitoring and abuse detection. Hash a username or email address to avoid
551
+ # sending identifying information. A non-empty value takes precedence over the
552
+ # deprecated `user` parameter. If omitted, null, or empty, the API uses `user`
553
+ # when available.
554
+ # [Learn more](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers).
555
+ #
519
556
  # @param size [String, Symbol, OpenAI::Models::ImageGenerateParams::Size, nil]
520
557
  # The size of the generated images. For `gpt-image-2`, `gpt-image-2-2026-04-21`,
521
558
  # `gpt-image-2.5-sunburst`, `gpt-image-2.5-sunburst-2026-09-08`,
@@ -533,8 +570,9 @@ module OpenAI
533
570
  # models; describe the desired style in the prompt instead.
534
571
  #
535
572
  # @param user [String]
536
- # A unique identifier representing your end-user, which can help OpenAI to monitor
537
- # and detect abuse.
573
+ # Deprecated: use `safety_identifier` instead. This parameter remains accepted for
574
+ # backward compatibility and is used when `safety_identifier` is omitted, null, or
575
+ # empty.
538
576
  # [Learn more](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers).
539
577
  #
540
578
  # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OpenAI
4
- VERSION = "0.104.0"
4
+ VERSION = "0.106.0"
5
5
  end