openai 0.94.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 (170) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +57 -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/admin/organization/audit_log_list_response.rb +5 -3
  29. data/lib/openai/models/admin/organization/external_storage_configuration.rb +5 -3
  30. data/lib/openai/models/admin/organization/external_storage_create_params.rb +39 -3
  31. data/lib/openai/models/admin/organization/gcp_external_storage_provider.rb +55 -0
  32. data/lib/openai/models/all_models.rb +1 -0
  33. data/lib/openai/models/audio/speech_create_params.rb +9 -0
  34. data/lib/openai/models/audio/transcription_create_response.rb +4 -1
  35. data/lib/openai/models/audio/translation_create_response.rb +4 -1
  36. data/lib/openai/models/beta/agent.rb +1 -0
  37. data/lib/openai/models/beta/agent_create_params.rb +3 -0
  38. data/lib/openai/models/beta/agent_session.rb +1 -0
  39. data/lib/openai/models/beta/agent_update_params.rb +3 -0
  40. data/lib/openai/models/beta/agents/environments/template_create_params.rb +3 -3
  41. data/lib/openai/models/beta/agents/environments/template_update_params.rb +6 -6
  42. data/lib/openai/models/beta/agents/session_create_params.rb +3 -0
  43. data/lib/openai/models/beta/agents/session_update_params.rb +3 -0
  44. data/lib/openai/models/beta/agents/vaults/credential.rb +10 -1
  45. data/lib/openai/models/beta/agents/vaults/credential_create_params.rb +12 -1
  46. data/lib/openai/models/beta/agents/vaults/credential_update_params.rb +14 -3
  47. data/lib/openai/models/beta/beta_response.rb +41 -1
  48. data/lib/openai/models/beta/beta_responses_client_event.rb +80 -1
  49. data/lib/openai/models/beta/beta_web_search_preview_tool.rb +9 -3
  50. data/lib/openai/models/beta/beta_web_search_tool.rb +9 -3
  51. data/lib/openai/models/beta/environment_param.rb +6 -5
  52. data/lib/openai/models/beta/response_compact_params.rb +6 -0
  53. data/lib/openai/models/beta/response_create_params.rb +71 -1
  54. data/lib/openai/models/beta/session_turn_error.rb +3 -0
  55. data/lib/openai/models/chat_model.rb +1 -0
  56. data/lib/openai/models/responses/response.rb +35 -1
  57. data/lib/openai/models/responses/response_compact_params.rb +6 -0
  58. data/lib/openai/models/responses/response_create_params.rb +65 -1
  59. data/lib/openai/models/responses/responses_client_event.rb +70 -1
  60. data/lib/openai/models/responses/web_search_preview_tool.rb +9 -3
  61. data/lib/openai/models/responses/web_search_tool.rb +9 -3
  62. data/lib/openai/models/responses_model.rb +1 -0
  63. data/lib/openai/models/video_create_error.rb +12 -1
  64. data/lib/openai/net_http_client.rb +0 -2
  65. data/lib/openai/resources/admin/organization/external_storage.rb +1 -1
  66. data/lib/openai/resources/audio/transcriptions.rb +5 -3
  67. data/lib/openai/resources/audio/translations.rb +1 -1
  68. data/lib/openai/resources/beta/agents/environments/templates.rb +3 -3
  69. data/lib/openai/resources/beta/agents/vaults/credentials.rb +12 -4
  70. data/lib/openai/resources/beta/responses.rb +8 -2
  71. data/lib/openai/resources/responses.rb +8 -1
  72. data/lib/openai/version.rb +1 -1
  73. data/lib/openai.rb +2 -0
  74. data/rbi/openai/helpers/live/transcript_grouper.rbi +67 -0
  75. data/rbi/openai/helpers/live/websocket.rbi +299 -0
  76. data/rbi/openai/helpers/realtime/translation.rbi +137 -0
  77. data/rbi/openai/helpers/responses_websocket/incremental.rbi +32 -0
  78. data/rbi/openai/helpers/responses_websocket/transports/async_websocket.rbi +24 -0
  79. data/rbi/openai/helpers/streaming/response_stream.rbi +5 -0
  80. data/rbi/openai/internal/type/converter.rbi +3 -2
  81. data/rbi/openai/models/admin/organization/audit_log_list_response.rbi +6 -3
  82. data/rbi/openai/models/admin/organization/external_storage_configuration.rbi +4 -2
  83. data/rbi/openai/models/admin/organization/external_storage_create_params.rbi +76 -4
  84. data/rbi/openai/models/admin/organization/gcp_external_storage_provider.rbi +100 -0
  85. data/rbi/openai/models/all_models.rbi +1 -0
  86. data/rbi/openai/models/audio/speech_create_params.rbi +3 -0
  87. data/rbi/openai/models/audio/transcription_create_response.rbi +2 -1
  88. data/rbi/openai/models/audio/translation_create_response.rbi +2 -1
  89. data/rbi/openai/models/beta/agent.rbi +1 -0
  90. data/rbi/openai/models/beta/agent_create_params.rbi +3 -0
  91. data/rbi/openai/models/beta/agent_session.rbi +1 -0
  92. data/rbi/openai/models/beta/agent_update_params.rbi +3 -0
  93. data/rbi/openai/models/beta/agents/environments/template_create_params.rbi +3 -3
  94. data/rbi/openai/models/beta/agents/environments/template_update_params.rbi +6 -6
  95. data/rbi/openai/models/beta/agents/session_create_params.rbi +3 -0
  96. data/rbi/openai/models/beta/agents/session_update_params.rbi +3 -0
  97. data/rbi/openai/models/beta/agents/vaults/credential.rbi +10 -0
  98. data/rbi/openai/models/beta/agents/vaults/credential_create_params.rbi +15 -0
  99. data/rbi/openai/models/beta/agents/vaults/credential_update_params.rbi +35 -6
  100. data/rbi/openai/models/beta/beta_response.rbi +65 -0
  101. data/rbi/openai/models/beta/beta_responses_client_event.rbi +132 -0
  102. data/rbi/openai/models/beta/beta_web_search_preview_tool.rbi +9 -3
  103. data/rbi/openai/models/beta/beta_web_search_tool.rbi +9 -3
  104. data/rbi/openai/models/beta/environment_param.rbi +5 -4
  105. data/rbi/openai/models/beta/response_compact_params.rbi +5 -0
  106. data/rbi/openai/models/beta/response_create_params.rbi +104 -0
  107. data/rbi/openai/models/beta/session_turn_error.rbi +6 -0
  108. data/rbi/openai/models/chat_model.rbi +1 -0
  109. data/rbi/openai/models/responses/response.rbi +63 -0
  110. data/rbi/openai/models/responses/response_compact_params.rbi +5 -0
  111. data/rbi/openai/models/responses/response_create_params.rbi +106 -0
  112. data/rbi/openai/models/responses/responses_client_event.rbi +125 -0
  113. data/rbi/openai/models/responses/web_search_preview_tool.rbi +9 -3
  114. data/rbi/openai/models/responses/web_search_tool.rbi +9 -3
  115. data/rbi/openai/models/responses_model.rbi +4 -0
  116. data/rbi/openai/models/video_create_error.rbi +20 -1
  117. data/rbi/openai/resources/admin/organization/external_storage.rbi +2 -1
  118. data/rbi/openai/resources/audio/transcriptions.rbi +4 -2
  119. data/rbi/openai/resources/beta/agents/environments/templates.rbi +3 -3
  120. data/rbi/openai/resources/beta/agents/vaults/credentials.rbi +11 -3
  121. data/rbi/openai/resources/beta/responses.rbi +6 -0
  122. data/rbi/openai/resources/responses.rbi +11 -0
  123. data/responses-websocket.md +55 -0
  124. data/sig/openai/helpers/live/transcript_grouper.rbs +42 -0
  125. data/sig/openai/helpers/live/websocket.rbs +152 -0
  126. data/sig/openai/helpers/realtime/translation.rbs +81 -0
  127. data/sig/openai/helpers/responses_websocket/incremental.rbs +14 -0
  128. data/sig/openai/helpers/responses_websocket/transports/async_websocket.rbs +21 -0
  129. data/sig/openai/helpers/streaming/response_stream.rbs +9 -0
  130. data/sig/openai/internal/type/converter.rbs +3 -1
  131. data/sig/openai/models/admin/organization/audit_log_list_response.rbs +1 -0
  132. data/sig/openai/models/admin/organization/external_storage_configuration.rbs +1 -0
  133. data/sig/openai/models/admin/organization/external_storage_create_params.rbs +38 -0
  134. data/sig/openai/models/admin/organization/gcp_external_storage_provider.rbs +54 -0
  135. data/sig/openai/models/all_models.rbs +2 -0
  136. data/sig/openai/models/audio/speech_create_params.rbs +6 -0
  137. data/sig/openai/models/audio/transcription_create_response.rbs +1 -0
  138. data/sig/openai/models/audio/translation_create_response.rbs +3 -1
  139. data/sig/openai/models/beta/agent.rbs +3 -1
  140. data/sig/openai/models/beta/agent_create_params.rbs +5 -1
  141. data/sig/openai/models/beta/agent_session.rbs +3 -1
  142. data/sig/openai/models/beta/agent_update_params.rbs +5 -1
  143. data/sig/openai/models/beta/agents/environments/template_create_params.rbs +2 -2
  144. data/sig/openai/models/beta/agents/environments/template_update_params.rbs +4 -4
  145. data/sig/openai/models/beta/agents/session_create_params.rbs +5 -1
  146. data/sig/openai/models/beta/agents/session_update_params.rbs +5 -1
  147. data/sig/openai/models/beta/agents/vaults/credential.rbs +8 -0
  148. data/sig/openai/models/beta/agents/vaults/credential_create_params.rbs +14 -0
  149. data/sig/openai/models/beta/agents/vaults/credential_update_params.rbs +23 -4
  150. data/sig/openai/models/beta/beta_response.rbs +39 -0
  151. data/sig/openai/models/beta/beta_responses_client_event.rbs +81 -0
  152. data/sig/openai/models/beta/beta_web_search_preview_tool.rbs +6 -2
  153. data/sig/openai/models/beta/beta_web_search_tool.rbs +6 -2
  154. data/sig/openai/models/beta/environment_param.rbs +2 -2
  155. data/sig/openai/models/beta/response_compact_params.rbs +4 -0
  156. data/sig/openai/models/beta/response_create_params.rbs +81 -0
  157. data/sig/openai/models/beta/session_turn_error.rbs +4 -0
  158. data/sig/openai/models/chat_model.rbs +2 -0
  159. data/sig/openai/models/responses/response.rbs +35 -0
  160. data/sig/openai/models/responses/response_compact_params.rbs +4 -0
  161. data/sig/openai/models/responses/response_create_params.rbs +77 -0
  162. data/sig/openai/models/responses/responses_client_event.rbs +77 -0
  163. data/sig/openai/models/responses/web_search_preview_tool.rbs +6 -2
  164. data/sig/openai/models/responses/web_search_tool.rbs +6 -2
  165. data/sig/openai/models/responses_model.rbs +2 -0
  166. data/sig/openai/models/video_create_error.rbs +14 -0
  167. data/sig/openai/resources/beta/agents/vaults/credentials.rbs +3 -1
  168. data/sig/openai/resources/beta/responses.rbs +2 -0
  169. data/sig/openai/resources/responses.rbs +4 -0
  170. metadata +17 -1
@@ -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::Beta::ResponseCreateParams::AccessPrograms)) }
22
+ attr_reader :access_programs
23
+
24
+ sig { params(access_programs: OpenAI::Beta::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)) }
@@ -421,6 +428,8 @@ module OpenAI
421
428
  sig do
422
429
  params(
423
430
 
431
+ access_programs: OpenAI::Beta::ResponseCreateParams::AccessPrograms::OrHash,
432
+
424
433
  background: T.nilable(T::Boolean),
425
434
 
426
435
  context_management: T.nilable(T::Array[OpenAI::Beta::ResponseCreateParams::ContextManagement::OrHash]),
@@ -520,6 +529,9 @@ module OpenAI
520
529
  end
521
530
  def self.new(
522
531
 
532
+ # Domain-specific access programs to use for this request.
533
+ access_programs: nil,
534
+
523
535
  # Whether to run the model response in the background.
524
536
  # [Learn more](https://developers.openai.com/api/docs/guides/background).
525
537
  background: nil,
@@ -777,6 +789,7 @@ module OpenAI
777
789
  sig do
778
790
  override.returns(
779
791
  {
792
+ access_programs: OpenAI::Beta::ResponseCreateParams::AccessPrograms,
780
793
  background: T.nilable(T::Boolean),
781
794
  context_management: T.nilable(T::Array[OpenAI::Beta::ResponseCreateParams::ContextManagement]),
782
795
  conversation: T.nilable(T.any(String, OpenAI::Beta::BetaResponseConversationParam)),
@@ -845,6 +858,92 @@ module OpenAI
845
858
  def to_hash
846
859
  end
847
860
 
861
+ class AccessPrograms < OpenAI::Internal::Type::BaseModel
862
+ OrHash = T.type_alias do
863
+ T.any(
864
+ OpenAI::Beta::ResponseCreateParams::AccessPrograms,
865
+ OpenAI::Internal::AnyHash
866
+ )
867
+ end
868
+
869
+ # The Cyber access program to use for this request. Supported values are
870
+ # `standard`, `daybreak_blue`, and `daybreak_red`. If omitted, the API resolves
871
+ # the program from the model's Cyber tier and your organization and project
872
+ # access, subject to model-specific eligibility restrictions. By default, models
873
+ # without a Cyber tier use Standard. Blue-tier models use Daybreak Blue when
874
+ # authorized; otherwise they fall back to Standard unless the model requires
875
+ # Daybreak access. Red-tier models use Daybreak Red and require authorization.
876
+ # Requests that require unavailable Daybreak access return 403. An implicit
877
+ # Standard fallback is represented by null in the response's access_programs
878
+ # field, rather than an explicit Standard selection.
879
+ sig { returns(T.nilable(OpenAI::Beta::ResponseCreateParams::AccessPrograms::Cyber::OrSymbol)) }
880
+ attr_reader :cyber
881
+
882
+ sig { params(cyber: OpenAI::Beta::ResponseCreateParams::AccessPrograms::Cyber::OrSymbol).void }
883
+ attr_writer :cyber
884
+
885
+ # Domain-specific access programs to use for this request.
886
+ sig do
887
+ params(
888
+
889
+ cyber: OpenAI::Beta::ResponseCreateParams::AccessPrograms::Cyber::OrSymbol
890
+ )
891
+ .returns(T.attached_class)
892
+ end
893
+ def self.new(
894
+
895
+ # The Cyber access program to use for this request. Supported values are
896
+ # `standard`, `daybreak_blue`, and `daybreak_red`. If omitted, the API resolves
897
+ # the program from the model's Cyber tier and your organization and project
898
+ # access, subject to model-specific eligibility restrictions. By default, models
899
+ # without a Cyber tier use Standard. Blue-tier models use Daybreak Blue when
900
+ # authorized; otherwise they fall back to Standard unless the model requires
901
+ # Daybreak access. Red-tier models use Daybreak Red and require authorization.
902
+ # Requests that require unavailable Daybreak access return 403. An implicit
903
+ # Standard fallback is represented by null in the response's access_programs
904
+ # field, rather than an explicit Standard selection.
905
+
906
+ cyber: nil
907
+ )
908
+ end
909
+
910
+ sig do
911
+ override.returns(
912
+ {cyber: OpenAI::Beta::ResponseCreateParams::AccessPrograms::Cyber::OrSymbol}
913
+ )
914
+ end
915
+ def to_hash
916
+ end
917
+
918
+ # The Cyber access program to use for this request. Supported values are
919
+ # `standard`, `daybreak_blue`, and `daybreak_red`. If omitted, the API resolves
920
+ # the program from the model's Cyber tier and your organization and project
921
+ # access, subject to model-specific eligibility restrictions. By default, models
922
+ # without a Cyber tier use Standard. Blue-tier models use Daybreak Blue when
923
+ # authorized; otherwise they fall back to Standard unless the model requires
924
+ # Daybreak access. Red-tier models use Daybreak Red and require authorization.
925
+ # Requests that require unavailable Daybreak access return 403. An implicit
926
+ # Standard fallback is represented by null in the response's access_programs
927
+ # field, rather than an explicit Standard selection.
928
+ module Cyber
929
+ extend OpenAI::Internal::Type::Enum
930
+
931
+ TaggedSymbol = T.type_alias { T.all(Symbol, OpenAI::Beta::ResponseCreateParams::AccessPrograms::Cyber) }
932
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
933
+
934
+ STANDARD = T.let(:standard, OpenAI::Beta::ResponseCreateParams::AccessPrograms::Cyber::TaggedSymbol)
935
+ DAYBREAK_BLUE = T.let(
936
+ :daybreak_blue,
937
+ OpenAI::Beta::ResponseCreateParams::AccessPrograms::Cyber::TaggedSymbol
938
+ )
939
+ DAYBREAK_RED = T.let(:daybreak_red, OpenAI::Beta::ResponseCreateParams::AccessPrograms::Cyber::TaggedSymbol)
940
+
941
+ sig { override.returns(T::Array[OpenAI::Beta::ResponseCreateParams::AccessPrograms::Cyber::TaggedSymbol]) }
942
+ def self.values
943
+ end
944
+ end
945
+ end
946
+
848
947
  class ContextManagement < OpenAI::Internal::Type::BaseModel
849
948
  OrHash = T.type_alias do
850
949
  T.any(
@@ -947,6 +1046,7 @@ module OpenAI
947
1046
  OrSymbol = T.type_alias { T.any(Symbol, String) }
948
1047
 
949
1048
  GPT_6_ASTRA = T.let(:"gpt-6-astra", OpenAI::Beta::ResponseCreateParams::Model::TaggedSymbol)
1049
+ GPT_6_1_SOL = T.let(:"gpt-6.1-sol", OpenAI::Beta::ResponseCreateParams::Model::TaggedSymbol)
950
1050
  GPT_6_SOL = T.let(:"gpt-6-sol", OpenAI::Beta::ResponseCreateParams::Model::TaggedSymbol)
951
1051
  GPT_6_LUNA = T.let(:"gpt-6-luna", OpenAI::Beta::ResponseCreateParams::Model::TaggedSymbol)
952
1052
  GPT_5_6_SOL = T.let(:"gpt-5.6-sol", OpenAI::Beta::ResponseCreateParams::Model::TaggedSymbol)
@@ -1137,6 +1237,10 @@ module OpenAI
1137
1237
  OpenAI::Beta::ResponseCreateParams::Model::TaggedSymbol
1138
1238
  )
1139
1239
  GPT_5_6_CYBER = T.let(:"gpt-5.6-cyber", OpenAI::Beta::ResponseCreateParams::Model::TaggedSymbol)
1240
+ GPT_ROSALIND_RESEARCH = T.let(
1241
+ :"gpt-rosalind-research",
1242
+ OpenAI::Beta::ResponseCreateParams::Model::TaggedSymbol
1243
+ )
1140
1244
 
1141
1245
  end
1142
1246
 
@@ -82,6 +82,12 @@ module OpenAI
82
82
  # The request was rejected by a safety policy.
83
83
  CYBER_POLICY = T.let(:cyber_policy, OpenAI::Beta::SessionTurnError::Code::TaggedSymbol)
84
84
 
85
+ # The request was blocked by the safety systems.
86
+ MISALIGNMENT_POLICY_VIOLATION = T.let(
87
+ :misalignment_policy_violation,
88
+ OpenAI::Beta::SessionTurnError::Code::TaggedSymbol
89
+ )
90
+
85
91
  # The request could not connect to the model service.
86
92
  CONNECTION_FAILED = T.let(:connection_failed, OpenAI::Beta::SessionTurnError::Code::TaggedSymbol)
87
93
 
@@ -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)
@@ -468,6 +469,10 @@ module OpenAI
468
469
  OpenAI::Responses::ResponseCompactParams::Model::TaggedSymbol
469
470
  )
470
471
  GPT_5_6_CYBER = T.let(:"gpt-5.6-cyber", OpenAI::Responses::ResponseCompactParams::Model::TaggedSymbol)
472
+ GPT_ROSALIND_RESEARCH = T.let(
473
+ :"gpt-rosalind-research",
474
+ OpenAI::Responses::ResponseCompactParams::Model::TaggedSymbol
475
+ )
471
476
 
472
477
  end
473
478
 
@@ -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
 
@@ -60,6 +60,10 @@ module OpenAI
60
60
  OpenAI::ResponsesModel::ResponsesOnlyModel::TaggedSymbol
61
61
  )
62
62
  GPT_5_6_CYBER = T.let(:"gpt-5.6-cyber", OpenAI::ResponsesModel::ResponsesOnlyModel::TaggedSymbol)
63
+ GPT_ROSALIND_RESEARCH = T.let(
64
+ :"gpt-rosalind-research",
65
+ OpenAI::ResponsesModel::ResponsesOnlyModel::TaggedSymbol
66
+ )
63
67
 
64
68
  sig { override.returns(T::Array[OpenAI::ResponsesModel::ResponsesOnlyModel::TaggedSymbol]) }
65
69
  def self.values