openai 0.78.0 → 0.80.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 +99 -0
  3. data/README.md +241 -8
  4. data/SECURITY.md +6 -22
  5. data/azure.md +110 -0
  6. data/bedrock.md +197 -0
  7. data/examples/mtls_custom_http_client.rb +61 -0
  8. data/lib/openai/auth/workload_identity.rb +13 -2
  9. data/lib/openai/auth/workload_identity_auth.rb +2 -1
  10. data/lib/openai/client.rb +29 -6
  11. data/lib/openai/errors.rb +11 -1
  12. data/lib/openai/helpers/streaming/chat_completion_stream.rb +3 -3
  13. data/lib/openai/helpers/streaming/response_stream.rb +5 -6
  14. data/lib/openai/helpers/structured_output/base_model.rb +20 -19
  15. data/lib/openai/helpers/structured_output/json_schema_converter.rb +12 -5
  16. data/lib/openai/http_client.rb +99 -7
  17. data/lib/openai/internal/conversation_cursor_page.rb +5 -6
  18. data/lib/openai/internal/cursor_page.rb +3 -3
  19. data/lib/openai/internal/logging.rb +419 -0
  20. data/lib/openai/internal/next_cursor_page.rb +5 -6
  21. data/lib/openai/internal/page.rb +2 -2
  22. data/lib/openai/internal/provider.rb +7 -1
  23. data/lib/openai/internal/read_io_adapter.rb +42 -18
  24. data/lib/openai/internal/stream.rb +2 -2
  25. data/lib/openai/internal/transport/base_client.rb +137 -37
  26. data/lib/openai/internal/type/array_of.rb +6 -4
  27. data/lib/openai/internal/type/base_model.rb +39 -1
  28. data/lib/openai/internal/type/base_page.rb +19 -2
  29. data/lib/openai/internal/type/base_stream.rb +39 -7
  30. data/lib/openai/internal/type/hash_of.rb +3 -3
  31. data/lib/openai/internal/util.rb +52 -27
  32. data/lib/openai/models/admin/organization/audit_log_list_params.rb +3 -1
  33. data/lib/openai/models/admin/organization/audit_log_list_response.rb +33 -11
  34. data/lib/openai/models/admin/organization/groups/role_list_response.rb +5 -1
  35. data/lib/openai/models/admin/organization/groups/role_retrieve_response.rb +5 -1
  36. data/lib/openai/models/admin/organization/projects/groups/role_list_response.rb +6 -1
  37. data/lib/openai/models/admin/organization/projects/groups/role_retrieve_response.rb +6 -1
  38. data/lib/openai/models/admin/organization/projects/service_account_create_response.rb +3 -1
  39. data/lib/openai/models/admin/organization/projects/users/role_list_response.rb +6 -1
  40. data/lib/openai/models/admin/organization/projects/users/role_retrieve_response.rb +6 -1
  41. data/lib/openai/models/admin/organization/users/role_list_response.rb +5 -1
  42. data/lib/openai/models/admin/organization/users/role_retrieve_response.rb +5 -1
  43. data/lib/openai/models/all_models.rb +5 -0
  44. data/lib/openai/models/audio/transcription_create_params.rb +7 -1
  45. data/lib/openai/models/audio/translation_create_params.rb +7 -1
  46. data/lib/openai/models/beta/beta_mcp_tool_call_error.rb +84 -0
  47. data/lib/openai/models/beta/beta_response.rb +27 -0
  48. data/lib/openai/models/beta/beta_response_input_item.rb +3 -3
  49. data/lib/openai/models/beta/beta_response_item.rb +3 -3
  50. data/lib/openai/models/beta/beta_response_output_item.rb +3 -3
  51. data/lib/openai/models/beta/beta_response_output_item_added_event.rb +5 -2
  52. data/lib/openai/models/beta/beta_response_output_text_annotation_added_event.rb +201 -4
  53. data/lib/openai/models/beta/beta_response_reasoning_item.rb +5 -0
  54. data/lib/openai/models/beta/beta_response_stream_event.rb +1 -1
  55. data/lib/openai/models/beta/beta_responses_client_event.rb +46 -3
  56. data/lib/openai/models/beta/beta_responses_server_event.rb +1143 -63
  57. data/lib/openai/models/beta/beta_web_search_tool.rb +11 -1
  58. data/lib/openai/models/beta/response_compact_params.rb +18 -0
  59. data/lib/openai/models/beta/response_create_params.rb +27 -0
  60. data/lib/openai/models/chat_model.rb +1 -0
  61. data/lib/openai/models/completion_usage.rb +26 -2
  62. data/lib/openai/models/containers/file_create_params.rb +4 -0
  63. data/lib/openai/models/content_provenance_check_create_params.rb +4 -0
  64. data/lib/openai/models/conversations/conversation_item.rb +3 -3
  65. data/lib/openai/models/file_create_params.rb +4 -0
  66. data/lib/openai/models/image_create_variation_params.rb +4 -0
  67. data/lib/openai/models/image_edit_params.rb +8 -0
  68. data/lib/openai/models/model.rb +9 -1
  69. data/lib/openai/models/responses/mcp_tool_call_error.rb +82 -0
  70. data/lib/openai/models/responses/response.rb +9 -0
  71. data/lib/openai/models/responses/response_compact_params.rb +18 -0
  72. data/lib/openai/models/responses/response_create_params.rb +9 -0
  73. data/lib/openai/models/responses/response_input_item.rb +3 -3
  74. data/lib/openai/models/responses/response_item.rb +3 -3
  75. data/lib/openai/models/responses/response_output_item.rb +3 -3
  76. data/lib/openai/models/responses/response_output_item_added_event.rb +5 -2
  77. data/lib/openai/models/responses/response_output_text_annotation_added_event.rb +201 -4
  78. data/lib/openai/models/responses/response_reasoning_item.rb +5 -0
  79. data/lib/openai/models/responses/response_stream_event.rb +1 -1
  80. data/lib/openai/models/responses/responses_client_event.rb +22 -1
  81. data/lib/openai/models/responses/responses_server_event.rb +1107 -56
  82. data/lib/openai/models/responses/web_search_tool.rb +11 -1
  83. data/lib/openai/models/responses_model.rb +5 -0
  84. data/lib/openai/models/skill_create_params.rb +4 -0
  85. data/lib/openai/models/skills/version_create_params.rb +4 -0
  86. data/lib/openai/models/uploads/part_create_params.rb +4 -0
  87. data/lib/openai/models/vector_store_search_response.rb +3 -1
  88. data/lib/openai/models/video_create_character_params.rb +4 -0
  89. data/lib/openai/models/video_create_params.rb +4 -0
  90. data/lib/openai/models/video_edit_params.rb +4 -0
  91. data/lib/openai/models/video_extend_params.rb +4 -0
  92. data/lib/openai/models.rb +9 -1
  93. data/lib/openai/net_http_client.rb +20 -6
  94. data/lib/openai/providers/azure.rb +216 -0
  95. data/lib/openai/providers/bedrock.rb +130 -17
  96. data/lib/openai/resources/admin/organization/projects/groups/roles.rb +1 -1
  97. data/lib/openai/resources/admin/organization/projects/groups.rb +1 -1
  98. data/lib/openai/resources/admin/organization/projects/users/roles.rb +1 -1
  99. data/lib/openai/resources/admin/organization/projects.rb +4 -2
  100. data/lib/openai/resources/audio/transcriptions.rb +8 -0
  101. data/lib/openai/resources/audio/translations.rb +4 -0
  102. data/lib/openai/resources/beta/responses.rb +1 -1
  103. data/lib/openai/resources/beta/threads/runs/steps.rb +2 -2
  104. data/lib/openai/resources/containers/files.rb +4 -0
  105. data/lib/openai/resources/content_provenance_checks.rb +4 -0
  106. data/lib/openai/resources/conversations/items.rb +1 -1
  107. data/lib/openai/resources/evals/runs/output_items.rb +1 -1
  108. data/lib/openai/resources/files.rb +5 -1
  109. data/lib/openai/resources/images.rb +12 -0
  110. data/lib/openai/resources/responses.rb +3 -2
  111. data/lib/openai/resources/skills/versions.rb +4 -0
  112. data/lib/openai/resources/skills.rb +4 -0
  113. data/lib/openai/resources/uploads/parts.rb +4 -0
  114. data/lib/openai/resources/vector_stores/file_batches.rb +1 -1
  115. data/lib/openai/resources/videos.rb +38 -0
  116. data/lib/openai/resources/webhooks.rb +18 -6
  117. data/lib/openai/version.rb +1 -1
  118. data/lib/openai.rb +111 -105
  119. data/rbi/openai/auth.rbi +4 -4
  120. data/rbi/openai/client.rbi +13 -3
  121. data/rbi/openai/errors.rbi +7 -0
  122. data/rbi/openai/helpers/streaming/events.rbi +12 -0
  123. data/rbi/openai/http_client.rbi +62 -2
  124. data/rbi/openai/internal/logging.rbi +192 -0
  125. data/rbi/openai/internal/provider.rbi +3 -0
  126. data/rbi/openai/internal/read_io_adapter.rbi +6 -1
  127. data/rbi/openai/internal/transport/base_client.rbi +61 -7
  128. data/rbi/openai/internal/type/base_model.rbi +24 -1
  129. data/rbi/openai/internal/type/base_page.rbi +13 -2
  130. data/rbi/openai/internal/type/base_stream.rbi +15 -4
  131. data/rbi/openai/internal/util.rbi +26 -2
  132. data/rbi/openai/models/admin/organization/audit_log_list_params.rbi +5 -0
  133. data/rbi/openai/models/admin/organization/audit_log_list_response.rbi +5 -0
  134. data/rbi/openai/models/all_models.rbi +25 -0
  135. data/rbi/openai/models/audio/transcription_create_params.rbi +14 -2
  136. data/rbi/openai/models/audio/translation_create_params.rbi +14 -2
  137. data/rbi/openai/models/beta/beta_mcp_tool_call_error.rbi +122 -0
  138. data/rbi/openai/models/beta/beta_response.rbi +47 -0
  139. data/rbi/openai/models/beta/beta_response_input_item.rbi +27 -3
  140. data/rbi/openai/models/beta/beta_response_item.rbi +27 -3
  141. data/rbi/openai/models/beta/beta_response_output_item.rbi +27 -3
  142. data/rbi/openai/models/beta/beta_response_output_item_added_event.rbi +8 -2
  143. data/rbi/openai/models/beta/beta_response_output_text_annotation_added_event.rbi +297 -5
  144. data/rbi/openai/models/beta/beta_response_reasoning_item.rbi +10 -0
  145. data/rbi/openai/models/beta/beta_response_stream_event.rbi +1 -1
  146. data/rbi/openai/models/beta/beta_responses_client_event.rbi +69 -1
  147. data/rbi/openai/models/beta/beta_responses_server_event.rbi +3945 -54
  148. data/rbi/openai/models/beta/beta_web_search_tool.rbi +15 -0
  149. data/rbi/openai/models/beta/response_compact_params.rbi +30 -0
  150. data/rbi/openai/models/beta/response_create_params.rbi +47 -0
  151. data/rbi/openai/models/chat_model.rbi +2 -0
  152. data/rbi/openai/models/completion_usage.rbi +39 -6
  153. data/rbi/openai/models/containers/file_create_params.rbi +8 -0
  154. data/rbi/openai/models/content_provenance_check_create_params.rbi +8 -0
  155. data/rbi/openai/models/conversations/conversation_item.rbi +12 -3
  156. data/rbi/openai/models/file_create_params.rbi +8 -0
  157. data/rbi/openai/models/image_create_variation_params.rbi +8 -0
  158. data/rbi/openai/models/image_edit_params.rbi +16 -0
  159. data/rbi/openai/models/model.rbi +14 -1
  160. data/rbi/openai/models/responses/mcp_tool_call_error.rbi +120 -0
  161. data/rbi/openai/models/responses/response.rbi +17 -0
  162. data/rbi/openai/models/responses/response_compact_params.rbi +30 -0
  163. data/rbi/openai/models/responses/response_create_params.rbi +17 -0
  164. data/rbi/openai/models/responses/response_input_item.rbi +27 -3
  165. data/rbi/openai/models/responses/response_item.rbi +27 -3
  166. data/rbi/openai/models/responses/response_output_item.rbi +27 -3
  167. data/rbi/openai/models/responses/response_output_item_added_event.rbi +8 -2
  168. data/rbi/openai/models/responses/response_output_text_annotation_added_event.rbi +297 -5
  169. data/rbi/openai/models/responses/response_reasoning_item.rbi +10 -0
  170. data/rbi/openai/models/responses/response_stream_event.rbi +1 -1
  171. data/rbi/openai/models/responses/responses_client_event.rbi +36 -0
  172. data/rbi/openai/models/responses/responses_server_event.rbi +3385 -53
  173. data/rbi/openai/models/responses/web_search_tool.rbi +15 -0
  174. data/rbi/openai/models/responses_model.rbi +25 -0
  175. data/rbi/openai/models/skill_create_params.rbi +8 -0
  176. data/rbi/openai/models/skills/version_create_params.rbi +8 -0
  177. data/rbi/openai/models/uploads/part_create_params.rbi +8 -0
  178. data/rbi/openai/models/video_create_character_params.rbi +8 -0
  179. data/rbi/openai/models/video_create_params.rbi +8 -0
  180. data/rbi/openai/models/video_edit_params.rbi +8 -0
  181. data/rbi/openai/models/video_extend_params.rbi +8 -0
  182. data/rbi/openai/net_http_client.rbi +2 -2
  183. data/rbi/openai/providers.rbi +11 -0
  184. data/rbi/openai/resources/audio/transcriptions.rbi +14 -2
  185. data/rbi/openai/resources/audio/translations.rbi +7 -1
  186. data/rbi/openai/resources/beta/responses.rbi +8 -0
  187. data/rbi/openai/resources/containers/files.rbi +4 -0
  188. data/rbi/openai/resources/content_provenance_checks.rbi +4 -0
  189. data/rbi/openai/resources/files.rbi +5 -1
  190. data/rbi/openai/resources/images.rbi +20 -0
  191. data/rbi/openai/resources/responses.rbi +8 -0
  192. data/rbi/openai/resources/skills/versions.rbi +4 -0
  193. data/rbi/openai/resources/skills.rbi +4 -0
  194. data/rbi/openai/resources/uploads/parts.rbi +4 -0
  195. data/rbi/openai/resources/videos.rbi +16 -0
  196. data/sig/openai/client.rbs +6 -2
  197. data/sig/openai/errors.rbs +5 -0
  198. data/sig/openai/http_client.rbs +37 -2
  199. data/sig/openai/internal/logging.rbs +88 -0
  200. data/sig/openai/internal/provider.rbs +3 -1
  201. data/sig/openai/internal/read_io_adapter.rbs +3 -1
  202. data/sig/openai/internal/transport/base_client.rbs +33 -5
  203. data/sig/openai/internal/type/base_model.rbs +13 -0
  204. data/sig/openai/internal/type/base_page.rbs +8 -1
  205. data/sig/openai/internal/type/base_stream.rbs +8 -2
  206. data/sig/openai/internal/util.rbs +12 -0
  207. data/sig/openai/models/admin/organization/audit_log_list_params.rbs +2 -0
  208. data/sig/openai/models/admin/organization/audit_log_list_response.rbs +2 -0
  209. data/sig/openai/models/all_models.rbs +10 -0
  210. data/sig/openai/models/beta/beta_mcp_tool_call_error.rbs +75 -0
  211. data/sig/openai/models/beta/beta_response.rbs +14 -1
  212. data/sig/openai/models/beta/beta_response_input_item.rbs +4 -4
  213. data/sig/openai/models/beta/beta_response_item.rbs +4 -4
  214. data/sig/openai/models/beta/beta_response_output_item.rbs +4 -4
  215. data/sig/openai/models/beta/beta_response_output_text_annotation_added_event.rbs +149 -4
  216. data/sig/openai/models/beta/beta_responses_client_event.rbs +21 -1
  217. data/sig/openai/models/beta/beta_responses_server_event.rbs +2005 -53
  218. data/sig/openai/models/beta/beta_web_search_tool.rbs +7 -0
  219. data/sig/openai/models/beta/response_compact_params.rbs +12 -0
  220. data/sig/openai/models/beta/response_create_params.rbs +14 -1
  221. data/sig/openai/models/chat_model.rbs +2 -0
  222. data/sig/openai/models/completion_usage.rbs +27 -6
  223. data/sig/openai/models/conversations/conversation_item.rbs +4 -4
  224. data/sig/openai/models/model.rbs +12 -2
  225. data/sig/openai/models/responses/mcp_tool_call_error.rbs +73 -0
  226. data/sig/openai/models/responses/response.rbs +2 -1
  227. data/sig/openai/models/responses/response_compact_params.rbs +12 -0
  228. data/sig/openai/models/responses/response_create_params.rbs +2 -1
  229. data/sig/openai/models/responses/response_input_item.rbs +4 -4
  230. data/sig/openai/models/responses/response_item.rbs +4 -4
  231. data/sig/openai/models/responses/response_output_item.rbs +4 -4
  232. data/sig/openai/models/responses/response_output_text_annotation_added_event.rbs +149 -4
  233. data/sig/openai/models/responses/responses_client_event.rbs +9 -1
  234. data/sig/openai/models/responses/responses_server_event.rbs +1834 -53
  235. data/sig/openai/models/responses/web_search_tool.rbs +7 -0
  236. data/sig/openai/models/responses_model.rbs +10 -0
  237. data/sig/openai/net_http_client.rbs +2 -2
  238. data/sig/openai/providers.rbs +7 -0
  239. metadata +30 -1
@@ -16,7 +16,13 @@ module OpenAI
16
16
  end
17
17
 
18
18
  # The audio file object (not file name) to transcribe, in one of these formats:
19
- # flac, mp3, mp4, mpeg, mpga, m4a, ogg, wav, or webm.
19
+ # flac, mp3, mp4, mpeg, mpga, m4a, ogg, wav, or webm. The request must include
20
+ # enough format metadata for the file to be identified. We recommend an
21
+ # extension-bearing filename and an appropriate content type.
22
+ #
23
+ # `String`, `StringIO`, and pathless `IO` inputs are sent with generic upload
24
+ # metadata. Use `OpenAI::FilePart` when you need to override the filename or
25
+ # content type.
20
26
  sig { returns(OpenAI::Internal::FileInput) }
21
27
  attr_accessor :file
22
28
 
@@ -202,7 +208,13 @@ module OpenAI
202
208
  end
203
209
  def self.new(
204
210
  # The audio file object (not file name) to transcribe, in one of these formats:
205
- # flac, mp3, mp4, mpeg, mpga, m4a, ogg, wav, or webm.
211
+ # flac, mp3, mp4, mpeg, mpga, m4a, ogg, wav, or webm. The request must include
212
+ # enough format metadata for the file to be identified. We recommend an
213
+ # extension-bearing filename and an appropriate content type.
214
+ #
215
+ # `String`, `StringIO`, and pathless `IO` inputs are sent with generic upload
216
+ # metadata. Use `OpenAI::FilePart` when you need to override the filename or
217
+ # content type.
206
218
  file:,
207
219
  # ID of the model to use. The options are `gpt-transcribe`, `gpt-4o-transcribe`,
208
220
  # `gpt-4o-mini-transcribe`, `gpt-4o-mini-transcribe-2025-12-15`, `whisper-1`
@@ -16,7 +16,13 @@ module OpenAI
16
16
  end
17
17
 
18
18
  # The audio file object (not file name) translate, in one of these formats: flac,
19
- # mp3, mp4, mpeg, mpga, m4a, ogg, wav, or webm.
19
+ # mp3, mp4, mpeg, mpga, m4a, ogg, wav, or webm. The request must include enough
20
+ # format metadata for the file to be identified. We recommend an extension-bearing
21
+ # filename and an appropriate content type.
22
+ #
23
+ # `String`, `StringIO`, and pathless `IO` inputs are sent with generic upload
24
+ # metadata. Use `OpenAI::FilePart` when you need to override the filename or
25
+ # content type.
20
26
  sig { returns(OpenAI::Internal::FileInput) }
21
27
  attr_accessor :file
22
28
 
@@ -78,7 +84,13 @@ module OpenAI
78
84
  end
79
85
  def self.new(
80
86
  # The audio file object (not file name) translate, in one of these formats: flac,
81
- # mp3, mp4, mpeg, mpga, m4a, ogg, wav, or webm.
87
+ # mp3, mp4, mpeg, mpga, m4a, ogg, wav, or webm. The request must include enough
88
+ # format metadata for the file to be identified. We recommend an extension-bearing
89
+ # filename and an appropriate content type.
90
+ #
91
+ # `String`, `StringIO`, and pathless `IO` inputs are sent with generic upload
92
+ # metadata. Use `OpenAI::FilePart` when you need to override the filename or
93
+ # content type.
82
94
  file:,
83
95
  # ID of the model to use. Only `whisper-1` (which is powered by our open source
84
96
  # Whisper V2 model) is currently available.
@@ -0,0 +1,122 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+ BetaMcpToolCallError = Beta::BetaMcpToolCallError
6
+
7
+ module Beta
8
+ module BetaMcpToolCallError
9
+ extend OpenAI::Internal::Type::Union
10
+
11
+ Variants =
12
+ T.type_alias do
13
+ T.any(
14
+ OpenAI::Beta::BetaMcpToolCallError::McpProtocolError,
15
+ OpenAI::Beta::BetaMcpToolCallError::McpToolExecutionError,
16
+ OpenAI::Beta::BetaMcpToolCallError::HTTPError
17
+ )
18
+ end
19
+
20
+ class McpProtocolError < OpenAI::Internal::Type::BaseModel
21
+ OrHash =
22
+ T.type_alias do
23
+ T.any(
24
+ OpenAI::Beta::BetaMcpToolCallError::McpProtocolError,
25
+ OpenAI::Internal::AnyHash
26
+ )
27
+ end
28
+
29
+ sig { returns(Integer) }
30
+ attr_accessor :code
31
+
32
+ sig { returns(String) }
33
+ attr_accessor :message
34
+
35
+ sig { returns(Symbol) }
36
+ attr_accessor :type
37
+
38
+ sig do
39
+ params(code: Integer, message: String, type: Symbol).returns(
40
+ T.attached_class
41
+ )
42
+ end
43
+ def self.new(code:, message:, type: :mcp_protocol_error)
44
+ end
45
+
46
+ sig do
47
+ override.returns({ code: Integer, message: String, type: Symbol })
48
+ end
49
+ def to_hash
50
+ end
51
+ end
52
+
53
+ class McpToolExecutionError < OpenAI::Internal::Type::BaseModel
54
+ OrHash =
55
+ T.type_alias do
56
+ T.any(
57
+ OpenAI::Beta::BetaMcpToolCallError::McpToolExecutionError,
58
+ OpenAI::Internal::AnyHash
59
+ )
60
+ end
61
+
62
+ sig { returns(T.anything) }
63
+ attr_accessor :content
64
+
65
+ sig { returns(Symbol) }
66
+ attr_accessor :type
67
+
68
+ sig do
69
+ params(content: T.anything, type: Symbol).returns(T.attached_class)
70
+ end
71
+ def self.new(content:, type: :mcp_tool_execution_error)
72
+ end
73
+
74
+ sig { override.returns({ content: T.anything, type: Symbol }) }
75
+ def to_hash
76
+ end
77
+ end
78
+
79
+ class HTTPError < OpenAI::Internal::Type::BaseModel
80
+ OrHash =
81
+ T.type_alias do
82
+ T.any(
83
+ OpenAI::Beta::BetaMcpToolCallError::HTTPError,
84
+ OpenAI::Internal::AnyHash
85
+ )
86
+ end
87
+
88
+ sig { returns(Integer) }
89
+ attr_accessor :code
90
+
91
+ sig { returns(String) }
92
+ attr_accessor :message
93
+
94
+ sig { returns(Symbol) }
95
+ attr_accessor :type
96
+
97
+ sig do
98
+ params(code: Integer, message: String, type: Symbol).returns(
99
+ T.attached_class
100
+ )
101
+ end
102
+ def self.new(code:, message:, type: :http_error)
103
+ end
104
+
105
+ sig do
106
+ override.returns({ code: Integer, message: String, type: Symbol })
107
+ end
108
+ def to_hash
109
+ end
110
+ end
111
+
112
+ sig do
113
+ override.returns(
114
+ T::Array[OpenAI::Beta::BetaMcpToolCallError::Variants]
115
+ )
116
+ end
117
+ def self.variants
118
+ end
119
+ end
120
+ end
121
+ end
122
+ end
@@ -284,6 +284,10 @@ module OpenAI
284
284
  # Responses or Chat Completions. The response will show `service_tier=priority`
285
285
  # regardless of if you specify `service_tier=fast` or `priority` in your
286
286
  # request.
287
+ # - If set to 'ultrafast', then the request will be processed with the
288
+ # access-controlled Ultrafast Processing service tier. This tier is currently
289
+ # available for `gpt-5.6-sol`; a response served through it will show
290
+ # `service_tier=ultrafast`.
287
291
  # - When not set, the default behavior is 'auto'.
288
292
  #
289
293
  # When the `service_tier` parameter is set, the response body will include the
@@ -624,6 +628,10 @@ module OpenAI
624
628
  # Responses or Chat Completions. The response will show `service_tier=priority`
625
629
  # regardless of if you specify `service_tier=fast` or `priority` in your
626
630
  # request.
631
+ # - If set to 'ultrafast', then the request will be processed with the
632
+ # access-controlled Ultrafast Processing service tier. This tier is currently
633
+ # available for `gpt-5.6-sol`; a response served through it will show
634
+ # `service_tier=ultrafast`.
627
635
  # - When not set, the default behavior is 'auto'.
628
636
  #
629
637
  # When the `service_tier` parameter is set, the response body will include the
@@ -881,6 +889,11 @@ module OpenAI
881
889
  )
882
890
  GPT_5_5 =
883
891
  T.let(:"gpt-5.5", OpenAI::Beta::BetaResponse::Model::TaggedSymbol)
892
+ GPT_5_5_2026_04_23 =
893
+ T.let(
894
+ :"gpt-5.5-2026-04-23",
895
+ OpenAI::Beta::BetaResponse::Model::TaggedSymbol
896
+ )
884
897
  GPT_5_4 =
885
898
  T.let(:"gpt-5.4", OpenAI::Beta::BetaResponse::Model::TaggedSymbol)
886
899
  GPT_5_4_MINI =
@@ -1274,6 +1287,16 @@ module OpenAI
1274
1287
  :"computer-use-preview-2025-03-11",
1275
1288
  OpenAI::Beta::BetaResponse::Model::TaggedSymbol
1276
1289
  )
1290
+ GPT_5_5_PRO =
1291
+ T.let(
1292
+ :"gpt-5.5-pro",
1293
+ OpenAI::Beta::BetaResponse::Model::TaggedSymbol
1294
+ )
1295
+ GPT_5_5_PRO_2026_04_23 =
1296
+ T.let(
1297
+ :"gpt-5.5-pro-2026-04-23",
1298
+ OpenAI::Beta::BetaResponse::Model::TaggedSymbol
1299
+ )
1277
1300
  GPT_5_CODEX =
1278
1301
  T.let(
1279
1302
  :"gpt-5-codex",
@@ -1291,6 +1314,21 @@ module OpenAI
1291
1314
  :"gpt-5.1-codex-max",
1292
1315
  OpenAI::Beta::BetaResponse::Model::TaggedSymbol
1293
1316
  )
1317
+ GPT_DAYBREAK_BLUE_LATEST =
1318
+ T.let(
1319
+ :"gpt-daybreak-blue-latest",
1320
+ OpenAI::Beta::BetaResponse::Model::TaggedSymbol
1321
+ )
1322
+ GPT_DAYBREAK_RED_LATEST =
1323
+ T.let(
1324
+ :"gpt-daybreak-red-latest",
1325
+ OpenAI::Beta::BetaResponse::Model::TaggedSymbol
1326
+ )
1327
+ GPT_5_6_CYBER =
1328
+ T.let(
1329
+ :"gpt-5.6-cyber",
1330
+ OpenAI::Beta::BetaResponse::Model::TaggedSymbol
1331
+ )
1294
1332
  end
1295
1333
 
1296
1334
  # How the model should select which tool (or tools) to use when generating a
@@ -2433,6 +2471,10 @@ module OpenAI
2433
2471
  # Responses or Chat Completions. The response will show `service_tier=priority`
2434
2472
  # regardless of if you specify `service_tier=fast` or `priority` in your
2435
2473
  # request.
2474
+ # - If set to 'ultrafast', then the request will be processed with the
2475
+ # access-controlled Ultrafast Processing service tier. This tier is currently
2476
+ # available for `gpt-5.6-sol`; a response served through it will show
2477
+ # `service_tier=ultrafast`.
2436
2478
  # - When not set, the default behavior is 'auto'.
2437
2479
  #
2438
2480
  # When the `service_tier` parameter is set, the response body will include the
@@ -2466,6 +2508,11 @@ module OpenAI
2466
2508
  )
2467
2509
  FAST =
2468
2510
  T.let(:fast, OpenAI::Beta::BetaResponse::ServiceTier::TaggedSymbol)
2511
+ ULTRAFAST =
2512
+ T.let(
2513
+ :ultrafast,
2514
+ OpenAI::Beta::BetaResponse::ServiceTier::TaggedSymbol
2515
+ )
2469
2516
 
2470
2517
  sig do
2471
2518
  override.returns(
@@ -4811,7 +4811,17 @@ module OpenAI
4811
4811
  attr_accessor :approval_request_id
4812
4812
 
4813
4813
  # The error from the tool call, if any.
4814
- sig { returns(T.nilable(String)) }
4814
+ sig do
4815
+ returns(
4816
+ T.nilable(
4817
+ T.any(
4818
+ OpenAI::Beta::BetaMcpToolCallError::McpProtocolError,
4819
+ OpenAI::Beta::BetaMcpToolCallError::McpToolExecutionError,
4820
+ OpenAI::Beta::BetaMcpToolCallError::HTTPError
4821
+ )
4822
+ )
4823
+ )
4824
+ end
4815
4825
  attr_accessor :error
4816
4826
 
4817
4827
  # The output from the tool call.
@@ -4849,7 +4859,14 @@ module OpenAI
4849
4859
  OpenAI::Beta::BetaResponseInputItem::McpCall::Agent::OrHash
4850
4860
  ),
4851
4861
  approval_request_id: T.nilable(String),
4852
- error: T.nilable(String),
4862
+ error:
4863
+ T.nilable(
4864
+ T.any(
4865
+ OpenAI::Beta::BetaMcpToolCallError::McpProtocolError::OrHash,
4866
+ OpenAI::Beta::BetaMcpToolCallError::McpToolExecutionError::OrHash,
4867
+ OpenAI::Beta::BetaMcpToolCallError::HTTPError::OrHash
4868
+ )
4869
+ ),
4853
4870
  output: T.nilable(String),
4854
4871
  status:
4855
4872
  OpenAI::Beta::BetaResponseInputItem::McpCall::Status::OrSymbol,
@@ -4896,7 +4913,14 @@ module OpenAI
4896
4913
  OpenAI::Beta::BetaResponseInputItem::McpCall::Agent
4897
4914
  ),
4898
4915
  approval_request_id: T.nilable(String),
4899
- error: T.nilable(String),
4916
+ error:
4917
+ T.nilable(
4918
+ T.any(
4919
+ OpenAI::Beta::BetaMcpToolCallError::McpProtocolError,
4920
+ OpenAI::Beta::BetaMcpToolCallError::McpToolExecutionError,
4921
+ OpenAI::Beta::BetaMcpToolCallError::HTTPError
4922
+ )
4923
+ ),
4900
4924
  output: T.nilable(String),
4901
4925
  status:
4902
4926
  OpenAI::Beta::BetaResponseInputItem::McpCall::Status::OrSymbol
@@ -2415,7 +2415,17 @@ module OpenAI
2415
2415
  attr_accessor :approval_request_id
2416
2416
 
2417
2417
  # The error from the tool call, if any.
2418
- sig { returns(T.nilable(String)) }
2418
+ sig do
2419
+ returns(
2420
+ T.nilable(
2421
+ T.any(
2422
+ OpenAI::Beta::BetaMcpToolCallError::McpProtocolError,
2423
+ OpenAI::Beta::BetaMcpToolCallError::McpToolExecutionError,
2424
+ OpenAI::Beta::BetaMcpToolCallError::HTTPError
2425
+ )
2426
+ )
2427
+ )
2428
+ end
2419
2429
  attr_accessor :error
2420
2430
 
2421
2431
  # The output from the tool call.
@@ -2452,7 +2462,14 @@ module OpenAI
2452
2462
  OpenAI::Beta::BetaResponseItem::McpCall::Agent::OrHash
2453
2463
  ),
2454
2464
  approval_request_id: T.nilable(String),
2455
- error: T.nilable(String),
2465
+ error:
2466
+ T.nilable(
2467
+ T.any(
2468
+ OpenAI::Beta::BetaMcpToolCallError::McpProtocolError::OrHash,
2469
+ OpenAI::Beta::BetaMcpToolCallError::McpToolExecutionError::OrHash,
2470
+ OpenAI::Beta::BetaMcpToolCallError::HTTPError::OrHash
2471
+ )
2472
+ ),
2456
2473
  output: T.nilable(String),
2457
2474
  status: OpenAI::Beta::BetaResponseItem::McpCall::Status::OrSymbol,
2458
2475
  type: Symbol
@@ -2496,7 +2513,14 @@ module OpenAI
2496
2513
  agent:
2497
2514
  T.nilable(OpenAI::Beta::BetaResponseItem::McpCall::Agent),
2498
2515
  approval_request_id: T.nilable(String),
2499
- error: T.nilable(String),
2516
+ error:
2517
+ T.nilable(
2518
+ T.any(
2519
+ OpenAI::Beta::BetaMcpToolCallError::McpProtocolError,
2520
+ OpenAI::Beta::BetaMcpToolCallError::McpToolExecutionError,
2521
+ OpenAI::Beta::BetaMcpToolCallError::HTTPError
2522
+ )
2523
+ ),
2500
2524
  output: T.nilable(String),
2501
2525
  status:
2502
2526
  OpenAI::Beta::BetaResponseItem::McpCall::Status::TaggedSymbol
@@ -1999,7 +1999,17 @@ module OpenAI
1999
1999
  attr_accessor :approval_request_id
2000
2000
 
2001
2001
  # The error from the tool call, if any.
2002
- sig { returns(T.nilable(String)) }
2002
+ sig do
2003
+ returns(
2004
+ T.nilable(
2005
+ T.any(
2006
+ OpenAI::Beta::BetaMcpToolCallError::McpProtocolError,
2007
+ OpenAI::Beta::BetaMcpToolCallError::McpToolExecutionError,
2008
+ OpenAI::Beta::BetaMcpToolCallError::HTTPError
2009
+ )
2010
+ )
2011
+ )
2012
+ end
2003
2013
  attr_accessor :error
2004
2014
 
2005
2015
  # The output from the tool call.
@@ -2037,7 +2047,14 @@ module OpenAI
2037
2047
  OpenAI::Beta::BetaResponseOutputItem::McpCall::Agent::OrHash
2038
2048
  ),
2039
2049
  approval_request_id: T.nilable(String),
2040
- error: T.nilable(String),
2050
+ error:
2051
+ T.nilable(
2052
+ T.any(
2053
+ OpenAI::Beta::BetaMcpToolCallError::McpProtocolError::OrHash,
2054
+ OpenAI::Beta::BetaMcpToolCallError::McpToolExecutionError::OrHash,
2055
+ OpenAI::Beta::BetaMcpToolCallError::HTTPError::OrHash
2056
+ )
2057
+ ),
2041
2058
  output: T.nilable(String),
2042
2059
  status:
2043
2060
  OpenAI::Beta::BetaResponseOutputItem::McpCall::Status::OrSymbol,
@@ -2084,7 +2101,14 @@ module OpenAI
2084
2101
  OpenAI::Beta::BetaResponseOutputItem::McpCall::Agent
2085
2102
  ),
2086
2103
  approval_request_id: T.nilable(String),
2087
- error: T.nilable(String),
2104
+ error:
2105
+ T.nilable(
2106
+ T.any(
2107
+ OpenAI::Beta::BetaMcpToolCallError::McpProtocolError,
2108
+ OpenAI::Beta::BetaMcpToolCallError::McpToolExecutionError,
2109
+ OpenAI::Beta::BetaMcpToolCallError::HTTPError
2110
+ )
2111
+ ),
2088
2112
  output: T.nilable(String),
2089
2113
  status:
2090
2114
  OpenAI::Beta::BetaResponseOutputItem::McpCall::Status::TaggedSymbol
@@ -14,7 +14,10 @@ module OpenAI
14
14
  )
15
15
  end
16
16
 
17
- # The output item that was added.
17
+ # The output item that was added. For reasoning items, `encrypted_content` may be
18
+ # incomplete while the item is in progress. Use the reasoning item from the
19
+ # corresponding `response.output_item.done` event when passing it as input to a
20
+ # subsequent request.
18
21
  sig { returns(OpenAI::Beta::BetaResponseOutputItem::Variants) }
19
22
  attr_accessor :item
20
23
 
@@ -95,7 +98,10 @@ module OpenAI
95
98
  ).returns(T.attached_class)
96
99
  end
97
100
  def self.new(
98
- # The output item that was added.
101
+ # The output item that was added. For reasoning items, `encrypted_content` may be
102
+ # incomplete while the item is in progress. Use the reasoning item from the
103
+ # corresponding `response.output_item.done` event when passing it as input to a
104
+ # subsequent request.
99
105
  item:,
100
106
  # The index of the output item that was added.
101
107
  output_index:,