openai 0.70.0 → 0.72.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 (172) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +20 -0
  3. data/README.md +51 -1
  4. data/lib/openai/client.rb +62 -8
  5. data/lib/openai/internal/provider.rb +31 -0
  6. data/lib/openai/internal/transport/base_client.rb +65 -21
  7. data/lib/openai/models/admin/organization/audit_log_list_params.rb +84 -0
  8. data/lib/openai/models/admin/organization/audit_log_list_response.rb +84 -0
  9. data/lib/openai/models/admin/organization/organization_spend_limit.rb +151 -0
  10. data/lib/openai/models/admin/organization/organization_spend_limit_deleted.rb +33 -0
  11. data/lib/openai/models/admin/organization/projects/project_service_account.rb +4 -3
  12. data/lib/openai/models/admin/organization/projects/project_spend_limit.rb +155 -0
  13. data/lib/openai/models/admin/organization/projects/project_spend_limit_deleted.rb +35 -0
  14. data/lib/openai/models/admin/organization/projects/service_account_create_params.rb +9 -1
  15. data/lib/openai/models/admin/organization/projects/service_account_create_response.rb +26 -6
  16. data/lib/openai/models/admin/organization/projects/service_accounts/api_key_create_params.rb +54 -0
  17. data/lib/openai/models/admin/organization/projects/service_accounts/api_key_create_response.rb +57 -0
  18. data/lib/openai/models/admin/organization/projects/spend_limit_delete_params.rb +26 -0
  19. data/lib/openai/models/admin/organization/projects/spend_limit_retrieve_params.rb +26 -0
  20. data/lib/openai/models/admin/organization/projects/spend_limit_update_params.rb +77 -0
  21. data/lib/openai/models/admin/organization/spend_limit_delete_params.rb +18 -0
  22. data/lib/openai/models/admin/organization/spend_limit_retrieve_params.rb +18 -0
  23. data/lib/openai/models/admin/organization/spend_limit_update_params.rb +67 -0
  24. data/lib/openai/models/admin/organization/usage_audio_speeches_response.rb +88 -13
  25. data/lib/openai/models/admin/organization/usage_audio_transcriptions_response.rb +88 -13
  26. data/lib/openai/models/admin/organization/usage_code_interpreter_sessions_response.rb +88 -13
  27. data/lib/openai/models/admin/organization/usage_completions_response.rb +88 -13
  28. data/lib/openai/models/admin/organization/usage_costs_response.rb +88 -13
  29. data/lib/openai/models/admin/organization/usage_embeddings_response.rb +88 -13
  30. data/lib/openai/models/admin/organization/usage_file_search_calls_response.rb +88 -13
  31. data/lib/openai/models/admin/organization/usage_images_response.rb +88 -13
  32. data/lib/openai/models/admin/organization/usage_moderations_response.rb +88 -13
  33. data/lib/openai/models/admin/organization/usage_vector_stores_response.rb +88 -13
  34. data/lib/openai/models/admin/organization/usage_web_search_calls_response.rb +88 -13
  35. data/lib/openai/models/beta/beta_response.rb +12 -6
  36. data/lib/openai/models/beta/beta_response_error.rb +1 -0
  37. data/lib/openai/models/beta/beta_response_input_item.rb +16 -32
  38. data/lib/openai/models/beta/beta_response_text_config.rb +4 -2
  39. data/lib/openai/models/beta/beta_responses_client_event.rb +12 -6
  40. data/lib/openai/models/beta/response_create_params.rb +12 -6
  41. data/lib/openai/models/beta/responses/input_token_count_params.rb +12 -4
  42. data/lib/openai/models/chat/completion_create_params.rb +8 -6
  43. data/lib/openai/models/reasoning.rb +8 -2
  44. data/lib/openai/models/responses/input_token_count_params.rb +4 -2
  45. data/lib/openai/models/responses/response.rb +4 -4
  46. data/lib/openai/models/responses/response_create_params.rb +4 -4
  47. data/lib/openai/models/responses/response_error.rb +1 -0
  48. data/lib/openai/models/responses/response_text_config.rb +4 -2
  49. data/lib/openai/models/responses/responses_client_event.rb +4 -4
  50. data/lib/openai/provider.rb +18 -0
  51. data/lib/openai/providers/bedrock.rb +489 -0
  52. data/lib/openai/resources/admin/organization/projects/service_accounts/api_keys.rb +60 -0
  53. data/lib/openai/resources/admin/organization/projects/service_accounts.rb +10 -3
  54. data/lib/openai/resources/admin/organization/projects/spend_limit.rb +95 -0
  55. data/lib/openai/resources/admin/organization/projects.rb +4 -0
  56. data/lib/openai/resources/admin/organization/spend_limit.rb +86 -0
  57. data/lib/openai/resources/admin/organization.rb +4 -0
  58. data/lib/openai/resources/beta/responses.rb +4 -4
  59. data/lib/openai/resources/chat/completions.rb +4 -4
  60. data/lib/openai/resources/responses.rb +4 -4
  61. data/lib/openai/version.rb +1 -1
  62. data/lib/openai.rb +18 -0
  63. data/rbi/openai/client.rbi +17 -0
  64. data/rbi/openai/internal/provider.rbi +51 -0
  65. data/rbi/openai/internal/transport/base_client.rbi +32 -0
  66. data/rbi/openai/models/admin/organization/audit_log_list_params.rbi +420 -0
  67. data/rbi/openai/models/admin/organization/audit_log_list_response.rbi +420 -0
  68. data/rbi/openai/models/admin/organization/organization_spend_limit.rbi +278 -0
  69. data/rbi/openai/models/admin/organization/organization_spend_limit_deleted.rbi +48 -0
  70. data/rbi/openai/models/admin/organization/projects/project_service_account.rbi +8 -3
  71. data/rbi/openai/models/admin/organization/projects/project_spend_limit.rbi +280 -0
  72. data/rbi/openai/models/admin/organization/projects/project_spend_limit_deleted.rbi +49 -0
  73. data/rbi/openai/models/admin/organization/projects/service_account_create_params.rbi +8 -0
  74. data/rbi/openai/models/admin/organization/projects/service_account_create_response.rbi +52 -8
  75. data/rbi/openai/models/admin/organization/projects/service_accounts/api_key_create_params.rbi +84 -0
  76. data/rbi/openai/models/admin/organization/projects/service_accounts/api_key_create_response.rbi +80 -0
  77. data/rbi/openai/models/admin/organization/projects/spend_limit_delete_params.rbi +44 -0
  78. data/rbi/openai/models/admin/organization/projects/spend_limit_retrieve_params.rbi +44 -0
  79. data/rbi/openai/models/admin/organization/projects/spend_limit_update_params.rbi +149 -0
  80. data/rbi/openai/models/admin/organization/spend_limit_delete_params.rbi +34 -0
  81. data/rbi/openai/models/admin/organization/spend_limit_retrieve_params.rbi +34 -0
  82. data/rbi/openai/models/admin/organization/spend_limit_update_params.rbi +141 -0
  83. data/rbi/openai/models/admin/organization/usage_audio_speeches_response.rbi +121 -16
  84. data/rbi/openai/models/admin/organization/usage_audio_transcriptions_response.rbi +121 -16
  85. data/rbi/openai/models/admin/organization/usage_code_interpreter_sessions_response.rbi +121 -16
  86. data/rbi/openai/models/admin/organization/usage_completions_response.rbi +121 -16
  87. data/rbi/openai/models/admin/organization/usage_costs_response.rbi +121 -16
  88. data/rbi/openai/models/admin/organization/usage_embeddings_response.rbi +121 -16
  89. data/rbi/openai/models/admin/organization/usage_file_search_calls_response.rbi +121 -16
  90. data/rbi/openai/models/admin/organization/usage_images_response.rbi +121 -16
  91. data/rbi/openai/models/admin/organization/usage_moderations_response.rbi +121 -16
  92. data/rbi/openai/models/admin/organization/usage_vector_stores_response.rbi +121 -16
  93. data/rbi/openai/models/admin/organization/usage_web_search_calls_response.rbi +121 -16
  94. data/rbi/openai/models/beta/beta_response.rbi +18 -15
  95. data/rbi/openai/models/beta/beta_response_error.rbi +5 -0
  96. data/rbi/openai/models/beta/beta_response_input_item.rbi +39 -46
  97. data/rbi/openai/models/beta/beta_response_text_config.rbi +6 -3
  98. data/rbi/openai/models/beta/beta_responses_client_event.rbi +18 -15
  99. data/rbi/openai/models/beta/response_create_params.rbi +18 -15
  100. data/rbi/openai/models/beta/responses/input_token_count_params.rbi +18 -6
  101. data/rbi/openai/models/chat/completion_create_params.rbi +12 -15
  102. data/rbi/openai/models/reasoning.rbi +12 -3
  103. data/rbi/openai/models/responses/input_token_count_params.rbi +6 -3
  104. data/rbi/openai/models/responses/response.rbi +6 -12
  105. data/rbi/openai/models/responses/response_create_params.rbi +6 -12
  106. data/rbi/openai/models/responses/response_error.rbi +5 -0
  107. data/rbi/openai/models/responses/response_text_config.rbi +6 -3
  108. data/rbi/openai/models/responses/responses_client_event.rbi +6 -12
  109. data/rbi/openai/provider.rbi +9 -0
  110. data/rbi/openai/providers.rbi +33 -0
  111. data/rbi/openai/resources/admin/organization/projects/service_accounts/api_keys.rbi +45 -0
  112. data/rbi/openai/resources/admin/organization/projects/service_accounts.rbi +12 -2
  113. data/rbi/openai/resources/admin/organization/projects/spend_limit.rbi +78 -0
  114. data/rbi/openai/resources/admin/organization/projects.rbi +7 -0
  115. data/rbi/openai/resources/admin/organization/spend_limit.rbi +57 -0
  116. data/rbi/openai/resources/admin/organization.rbi +3 -0
  117. data/rbi/openai/resources/beta/responses.rbi +4 -4
  118. data/rbi/openai/resources/chat/completions.rbi +8 -6
  119. data/rbi/openai/resources/responses.rbi +4 -4
  120. data/sig/openai/client.rbs +7 -0
  121. data/sig/openai/internal/provider.rbs +29 -0
  122. data/sig/openai/internal/transport/base_client.rbs +17 -1
  123. data/sig/openai/models/admin/organization/audit_log_list_params.rbs +168 -0
  124. data/sig/openai/models/admin/organization/audit_log_list_response.rbs +168 -0
  125. data/sig/openai/models/admin/organization/organization_spend_limit.rbs +94 -0
  126. data/sig/openai/models/admin/organization/organization_spend_limit_deleted.rbs +28 -0
  127. data/sig/openai/models/admin/organization/projects/project_service_account.rbs +2 -1
  128. data/sig/openai/models/admin/organization/projects/project_spend_limit.rbs +96 -0
  129. data/sig/openai/models/admin/organization/projects/project_spend_limit_deleted.rbs +30 -0
  130. data/sig/openai/models/admin/organization/projects/service_account_create_params.rbs +9 -1
  131. data/sig/openai/models/admin/organization/projects/service_account_create_response.rbs +16 -5
  132. data/sig/openai/models/admin/organization/projects/service_accounts/api_key_create_params.rbs +53 -0
  133. data/sig/openai/models/admin/organization/projects/service_accounts/api_key_create_response.rbs +48 -0
  134. data/sig/openai/models/admin/organization/projects/spend_limit_delete_params.rbs +29 -0
  135. data/sig/openai/models/admin/organization/projects/spend_limit_retrieve_params.rbs +29 -0
  136. data/sig/openai/models/admin/organization/projects/spend_limit_update_params.rbs +67 -0
  137. data/sig/openai/models/admin/organization/spend_limit_delete_params.rbs +19 -0
  138. data/sig/openai/models/admin/organization/spend_limit_retrieve_params.rbs +19 -0
  139. data/sig/openai/models/admin/organization/spend_limit_update_params.rbs +60 -0
  140. data/sig/openai/models/admin/organization/usage_audio_speeches_response.rbs +63 -0
  141. data/sig/openai/models/admin/organization/usage_audio_transcriptions_response.rbs +63 -0
  142. data/sig/openai/models/admin/organization/usage_code_interpreter_sessions_response.rbs +63 -0
  143. data/sig/openai/models/admin/organization/usage_completions_response.rbs +63 -0
  144. data/sig/openai/models/admin/organization/usage_costs_response.rbs +63 -0
  145. data/sig/openai/models/admin/organization/usage_embeddings_response.rbs +63 -0
  146. data/sig/openai/models/admin/organization/usage_file_search_calls_response.rbs +63 -0
  147. data/sig/openai/models/admin/organization/usage_images_response.rbs +63 -0
  148. data/sig/openai/models/admin/organization/usage_moderations_response.rbs +63 -0
  149. data/sig/openai/models/admin/organization/usage_vector_stores_response.rbs +63 -0
  150. data/sig/openai/models/admin/organization/usage_web_search_calls_response.rbs +63 -0
  151. data/sig/openai/models/beta/beta_response.rbs +8 -12
  152. data/sig/openai/models/beta/beta_response_error.rbs +2 -0
  153. data/sig/openai/models/beta/beta_response_input_item.rbs +18 -24
  154. data/sig/openai/models/beta/beta_responses_client_event.rbs +8 -12
  155. data/sig/openai/models/beta/response_create_params.rbs +8 -12
  156. data/sig/openai/models/chat/completion_create_params.rbs +8 -12
  157. data/sig/openai/models/responses/response.rbs +8 -12
  158. data/sig/openai/models/responses/response_create_params.rbs +8 -12
  159. data/sig/openai/models/responses/response_error.rbs +2 -0
  160. data/sig/openai/models/responses/responses_client_event.rbs +8 -12
  161. data/sig/openai/provider.rbs +5 -0
  162. data/sig/openai/providers.rbs +15 -0
  163. data/sig/openai/resources/admin/organization/projects/service_accounts/api_keys.rbs +23 -0
  164. data/sig/openai/resources/admin/organization/projects/service_accounts.rbs +3 -0
  165. data/sig/openai/resources/admin/organization/projects/spend_limit.rbs +31 -0
  166. data/sig/openai/resources/admin/organization/projects.rbs +2 -0
  167. data/sig/openai/resources/admin/organization/spend_limit.rbs +26 -0
  168. data/sig/openai/resources/admin/organization.rbs +2 -0
  169. data/sig/openai/resources/beta/responses.rbs +4 -4
  170. data/sig/openai/resources/chat/completions.rbs +4 -4
  171. data/sig/openai/resources/responses.rbs +4 -4
  172. metadata +56 -2
@@ -32,6 +32,9 @@ module OpenAI
32
32
  # @return [OpenAI::Resources::Admin::Organization::Projects::DataRetention]
33
33
  attr_reader :data_retention
34
34
 
35
+ # @return [OpenAI::Resources::Admin::Organization::Projects::SpendLimit]
36
+ attr_reader :spend_limit
37
+
35
38
  # @return [OpenAI::Resources::Admin::Organization::Projects::SpendAlerts]
36
39
  attr_reader :spend_alerts
37
40
 
@@ -189,6 +192,7 @@ module OpenAI
189
192
  @groups = OpenAI::Resources::Admin::Organization::Projects::Groups.new(client: client)
190
193
  @roles = OpenAI::Resources::Admin::Organization::Projects::Roles.new(client: client)
191
194
  @data_retention = OpenAI::Resources::Admin::Organization::Projects::DataRetention.new(client: client)
195
+ @spend_limit = OpenAI::Resources::Admin::Organization::Projects::SpendLimit.new(client: client)
192
196
  @spend_alerts = OpenAI::Resources::Admin::Organization::Projects::SpendAlerts.new(client: client)
193
197
  @certificates = OpenAI::Resources::Admin::Organization::Projects::Certificates.new(client: client)
194
198
  end
@@ -0,0 +1,86 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Resources
5
+ class Admin
6
+ class Organization
7
+ class SpendLimit
8
+ # Get the organization's hard spend limit.
9
+ #
10
+ # @overload retrieve(request_options: {})
11
+ #
12
+ # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
13
+ #
14
+ # @return [OpenAI::Models::Admin::Organization::OrganizationSpendLimit]
15
+ #
16
+ # @see OpenAI::Models::Admin::Organization::SpendLimitRetrieveParams
17
+ def retrieve(params = {})
18
+ @client.request(
19
+ method: :get,
20
+ path: "organization/spend_limit",
21
+ model: OpenAI::Admin::Organization::OrganizationSpendLimit,
22
+ security: {admin_api_key_auth: true},
23
+ options: params[:request_options]
24
+ )
25
+ end
26
+
27
+ # Some parameter documentations has been truncated, see
28
+ # {OpenAI::Models::Admin::Organization::SpendLimitUpdateParams} for more details.
29
+ #
30
+ # Create or replace the organization's hard spend limit.
31
+ #
32
+ # @overload update(currency:, interval:, threshold_amount:, request_options: {})
33
+ #
34
+ # @param currency [Symbol, OpenAI::Models::Admin::Organization::SpendLimitUpdateParams::Currency] The currency for the threshold amount. Currently, only `USD` is supported.
35
+ #
36
+ # @param interval [Symbol, OpenAI::Models::Admin::Organization::SpendLimitUpdateParams::Interval] The time interval for evaluating spend against the threshold. Currently, only `m
37
+ #
38
+ # @param threshold_amount [Integer] The hard spend limit amount, in cents.
39
+ #
40
+ # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
41
+ #
42
+ # @return [OpenAI::Models::Admin::Organization::OrganizationSpendLimit]
43
+ #
44
+ # @see OpenAI::Models::Admin::Organization::SpendLimitUpdateParams
45
+ def update(params)
46
+ parsed, options = OpenAI::Admin::Organization::SpendLimitUpdateParams.dump_request(params)
47
+ @client.request(
48
+ method: :post,
49
+ path: "organization/spend_limit",
50
+ body: parsed,
51
+ model: OpenAI::Admin::Organization::OrganizationSpendLimit,
52
+ security: {admin_api_key_auth: true},
53
+ options: options
54
+ )
55
+ end
56
+
57
+ # Delete the organization's hard spend limit.
58
+ #
59
+ # @overload delete(request_options: {})
60
+ #
61
+ # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
62
+ #
63
+ # @return [OpenAI::Models::Admin::Organization::OrganizationSpendLimitDeleted]
64
+ #
65
+ # @see OpenAI::Models::Admin::Organization::SpendLimitDeleteParams
66
+ def delete(params = {})
67
+ @client.request(
68
+ method: :delete,
69
+ path: "organization/spend_limit",
70
+ model: OpenAI::Admin::Organization::OrganizationSpendLimitDeleted,
71
+ security: {admin_api_key_auth: true},
72
+ options: params[:request_options]
73
+ )
74
+ end
75
+
76
+ # @api private
77
+ #
78
+ # @param client [OpenAI::Client]
79
+ def initialize(client:)
80
+ @client = client
81
+ end
82
+ end
83
+ end
84
+ end
85
+ end
86
+ end
@@ -29,6 +29,9 @@ module OpenAI
29
29
  # @return [OpenAI::Resources::Admin::Organization::DataRetention]
30
30
  attr_reader :data_retention
31
31
 
32
+ # @return [OpenAI::Resources::Admin::Organization::SpendLimit]
33
+ attr_reader :spend_limit
34
+
32
35
  # @return [OpenAI::Resources::Admin::Organization::SpendAlerts]
33
36
  attr_reader :spend_alerts
34
37
 
@@ -51,6 +54,7 @@ module OpenAI
51
54
  @groups = OpenAI::Resources::Admin::Organization::Groups.new(client: client)
52
55
  @roles = OpenAI::Resources::Admin::Organization::Roles.new(client: client)
53
56
  @data_retention = OpenAI::Resources::Admin::Organization::DataRetention.new(client: client)
57
+ @spend_limit = OpenAI::Resources::Admin::Organization::SpendLimit.new(client: client)
54
58
  @spend_alerts = OpenAI::Resources::Admin::Organization::SpendAlerts.new(client: client)
55
59
  @certificates = OpenAI::Resources::Admin::Organization::Certificates.new(client: client)
56
60
  @projects = OpenAI::Resources::Admin::Organization::Projects.new(client: client)
@@ -59,7 +59,7 @@ module OpenAI
59
59
  #
60
60
  # @param prompt [OpenAI::Models::Beta::BetaResponsePrompt, nil] Body param: Reference to a prompt template and its variables.
61
61
  #
62
- # @param prompt_cache_key [String] Body param: Used by OpenAI to cache responses for similar requests to optimize y
62
+ # @param prompt_cache_key [String, nil] Body param: Used by OpenAI to cache responses for similar requests to optimize y
63
63
  #
64
64
  # @param prompt_cache_options [OpenAI::Models::Beta::ResponseCreateParams::PromptCacheOptions] Body param: Options for prompt caching. Supported for `gpt-5.6` and later models
65
65
  #
@@ -67,7 +67,7 @@ module OpenAI
67
67
  #
68
68
  # @param reasoning [OpenAI::Models::Beta::ResponseCreateParams::Reasoning, nil] Body param: **gpt-5 and o-series models only**
69
69
  #
70
- # @param safety_identifier [String] Body param: A stable identifier used to help detect users of your application th
70
+ # @param safety_identifier [String, nil] Body param: A stable identifier used to help detect users of your application th
71
71
  #
72
72
  # @param service_tier [Symbol, OpenAI::Models::Beta::ResponseCreateParams::ServiceTier, nil] Body param: Specifies the processing type used for serving the request.
73
73
  #
@@ -165,7 +165,7 @@ module OpenAI
165
165
  #
166
166
  # @param prompt [OpenAI::Models::Beta::BetaResponsePrompt, nil] Body param: Reference to a prompt template and its variables.
167
167
  #
168
- # @param prompt_cache_key [String] Body param: Used by OpenAI to cache responses for similar requests to optimize y
168
+ # @param prompt_cache_key [String, nil] Body param: Used by OpenAI to cache responses for similar requests to optimize y
169
169
  #
170
170
  # @param prompt_cache_options [OpenAI::Models::Beta::ResponseCreateParams::PromptCacheOptions] Body param: Options for prompt caching. Supported for `gpt-5.6` and later models
171
171
  #
@@ -173,7 +173,7 @@ module OpenAI
173
173
  #
174
174
  # @param reasoning [OpenAI::Models::Beta::ResponseCreateParams::Reasoning, nil] Body param: **gpt-5 and o-series models only**
175
175
  #
176
- # @param safety_identifier [String] Body param: A stable identifier used to help detect users of your application th
176
+ # @param safety_identifier [String, nil] Body param: A stable identifier used to help detect users of your application th
177
177
  #
178
178
  # @param service_tier [Symbol, OpenAI::Models::Beta::ResponseCreateParams::ServiceTier, nil] Body param: Specifies the processing type used for serving the request.
179
179
  #
@@ -73,7 +73,7 @@ module OpenAI
73
73
  #
74
74
  # @param presence_penalty [Float, nil] Number between -2.0 and 2.0. Positive values penalize new tokens based on
75
75
  #
76
- # @param prompt_cache_key [String] Used by OpenAI to cache responses for similar requests to optimize your cache hi
76
+ # @param prompt_cache_key [String, nil] Used by OpenAI to cache responses for similar requests to optimize your cache hi
77
77
  #
78
78
  # @param prompt_cache_options [OpenAI::Models::Chat::CompletionCreateParams::PromptCacheOptions] Options for prompt caching. Supported for `gpt-5.6` and later models. By default
79
79
  #
@@ -83,7 +83,7 @@ module OpenAI
83
83
  #
84
84
  # @param response_format [OpenAI::Models::ResponseFormatText, OpenAI::Models::ResponseFormatJSONSchema, OpenAI::Models::ResponseFormatJSONObject] An object specifying the format that the model must output.
85
85
  #
86
- # @param safety_identifier [String] A stable identifier used to help detect users of your application that may be vi
86
+ # @param safety_identifier [String, nil] A stable identifier used to help detect users of your application that may be vi
87
87
  #
88
88
  # @param seed [Integer, nil] This feature is in Beta.
89
89
  #
@@ -329,7 +329,7 @@ module OpenAI
329
329
  #
330
330
  # @param presence_penalty [Float, nil] Number between -2.0 and 2.0. Positive values penalize new tokens based on
331
331
  #
332
- # @param prompt_cache_key [String] Used by OpenAI to cache responses for similar requests to optimize your cache hi
332
+ # @param prompt_cache_key [String, nil] Used by OpenAI to cache responses for similar requests to optimize your cache hi
333
333
  #
334
334
  # @param prompt_cache_options [OpenAI::Models::Chat::CompletionCreateParams::PromptCacheOptions] Options for prompt caching. Supported for `gpt-5.6` and later models. By default
335
335
  #
@@ -339,7 +339,7 @@ module OpenAI
339
339
  #
340
340
  # @param response_format [OpenAI::Models::ResponseFormatText, OpenAI::Models::ResponseFormatJSONSchema, OpenAI::Models::ResponseFormatJSONObject] An object specifying the format that the model must output.
341
341
  #
342
- # @param safety_identifier [String] A stable identifier used to help detect users of your application that may be vi
342
+ # @param safety_identifier [String, nil] A stable identifier used to help detect users of your application that may be vi
343
343
  #
344
344
  # @param seed [Integer, nil] This feature is in Beta.
345
345
  #
@@ -56,7 +56,7 @@ module OpenAI
56
56
  #
57
57
  # @param prompt [OpenAI::Models::Responses::ResponsePrompt, nil] Reference to a prompt template and its variables.
58
58
  #
59
- # @param prompt_cache_key [String] Used by OpenAI to cache responses for similar requests to optimize your cache hi
59
+ # @param prompt_cache_key [String, nil] Used by OpenAI to cache responses for similar requests to optimize your cache hi
60
60
  #
61
61
  # @param prompt_cache_options [OpenAI::Models::Responses::ResponseCreateParams::PromptCacheOptions] Options for prompt caching. Supported for `gpt-5.6` and later models. By default
62
62
  #
@@ -64,7 +64,7 @@ module OpenAI
64
64
  #
65
65
  # @param reasoning [OpenAI::Models::Reasoning, nil] **gpt-5 and o-series models only**
66
66
  #
67
- # @param safety_identifier [String] A stable identifier used to help detect users of your application that may be vi
67
+ # @param safety_identifier [String, nil] A stable identifier used to help detect users of your application that may be vi
68
68
  #
69
69
  # @param service_tier [Symbol, OpenAI::Models::Responses::ResponseCreateParams::ServiceTier, nil] Specifies the processing type used for serving the request.
70
70
  #
@@ -287,7 +287,7 @@ module OpenAI
287
287
  #
288
288
  # @param prompt [OpenAI::Models::Responses::ResponsePrompt, nil] Reference to a prompt template and its variables.
289
289
  #
290
- # @param prompt_cache_key [String] Used by OpenAI to cache responses for similar requests to optimize your cache hi
290
+ # @param prompt_cache_key [String, nil] Used by OpenAI to cache responses for similar requests to optimize your cache hi
291
291
  #
292
292
  # @param prompt_cache_options [OpenAI::Models::Responses::ResponseCreateParams::PromptCacheOptions] Options for prompt caching. Supported for `gpt-5.6` and later models. By default
293
293
  #
@@ -295,7 +295,7 @@ module OpenAI
295
295
  #
296
296
  # @param reasoning [OpenAI::Models::Reasoning, nil] **gpt-5 and o-series models only**
297
297
  #
298
- # @param safety_identifier [String] A stable identifier used to help detect users of your application that may be vi
298
+ # @param safety_identifier [String, nil] A stable identifier used to help detect users of your application that may be vi
299
299
  #
300
300
  # @param service_tier [Symbol, OpenAI::Models::Responses::ResponseCreateParams::ServiceTier, nil] Specifies the processing type used for serving the request.
301
301
  #
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OpenAI
4
- VERSION = "0.70.0"
4
+ VERSION = "0.72.0"
5
5
  end
data/lib/openai.rb CHANGED
@@ -53,6 +53,9 @@ require_relative "openai/internal"
53
53
  require_relative "openai/request_options"
54
54
  require_relative "openai/file_part"
55
55
  require_relative "openai/errors"
56
+ require_relative "openai/provider"
57
+ require_relative "openai/internal/provider"
58
+ require_relative "openai/providers/bedrock"
56
59
  require_relative "openai/internal/transport/base_client"
57
60
  require_relative "openai/internal/transport/pooled_net_requester"
58
61
  require_relative "openai/client"
@@ -144,6 +147,8 @@ require_relative "openai/models/admin/organization/invite_retrieve_params"
144
147
  require_relative "openai/models/admin/organization/organization_data_retention"
145
148
  require_relative "openai/models/admin/organization/organization_spend_alert"
146
149
  require_relative "openai/models/admin/organization/organization_spend_alert_deleted"
150
+ require_relative "openai/models/admin/organization/organization_spend_limit"
151
+ require_relative "openai/models/admin/organization/organization_spend_limit_deleted"
147
152
  require_relative "openai/models/admin/organization/organization_user"
148
153
  require_relative "openai/models/admin/organization/project"
149
154
  require_relative "openai/models/admin/organization/project_archive_params"
@@ -190,6 +195,8 @@ require_relative "openai/models/admin/organization/projects/project_rate_limit"
190
195
  require_relative "openai/models/admin/organization/projects/project_service_account"
191
196
  require_relative "openai/models/admin/organization/projects/project_spend_alert"
192
197
  require_relative "openai/models/admin/organization/projects/project_spend_alert_deleted"
198
+ require_relative "openai/models/admin/organization/projects/project_spend_limit"
199
+ require_relative "openai/models/admin/organization/projects/project_spend_limit_deleted"
193
200
  require_relative "openai/models/admin/organization/projects/project_user"
194
201
  require_relative "openai/models/admin/organization/projects/rate_limit_list_rate_limits_params"
195
202
  require_relative "openai/models/admin/organization/projects/rate_limit_update_rate_limit_params"
@@ -205,12 +212,17 @@ require_relative "openai/models/admin/organization/projects/service_account_dele
205
212
  require_relative "openai/models/admin/organization/projects/service_account_delete_response"
206
213
  require_relative "openai/models/admin/organization/projects/service_account_list_params"
207
214
  require_relative "openai/models/admin/organization/projects/service_account_retrieve_params"
215
+ require_relative "openai/models/admin/organization/projects/service_accounts/api_key_create_params"
216
+ require_relative "openai/models/admin/organization/projects/service_accounts/api_key_create_response"
208
217
  require_relative "openai/models/admin/organization/projects/service_account_update_params"
209
218
  require_relative "openai/models/admin/organization/projects/spend_alert_create_params"
210
219
  require_relative "openai/models/admin/organization/projects/spend_alert_delete_params"
211
220
  require_relative "openai/models/admin/organization/projects/spend_alert_list_params"
212
221
  require_relative "openai/models/admin/organization/projects/spend_alert_retrieve_params"
213
222
  require_relative "openai/models/admin/organization/projects/spend_alert_update_params"
223
+ require_relative "openai/models/admin/organization/projects/spend_limit_delete_params"
224
+ require_relative "openai/models/admin/organization/projects/spend_limit_retrieve_params"
225
+ require_relative "openai/models/admin/organization/projects/spend_limit_update_params"
214
226
  require_relative "openai/models/admin/organization/projects/user_create_params"
215
227
  require_relative "openai/models/admin/organization/projects/user_delete_params"
216
228
  require_relative "openai/models/admin/organization/projects/user_delete_response"
@@ -238,6 +250,9 @@ require_relative "openai/models/admin/organization/spend_alert_delete_params"
238
250
  require_relative "openai/models/admin/organization/spend_alert_list_params"
239
251
  require_relative "openai/models/admin/organization/spend_alert_retrieve_params"
240
252
  require_relative "openai/models/admin/organization/spend_alert_update_params"
253
+ require_relative "openai/models/admin/organization/spend_limit_delete_params"
254
+ require_relative "openai/models/admin/organization/spend_limit_retrieve_params"
255
+ require_relative "openai/models/admin/organization/spend_limit_update_params"
241
256
  require_relative "openai/models/admin/organization/usage_audio_speeches_params"
242
257
  require_relative "openai/models/admin/organization/usage_audio_speeches_response"
243
258
  require_relative "openai/models/admin/organization/usage_audio_transcriptions_params"
@@ -1162,11 +1177,14 @@ require_relative "openai/resources/admin/organization/projects/model_permissions
1162
1177
  require_relative "openai/resources/admin/organization/projects/rate_limits"
1163
1178
  require_relative "openai/resources/admin/organization/projects/roles"
1164
1179
  require_relative "openai/resources/admin/organization/projects/service_accounts"
1180
+ require_relative "openai/resources/admin/organization/projects/service_accounts/api_keys"
1165
1181
  require_relative "openai/resources/admin/organization/projects/spend_alerts"
1182
+ require_relative "openai/resources/admin/organization/projects/spend_limit"
1166
1183
  require_relative "openai/resources/admin/organization/projects/users"
1167
1184
  require_relative "openai/resources/admin/organization/projects/users/roles"
1168
1185
  require_relative "openai/resources/admin/organization/roles"
1169
1186
  require_relative "openai/resources/admin/organization/spend_alerts"
1187
+ require_relative "openai/resources/admin/organization/spend_limit"
1170
1188
  require_relative "openai/resources/admin/organization/usage"
1171
1189
  require_relative "openai/resources/admin/organization/users"
1172
1190
  require_relative "openai/resources/admin/organization/users/roles"
@@ -132,14 +132,29 @@ module OpenAI
132
132
  private def admin_api_key_auth
133
133
  end
134
134
 
135
+ # @api private
136
+ sig do
137
+ override
138
+ .params(
139
+ request: OpenAI::Internal::Transport::BaseClient::RequestInput,
140
+ redirect_count: Integer,
141
+ retry_count: Integer
142
+ )
143
+ .returns(OpenAI::Internal::Transport::BaseClient::RequestInput)
144
+ end
145
+ private def prepare_request(request, redirect_count:, retry_count:)
146
+ end
147
+
135
148
  # Creates and returns a new client for interacting with the API.
136
149
  sig do
137
150
  params(
138
151
  api_key: T.nilable(String),
139
152
  admin_api_key: T.nilable(String),
153
+ workload_identity: T.nilable(OpenAI::Auth::WorkloadIdentity),
140
154
  organization: T.nilable(String),
141
155
  project: T.nilable(String),
142
156
  webhook_secret: T.nilable(String),
157
+ provider: T.nilable(OpenAI::Provider),
143
158
  base_url: T.nilable(String),
144
159
  max_retries: Integer,
145
160
  timeout: Float,
@@ -152,12 +167,14 @@ module OpenAI
152
167
  api_key: ENV["OPENAI_API_KEY"],
153
168
  # Defaults to `ENV["OPENAI_ADMIN_KEY"]`
154
169
  admin_api_key: ENV["OPENAI_ADMIN_KEY"],
170
+ workload_identity: nil,
155
171
  # Defaults to `ENV["OPENAI_ORG_ID"]`
156
172
  organization: ENV["OPENAI_ORG_ID"],
157
173
  # Defaults to `ENV["OPENAI_PROJECT_ID"]`
158
174
  project: ENV["OPENAI_PROJECT_ID"],
159
175
  # Defaults to `ENV["OPENAI_WEBHOOK_SECRET"]`
160
176
  webhook_secret: ENV["OPENAI_WEBHOOK_SECRET"],
177
+ provider: nil,
161
178
  # Override the default base URL for the API, e.g.,
162
179
  # `"https://api.example.com/v2/"`. Defaults to `ENV["OPENAI_BASE_URL"]`
163
180
  base_url: ENV["OPENAI_BASE_URL"],
@@ -0,0 +1,51 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Internal
5
+ module Provider
6
+ class Runtime
7
+ sig { returns(String) }
8
+ attr_accessor :name
9
+
10
+ sig { returns(String) }
11
+ attr_accessor :base_url
12
+
13
+ sig do
14
+ returns(
15
+ T.nilable(
16
+ T
17
+ .proc
18
+ .params(
19
+ request: OpenAI::Internal::Transport::BaseClient::RequestInput
20
+ )
21
+ .returns(OpenAI::Internal::Transport::BaseClient::RequestInput)
22
+ )
23
+ )
24
+ end
25
+ attr_accessor :prepare_request
26
+ end
27
+
28
+ class << self
29
+ sig do
30
+ params(definition: T.untyped).returns(OpenAI::Provider)
31
+ end
32
+ def create(definition)
33
+ end
34
+
35
+ sig do
36
+ params(provider: OpenAI::Provider).returns(String)
37
+ end
38
+ def name(provider)
39
+ end
40
+
41
+ sig do
42
+ params(provider: OpenAI::Provider).returns(
43
+ OpenAI::Internal::Provider::Runtime
44
+ )
45
+ end
46
+ def configure(provider)
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -188,6 +188,19 @@ module OpenAI
188
188
  private def auth_headers
189
189
  end
190
190
 
191
+ # @api private
192
+ sig do
193
+ overridable
194
+ .params(
195
+ request: OpenAI::Internal::Transport::BaseClient::RequestInput,
196
+ redirect_count: Integer,
197
+ retry_count: Integer
198
+ )
199
+ .returns(OpenAI::Internal::Transport::BaseClient::RequestInput)
200
+ end
201
+ private def prepare_request(request, redirect_count:, retry_count:)
202
+ end
203
+
191
204
  # @api private
192
205
  sig { returns(String) }
193
206
  private def user_agent
@@ -220,6 +233,25 @@ module OpenAI
220
233
  private def retry_delay(headers, retry_count:)
221
234
  end
222
235
 
236
+ # @api private
237
+ sig do
238
+ params(
239
+ url: URI::Generic,
240
+ status: Integer,
241
+ headers: T::Hash[String, String],
242
+ response: Net::HTTPResponse,
243
+ stream: T::Enumerable[String]
244
+ ).returns(T.noreturn)
245
+ end
246
+ private def raise_status_error!(
247
+ url:,
248
+ status:,
249
+ headers:,
250
+ response:,
251
+ stream:
252
+ )
253
+ end
254
+
223
255
  # @api private
224
256
  sig do
225
257
  params(