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
@@ -30,6 +30,10 @@ module OpenAI
30
30
  sig { returns(Integer) }
31
31
  attr_accessor :created_at
32
32
 
33
+ # Application-defined key-value pairs associated with this credential.
34
+ sig { returns(T::Hash[Symbol, String]) }
35
+ attr_accessor :metadata
36
+
33
37
  # The human-readable name of the credential.
34
38
  sig { returns(String) }
35
39
  attr_accessor :name
@@ -60,6 +64,8 @@ module OpenAI
60
64
 
61
65
  created_at: Integer,
62
66
 
67
+ metadata: T::Hash[Symbol, String],
68
+
63
69
  name: String,
64
70
 
65
71
  updated_at: Integer,
@@ -81,6 +87,9 @@ module OpenAI
81
87
  # The Unix timestamp, in seconds, when the credential was created.
82
88
  created_at:,
83
89
 
90
+ # Application-defined key-value pairs associated with this credential.
91
+ metadata:,
92
+
84
93
  # The human-readable name of the credential.
85
94
  name:,
86
95
 
@@ -102,6 +111,7 @@ module OpenAI
102
111
  id: String,
103
112
  auth: OpenAI::Beta::Agents::Vaults::CredentialAuth::Variants,
104
113
  created_at: Integer,
114
+ metadata: T::Hash[Symbol, String],
105
115
  name: String,
106
116
  object: Symbol,
107
117
  updated_at: Integer,
@@ -41,6 +41,14 @@ module OpenAI
41
41
  sig { returns(String) }
42
42
  attr_accessor :name
43
43
 
44
+ # Up to 16 string key-value pairs, with keys up to 64 and values up to 512
45
+ # characters. Defaults to an empty map.
46
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
47
+ attr_reader :metadata
48
+
49
+ sig { params(metadata: T::Hash[Symbol, String]).void }
50
+ attr_writer :metadata
51
+
44
52
  sig do
45
53
  params(
46
54
 
@@ -54,6 +62,8 @@ module OpenAI
54
62
 
55
63
  name: String,
56
64
 
65
+ metadata: T::Hash[Symbol, String],
66
+
57
67
  request_options: OpenAI::RequestOptions::OrHash
58
68
  )
59
69
  .returns(T.attached_class)
@@ -69,6 +79,10 @@ module OpenAI
69
79
  # trimming.
70
80
  name:,
71
81
 
82
+ # Up to 16 string key-value pairs, with keys up to 64 and values up to 512
83
+ # characters. Defaults to an empty map.
84
+ metadata: nil,
85
+
72
86
  request_options: {}
73
87
  )
74
88
  end
@@ -83,6 +97,7 @@ module OpenAI
83
97
  OpenAI::Beta::Agents::Vaults::CredentialAuthCreateParam::EnvironmentVariable
84
98
  ),
85
99
  name: String,
100
+ metadata: T::Hash[Symbol, String],
86
101
  request_options: OpenAI::RequestOptions
87
102
  }
88
103
  )
@@ -30,14 +30,36 @@ module OpenAI
30
30
  # Replacement values for the credential's existing authentication method.
31
31
  sig {
32
32
  returns(
33
- T.any(
34
- OpenAI::Beta::Agents::Vaults::CredentialAuthRotateParam::McpOauth,
35
- OpenAI::Beta::Agents::Vaults::CredentialAuthRotateParam::StaticBearer,
36
- OpenAI::Beta::Agents::Vaults::CredentialAuthRotateParam::EnvironmentVariable
33
+ T.nilable(
34
+ T.any(
35
+ OpenAI::Beta::Agents::Vaults::CredentialAuthRotateParam::McpOauth,
36
+ OpenAI::Beta::Agents::Vaults::CredentialAuthRotateParam::StaticBearer,
37
+ OpenAI::Beta::Agents::Vaults::CredentialAuthRotateParam::EnvironmentVariable
38
+ )
37
39
  )
38
40
  )
39
41
  }
40
- attr_accessor :auth
42
+ attr_reader :auth
43
+
44
+ sig {
45
+ params(
46
+ auth: T.any(
47
+ OpenAI::Beta::Agents::Vaults::CredentialAuthRotateParam::McpOauth::OrHash,
48
+ OpenAI::Beta::Agents::Vaults::CredentialAuthRotateParam::StaticBearer::OrHash,
49
+ OpenAI::Beta::Agents::Vaults::CredentialAuthRotateParam::EnvironmentVariable::OrHash
50
+ )
51
+ )
52
+ .void
53
+ }
54
+ attr_writer :auth
55
+
56
+ # Replaces all metadata. Omit to preserve it, or pass {} to clear it. Up to 16
57
+ # string key-value pairs, with keys up to 64 and values up to 512 characters.
58
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
59
+ attr_reader :metadata
60
+
61
+ sig { params(metadata: T::Hash[Symbol, String]).void }
62
+ attr_writer :metadata
41
63
 
42
64
  sig do
43
65
  params(
@@ -52,6 +74,8 @@ module OpenAI
52
74
  OpenAI::Beta::Agents::Vaults::CredentialAuthRotateParam::EnvironmentVariable::OrHash
53
75
  ),
54
76
 
77
+ metadata: T::Hash[Symbol, String],
78
+
55
79
  request_options: OpenAI::RequestOptions::OrHash
56
80
  )
57
81
  .returns(T.attached_class)
@@ -63,7 +87,11 @@ module OpenAI
63
87
  credential_id:,
64
88
 
65
89
  # Replacement values for the credential's existing authentication method.
66
- auth:,
90
+ auth: nil,
91
+
92
+ # Replaces all metadata. Omit to preserve it, or pass {} to clear it. Up to 16
93
+ # string key-value pairs, with keys up to 64 and values up to 512 characters.
94
+ metadata: nil,
67
95
 
68
96
  request_options: {}
69
97
  )
@@ -79,6 +107,7 @@ module OpenAI
79
107
  OpenAI::Beta::Agents::Vaults::CredentialAuthRotateParam::StaticBearer,
80
108
  OpenAI::Beta::Agents::Vaults::CredentialAuthRotateParam::EnvironmentVariable
81
109
  ),
110
+ metadata: T::Hash[Symbol, String],
82
111
  request_options: OpenAI::RequestOptions
83
112
  }
84
113
  )
@@ -20,6 +20,12 @@ module OpenAI
20
20
  sig { returns(String) }
21
21
  attr_accessor :id
22
22
 
23
+ sig { returns(T.nilable(OpenAI::Beta::BetaResponse::AccessPrograms)) }
24
+ attr_reader :access_programs
25
+
26
+ sig { params(access_programs: T.nilable(OpenAI::Beta::BetaResponse::AccessPrograms::OrHash)).void }
27
+ attr_writer :access_programs
28
+
23
29
  # Unix timestamp (in seconds) of when this Response was created.
24
30
  sig { returns(Float) }
25
31
  attr_accessor :created_at
@@ -335,6 +341,8 @@ module OpenAI
335
341
 
336
342
  id: String,
337
343
 
344
+ access_programs: T.nilable(OpenAI::Beta::BetaResponse::AccessPrograms::OrHash),
345
+
338
346
  created_at: Float,
339
347
 
340
348
  error: T.nilable(OpenAI::Beta::BetaResponseError::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::Beta::BetaResponse::AccessPrograms),
718
729
  created_at: Float,
719
730
  error: T.nilable(OpenAI::Beta::BetaResponseError),
720
731
  incomplete_details: T.nilable(OpenAI::Beta::BetaResponse::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::Beta::BetaResponse::AccessPrograms,
773
+ OpenAI::Internal::AnyHash
774
+ )
775
+ end
776
+
777
+ # The effective Cyber access program used for this response.
778
+ sig { returns(OpenAI::Beta::BetaResponse::AccessPrograms::Cyber::TaggedSymbol) }
779
+ attr_accessor :cyber
780
+
781
+ sig do
782
+ params(
783
+
784
+ cyber: OpenAI::Beta::BetaResponse::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::Beta::BetaResponse::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::Beta::BetaResponse::AccessPrograms::Cyber) }
809
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
810
+
811
+ STANDARD = T.let(:standard, OpenAI::Beta::BetaResponse::AccessPrograms::Cyber::TaggedSymbol)
812
+ DAYBREAK_BLUE = T.let(:daybreak_blue, OpenAI::Beta::BetaResponse::AccessPrograms::Cyber::TaggedSymbol)
813
+ DAYBREAK_RED = T.let(:daybreak_red, OpenAI::Beta::BetaResponse::AccessPrograms::Cyber::TaggedSymbol)
814
+
815
+ sig { override.returns(T::Array[OpenAI::Beta::BetaResponse::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(
@@ -863,6 +926,7 @@ module OpenAI
863
926
  OrSymbol = T.type_alias { T.any(Symbol, String) }
864
927
 
865
928
  GPT_6_ASTRA = T.let(:"gpt-6-astra", OpenAI::Beta::BetaResponse::Model::TaggedSymbol)
929
+ GPT_6_1_SOL = T.let(:"gpt-6.1-sol", OpenAI::Beta::BetaResponse::Model::TaggedSymbol)
866
930
  GPT_6_SOL = T.let(:"gpt-6-sol", OpenAI::Beta::BetaResponse::Model::TaggedSymbol)
867
931
  GPT_6_LUNA = T.let(:"gpt-6-luna", OpenAI::Beta::BetaResponse::Model::TaggedSymbol)
868
932
  GPT_5_6_SOL = T.let(:"gpt-5.6-sol", OpenAI::Beta::BetaResponse::Model::TaggedSymbol)
@@ -31,6 +31,15 @@ module OpenAI
31
31
  sig { returns(Symbol) }
32
32
  attr_accessor :type
33
33
 
34
+ # Domain-specific access programs to use for this request.
35
+ sig { returns(T.nilable(OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::AccessPrograms)) }
36
+ attr_reader :access_programs
37
+
38
+ sig {
39
+ params(access_programs: OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::AccessPrograms::OrHash).void
40
+ }
41
+ attr_writer :access_programs
42
+
34
43
  # Whether to run the model response in the background.
35
44
  # [Learn more](https://developers.openai.com/api/docs/guides/background).
36
45
  sig { returns(T.nilable(T::Boolean)) }
@@ -484,6 +493,8 @@ module OpenAI
484
493
  sig do
485
494
  params(
486
495
 
496
+ access_programs: OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::AccessPrograms::OrHash,
497
+
487
498
  background: T.nilable(T::Boolean),
488
499
 
489
500
  context_management: T.nilable(
@@ -589,6 +600,9 @@ module OpenAI
589
600
  end
590
601
  def self.new(
591
602
 
603
+ # Domain-specific access programs to use for this request.
604
+ access_programs: nil,
605
+
592
606
  # Whether to run the model response in the background.
593
607
  # [Learn more](https://developers.openai.com/api/docs/guides/background).
594
608
  background: nil,
@@ -862,6 +876,7 @@ module OpenAI
862
876
  override.returns(
863
877
  {
864
878
  type: Symbol,
879
+ access_programs: T.nilable(OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::AccessPrograms),
865
880
  background: T.nilable(T::Boolean),
866
881
  context_management: T.nilable(
867
882
  T::Array[OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::ContextManagement]
@@ -940,6 +955,115 @@ module OpenAI
940
955
  def to_hash
941
956
  end
942
957
 
958
+ class AccessPrograms < OpenAI::Internal::Type::BaseModel
959
+ OrHash = T.type_alias do
960
+ T.any(
961
+ OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::AccessPrograms,
962
+ OpenAI::Internal::AnyHash
963
+ )
964
+ end
965
+
966
+ # The Cyber access program to use for this request. Supported values are
967
+ # `standard`, `daybreak_blue`, and `daybreak_red`. If omitted, the API resolves
968
+ # the program from the model's Cyber tier and your organization and project
969
+ # access, subject to model-specific eligibility restrictions. By default, models
970
+ # without a Cyber tier use Standard. Blue-tier models use Daybreak Blue when
971
+ # authorized; otherwise they fall back to Standard unless the model requires
972
+ # Daybreak access. Red-tier models use Daybreak Red and require authorization.
973
+ # Requests that require unavailable Daybreak access return 403. An implicit
974
+ # Standard fallback is represented by null in the response's access_programs
975
+ # field, rather than an explicit Standard selection.
976
+ sig {
977
+ returns(
978
+ T.nilable(OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::AccessPrograms::Cyber::OrSymbol)
979
+ )
980
+ }
981
+ attr_reader :cyber
982
+
983
+ sig {
984
+ params(cyber: OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::AccessPrograms::Cyber::OrSymbol)
985
+ .void
986
+ }
987
+ attr_writer :cyber
988
+
989
+ # Domain-specific access programs to use for this request.
990
+ sig do
991
+ params(
992
+
993
+ cyber: OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::AccessPrograms::Cyber::OrSymbol
994
+ )
995
+ .returns(T.attached_class)
996
+ end
997
+ def self.new(
998
+
999
+ # The Cyber access program to use for this request. Supported values are
1000
+ # `standard`, `daybreak_blue`, and `daybreak_red`. If omitted, the API resolves
1001
+ # the program from the model's Cyber tier and your organization and project
1002
+ # access, subject to model-specific eligibility restrictions. By default, models
1003
+ # without a Cyber tier use Standard. Blue-tier models use Daybreak Blue when
1004
+ # authorized; otherwise they fall back to Standard unless the model requires
1005
+ # Daybreak access. Red-tier models use Daybreak Red and require authorization.
1006
+ # Requests that require unavailable Daybreak access return 403. An implicit
1007
+ # Standard fallback is represented by null in the response's access_programs
1008
+ # field, rather than an explicit Standard selection.
1009
+
1010
+ cyber: nil
1011
+ )
1012
+ end
1013
+
1014
+ sig do
1015
+ override.returns(
1016
+ {
1017
+ cyber: T.nilable(
1018
+ OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::AccessPrograms::Cyber::OrSymbol
1019
+ )
1020
+ }
1021
+ )
1022
+ end
1023
+ def to_hash
1024
+ end
1025
+
1026
+ # The Cyber access program to use for this request. Supported values are
1027
+ # `standard`, `daybreak_blue`, and `daybreak_red`. If omitted, the API resolves
1028
+ # the program from the model's Cyber tier and your organization and project
1029
+ # access, subject to model-specific eligibility restrictions. By default, models
1030
+ # without a Cyber tier use Standard. Blue-tier models use Daybreak Blue when
1031
+ # authorized; otherwise they fall back to Standard unless the model requires
1032
+ # Daybreak access. Red-tier models use Daybreak Red and require authorization.
1033
+ # Requests that require unavailable Daybreak access return 403. An implicit
1034
+ # Standard fallback is represented by null in the response's access_programs
1035
+ # field, rather than an explicit Standard selection.
1036
+ module Cyber
1037
+ extend OpenAI::Internal::Type::Enum
1038
+
1039
+ TaggedSymbol = T.type_alias {
1040
+ T.all(Symbol, OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::AccessPrograms::Cyber)
1041
+ }
1042
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1043
+
1044
+ STANDARD = T.let(
1045
+ :standard,
1046
+ OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::AccessPrograms::Cyber::TaggedSymbol
1047
+ )
1048
+ DAYBREAK_BLUE = T.let(
1049
+ :daybreak_blue,
1050
+ OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::AccessPrograms::Cyber::TaggedSymbol
1051
+ )
1052
+ DAYBREAK_RED = T.let(
1053
+ :daybreak_red,
1054
+ OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::AccessPrograms::Cyber::TaggedSymbol
1055
+ )
1056
+
1057
+ sig {
1058
+ override.returns(
1059
+ T::Array[OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::AccessPrograms::Cyber::TaggedSymbol]
1060
+ )
1061
+ }
1062
+ def self.values
1063
+ end
1064
+ end
1065
+ end
1066
+
943
1067
  class ContextManagement < OpenAI::Internal::Type::BaseModel
944
1068
  OrHash = T.type_alias do
945
1069
  T.any(
@@ -1049,6 +1173,10 @@ module OpenAI
1049
1173
  :"gpt-6-astra",
1050
1174
  OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::Model::TaggedSymbol
1051
1175
  )
1176
+ GPT_6_1_SOL = T.let(
1177
+ :"gpt-6.1-sol",
1178
+ OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::Model::TaggedSymbol
1179
+ )
1052
1180
  GPT_6_SOL = T.let(:"gpt-6-sol", OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::Model::TaggedSymbol)
1053
1181
  GPT_6_LUNA = T.let(
1054
1182
  :"gpt-6-luna",
@@ -38,7 +38,9 @@ module OpenAI
38
38
  sig { params(search_context_size: OpenAI::Beta::BetaWebSearchPreviewTool::SearchContextSize::OrSymbol).void }
39
39
  attr_writer :search_context_size
40
40
 
41
- # The user's location.
41
+ # The approximate location of the user. If omitted or null, defaults to the United
42
+ # States. To avoid this fallback, pass `{"type": "approximate"}` without location
43
+ # fields. To localize results, provide the relevant location fields.
42
44
  sig { returns(T.nilable(OpenAI::Beta::BetaWebSearchPreviewTool::UserLocation)) }
43
45
  attr_reader :user_location
44
46
 
@@ -73,7 +75,9 @@ module OpenAI
73
75
  # search. One of `low`, `medium`, or `high`. `medium` is the default.
74
76
  search_context_size: nil,
75
77
 
76
- # The user's location.
78
+ # The approximate location of the user. If omitted or null, defaults to the United
79
+ # States. To avoid this fallback, pass `{"type": "approximate"}` without location
80
+ # fields. To localize results, provide the relevant location fields.
77
81
 
78
82
  user_location: nil
79
83
  )
@@ -172,7 +176,9 @@ module OpenAI
172
176
  sig { returns(T.nilable(String)) }
173
177
  attr_accessor :timezone
174
178
 
175
- # The user's location.
179
+ # The approximate location of the user. If omitted or null, defaults to the United
180
+ # States. To avoid this fallback, pass `{"type": "approximate"}` without location
181
+ # fields. To localize results, provide the relevant location fields.
176
182
  sig do
177
183
  params(
178
184
 
@@ -44,7 +44,9 @@ module OpenAI
44
44
  sig { params(search_context_size: OpenAI::Beta::BetaWebSearchTool::SearchContextSize::OrSymbol).void }
45
45
  attr_writer :search_context_size
46
46
 
47
- # The approximate location of the user.
47
+ # The approximate location of the user. If omitted or null, defaults to the United
48
+ # States. To avoid this fallback, pass `{"type": "approximate"}` without location
49
+ # fields. To localize results, provide the relevant location fields.
48
50
  sig { returns(T.nilable(OpenAI::Beta::BetaWebSearchTool::UserLocation)) }
49
51
  attr_reader :user_location
50
52
 
@@ -85,7 +87,9 @@ module OpenAI
85
87
  # search. One of `low`, `medium`, or `high`. `medium` is the default.
86
88
  search_context_size: nil,
87
89
 
88
- # The approximate location of the user.
90
+ # The approximate location of the user. If omitted or null, defaults to the United
91
+ # States. To avoid this fallback, pass `{"type": "approximate"}` without location
92
+ # fields. To localize results, provide the relevant location fields.
89
93
 
90
94
  user_location: nil
91
95
  )
@@ -214,7 +218,9 @@ module OpenAI
214
218
  sig { params(type: OpenAI::Beta::BetaWebSearchTool::UserLocation::Type::OrSymbol).void }
215
219
  attr_writer :type
216
220
 
217
- # The approximate location of the user.
221
+ # The approximate location of the user. If omitted or null, defaults to the United
222
+ # States. To avoid this fallback, pass `{"type": "approximate"}` without location
223
+ # fields. To localize results, provide the relevant location fields.
218
224
  sig do
219
225
  params(
220
226
 
@@ -100,7 +100,7 @@ module OpenAI
100
100
  attr_accessor :files
101
101
 
102
102
  # Network access policy for the environment. Defaults to disabled for GA requests
103
- # and enabled for alpha/beta requests.
103
+ # and enabled for beta requests.
104
104
  sig { returns(T.nilable(OpenAI::Beta::EnvironmentParam::OpenAIHosted::Network)) }
105
105
  attr_reader :network
106
106
 
@@ -191,7 +191,7 @@ module OpenAI
191
191
  files: nil,
192
192
 
193
193
  # Network access policy for the environment. Defaults to disabled for GA requests
194
- # and enabled for alpha/beta requests.
194
+ # and enabled for beta requests.
195
195
  network: nil,
196
196
 
197
197
  # Packages to install in the environment. Defaults to empty package lists.
@@ -260,7 +260,7 @@ module OpenAI
260
260
  attr_accessor :allowed_domains
261
261
 
262
262
  # Network access policy for the environment. Defaults to disabled for GA requests
263
- # and enabled for alpha/beta requests.
263
+ # and enabled for beta requests.
264
264
  sig do
265
265
  params(
266
266
 
@@ -223,6 +223,7 @@ module OpenAI
223
223
  OrSymbol = T.type_alias { T.any(Symbol, String) }
224
224
 
225
225
  GPT_6_ASTRA = T.let(:"gpt-6-astra", OpenAI::Beta::ResponseCompactParams::Model::TaggedSymbol)
226
+ GPT_6_1_SOL = T.let(:"gpt-6.1-sol", OpenAI::Beta::ResponseCompactParams::Model::TaggedSymbol)
226
227
  GPT_6_SOL = T.let(:"gpt-6-sol", OpenAI::Beta::ResponseCompactParams::Model::TaggedSymbol)
227
228
  GPT_6_LUNA = T.let(:"gpt-6-luna", OpenAI::Beta::ResponseCompactParams::Model::TaggedSymbol)
228
229
  GPT_5_6_SOL = T.let(:"gpt-5.6-sol", OpenAI::Beta::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::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)
@@ -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