openai 0.95.0 → 0.96.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 (147) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +44 -0
  3. data/README.md +5 -2
  4. data/docs/architecture/security-model.md +2 -2
  5. data/examples/audio/record_and_play.rb +1 -1
  6. data/lib/openai/helpers/live/transcript_grouper.rb +264 -0
  7. data/lib/openai/helpers/live/transcript_grouping.rb +309 -0
  8. data/lib/openai/helpers/live/websocket.rb +454 -0
  9. data/lib/openai/helpers/realtime/translation.rb +440 -0
  10. data/lib/openai/helpers/realtime.rb +1 -0
  11. data/lib/openai/helpers/responses_websocket/incremental.rb +246 -0
  12. data/lib/openai/helpers/responses_websocket/transports/async_websocket.rb +183 -0
  13. data/lib/openai/helpers/responses_websocket.rb +1 -0
  14. data/lib/openai/helpers/streaming/response_stream.rb +19 -11
  15. data/lib/openai/helpers/structured_output/chat_completion_parser.rb +0 -2
  16. data/lib/openai/helpers/structured_output/response_parser.rb +1 -2
  17. data/lib/openai/helpers/structured_output/union_of.rb +0 -2
  18. data/lib/openai/helpers/websocket/async_websocket_transport.rb +11 -6
  19. data/lib/openai/helpers/websocket/connection_manager.rb +9 -0
  20. data/lib/openai/internal/read_io_adapter.rb +0 -2
  21. data/lib/openai/internal/stream.rb +0 -2
  22. data/lib/openai/internal/type/base_model.rb +4 -6
  23. data/lib/openai/internal/type/converter.rb +5 -3
  24. data/lib/openai/internal/type/enum.rb +0 -2
  25. data/lib/openai/internal/type/union.rb +0 -6
  26. data/lib/openai/internal/type/unknown.rb +34 -6
  27. data/lib/openai/internal/util.rb +0 -4
  28. data/lib/openai/models/audio/speech_create_params.rb +9 -0
  29. data/lib/openai/models/audio/transcription_create_response.rb +4 -1
  30. data/lib/openai/models/audio/translation_create_response.rb +4 -1
  31. data/lib/openai/models/beta/agent.rb +1 -0
  32. data/lib/openai/models/beta/agent_create_params.rb +3 -0
  33. data/lib/openai/models/beta/agent_session.rb +1 -0
  34. data/lib/openai/models/beta/agent_update_params.rb +3 -0
  35. data/lib/openai/models/beta/agents/environments/template_create_params.rb +3 -3
  36. data/lib/openai/models/beta/agents/environments/template_update_params.rb +6 -6
  37. data/lib/openai/models/beta/agents/session_create_params.rb +3 -0
  38. data/lib/openai/models/beta/agents/session_update_params.rb +3 -0
  39. data/lib/openai/models/beta/agents/vaults/credential.rb +10 -1
  40. data/lib/openai/models/beta/agents/vaults/credential_create_params.rb +12 -1
  41. data/lib/openai/models/beta/agents/vaults/credential_update_params.rb +14 -3
  42. data/lib/openai/models/beta/beta_response.rb +38 -1
  43. data/lib/openai/models/beta/beta_responses_client_event.rb +73 -1
  44. data/lib/openai/models/beta/beta_web_search_preview_tool.rb +9 -3
  45. data/lib/openai/models/beta/beta_web_search_tool.rb +9 -3
  46. data/lib/openai/models/beta/environment_param.rb +3 -3
  47. data/lib/openai/models/beta/response_compact_params.rb +3 -0
  48. data/lib/openai/models/beta/response_create_params.rb +68 -1
  49. data/lib/openai/models/beta/session_turn_error.rb +3 -0
  50. data/lib/openai/models/chat_model.rb +1 -0
  51. data/lib/openai/models/responses/response.rb +35 -1
  52. data/lib/openai/models/responses/response_compact_params.rb +3 -0
  53. data/lib/openai/models/responses/response_create_params.rb +65 -1
  54. data/lib/openai/models/responses/responses_client_event.rb +70 -1
  55. data/lib/openai/models/responses/web_search_preview_tool.rb +9 -3
  56. data/lib/openai/models/responses/web_search_tool.rb +9 -3
  57. data/lib/openai/net_http_client.rb +0 -2
  58. data/lib/openai/resources/audio/transcriptions.rb +5 -3
  59. data/lib/openai/resources/audio/translations.rb +1 -1
  60. data/lib/openai/resources/beta/agents/environments/templates.rb +3 -3
  61. data/lib/openai/resources/beta/agents/vaults/credentials.rb +12 -4
  62. data/lib/openai/resources/beta/responses.rb +8 -2
  63. data/lib/openai/resources/responses.rb +8 -1
  64. data/lib/openai/version.rb +1 -1
  65. data/lib/openai.rb +1 -0
  66. data/rbi/openai/helpers/live/transcript_grouper.rbi +67 -0
  67. data/rbi/openai/helpers/live/websocket.rbi +299 -0
  68. data/rbi/openai/helpers/realtime/translation.rbi +137 -0
  69. data/rbi/openai/helpers/responses_websocket/incremental.rbi +32 -0
  70. data/rbi/openai/helpers/responses_websocket/transports/async_websocket.rbi +24 -0
  71. data/rbi/openai/helpers/streaming/response_stream.rbi +5 -0
  72. data/rbi/openai/internal/type/converter.rbi +3 -2
  73. data/rbi/openai/models/audio/speech_create_params.rbi +3 -0
  74. data/rbi/openai/models/audio/transcription_create_response.rbi +2 -1
  75. data/rbi/openai/models/audio/translation_create_response.rbi +2 -1
  76. data/rbi/openai/models/beta/agent.rbi +1 -0
  77. data/rbi/openai/models/beta/agent_create_params.rbi +3 -0
  78. data/rbi/openai/models/beta/agent_session.rbi +1 -0
  79. data/rbi/openai/models/beta/agent_update_params.rbi +3 -0
  80. data/rbi/openai/models/beta/agents/environments/template_create_params.rbi +3 -3
  81. data/rbi/openai/models/beta/agents/environments/template_update_params.rbi +6 -6
  82. data/rbi/openai/models/beta/agents/session_create_params.rbi +3 -0
  83. data/rbi/openai/models/beta/agents/session_update_params.rbi +3 -0
  84. data/rbi/openai/models/beta/agents/vaults/credential.rbi +10 -0
  85. data/rbi/openai/models/beta/agents/vaults/credential_create_params.rbi +15 -0
  86. data/rbi/openai/models/beta/agents/vaults/credential_update_params.rbi +35 -6
  87. data/rbi/openai/models/beta/beta_response.rbi +64 -0
  88. data/rbi/openai/models/beta/beta_responses_client_event.rbi +128 -0
  89. data/rbi/openai/models/beta/beta_web_search_preview_tool.rbi +9 -3
  90. data/rbi/openai/models/beta/beta_web_search_tool.rbi +9 -3
  91. data/rbi/openai/models/beta/environment_param.rbi +3 -3
  92. data/rbi/openai/models/beta/response_compact_params.rbi +1 -0
  93. data/rbi/openai/models/beta/response_create_params.rbi +100 -0
  94. data/rbi/openai/models/beta/session_turn_error.rbi +6 -0
  95. data/rbi/openai/models/chat_model.rbi +1 -0
  96. data/rbi/openai/models/responses/response.rbi +63 -0
  97. data/rbi/openai/models/responses/response_compact_params.rbi +1 -0
  98. data/rbi/openai/models/responses/response_create_params.rbi +106 -0
  99. data/rbi/openai/models/responses/responses_client_event.rbi +125 -0
  100. data/rbi/openai/models/responses/web_search_preview_tool.rbi +9 -3
  101. data/rbi/openai/models/responses/web_search_tool.rbi +9 -3
  102. data/rbi/openai/resources/audio/transcriptions.rbi +4 -2
  103. data/rbi/openai/resources/beta/agents/environments/templates.rbi +3 -3
  104. data/rbi/openai/resources/beta/agents/vaults/credentials.rbi +11 -3
  105. data/rbi/openai/resources/beta/responses.rbi +6 -0
  106. data/rbi/openai/resources/responses.rbi +11 -0
  107. data/responses-websocket.md +55 -0
  108. data/sig/openai/helpers/live/transcript_grouper.rbs +42 -0
  109. data/sig/openai/helpers/live/websocket.rbs +152 -0
  110. data/sig/openai/helpers/realtime/translation.rbs +81 -0
  111. data/sig/openai/helpers/responses_websocket/incremental.rbs +14 -0
  112. data/sig/openai/helpers/responses_websocket/transports/async_websocket.rbs +21 -0
  113. data/sig/openai/helpers/streaming/response_stream.rbs +9 -0
  114. data/sig/openai/internal/type/converter.rbs +3 -1
  115. data/sig/openai/models/audio/speech_create_params.rbs +6 -0
  116. data/sig/openai/models/audio/transcription_create_response.rbs +1 -0
  117. data/sig/openai/models/audio/translation_create_response.rbs +3 -1
  118. data/sig/openai/models/beta/agent.rbs +3 -1
  119. data/sig/openai/models/beta/agent_create_params.rbs +5 -1
  120. data/sig/openai/models/beta/agent_session.rbs +3 -1
  121. data/sig/openai/models/beta/agent_update_params.rbs +5 -1
  122. data/sig/openai/models/beta/agents/environments/template_create_params.rbs +2 -2
  123. data/sig/openai/models/beta/agents/environments/template_update_params.rbs +4 -4
  124. data/sig/openai/models/beta/agents/session_create_params.rbs +5 -1
  125. data/sig/openai/models/beta/agents/session_update_params.rbs +5 -1
  126. data/sig/openai/models/beta/agents/vaults/credential.rbs +8 -0
  127. data/sig/openai/models/beta/agents/vaults/credential_create_params.rbs +14 -0
  128. data/sig/openai/models/beta/agents/vaults/credential_update_params.rbs +23 -4
  129. data/sig/openai/models/beta/beta_response.rbs +37 -0
  130. data/sig/openai/models/beta/beta_responses_client_event.rbs +79 -0
  131. data/sig/openai/models/beta/beta_web_search_preview_tool.rbs +6 -2
  132. data/sig/openai/models/beta/beta_web_search_tool.rbs +6 -2
  133. data/sig/openai/models/beta/environment_param.rbs +2 -2
  134. data/sig/openai/models/beta/response_compact_params.rbs +2 -0
  135. data/sig/openai/models/beta/response_create_params.rbs +79 -0
  136. data/sig/openai/models/beta/session_turn_error.rbs +4 -0
  137. data/sig/openai/models/chat_model.rbs +2 -0
  138. data/sig/openai/models/responses/response.rbs +35 -0
  139. data/sig/openai/models/responses/response_compact_params.rbs +2 -0
  140. data/sig/openai/models/responses/response_create_params.rbs +77 -0
  141. data/sig/openai/models/responses/responses_client_event.rbs +77 -0
  142. data/sig/openai/models/responses/web_search_preview_tool.rbs +6 -2
  143. data/sig/openai/models/responses/web_search_tool.rbs +6 -2
  144. data/sig/openai/resources/beta/agents/vaults/credentials.rbs +3 -1
  145. data/sig/openai/resources/beta/responses.rbs +2 -0
  146. data/sig/openai/resources/responses.rbs +4 -0
  147. metadata +14 -1
@@ -10,6 +10,7 @@ module OpenAI
10
10
  OrSymbol = T.type_alias { T.any(Symbol, String) }
11
11
 
12
12
  GPT_6_ASTRA = T.let(:"gpt-6-astra", OpenAI::ChatModel::TaggedSymbol)
13
+ GPT_6_1_SOL = T.let(:"gpt-6.1-sol", OpenAI::ChatModel::TaggedSymbol)
13
14
  GPT_6_SOL = T.let(:"gpt-6-sol", OpenAI::ChatModel::TaggedSymbol)
14
15
  GPT_6_LUNA = T.let(:"gpt-6-luna", OpenAI::ChatModel::TaggedSymbol)
15
16
  GPT_5_6_SOL = T.let(:"gpt-5.6-sol", OpenAI::ChatModel::TaggedSymbol)
@@ -18,6 +18,12 @@ module OpenAI
18
18
  sig { returns(String) }
19
19
  attr_accessor :id
20
20
 
21
+ sig { returns(T.nilable(OpenAI::Responses::Response::AccessPrograms)) }
22
+ attr_reader :access_programs
23
+
24
+ sig { params(access_programs: T.nilable(OpenAI::Responses::Response::AccessPrograms::OrHash)).void }
25
+ attr_writer :access_programs
26
+
21
27
  # Unix timestamp (in seconds) of when this Response was created.
22
28
  sig { returns(Float) }
23
29
  attr_accessor :created_at
@@ -338,6 +344,8 @@ module OpenAI
338
344
 
339
345
  id: String,
340
346
 
347
+ access_programs: T.nilable(OpenAI::Responses::Response::AccessPrograms::OrHash),
348
+
341
349
  created_at: Float,
342
350
 
343
351
  error: T.nilable(OpenAI::Responses::ResponseError::OrHash),
@@ -478,6 +486,8 @@ module OpenAI
478
486
  # Unique identifier for this Response.
479
487
  id:,
480
488
 
489
+ access_programs:,
490
+
481
491
  # Unix timestamp (in seconds) of when this Response was created.
482
492
  created_at:,
483
493
 
@@ -715,6 +725,7 @@ module OpenAI
715
725
  override.returns(
716
726
  {
717
727
  id: String,
728
+ access_programs: T.nilable(OpenAI::Responses::Response::AccessPrograms),
718
729
  created_at: Float,
719
730
  error: T.nilable(OpenAI::Responses::ResponseError),
720
731
  incomplete_details: T.nilable(OpenAI::Responses::Response::IncompleteDetails),
@@ -755,6 +766,58 @@ module OpenAI
755
766
  def to_hash
756
767
  end
757
768
 
769
+ class AccessPrograms < OpenAI::Internal::Type::BaseModel
770
+ OrHash = T.type_alias do
771
+ T.any(
772
+ OpenAI::Responses::Response::AccessPrograms,
773
+ OpenAI::Internal::AnyHash
774
+ )
775
+ end
776
+
777
+ # The effective Cyber access program used for this response.
778
+ sig { returns(OpenAI::Responses::Response::AccessPrograms::Cyber::TaggedSymbol) }
779
+ attr_accessor :cyber
780
+
781
+ sig do
782
+ params(
783
+
784
+ cyber: OpenAI::Responses::Response::AccessPrograms::Cyber::OrSymbol
785
+ )
786
+ .returns(T.attached_class)
787
+ end
788
+ def self.new(
789
+
790
+ # The effective Cyber access program used for this response.
791
+
792
+ cyber:
793
+ )
794
+ end
795
+
796
+ sig do
797
+ override.returns(
798
+ {cyber: OpenAI::Responses::Response::AccessPrograms::Cyber::TaggedSymbol}
799
+ )
800
+ end
801
+ def to_hash
802
+ end
803
+
804
+ # The effective Cyber access program used for this response.
805
+ module Cyber
806
+ extend OpenAI::Internal::Type::Enum
807
+
808
+ TaggedSymbol = T.type_alias { T.all(Symbol, OpenAI::Responses::Response::AccessPrograms::Cyber) }
809
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
810
+
811
+ STANDARD = T.let(:standard, OpenAI::Responses::Response::AccessPrograms::Cyber::TaggedSymbol)
812
+ DAYBREAK_BLUE = T.let(:daybreak_blue, OpenAI::Responses::Response::AccessPrograms::Cyber::TaggedSymbol)
813
+ DAYBREAK_RED = T.let(:daybreak_red, OpenAI::Responses::Response::AccessPrograms::Cyber::TaggedSymbol)
814
+
815
+ sig { override.returns(T::Array[OpenAI::Responses::Response::AccessPrograms::Cyber::TaggedSymbol]) }
816
+ def self.values
817
+ end
818
+ end
819
+ end
820
+
758
821
  class IncompleteDetails < OpenAI::Internal::Type::BaseModel
759
822
  OrHash = T.type_alias do
760
823
  T.any(
@@ -215,6 +215,7 @@ module OpenAI
215
215
  OrSymbol = T.type_alias { T.any(Symbol, String) }
216
216
 
217
217
  GPT_6_ASTRA = T.let(:"gpt-6-astra", OpenAI::Responses::ResponseCompactParams::Model::TaggedSymbol)
218
+ GPT_6_1_SOL = T.let(:"gpt-6.1-sol", OpenAI::Responses::ResponseCompactParams::Model::TaggedSymbol)
218
219
  GPT_6_SOL = T.let(:"gpt-6-sol", OpenAI::Responses::ResponseCompactParams::Model::TaggedSymbol)
219
220
  GPT_6_LUNA = T.let(:"gpt-6-luna", OpenAI::Responses::ResponseCompactParams::Model::TaggedSymbol)
220
221
  GPT_5_6_SOL = T.let(:"gpt-5.6-sol", OpenAI::Responses::ResponseCompactParams::Model::TaggedSymbol)
@@ -17,6 +17,13 @@ module OpenAI
17
17
  )
18
18
  end
19
19
 
20
+ # Domain-specific access programs to use for this request.
21
+ sig { returns(T.nilable(OpenAI::Responses::ResponseCreateParams::AccessPrograms)) }
22
+ attr_reader :access_programs
23
+
24
+ sig { params(access_programs: OpenAI::Responses::ResponseCreateParams::AccessPrograms::OrHash).void }
25
+ attr_writer :access_programs
26
+
20
27
  # Whether to run the model response in the background.
21
28
  # [Learn more](https://developers.openai.com/api/docs/guides/background).
22
29
  sig { returns(T.nilable(T::Boolean)) }
@@ -426,6 +433,8 @@ module OpenAI
426
433
  sig do
427
434
  params(
428
435
 
436
+ access_programs: OpenAI::Responses::ResponseCreateParams::AccessPrograms::OrHash,
437
+
429
438
  background: T.nilable(T::Boolean),
430
439
 
431
440
  context_management: T.nilable(T::Array[OpenAI::Responses::ResponseCreateParams::ContextManagement::OrHash]),
@@ -521,6 +530,9 @@ module OpenAI
521
530
  end
522
531
  def self.new(
523
532
 
533
+ # Domain-specific access programs to use for this request.
534
+ access_programs: nil,
535
+
524
536
  # Whether to run the model response in the background.
525
537
  # [Learn more](https://developers.openai.com/api/docs/guides/background).
526
538
  background: nil,
@@ -773,6 +785,7 @@ module OpenAI
773
785
  sig do
774
786
  override.returns(
775
787
  {
788
+ access_programs: OpenAI::Responses::ResponseCreateParams::AccessPrograms,
776
789
  background: T.nilable(T::Boolean),
777
790
  context_management: T.nilable(T::Array[OpenAI::Responses::ResponseCreateParams::ContextManagement]),
778
791
  conversation: T.nilable(T.any(String, OpenAI::Responses::ResponseConversationParam)),
@@ -839,6 +852,99 @@ module OpenAI
839
852
  def to_hash
840
853
  end
841
854
 
855
+ class AccessPrograms < OpenAI::Internal::Type::BaseModel
856
+ OrHash = T.type_alias do
857
+ T.any(
858
+ OpenAI::Responses::ResponseCreateParams::AccessPrograms,
859
+ OpenAI::Internal::AnyHash
860
+ )
861
+ end
862
+
863
+ # The Cyber access program to use for this request. Supported values are
864
+ # `standard`, `daybreak_blue`, and `daybreak_red`. If omitted, the API resolves
865
+ # the program from the model's Cyber tier and your organization and project
866
+ # access, subject to model-specific eligibility restrictions. By default, models
867
+ # without a Cyber tier use Standard. Blue-tier models use Daybreak Blue when
868
+ # authorized; otherwise they fall back to Standard unless the model requires
869
+ # Daybreak access. Red-tier models use Daybreak Red and require authorization.
870
+ # Requests that require unavailable Daybreak access return 403. An implicit
871
+ # Standard fallback is represented by null in the response's access_programs
872
+ # field, rather than an explicit Standard selection.
873
+ sig { returns(T.nilable(OpenAI::Responses::ResponseCreateParams::AccessPrograms::Cyber::OrSymbol)) }
874
+ attr_reader :cyber
875
+
876
+ sig { params(cyber: OpenAI::Responses::ResponseCreateParams::AccessPrograms::Cyber::OrSymbol).void }
877
+ attr_writer :cyber
878
+
879
+ # Domain-specific access programs to use for this request.
880
+ sig do
881
+ params(
882
+
883
+ cyber: OpenAI::Responses::ResponseCreateParams::AccessPrograms::Cyber::OrSymbol
884
+ )
885
+ .returns(T.attached_class)
886
+ end
887
+ def self.new(
888
+
889
+ # The Cyber access program to use for this request. Supported values are
890
+ # `standard`, `daybreak_blue`, and `daybreak_red`. If omitted, the API resolves
891
+ # the program from the model's Cyber tier and your organization and project
892
+ # access, subject to model-specific eligibility restrictions. By default, models
893
+ # without a Cyber tier use Standard. Blue-tier models use Daybreak Blue when
894
+ # authorized; otherwise they fall back to Standard unless the model requires
895
+ # Daybreak access. Red-tier models use Daybreak Red and require authorization.
896
+ # Requests that require unavailable Daybreak access return 403. An implicit
897
+ # Standard fallback is represented by null in the response's access_programs
898
+ # field, rather than an explicit Standard selection.
899
+
900
+ cyber: nil
901
+ )
902
+ end
903
+
904
+ sig do
905
+ override.returns(
906
+ {cyber: OpenAI::Responses::ResponseCreateParams::AccessPrograms::Cyber::OrSymbol}
907
+ )
908
+ end
909
+ def to_hash
910
+ end
911
+
912
+ # The Cyber access program to use for this request. Supported values are
913
+ # `standard`, `daybreak_blue`, and `daybreak_red`. If omitted, the API resolves
914
+ # the program from the model's Cyber tier and your organization and project
915
+ # access, subject to model-specific eligibility restrictions. By default, models
916
+ # without a Cyber tier use Standard. Blue-tier models use Daybreak Blue when
917
+ # authorized; otherwise they fall back to Standard unless the model requires
918
+ # Daybreak access. Red-tier models use Daybreak Red and require authorization.
919
+ # Requests that require unavailable Daybreak access return 403. An implicit
920
+ # Standard fallback is represented by null in the response's access_programs
921
+ # field, rather than an explicit Standard selection.
922
+ module Cyber
923
+ extend OpenAI::Internal::Type::Enum
924
+
925
+ TaggedSymbol = T.type_alias {
926
+ T.all(Symbol, OpenAI::Responses::ResponseCreateParams::AccessPrograms::Cyber)
927
+ }
928
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
929
+
930
+ STANDARD = T.let(:standard, OpenAI::Responses::ResponseCreateParams::AccessPrograms::Cyber::TaggedSymbol)
931
+ DAYBREAK_BLUE = T.let(
932
+ :daybreak_blue,
933
+ OpenAI::Responses::ResponseCreateParams::AccessPrograms::Cyber::TaggedSymbol
934
+ )
935
+ DAYBREAK_RED = T.let(
936
+ :daybreak_red,
937
+ OpenAI::Responses::ResponseCreateParams::AccessPrograms::Cyber::TaggedSymbol
938
+ )
939
+
940
+ sig {
941
+ override.returns(T::Array[OpenAI::Responses::ResponseCreateParams::AccessPrograms::Cyber::TaggedSymbol])
942
+ }
943
+ def self.values
944
+ end
945
+ end
946
+ end
947
+
842
948
  class ContextManagement < OpenAI::Internal::Type::BaseModel
843
949
  OrHash = T.type_alias do
844
950
  T.any(
@@ -28,6 +28,16 @@ module OpenAI
28
28
  sig { returns(Symbol) }
29
29
  attr_accessor :type
30
30
 
31
+ # Domain-specific access programs to use for this request.
32
+ sig { returns(T.nilable(OpenAI::Responses::ResponsesClientEvent::ResponseCreate::AccessPrograms)) }
33
+ attr_reader :access_programs
34
+
35
+ sig {
36
+ params(access_programs: OpenAI::Responses::ResponsesClientEvent::ResponseCreate::AccessPrograms::OrHash)
37
+ .void
38
+ }
39
+ attr_writer :access_programs
40
+
31
41
  # Whether to run the model response in the background.
32
42
  # [Learn more](https://developers.openai.com/api/docs/guides/background).
33
43
  sig { returns(T.nilable(T::Boolean)) }
@@ -476,6 +486,8 @@ module OpenAI
476
486
  sig do
477
487
  params(
478
488
 
489
+ access_programs: OpenAI::Responses::ResponsesClientEvent::ResponseCreate::AccessPrograms::OrHash,
490
+
479
491
  background: T.nilable(T::Boolean),
480
492
 
481
493
  context_management: T.nilable(
@@ -579,6 +591,9 @@ module OpenAI
579
591
  end
580
592
  def self.new(
581
593
 
594
+ # Domain-specific access programs to use for this request.
595
+ access_programs: nil,
596
+
582
597
  # Whether to run the model response in the background.
583
598
  # [Learn more](https://developers.openai.com/api/docs/guides/background).
584
599
  background: nil,
@@ -849,6 +864,7 @@ module OpenAI
849
864
  override.returns(
850
865
  {
851
866
  type: Symbol,
867
+ access_programs: T.nilable(OpenAI::Responses::ResponsesClientEvent::ResponseCreate::AccessPrograms),
852
868
  background: T.nilable(T::Boolean),
853
869
  context_management: T.nilable(
854
870
  T::Array[OpenAI::Responses::ResponsesClientEvent::ResponseCreate::ContextManagement]
@@ -928,6 +944,115 @@ module OpenAI
928
944
  def to_hash
929
945
  end
930
946
 
947
+ class AccessPrograms < OpenAI::Internal::Type::BaseModel
948
+ OrHash = T.type_alias do
949
+ T.any(
950
+ OpenAI::Responses::ResponsesClientEvent::ResponseCreate::AccessPrograms,
951
+ OpenAI::Internal::AnyHash
952
+ )
953
+ end
954
+
955
+ # The Cyber access program to use for this request. Supported values are
956
+ # `standard`, `daybreak_blue`, and `daybreak_red`. If omitted, the API resolves
957
+ # the program from the model's Cyber tier and your organization and project
958
+ # access, subject to model-specific eligibility restrictions. By default, models
959
+ # without a Cyber tier use Standard. Blue-tier models use Daybreak Blue when
960
+ # authorized; otherwise they fall back to Standard unless the model requires
961
+ # Daybreak access. Red-tier models use Daybreak Red and require authorization.
962
+ # Requests that require unavailable Daybreak access return 403. An implicit
963
+ # Standard fallback is represented by null in the response's access_programs
964
+ # field, rather than an explicit Standard selection.
965
+ sig {
966
+ returns(
967
+ T.nilable(OpenAI::Responses::ResponsesClientEvent::ResponseCreate::AccessPrograms::Cyber::OrSymbol)
968
+ )
969
+ }
970
+ attr_reader :cyber
971
+
972
+ sig {
973
+ params(cyber: OpenAI::Responses::ResponsesClientEvent::ResponseCreate::AccessPrograms::Cyber::OrSymbol)
974
+ .void
975
+ }
976
+ attr_writer :cyber
977
+
978
+ # Domain-specific access programs to use for this request.
979
+ sig do
980
+ params(
981
+
982
+ cyber: OpenAI::Responses::ResponsesClientEvent::ResponseCreate::AccessPrograms::Cyber::OrSymbol
983
+ )
984
+ .returns(T.attached_class)
985
+ end
986
+ def self.new(
987
+
988
+ # The Cyber access program to use for this request. Supported values are
989
+ # `standard`, `daybreak_blue`, and `daybreak_red`. If omitted, the API resolves
990
+ # the program from the model's Cyber tier and your organization and project
991
+ # access, subject to model-specific eligibility restrictions. By default, models
992
+ # without a Cyber tier use Standard. Blue-tier models use Daybreak Blue when
993
+ # authorized; otherwise they fall back to Standard unless the model requires
994
+ # Daybreak access. Red-tier models use Daybreak Red and require authorization.
995
+ # Requests that require unavailable Daybreak access return 403. An implicit
996
+ # Standard fallback is represented by null in the response's access_programs
997
+ # field, rather than an explicit Standard selection.
998
+
999
+ cyber: nil
1000
+ )
1001
+ end
1002
+
1003
+ sig do
1004
+ override.returns(
1005
+ {
1006
+ cyber: T.nilable(
1007
+ OpenAI::Responses::ResponsesClientEvent::ResponseCreate::AccessPrograms::Cyber::OrSymbol
1008
+ )
1009
+ }
1010
+ )
1011
+ end
1012
+ def to_hash
1013
+ end
1014
+
1015
+ # The Cyber access program to use for this request. Supported values are
1016
+ # `standard`, `daybreak_blue`, and `daybreak_red`. If omitted, the API resolves
1017
+ # the program from the model's Cyber tier and your organization and project
1018
+ # access, subject to model-specific eligibility restrictions. By default, models
1019
+ # without a Cyber tier use Standard. Blue-tier models use Daybreak Blue when
1020
+ # authorized; otherwise they fall back to Standard unless the model requires
1021
+ # Daybreak access. Red-tier models use Daybreak Red and require authorization.
1022
+ # Requests that require unavailable Daybreak access return 403. An implicit
1023
+ # Standard fallback is represented by null in the response's access_programs
1024
+ # field, rather than an explicit Standard selection.
1025
+ module Cyber
1026
+ extend OpenAI::Internal::Type::Enum
1027
+
1028
+ TaggedSymbol = T.type_alias {
1029
+ T.all(Symbol, OpenAI::Responses::ResponsesClientEvent::ResponseCreate::AccessPrograms::Cyber)
1030
+ }
1031
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1032
+
1033
+ STANDARD = T.let(
1034
+ :standard,
1035
+ OpenAI::Responses::ResponsesClientEvent::ResponseCreate::AccessPrograms::Cyber::TaggedSymbol
1036
+ )
1037
+ DAYBREAK_BLUE = T.let(
1038
+ :daybreak_blue,
1039
+ OpenAI::Responses::ResponsesClientEvent::ResponseCreate::AccessPrograms::Cyber::TaggedSymbol
1040
+ )
1041
+ DAYBREAK_RED = T.let(
1042
+ :daybreak_red,
1043
+ OpenAI::Responses::ResponsesClientEvent::ResponseCreate::AccessPrograms::Cyber::TaggedSymbol
1044
+ )
1045
+
1046
+ sig {
1047
+ override.returns(
1048
+ T::Array[OpenAI::Responses::ResponsesClientEvent::ResponseCreate::AccessPrograms::Cyber::TaggedSymbol]
1049
+ )
1050
+ }
1051
+ def self.values
1052
+ end
1053
+ end
1054
+ end
1055
+
931
1056
  class ContextManagement < OpenAI::Internal::Type::BaseModel
932
1057
  OrHash = T.type_alias do
933
1058
  T.any(
@@ -36,7 +36,9 @@ module OpenAI
36
36
  sig { params(search_context_size: OpenAI::Responses::WebSearchPreviewTool::SearchContextSize::OrSymbol).void }
37
37
  attr_writer :search_context_size
38
38
 
39
- # The user's location.
39
+ # The approximate location of the user. If omitted or null, defaults to the United
40
+ # States. To avoid this fallback, pass `{"type": "approximate"}` without location
41
+ # fields. To localize results, provide the relevant location fields.
40
42
  sig { returns(T.nilable(OpenAI::Responses::WebSearchPreviewTool::UserLocation)) }
41
43
  attr_reader :user_location
42
44
 
@@ -71,7 +73,9 @@ module OpenAI
71
73
  # search. One of `low`, `medium`, or `high`. `medium` is the default.
72
74
  search_context_size: nil,
73
75
 
74
- # The user's location.
76
+ # The approximate location of the user. If omitted or null, defaults to the United
77
+ # States. To avoid this fallback, pass `{"type": "approximate"}` without location
78
+ # fields. To localize results, provide the relevant location fields.
75
79
 
76
80
  user_location: nil
77
81
  )
@@ -170,7 +174,9 @@ module OpenAI
170
174
  sig { returns(T.nilable(String)) }
171
175
  attr_accessor :timezone
172
176
 
173
- # The user's location.
177
+ # The approximate location of the user. If omitted or null, defaults to the United
178
+ # States. To avoid this fallback, pass `{"type": "approximate"}` without location
179
+ # fields. To localize results, provide the relevant location fields.
174
180
  sig do
175
181
  params(
176
182
 
@@ -42,7 +42,9 @@ module OpenAI
42
42
  sig { params(search_context_size: OpenAI::Responses::WebSearchTool::SearchContextSize::OrSymbol).void }
43
43
  attr_writer :search_context_size
44
44
 
45
- # The approximate location of the user.
45
+ # The approximate location of the user. If omitted or null, defaults to the United
46
+ # States. To avoid this fallback, pass `{"type": "approximate"}` without location
47
+ # fields. To localize results, provide the relevant location fields.
46
48
  sig { returns(T.nilable(OpenAI::Responses::WebSearchTool::UserLocation)) }
47
49
  attr_reader :user_location
48
50
 
@@ -83,7 +85,9 @@ module OpenAI
83
85
  # search. One of `low`, `medium`, or `high`. `medium` is the default.
84
86
  search_context_size: nil,
85
87
 
86
- # The approximate location of the user.
88
+ # The approximate location of the user. If omitted or null, defaults to the United
89
+ # States. To avoid this fallback, pass `{"type": "approximate"}` without location
90
+ # fields. To localize results, provide the relevant location fields.
87
91
 
88
92
  user_location: nil
89
93
  )
@@ -212,7 +216,9 @@ module OpenAI
212
216
  sig { params(type: OpenAI::Responses::WebSearchTool::UserLocation::Type::OrSymbol).void }
213
217
  attr_writer :type
214
218
 
215
- # The approximate location of the user.
219
+ # The approximate location of the user. If omitted or null, defaults to the United
220
+ # States. To avoid this fallback, pass `{"type": "approximate"}` without location
221
+ # fields. To localize results, provide the relevant location fields.
216
222
  sig do
217
223
  params(
218
224
 
@@ -14,7 +14,8 @@ module OpenAI
14
14
  # Transcribes audio into the input language.
15
15
  #
16
16
  # Returns a transcription object in `json`, `diarized_json`, or `verbose_json`
17
- # format, or a stream of transcript events.
17
+ # format, plain text in `text`, `srt`, or `vtt` format, or a stream of transcript
18
+ # events. Supported formats depend on the model.
18
19
  sig {
19
20
  params(
20
21
  file: OpenAI::Internal::FileInput,
@@ -125,7 +126,8 @@ module OpenAI
125
126
  # Transcribes audio into the input language.
126
127
  #
127
128
  # Returns a transcription object in `json`, `diarized_json`, or `verbose_json`
128
- # format, or a stream of transcript events.
129
+ # format, plain text in `text`, `srt`, or `vtt` format, or a stream of transcript
130
+ # events. Supported formats depend on the model.
129
131
  sig {
130
132
  params(
131
133
  file: OpenAI::Internal::FileInput,
@@ -54,7 +54,7 @@ module OpenAI
54
54
  # An optional human-readable display name for the template.
55
55
  name: nil,
56
56
  # Network access policy for the environment. Defaults to disabled for GA requests
57
- # and enabled for alpha/beta requests.
57
+ # and enabled for beta requests.
58
58
  network: nil,
59
59
  # Packages to install in the environment. Defaults to empty package lists.
60
60
  packages: nil,
@@ -129,8 +129,8 @@ module OpenAI
129
129
  # A replacement human-readable display name, or `null` to clear the name.
130
130
  name: nil,
131
131
  # Network access available after setup completes. Omit to preserve the current
132
- # policy, or pass `null` to reset to disabled for GA requests or enabled for
133
- # alpha/beta requests.
132
+ # policy, or pass `null` to reset to disabled for GA requests or enabled for beta
133
+ # requests.
134
134
  network: nil,
135
135
  # Packages installed before the runtime network policy applies.
136
136
  packages: nil,
@@ -23,6 +23,7 @@ module OpenAI
23
23
  OpenAI::Beta::Agents::Vaults::CredentialAuthCreateParam::EnvironmentVariable::OrHash
24
24
  ),
25
25
  name: String,
26
+ metadata: T::Hash[Symbol, String],
26
27
  request_options: OpenAI::RequestOptions::OrHash
27
28
  )
28
29
  .returns(OpenAI::Beta::Agents::Vaults::Credential)
@@ -35,6 +36,9 @@ module OpenAI
35
36
  # The name is trimmed before storage. It must contain 1 to 256 UTF-8 bytes after
36
37
  # trimming.
37
38
  name:,
39
+ # Up to 16 string key-value pairs, with keys up to 64 and values up to 512
40
+ # characters. Defaults to an empty map.
41
+ metadata: nil,
38
42
  request_options: {}
39
43
  )
40
44
  end
@@ -55,8 +59,7 @@ module OpenAI
55
59
  )
56
60
  end
57
61
 
58
- # Rotates a vault credential's write-only secret and returns only credential
59
- # metadata. See
62
+ # Updates credential metadata or rotates its write-only secret. See
60
63
  # [vaults](https://developers.openai.com/api/docs/guides/agents-api/tools/vaults).
61
64
  sig {
62
65
  params(
@@ -67,6 +70,7 @@ module OpenAI
67
70
  OpenAI::Beta::Agents::Vaults::CredentialAuthRotateParam::StaticBearer::OrHash,
68
71
  OpenAI::Beta::Agents::Vaults::CredentialAuthRotateParam::EnvironmentVariable::OrHash
69
72
  ),
73
+ metadata: T::Hash[Symbol, String],
70
74
  request_options: OpenAI::RequestOptions::OrHash
71
75
  )
72
76
  .returns(OpenAI::Beta::Agents::Vaults::Credential)
@@ -78,7 +82,11 @@ module OpenAI
78
82
  vault_id:,
79
83
  # Body param: Replacement values for the credential's existing authentication
80
84
  # method.
81
- auth:,
85
+ auth: nil,
86
+ # Body param: Replaces all metadata. Omit to preserve it, or pass {} to clear it.
87
+ # Up to 16 string key-value pairs, with keys up to 64 and values up to 512
88
+ # characters.
89
+ metadata: nil,
82
90
  request_options: {}
83
91
  )
84
92
  end
@@ -31,6 +31,7 @@ module OpenAI
31
31
  # to use your own data as input for the model's response.
32
32
  sig {
33
33
  params(
34
+ access_programs: OpenAI::Beta::ResponseCreateParams::AccessPrograms::OrHash,
34
35
  background: T.nilable(T::Boolean),
35
36
  context_management: T.nilable(T::Array[OpenAI::Beta::ResponseCreateParams::ContextManagement::OrHash]),
36
37
  conversation: T.nilable(T.any(String, OpenAI::Beta::BetaResponseConversationParam::OrHash)),
@@ -98,6 +99,8 @@ module OpenAI
98
99
  .returns(OpenAI::Beta::BetaResponse)
99
100
  }
100
101
  def create(
102
+ # Body param: Domain-specific access programs to use for this request.
103
+ access_programs: nil,
101
104
  # Body param: Whether to run the model response in the background.
102
105
  # [Learn more](https://developers.openai.com/api/docs/guides/background).
103
106
  background: nil,
@@ -346,6 +349,7 @@ module OpenAI
346
349
  # to use your own data as input for the model's response.
347
350
  sig {
348
351
  params(
352
+ access_programs: OpenAI::Beta::ResponseCreateParams::AccessPrograms::OrHash,
349
353
  background: T.nilable(T::Boolean),
350
354
  context_management: T.nilable(T::Array[OpenAI::Beta::ResponseCreateParams::ContextManagement::OrHash]),
351
355
  conversation: T.nilable(T.any(String, OpenAI::Beta::BetaResponseConversationParam::OrHash)),
@@ -417,6 +421,8 @@ module OpenAI
417
421
  )
418
422
  }
419
423
  def stream_raw(
424
+ # Body param: Domain-specific access programs to use for this request.
425
+ access_programs: nil,
420
426
  # Body param: Whether to run the model response in the background.
421
427
  # [Learn more](https://developers.openai.com/api/docs/guides/background).
422
428
  background: nil,
@@ -29,6 +29,7 @@ module OpenAI
29
29
  # to use your own data as input for the model's response.
30
30
  sig do
31
31
  params(
32
+ access_programs: OpenAI::Responses::ResponseCreateParams::AccessPrograms::OrHash,
32
33
  background: T.nilable(T::Boolean),
33
34
  context_management: T.nilable(T::Array[OpenAI::Responses::ResponseCreateParams::ContextManagement::OrHash]),
34
35
  conversation: T.nilable(T.any(String, OpenAI::Responses::ResponseConversationParam::OrHash)),
@@ -97,6 +98,8 @@ module OpenAI
97
98
  .returns(OpenAI::Responses::Response)
98
99
  end
99
100
  def create(
101
+ # Domain-specific access programs to use for this request.
102
+ access_programs: nil,
100
103
  # Whether to run the model response in the background.
101
104
  # [Learn more](https://developers.openai.com/api/docs/guides/background).
102
105
  background: nil,
@@ -334,6 +337,7 @@ module OpenAI
334
337
  # to use your own data as input for the model's response.
335
338
  sig do
336
339
  params(
340
+ access_programs: OpenAI::Responses::ResponseCreateParams::AccessPrograms::OrHash,
337
341
  background: T.nilable(T::Boolean),
338
342
  context_management: T.nilable(T::Array[OpenAI::Responses::ResponseCreateParams::ContextManagement::OrHash]),
339
343
  conversation: T.nilable(T.any(String, OpenAI::Responses::ResponseConversationParam::OrHash)),
@@ -408,6 +412,8 @@ module OpenAI
408
412
  )
409
413
  end
410
414
  def stream_raw(
415
+ # Domain-specific access programs to use for this request.
416
+ access_programs: nil,
411
417
  # Whether to run the model response in the background.
412
418
  # [Learn more](https://developers.openai.com/api/docs/guides/background).
413
419
  background: nil,
@@ -645,6 +651,7 @@ module OpenAI
645
651
  # your own data as input for the model's response.
646
652
  sig do
647
653
  params(
654
+ access_programs: OpenAI::Responses::ResponseCreateParams::AccessPrograms::OrHash,
648
655
  background: T.nilable(T::Boolean),
649
656
  include: T.nilable(
650
657
  T::Array[OpenAI::Responses::ResponseIncludable::OrSymbol]
@@ -715,6 +722,8 @@ module OpenAI
715
722
  .returns(OpenAI::Streaming::ResponseStream)
716
723
  end
717
724
  def stream(
725
+ # Domain-specific access programs to use for this request.
726
+ access_programs: nil,
718
727
  # Whether to run the model response in the background.
719
728
  # [Learn more](https://developers.openai.com/api/docs/guides/background).
720
729
  background: nil,
@@ -1134,6 +1143,7 @@ module OpenAI
1134
1143
  class Response
1135
1144
  sig do
1136
1145
  params(
1146
+ access_programs: OpenAI::Responses::ResponsesClientEvent::ResponseCreate::AccessPrograms::OrHash,
1137
1147
  background: T.nilable(T::Boolean),
1138
1148
  context_management: T.nilable(
1139
1149
  T::Array[OpenAI::Responses::ResponsesClientEvent::ResponseCreate::ContextManagement::OrHash]
@@ -1204,6 +1214,7 @@ module OpenAI
1204
1214
  .void
1205
1215
  end
1206
1216
  def create(
1217
+ access_programs: nil,
1207
1218
  background: nil,
1208
1219
  context_management: nil,
1209
1220
  conversation: nil,