openai 0.78.0 → 0.79.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 (175) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +80 -0
  3. data/README.md +241 -8
  4. data/SECURITY.md +6 -22
  5. data/azure.md +110 -0
  6. data/bedrock.md +132 -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 +3 -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_response.rb +9 -0
  47. data/lib/openai/models/beta/beta_response_stream_event.rb +1 -1
  48. data/lib/openai/models/beta/beta_responses_client_event.rb +28 -3
  49. data/lib/openai/models/beta/beta_responses_server_event.rb +1037 -61
  50. data/lib/openai/models/beta/response_compact_params.rb +9 -0
  51. data/lib/openai/models/beta/response_create_params.rb +9 -0
  52. data/lib/openai/models/containers/file_create_params.rb +4 -0
  53. data/lib/openai/models/content_provenance_check_create_params.rb +4 -0
  54. data/lib/openai/models/file_create_params.rb +4 -0
  55. data/lib/openai/models/image_create_variation_params.rb +4 -0
  56. data/lib/openai/models/image_edit_params.rb +8 -0
  57. data/lib/openai/models/responses/response_compact_params.rb +9 -0
  58. data/lib/openai/models/responses/response_stream_event.rb +1 -1
  59. data/lib/openai/models/responses/responses_client_event.rb +13 -1
  60. data/lib/openai/models/responses/responses_server_event.rb +1027 -54
  61. data/lib/openai/models/responses_model.rb +3 -0
  62. data/lib/openai/models/skill_create_params.rb +4 -0
  63. data/lib/openai/models/skills/version_create_params.rb +4 -0
  64. data/lib/openai/models/uploads/part_create_params.rb +4 -0
  65. data/lib/openai/models/vector_store_search_response.rb +3 -1
  66. data/lib/openai/models/video_create_character_params.rb +4 -0
  67. data/lib/openai/models/video_create_params.rb +4 -0
  68. data/lib/openai/models/video_edit_params.rb +4 -0
  69. data/lib/openai/models/video_extend_params.rb +4 -0
  70. data/lib/openai/models.rb +9 -1
  71. data/lib/openai/net_http_client.rb +20 -6
  72. data/lib/openai/providers/azure.rb +216 -0
  73. data/lib/openai/providers/bedrock.rb +3 -1
  74. data/lib/openai/resources/admin/organization/projects/groups/roles.rb +1 -1
  75. data/lib/openai/resources/admin/organization/projects/groups.rb +1 -1
  76. data/lib/openai/resources/admin/organization/projects/users/roles.rb +1 -1
  77. data/lib/openai/resources/admin/organization/projects.rb +4 -2
  78. data/lib/openai/resources/audio/transcriptions.rb +8 -0
  79. data/lib/openai/resources/audio/translations.rb +4 -0
  80. data/lib/openai/resources/beta/responses.rb +1 -1
  81. data/lib/openai/resources/beta/threads/runs/steps.rb +2 -2
  82. data/lib/openai/resources/containers/files.rb +4 -0
  83. data/lib/openai/resources/content_provenance_checks.rb +4 -0
  84. data/lib/openai/resources/conversations/items.rb +1 -1
  85. data/lib/openai/resources/evals/runs/output_items.rb +1 -1
  86. data/lib/openai/resources/files.rb +4 -0
  87. data/lib/openai/resources/images.rb +12 -0
  88. data/lib/openai/resources/responses.rb +3 -2
  89. data/lib/openai/resources/skills/versions.rb +4 -0
  90. data/lib/openai/resources/skills.rb +4 -0
  91. data/lib/openai/resources/uploads/parts.rb +4 -0
  92. data/lib/openai/resources/vector_stores/file_batches.rb +1 -1
  93. data/lib/openai/resources/videos.rb +38 -0
  94. data/lib/openai/resources/webhooks.rb +18 -6
  95. data/lib/openai/version.rb +1 -1
  96. data/lib/openai.rb +111 -107
  97. data/rbi/openai/auth.rbi +4 -4
  98. data/rbi/openai/client.rbi +13 -3
  99. data/rbi/openai/errors.rbi +7 -0
  100. data/rbi/openai/helpers/streaming/events.rbi +12 -0
  101. data/rbi/openai/http_client.rbi +62 -2
  102. data/rbi/openai/internal/logging.rbi +192 -0
  103. data/rbi/openai/internal/provider.rbi +3 -0
  104. data/rbi/openai/internal/read_io_adapter.rbi +6 -1
  105. data/rbi/openai/internal/transport/base_client.rbi +61 -7
  106. data/rbi/openai/internal/type/base_model.rbi +24 -1
  107. data/rbi/openai/internal/type/base_page.rbi +13 -2
  108. data/rbi/openai/internal/type/base_stream.rbi +15 -4
  109. data/rbi/openai/internal/util.rbi +26 -2
  110. data/rbi/openai/models/admin/organization/audit_log_list_params.rbi +5 -0
  111. data/rbi/openai/models/admin/organization/audit_log_list_response.rbi +5 -0
  112. data/rbi/openai/models/all_models.rbi +15 -0
  113. data/rbi/openai/models/audio/transcription_create_params.rbi +14 -2
  114. data/rbi/openai/models/audio/translation_create_params.rbi +14 -2
  115. data/rbi/openai/models/beta/beta_response.rbi +15 -0
  116. data/rbi/openai/models/beta/beta_response_stream_event.rbi +1 -1
  117. data/rbi/openai/models/beta/beta_responses_client_event.rbi +37 -1
  118. data/rbi/openai/models/beta/beta_responses_server_event.rbi +3791 -54
  119. data/rbi/openai/models/beta/response_compact_params.rbi +15 -0
  120. data/rbi/openai/models/beta/response_create_params.rbi +15 -0
  121. data/rbi/openai/models/containers/file_create_params.rbi +8 -0
  122. data/rbi/openai/models/content_provenance_check_create_params.rbi +8 -0
  123. data/rbi/openai/models/file_create_params.rbi +8 -0
  124. data/rbi/openai/models/image_create_variation_params.rbi +8 -0
  125. data/rbi/openai/models/image_edit_params.rbi +16 -0
  126. data/rbi/openai/models/responses/response_compact_params.rbi +15 -0
  127. data/rbi/openai/models/responses/response_stream_event.rbi +1 -1
  128. data/rbi/openai/models/responses/responses_client_event.rbi +19 -0
  129. data/rbi/openai/models/responses/responses_server_event.rbi +3282 -53
  130. data/rbi/openai/models/responses_model.rbi +15 -0
  131. data/rbi/openai/models/skill_create_params.rbi +8 -0
  132. data/rbi/openai/models/skills/version_create_params.rbi +8 -0
  133. data/rbi/openai/models/uploads/part_create_params.rbi +8 -0
  134. data/rbi/openai/models/video_create_character_params.rbi +8 -0
  135. data/rbi/openai/models/video_create_params.rbi +8 -0
  136. data/rbi/openai/models/video_edit_params.rbi +8 -0
  137. data/rbi/openai/models/video_extend_params.rbi +8 -0
  138. data/rbi/openai/net_http_client.rbi +2 -2
  139. data/rbi/openai/providers.rbi +9 -0
  140. data/rbi/openai/resources/audio/transcriptions.rbi +14 -2
  141. data/rbi/openai/resources/audio/translations.rbi +7 -1
  142. data/rbi/openai/resources/containers/files.rbi +4 -0
  143. data/rbi/openai/resources/content_provenance_checks.rbi +4 -0
  144. data/rbi/openai/resources/files.rbi +4 -0
  145. data/rbi/openai/resources/images.rbi +20 -0
  146. data/rbi/openai/resources/skills/versions.rbi +4 -0
  147. data/rbi/openai/resources/skills.rbi +4 -0
  148. data/rbi/openai/resources/uploads/parts.rbi +4 -0
  149. data/rbi/openai/resources/videos.rbi +16 -0
  150. data/sig/openai/client.rbs +6 -2
  151. data/sig/openai/errors.rbs +5 -0
  152. data/sig/openai/http_client.rbs +37 -2
  153. data/sig/openai/internal/logging.rbs +88 -0
  154. data/sig/openai/internal/provider.rbs +3 -1
  155. data/sig/openai/internal/read_io_adapter.rbs +3 -1
  156. data/sig/openai/internal/transport/base_client.rbs +33 -5
  157. data/sig/openai/internal/type/base_model.rbs +13 -0
  158. data/sig/openai/internal/type/base_page.rbs +8 -1
  159. data/sig/openai/internal/type/base_stream.rbs +8 -2
  160. data/sig/openai/internal/util.rbs +12 -0
  161. data/sig/openai/models/admin/organization/audit_log_list_params.rbs +2 -0
  162. data/sig/openai/models/admin/organization/audit_log_list_response.rbs +2 -0
  163. data/sig/openai/models/all_models.rbs +6 -0
  164. data/sig/openai/models/beta/beta_response.rbs +6 -0
  165. data/sig/openai/models/beta/beta_responses_client_event.rbs +13 -0
  166. data/sig/openai/models/beta/beta_responses_server_event.rbs +1946 -54
  167. data/sig/openai/models/beta/response_compact_params.rbs +6 -0
  168. data/sig/openai/models/beta/response_create_params.rbs +6 -0
  169. data/sig/openai/models/responses/response_compact_params.rbs +6 -0
  170. data/sig/openai/models/responses/responses_client_event.rbs +7 -0
  171. data/sig/openai/models/responses/responses_server_event.rbs +1786 -53
  172. data/sig/openai/models/responses_model.rbs +6 -0
  173. data/sig/openai/net_http_client.rbs +2 -2
  174. data/sig/openai/providers.rbs +6 -0
  175. metadata +24 -1
@@ -325,6 +325,12 @@ module OpenAI
325
325
 
326
326
  variant const: -> { OpenAI::Models::Beta::ResponseCompactParams::Model::GPT_5_1_CODEX_MAX }
327
327
 
328
+ variant const: -> { OpenAI::Models::Beta::ResponseCompactParams::Model::GPT_DAYBREAK_BLUE_LATEST }
329
+
330
+ variant const: -> { OpenAI::Models::Beta::ResponseCompactParams::Model::GPT_DAYBREAK_RED_LATEST }
331
+
332
+ variant const: -> { OpenAI::Models::Beta::ResponseCompactParams::Model::GPT_5_6_CYBER }
333
+
328
334
  variant String
329
335
 
330
336
  # @!method self.variants
@@ -432,6 +438,9 @@ module OpenAI
432
438
  GPT_5_PRO = :"gpt-5-pro"
433
439
  GPT_5_PRO_2025_10_06 = :"gpt-5-pro-2025-10-06"
434
440
  GPT_5_1_CODEX_MAX = :"gpt-5.1-codex-max"
441
+ GPT_DAYBREAK_BLUE_LATEST = :"gpt-daybreak-blue-latest"
442
+ GPT_DAYBREAK_RED_LATEST = :"gpt-daybreak-red-latest"
443
+ GPT_5_6_CYBER = :"gpt-5.6-cyber"
435
444
 
436
445
  # @!endgroup
437
446
  end
@@ -692,6 +692,12 @@ module OpenAI
692
692
 
693
693
  variant const: -> { OpenAI::Models::Beta::ResponseCreateParams::Model::GPT_5_1_CODEX_MAX }
694
694
 
695
+ variant const: -> { OpenAI::Models::Beta::ResponseCreateParams::Model::GPT_DAYBREAK_BLUE_LATEST }
696
+
697
+ variant const: -> { OpenAI::Models::Beta::ResponseCreateParams::Model::GPT_DAYBREAK_RED_LATEST }
698
+
699
+ variant const: -> { OpenAI::Models::Beta::ResponseCreateParams::Model::GPT_5_6_CYBER }
700
+
695
701
  variant String
696
702
 
697
703
  # @!method self.variants
@@ -799,6 +805,9 @@ module OpenAI
799
805
  GPT_5_PRO = :"gpt-5-pro"
800
806
  GPT_5_PRO_2025_10_06 = :"gpt-5-pro-2025-10-06"
801
807
  GPT_5_1_CODEX_MAX = :"gpt-5.1-codex-max"
808
+ GPT_DAYBREAK_BLUE_LATEST = :"gpt-daybreak-blue-latest"
809
+ GPT_DAYBREAK_RED_LATEST = :"gpt-daybreak-red-latest"
810
+ GPT_5_6_CYBER = :"gpt-5.6-cyber"
802
811
 
803
812
  # @!endgroup
804
813
  end
@@ -16,6 +16,10 @@ module OpenAI
16
16
  # @!attribute file
17
17
  # The File object (not file name) to be uploaded.
18
18
  #
19
+ # `String`, `StringIO`, and pathless `IO` inputs are sent with generic upload
20
+ # metadata. Use `OpenAI::FilePart` when you need to override the filename or
21
+ # content type.
22
+ #
19
23
  # @return [Pathname, StringIO, IO, String, OpenAI::FilePart, nil]
20
24
  optional :file, OpenAI::Internal::Type::FileInput
21
25
 
@@ -10,6 +10,10 @@ module OpenAI
10
10
  # @!attribute file
11
11
  # The image or audio file to check for supported OpenAI provenance signals.
12
12
  #
13
+ # `String`, `StringIO`, and pathless `IO` inputs are sent with generic upload
14
+ # metadata. Use `OpenAI::FilePart` when you need to override the filename or
15
+ # content type.
16
+ #
13
17
  # @return [Pathname, StringIO, IO, String, OpenAI::FilePart]
14
18
  required :file, OpenAI::Internal::Type::FileInput
15
19
 
@@ -10,6 +10,10 @@ module OpenAI
10
10
  # @!attribute file
11
11
  # The File object (not file name) to be uploaded.
12
12
  #
13
+ # `String`, `StringIO`, and pathless `IO` inputs are sent with generic upload
14
+ # metadata. Use `OpenAI::FilePart` when you need to override the filename or
15
+ # content type.
16
+ #
13
17
  # @return [Pathname, StringIO, IO, String, OpenAI::FilePart]
14
18
  required :file, OpenAI::Internal::Type::FileInput
15
19
 
@@ -11,6 +11,10 @@ module OpenAI
11
11
  # The image to use as the basis for the variation(s). Must be a valid PNG file,
12
12
  # less than 4MB, and square.
13
13
  #
14
+ # `String`, `StringIO`, and pathless `IO` inputs are sent with generic upload
15
+ # metadata. Use `OpenAI::FilePart` when you need to override the filename or
16
+ # content type.
17
+ #
14
18
  # @return [Pathname, StringIO, IO, String, OpenAI::FilePart]
15
19
  required :image, OpenAI::Internal::Type::FileInput
16
20
 
@@ -20,6 +20,10 @@ module OpenAI
20
20
  # For `dall-e-2`, you can only provide one image, and it should be a square `png`
21
21
  # file less than 4MB.
22
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.
26
+ #
23
27
  # @return [Pathname, StringIO, IO, String, OpenAI::FilePart, Array<Pathname, StringIO, IO, String, OpenAI::FilePart>]
24
28
  required :image, union: -> { OpenAI::ImageEditParams::Image }
25
29
 
@@ -62,6 +66,10 @@ module OpenAI
62
66
  # the mask will be applied on the first image. Must be a valid PNG file, less than
63
67
  # 4MB, and have the same dimensions as `image`.
64
68
  #
69
+ # `String`, `StringIO`, and pathless `IO` inputs are sent with generic upload
70
+ # metadata. Use `OpenAI::FilePart` when you need to override the filename or
71
+ # content type.
72
+ #
65
73
  # @return [Pathname, StringIO, IO, String, OpenAI::FilePart, nil]
66
74
  optional :mask, OpenAI::Internal::Type::FileInput
67
75
 
@@ -316,6 +316,12 @@ module OpenAI
316
316
 
317
317
  variant const: -> { OpenAI::Models::Responses::ResponseCompactParams::Model::GPT_5_1_CODEX_MAX }
318
318
 
319
+ variant const: -> { OpenAI::Models::Responses::ResponseCompactParams::Model::GPT_DAYBREAK_BLUE_LATEST }
320
+
321
+ variant const: -> { OpenAI::Models::Responses::ResponseCompactParams::Model::GPT_DAYBREAK_RED_LATEST }
322
+
323
+ variant const: -> { OpenAI::Models::Responses::ResponseCompactParams::Model::GPT_5_6_CYBER }
324
+
319
325
  variant String
320
326
 
321
327
  # @!method self.variants
@@ -423,6 +429,9 @@ module OpenAI
423
429
  GPT_5_PRO = :"gpt-5-pro"
424
430
  GPT_5_PRO_2025_10_06 = :"gpt-5-pro-2025-10-06"
425
431
  GPT_5_1_CODEX_MAX = :"gpt-5.1-codex-max"
432
+ GPT_DAYBREAK_BLUE_LATEST = :"gpt-daybreak-blue-latest"
433
+ GPT_DAYBREAK_RED_LATEST = :"gpt-daybreak-red-latest"
434
+ GPT_5_6_CYBER = :"gpt-5.6-cyber"
426
435
 
427
436
  # @!endgroup
428
437
  end
@@ -3,7 +3,7 @@
3
3
  module OpenAI
4
4
  module Models
5
5
  module Responses
6
- # Emitted when there is a partial audio response.
6
+ # Event emitted while a response is streamed.
7
7
  module ResponseStreamEvent
8
8
  extend OpenAI::Internal::Type::Union
9
9
 
@@ -265,6 +265,16 @@ module OpenAI
265
265
  # @return [Boolean, nil]
266
266
  optional :stream, OpenAI::Internal::Type::Boolean, nil?: true
267
267
 
268
+ # @!attribute stream_id
269
+ # The WebSocket lane for this response. Requests with the same `stream_id` are
270
+ # processed FIFO, and events for the response echo the same `stream_id`.
271
+ #
272
+ # `stream_id` controls routing; `previous_response_id` controls conversation
273
+ # lineage, so a new lane can fork from a response created on another lane.
274
+ #
275
+ # @return [String, nil]
276
+ optional :stream_id, String
277
+
268
278
  # @!attribute stream_options
269
279
  # Options for streaming responses. Only set this when you set `stream: true`.
270
280
  #
@@ -366,7 +376,7 @@ module OpenAI
366
376
  # @return [String, nil]
367
377
  optional :user, String
368
378
 
369
- # @!method initialize(background: nil, context_management: nil, conversation: nil, include: nil, input: nil, instructions: nil, max_output_tokens: nil, max_tool_calls: nil, metadata: nil, model: nil, moderation: nil, parallel_tool_calls: nil, previous_response_id: nil, prompt: nil, prompt_cache_key: nil, prompt_cache_options: nil, prompt_cache_retention: nil, reasoning: nil, safety_identifier: nil, service_tier: nil, store: nil, stream: nil, stream_options: nil, temperature: nil, text: nil, tool_choice: nil, tools: nil, top_logprobs: nil, top_p: nil, truncation: nil, user: nil, type: :"response.create")
379
+ # @!method initialize(background: nil, context_management: nil, conversation: nil, include: nil, input: nil, instructions: nil, max_output_tokens: nil, max_tool_calls: nil, metadata: nil, model: nil, moderation: nil, parallel_tool_calls: nil, previous_response_id: nil, prompt: nil, prompt_cache_key: nil, prompt_cache_options: nil, prompt_cache_retention: nil, reasoning: nil, safety_identifier: nil, service_tier: nil, store: nil, stream: nil, stream_id: nil, stream_options: nil, temperature: nil, text: nil, tool_choice: nil, tools: nil, top_logprobs: nil, top_p: nil, truncation: nil, user: nil, type: :"response.create")
370
380
  # Some parameter documentations has been truncated, see
371
381
  # {OpenAI::Models::Responses::ResponsesClientEvent} for more details.
372
382
  #
@@ -414,6 +424,8 @@ module OpenAI
414
424
  #
415
425
  # @param stream [Boolean, nil] If set to true, the model response data will be streamed to the client
416
426
  #
427
+ # @param stream_id [String] The WebSocket lane for this response. Requests with the same
428
+ #
417
429
  # @param stream_options [OpenAI::Models::Responses::ResponsesClientEvent::StreamOptions, nil] Options for streaming responses. Only set this when you set `stream: true`.
418
430
  #
419
431
  # @param temperature [Float, nil] What sampling temperature to use, between 0 and 2. Higher values like 0.8 will m