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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +20 -0
- data/README.md +51 -1
- data/lib/openai/client.rb +62 -8
- data/lib/openai/internal/provider.rb +31 -0
- data/lib/openai/internal/transport/base_client.rb +65 -21
- data/lib/openai/models/admin/organization/audit_log_list_params.rb +84 -0
- data/lib/openai/models/admin/organization/audit_log_list_response.rb +84 -0
- data/lib/openai/models/admin/organization/organization_spend_limit.rb +151 -0
- data/lib/openai/models/admin/organization/organization_spend_limit_deleted.rb +33 -0
- data/lib/openai/models/admin/organization/projects/project_service_account.rb +4 -3
- data/lib/openai/models/admin/organization/projects/project_spend_limit.rb +155 -0
- data/lib/openai/models/admin/organization/projects/project_spend_limit_deleted.rb +35 -0
- data/lib/openai/models/admin/organization/projects/service_account_create_params.rb +9 -1
- data/lib/openai/models/admin/organization/projects/service_account_create_response.rb +26 -6
- data/lib/openai/models/admin/organization/projects/service_accounts/api_key_create_params.rb +54 -0
- data/lib/openai/models/admin/organization/projects/service_accounts/api_key_create_response.rb +57 -0
- data/lib/openai/models/admin/organization/projects/spend_limit_delete_params.rb +26 -0
- data/lib/openai/models/admin/organization/projects/spend_limit_retrieve_params.rb +26 -0
- data/lib/openai/models/admin/organization/projects/spend_limit_update_params.rb +77 -0
- data/lib/openai/models/admin/organization/spend_limit_delete_params.rb +18 -0
- data/lib/openai/models/admin/organization/spend_limit_retrieve_params.rb +18 -0
- data/lib/openai/models/admin/organization/spend_limit_update_params.rb +67 -0
- data/lib/openai/models/admin/organization/usage_audio_speeches_response.rb +88 -13
- data/lib/openai/models/admin/organization/usage_audio_transcriptions_response.rb +88 -13
- data/lib/openai/models/admin/organization/usage_code_interpreter_sessions_response.rb +88 -13
- data/lib/openai/models/admin/organization/usage_completions_response.rb +88 -13
- data/lib/openai/models/admin/organization/usage_costs_response.rb +88 -13
- data/lib/openai/models/admin/organization/usage_embeddings_response.rb +88 -13
- data/lib/openai/models/admin/organization/usage_file_search_calls_response.rb +88 -13
- data/lib/openai/models/admin/organization/usage_images_response.rb +88 -13
- data/lib/openai/models/admin/organization/usage_moderations_response.rb +88 -13
- data/lib/openai/models/admin/organization/usage_vector_stores_response.rb +88 -13
- data/lib/openai/models/admin/organization/usage_web_search_calls_response.rb +88 -13
- data/lib/openai/models/beta/beta_response.rb +12 -6
- data/lib/openai/models/beta/beta_response_error.rb +1 -0
- data/lib/openai/models/beta/beta_response_input_item.rb +16 -32
- data/lib/openai/models/beta/beta_response_text_config.rb +4 -2
- data/lib/openai/models/beta/beta_responses_client_event.rb +12 -6
- data/lib/openai/models/beta/response_create_params.rb +12 -6
- data/lib/openai/models/beta/responses/input_token_count_params.rb +12 -4
- data/lib/openai/models/chat/completion_create_params.rb +8 -6
- data/lib/openai/models/reasoning.rb +8 -2
- data/lib/openai/models/responses/input_token_count_params.rb +4 -2
- data/lib/openai/models/responses/response.rb +4 -4
- data/lib/openai/models/responses/response_create_params.rb +4 -4
- data/lib/openai/models/responses/response_error.rb +1 -0
- data/lib/openai/models/responses/response_text_config.rb +4 -2
- data/lib/openai/models/responses/responses_client_event.rb +4 -4
- data/lib/openai/provider.rb +18 -0
- data/lib/openai/providers/bedrock.rb +489 -0
- data/lib/openai/resources/admin/organization/projects/service_accounts/api_keys.rb +60 -0
- data/lib/openai/resources/admin/organization/projects/service_accounts.rb +10 -3
- data/lib/openai/resources/admin/organization/projects/spend_limit.rb +95 -0
- data/lib/openai/resources/admin/organization/projects.rb +4 -0
- data/lib/openai/resources/admin/organization/spend_limit.rb +86 -0
- data/lib/openai/resources/admin/organization.rb +4 -0
- data/lib/openai/resources/beta/responses.rb +4 -4
- data/lib/openai/resources/chat/completions.rb +4 -4
- data/lib/openai/resources/responses.rb +4 -4
- data/lib/openai/version.rb +1 -1
- data/lib/openai.rb +18 -0
- data/rbi/openai/client.rbi +17 -0
- data/rbi/openai/internal/provider.rbi +51 -0
- data/rbi/openai/internal/transport/base_client.rbi +32 -0
- data/rbi/openai/models/admin/organization/audit_log_list_params.rbi +420 -0
- data/rbi/openai/models/admin/organization/audit_log_list_response.rbi +420 -0
- data/rbi/openai/models/admin/organization/organization_spend_limit.rbi +278 -0
- data/rbi/openai/models/admin/organization/organization_spend_limit_deleted.rbi +48 -0
- data/rbi/openai/models/admin/organization/projects/project_service_account.rbi +8 -3
- data/rbi/openai/models/admin/organization/projects/project_spend_limit.rbi +280 -0
- data/rbi/openai/models/admin/organization/projects/project_spend_limit_deleted.rbi +49 -0
- data/rbi/openai/models/admin/organization/projects/service_account_create_params.rbi +8 -0
- data/rbi/openai/models/admin/organization/projects/service_account_create_response.rbi +52 -8
- data/rbi/openai/models/admin/organization/projects/service_accounts/api_key_create_params.rbi +84 -0
- data/rbi/openai/models/admin/organization/projects/service_accounts/api_key_create_response.rbi +80 -0
- data/rbi/openai/models/admin/organization/projects/spend_limit_delete_params.rbi +44 -0
- data/rbi/openai/models/admin/organization/projects/spend_limit_retrieve_params.rbi +44 -0
- data/rbi/openai/models/admin/organization/projects/spend_limit_update_params.rbi +149 -0
- data/rbi/openai/models/admin/organization/spend_limit_delete_params.rbi +34 -0
- data/rbi/openai/models/admin/organization/spend_limit_retrieve_params.rbi +34 -0
- data/rbi/openai/models/admin/organization/spend_limit_update_params.rbi +141 -0
- data/rbi/openai/models/admin/organization/usage_audio_speeches_response.rbi +121 -16
- data/rbi/openai/models/admin/organization/usage_audio_transcriptions_response.rbi +121 -16
- data/rbi/openai/models/admin/organization/usage_code_interpreter_sessions_response.rbi +121 -16
- data/rbi/openai/models/admin/organization/usage_completions_response.rbi +121 -16
- data/rbi/openai/models/admin/organization/usage_costs_response.rbi +121 -16
- data/rbi/openai/models/admin/organization/usage_embeddings_response.rbi +121 -16
- data/rbi/openai/models/admin/organization/usage_file_search_calls_response.rbi +121 -16
- data/rbi/openai/models/admin/organization/usage_images_response.rbi +121 -16
- data/rbi/openai/models/admin/organization/usage_moderations_response.rbi +121 -16
- data/rbi/openai/models/admin/organization/usage_vector_stores_response.rbi +121 -16
- data/rbi/openai/models/admin/organization/usage_web_search_calls_response.rbi +121 -16
- data/rbi/openai/models/beta/beta_response.rbi +18 -15
- data/rbi/openai/models/beta/beta_response_error.rbi +5 -0
- data/rbi/openai/models/beta/beta_response_input_item.rbi +39 -46
- data/rbi/openai/models/beta/beta_response_text_config.rbi +6 -3
- data/rbi/openai/models/beta/beta_responses_client_event.rbi +18 -15
- data/rbi/openai/models/beta/response_create_params.rbi +18 -15
- data/rbi/openai/models/beta/responses/input_token_count_params.rbi +18 -6
- data/rbi/openai/models/chat/completion_create_params.rbi +12 -15
- data/rbi/openai/models/reasoning.rbi +12 -3
- data/rbi/openai/models/responses/input_token_count_params.rbi +6 -3
- data/rbi/openai/models/responses/response.rbi +6 -12
- data/rbi/openai/models/responses/response_create_params.rbi +6 -12
- data/rbi/openai/models/responses/response_error.rbi +5 -0
- data/rbi/openai/models/responses/response_text_config.rbi +6 -3
- data/rbi/openai/models/responses/responses_client_event.rbi +6 -12
- data/rbi/openai/provider.rbi +9 -0
- data/rbi/openai/providers.rbi +33 -0
- data/rbi/openai/resources/admin/organization/projects/service_accounts/api_keys.rbi +45 -0
- data/rbi/openai/resources/admin/organization/projects/service_accounts.rbi +12 -2
- data/rbi/openai/resources/admin/organization/projects/spend_limit.rbi +78 -0
- data/rbi/openai/resources/admin/organization/projects.rbi +7 -0
- data/rbi/openai/resources/admin/organization/spend_limit.rbi +57 -0
- data/rbi/openai/resources/admin/organization.rbi +3 -0
- data/rbi/openai/resources/beta/responses.rbi +4 -4
- data/rbi/openai/resources/chat/completions.rbi +8 -6
- data/rbi/openai/resources/responses.rbi +4 -4
- data/sig/openai/client.rbs +7 -0
- data/sig/openai/internal/provider.rbs +29 -0
- data/sig/openai/internal/transport/base_client.rbs +17 -1
- data/sig/openai/models/admin/organization/audit_log_list_params.rbs +168 -0
- data/sig/openai/models/admin/organization/audit_log_list_response.rbs +168 -0
- data/sig/openai/models/admin/organization/organization_spend_limit.rbs +94 -0
- data/sig/openai/models/admin/organization/organization_spend_limit_deleted.rbs +28 -0
- data/sig/openai/models/admin/organization/projects/project_service_account.rbs +2 -1
- data/sig/openai/models/admin/organization/projects/project_spend_limit.rbs +96 -0
- data/sig/openai/models/admin/organization/projects/project_spend_limit_deleted.rbs +30 -0
- data/sig/openai/models/admin/organization/projects/service_account_create_params.rbs +9 -1
- data/sig/openai/models/admin/organization/projects/service_account_create_response.rbs +16 -5
- data/sig/openai/models/admin/organization/projects/service_accounts/api_key_create_params.rbs +53 -0
- data/sig/openai/models/admin/organization/projects/service_accounts/api_key_create_response.rbs +48 -0
- data/sig/openai/models/admin/organization/projects/spend_limit_delete_params.rbs +29 -0
- data/sig/openai/models/admin/organization/projects/spend_limit_retrieve_params.rbs +29 -0
- data/sig/openai/models/admin/organization/projects/spend_limit_update_params.rbs +67 -0
- data/sig/openai/models/admin/organization/spend_limit_delete_params.rbs +19 -0
- data/sig/openai/models/admin/organization/spend_limit_retrieve_params.rbs +19 -0
- data/sig/openai/models/admin/organization/spend_limit_update_params.rbs +60 -0
- data/sig/openai/models/admin/organization/usage_audio_speeches_response.rbs +63 -0
- data/sig/openai/models/admin/organization/usage_audio_transcriptions_response.rbs +63 -0
- data/sig/openai/models/admin/organization/usage_code_interpreter_sessions_response.rbs +63 -0
- data/sig/openai/models/admin/organization/usage_completions_response.rbs +63 -0
- data/sig/openai/models/admin/organization/usage_costs_response.rbs +63 -0
- data/sig/openai/models/admin/organization/usage_embeddings_response.rbs +63 -0
- data/sig/openai/models/admin/organization/usage_file_search_calls_response.rbs +63 -0
- data/sig/openai/models/admin/organization/usage_images_response.rbs +63 -0
- data/sig/openai/models/admin/organization/usage_moderations_response.rbs +63 -0
- data/sig/openai/models/admin/organization/usage_vector_stores_response.rbs +63 -0
- data/sig/openai/models/admin/organization/usage_web_search_calls_response.rbs +63 -0
- data/sig/openai/models/beta/beta_response.rbs +8 -12
- data/sig/openai/models/beta/beta_response_error.rbs +2 -0
- data/sig/openai/models/beta/beta_response_input_item.rbs +18 -24
- data/sig/openai/models/beta/beta_responses_client_event.rbs +8 -12
- data/sig/openai/models/beta/response_create_params.rbs +8 -12
- data/sig/openai/models/chat/completion_create_params.rbs +8 -12
- data/sig/openai/models/responses/response.rbs +8 -12
- data/sig/openai/models/responses/response_create_params.rbs +8 -12
- data/sig/openai/models/responses/response_error.rbs +2 -0
- data/sig/openai/models/responses/responses_client_event.rbs +8 -12
- data/sig/openai/provider.rbs +5 -0
- data/sig/openai/providers.rbs +15 -0
- data/sig/openai/resources/admin/organization/projects/service_accounts/api_keys.rbs +23 -0
- data/sig/openai/resources/admin/organization/projects/service_accounts.rbs +3 -0
- data/sig/openai/resources/admin/organization/projects/spend_limit.rbs +31 -0
- data/sig/openai/resources/admin/organization/projects.rbs +2 -0
- data/sig/openai/resources/admin/organization/spend_limit.rbs +26 -0
- data/sig/openai/resources/admin/organization.rbs +2 -0
- data/sig/openai/resources/beta/responses.rbs +4 -4
- data/sig/openai/resources/chat/completions.rbs +4 -4
- data/sig/openai/resources/responses.rbs +4 -4
- metadata +56 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8c69be82ff7c2671977b57e52c949e6f97f7951d11c0534495d49a65ab346cef
|
|
4
|
+
data.tar.gz: 308aa3a93da2b57df7646e4a46cd39d185ec237fc8a13a4efec74719a53f6cc4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6ecb5fa9bec8fc7cbe7ae3a5a04c5e48effb4afdf84a679a25bc9cbea34b34001a8dc131ef92049f3e8c2ee098be3d32aaab648d1d159f8e472f4f2de39333d7
|
|
7
|
+
data.tar.gz: 4c3799a9ae330a796e7f1e37b547d31622a9e53f99fa49bddb92348ed533a14c35c8dca9640f61cac244badf436f90ebbf2eaf5117cf86f240c7c4894326bffb
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.72.0 (2026-07-23)
|
|
4
|
+
|
|
5
|
+
Full Changelog: [v0.71.0...v0.72.0](https://github.com/openai/openai-ruby/compare/v0.71.0...v0.72.0)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
* **api:** accept `None` for prompt_cache_key/safety_identifier ([dcff6be](https://github.com/openai/openai-ruby/commit/dcff6bee4daca61b24dd03096f4772c3d276c93d))
|
|
10
|
+
* **api:** add support for `spend_limit` admin apis ([06dff48](https://github.com/openai/openai-ruby/commit/06dff483232e08e59be550cf4432d319a36ede11))
|
|
11
|
+
* **stlc:** configurable CI runner and private-production-repo support in workflow templates ([da769b4](https://github.com/openai/openai-ruby/commit/da769b419c0d1d51af2ad471ac63fdf18705be5b))
|
|
12
|
+
|
|
13
|
+
## 0.71.0 (2026-07-17)
|
|
14
|
+
|
|
15
|
+
Full Changelog: [v0.70.0...v0.71.0](https://github.com/openai/openai-ruby/compare/v0.70.0...v0.71.0)
|
|
16
|
+
|
|
17
|
+
### Features
|
|
18
|
+
|
|
19
|
+
* **api:** /organization/projects/{project_id}/service_accounts/{service_account_id}/api_keys" endpoint ([fc60012](https://github.com/openai/openai-ruby/commit/fc6001297f385326c0b9d9c9cbf7f7bd66620c11))
|
|
20
|
+
* **api:** manual updates ([4e499e5](https://github.com/openai/openai-ruby/commit/4e499e5e0ecee6306bde22b2b77cad619395a6cb))
|
|
21
|
+
* **api:** manual updates ([2be1795](https://github.com/openai/openai-ruby/commit/2be179523d2d2838982ce8d6831c49fd324ccf35))
|
|
22
|
+
|
|
3
23
|
## 0.70.0 (2026-07-14)
|
|
4
24
|
|
|
5
25
|
Full Changelog: [v0.69.0...v0.70.0](https://github.com/openai/openai-ruby/compare/v0.69.0...v0.70.0)
|
data/README.md
CHANGED
|
@@ -15,7 +15,7 @@ To use this gem, install via Bundler by adding the following to your application
|
|
|
15
15
|
<!-- x-release-please-start-version -->
|
|
16
16
|
|
|
17
17
|
```ruby
|
|
18
|
-
gem "openai", "~> 0.
|
|
18
|
+
gem "openai", "~> 0.72.0"
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
<!-- x-release-please-end -->
|
|
@@ -107,6 +107,56 @@ puts(edited.data.first)
|
|
|
107
107
|
|
|
108
108
|
Note that you can also pass a raw `IO` descriptor, but this disables retries, as the library can't be sure if the descriptor is a file or pipe (which cannot be rewound).
|
|
109
109
|
|
|
110
|
+
## Amazon Bedrock
|
|
111
|
+
|
|
112
|
+
Use the standard client with the Bedrock provider to call OpenAI models through Amazon Bedrock's OpenAI-compatible API. Add `aws-sdk-core` to your application for AWS credential discovery and SigV4 signing:
|
|
113
|
+
|
|
114
|
+
```ruby
|
|
115
|
+
gem "openai"
|
|
116
|
+
gem "aws-sdk-core", "~> 3"
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
With your normal AWS credentials configured, only the region is required:
|
|
120
|
+
|
|
121
|
+
```ruby
|
|
122
|
+
require "openai"
|
|
123
|
+
|
|
124
|
+
client = OpenAI::Client.new(
|
|
125
|
+
provider: OpenAI::Providers.bedrock(region: "us-west-2")
|
|
126
|
+
)
|
|
127
|
+
|
|
128
|
+
response = client.responses.create(
|
|
129
|
+
model: ENV.fetch("BEDROCK_MODEL"),
|
|
130
|
+
input: "Say hello!"
|
|
131
|
+
)
|
|
132
|
+
|
|
133
|
+
puts(response.output_text)
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
The provider uses the standard AWS credential chain, including environment credentials, `~/.aws/credentials`, `~/.aws/config`, `AWS_PROFILE`, named profiles, SSO and assume-role profiles, and workload credentials. Select a profile explicitly with:
|
|
137
|
+
|
|
138
|
+
```ruby
|
|
139
|
+
client = OpenAI::Client.new(
|
|
140
|
+
provider: OpenAI::Providers.bedrock(
|
|
141
|
+
region: "us-west-2",
|
|
142
|
+
profile: "engineering"
|
|
143
|
+
)
|
|
144
|
+
)
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
`AWS_BEARER_TOKEN_BEDROCK` and explicit Bedrock bearer credentials are also supported. Bearer authentication does not load or require `aws-sdk-core`:
|
|
148
|
+
|
|
149
|
+
```ruby
|
|
150
|
+
client = OpenAI::Client.new(
|
|
151
|
+
provider: OpenAI::Providers.bedrock(
|
|
152
|
+
region: "us-west-2",
|
|
153
|
+
api_key: ENV.fetch("AWS_BEARER_TOKEN_BEDROCK")
|
|
154
|
+
)
|
|
155
|
+
)
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
See [bedrock.md](bedrock.md) for authentication precedence, static and refreshable credentials, endpoint configuration, and SigV4 request constraints.
|
|
159
|
+
|
|
110
160
|
## Workload Identity Authentication
|
|
111
161
|
|
|
112
162
|
For secure, automated environments like cloud-managed Kubernetes, Azure, and GCP, you can use workload identity authentication with short-lived tokens from cloud identity providers instead of long-lived API keys.
|
data/lib/openai/client.rb
CHANGED
|
@@ -125,6 +125,8 @@ module OpenAI
|
|
|
125
125
|
#
|
|
126
126
|
# @return [Hash{String=>String}]
|
|
127
127
|
private def auth_headers(security:)
|
|
128
|
+
return {} if @provider_runtime
|
|
129
|
+
|
|
128
130
|
enabled_security = security.select { |_, enabled| enabled }
|
|
129
131
|
headers = {bearer_auth:, admin_api_key_auth:}.slice(*enabled_security.keys).values.reduce({}, :merge)
|
|
130
132
|
if headers.empty? && enabled_security.any?
|
|
@@ -166,6 +168,13 @@ module OpenAI
|
|
|
166
168
|
true
|
|
167
169
|
end
|
|
168
170
|
|
|
171
|
+
# @api private
|
|
172
|
+
private def prepare_request(request, redirect_count:, retry_count:)
|
|
173
|
+
preparer = @provider_runtime&.prepare_request
|
|
174
|
+
return super unless preparer
|
|
175
|
+
preparer.call(request)
|
|
176
|
+
end
|
|
177
|
+
|
|
169
178
|
# @api private
|
|
170
179
|
private def send_request(request, redirect_count:, retry_count:, send_retry_header:)
|
|
171
180
|
return super unless @workload_identity_auth
|
|
@@ -218,6 +227,10 @@ module OpenAI
|
|
|
218
227
|
#
|
|
219
228
|
# @param webhook_secret [String, nil] Defaults to `ENV["OPENAI_WEBHOOK_SECRET"]`
|
|
220
229
|
#
|
|
230
|
+
# @param provider [OpenAI::Provider, nil] Configure a supported
|
|
231
|
+
# third-party provider. Provider authentication and routing cannot be combined
|
|
232
|
+
# with top-level `api_key`, `admin_api_key`, `workload_identity`, or `base_url`.
|
|
233
|
+
#
|
|
221
234
|
# @param base_url [String, nil] Override the default base URL for the API, e.g.,
|
|
222
235
|
# `"https://api.example.com/v2/"`. Defaults to `ENV["OPENAI_BASE_URL"]`
|
|
223
236
|
#
|
|
@@ -229,25 +242,65 @@ module OpenAI
|
|
|
229
242
|
#
|
|
230
243
|
# @param max_retry_delay [Float]
|
|
231
244
|
def initialize(
|
|
232
|
-
api_key:
|
|
233
|
-
admin_api_key:
|
|
245
|
+
api_key: OpenAI::Internal::OMIT,
|
|
246
|
+
admin_api_key: OpenAI::Internal::OMIT,
|
|
234
247
|
workload_identity: nil,
|
|
235
|
-
organization:
|
|
236
|
-
project:
|
|
237
|
-
webhook_secret:
|
|
238
|
-
|
|
248
|
+
organization: OpenAI::Internal::OMIT,
|
|
249
|
+
project: OpenAI::Internal::OMIT,
|
|
250
|
+
webhook_secret: OpenAI::Internal::OMIT,
|
|
251
|
+
provider: nil,
|
|
252
|
+
base_url: OpenAI::Internal::OMIT,
|
|
239
253
|
max_retries: self.class::DEFAULT_MAX_RETRIES,
|
|
240
254
|
timeout: self.class::DEFAULT_TIMEOUT_IN_SECONDS,
|
|
241
255
|
initial_retry_delay: self.class::DEFAULT_INITIAL_RETRY_DELAY,
|
|
242
256
|
max_retry_delay: self.class::DEFAULT_MAX_RETRY_DELAY
|
|
243
257
|
)
|
|
258
|
+
provider_runtime = nil
|
|
259
|
+
unless provider.nil?
|
|
260
|
+
provider_name = OpenAI::Internal::Provider.name(provider)
|
|
261
|
+
conflicts = {
|
|
262
|
+
api_key: api_key,
|
|
263
|
+
admin_api_key: admin_api_key,
|
|
264
|
+
workload_identity: workload_identity,
|
|
265
|
+
base_url: base_url
|
|
266
|
+
}.filter_map do |name, value|
|
|
267
|
+
name unless value.equal?(OpenAI::Internal::OMIT) || value.nil?
|
|
268
|
+
end
|
|
269
|
+
unless conflicts.empty?
|
|
270
|
+
formatted = conflicts.map { "`#{_1}`" }.join(", ")
|
|
271
|
+
message =
|
|
272
|
+
"`provider` cannot be combined with top-level #{formatted}. Move provider " \
|
|
273
|
+
"authentication and routing options into `#{provider_name}(...)`."
|
|
274
|
+
raise ArgumentError, message
|
|
275
|
+
end
|
|
276
|
+
provider_runtime = OpenAI::Internal::Provider.configure(provider)
|
|
277
|
+
end
|
|
278
|
+
|
|
279
|
+
api_key = ENV["OPENAI_API_KEY"] if api_key.equal?(OpenAI::Internal::OMIT) && provider_runtime.nil?
|
|
280
|
+
if admin_api_key.equal?(OpenAI::Internal::OMIT) && provider_runtime.nil?
|
|
281
|
+
admin_api_key = ENV["OPENAI_ADMIN_KEY"]
|
|
282
|
+
end
|
|
283
|
+
if organization.equal?(OpenAI::Internal::OMIT) && provider_runtime.nil?
|
|
284
|
+
organization = ENV["OPENAI_ORG_ID"]
|
|
285
|
+
end
|
|
286
|
+
project = ENV["OPENAI_PROJECT_ID"] if project.equal?(OpenAI::Internal::OMIT) && provider_runtime.nil?
|
|
287
|
+
webhook_secret = ENV["OPENAI_WEBHOOK_SECRET"] if webhook_secret.equal?(OpenAI::Internal::OMIT)
|
|
288
|
+
base_url = ENV["OPENAI_BASE_URL"] if base_url.equal?(OpenAI::Internal::OMIT) && provider_runtime.nil?
|
|
289
|
+
|
|
290
|
+
api_key = nil if api_key.equal?(OpenAI::Internal::OMIT)
|
|
291
|
+
admin_api_key = nil if admin_api_key.equal?(OpenAI::Internal::OMIT)
|
|
292
|
+
organization = nil if organization.equal?(OpenAI::Internal::OMIT)
|
|
293
|
+
project = nil if project.equal?(OpenAI::Internal::OMIT)
|
|
294
|
+
webhook_secret = nil if webhook_secret.equal?(OpenAI::Internal::OMIT)
|
|
295
|
+
base_url = provider_runtime.base_url if provider_runtime
|
|
296
|
+
base_url = nil if base_url.equal?(OpenAI::Internal::OMIT)
|
|
244
297
|
base_url ||= "https://api.openai.com/v1"
|
|
245
298
|
|
|
246
299
|
if !api_key.nil? && !workload_identity.nil?
|
|
247
300
|
raise ArgumentError, "`api_key` and `workload_identity` are mutually exclusive"
|
|
248
301
|
end
|
|
249
302
|
|
|
250
|
-
if api_key.nil? && admin_api_key.nil? && workload_identity.nil?
|
|
303
|
+
if provider_runtime.nil? && api_key.nil? && admin_api_key.nil? && workload_identity.nil?
|
|
251
304
|
raise ArgumentError,
|
|
252
305
|
"Missing credentials. Please pass an `api_key`, `workload_identity`, `admin_api_key`, or set the `OPENAI_API_KEY` or `OPENAI_ADMIN_KEY` environment variable."
|
|
253
306
|
end
|
|
@@ -256,7 +309,7 @@ module OpenAI
|
|
|
256
309
|
"openai-organization" => (@organization = organization&.to_s),
|
|
257
310
|
"openai-project" => (@project = project&.to_s)
|
|
258
311
|
}
|
|
259
|
-
custom_headers_env = ENV["OPENAI_CUSTOM_HEADERS"]
|
|
312
|
+
custom_headers_env = ENV["OPENAI_CUSTOM_HEADERS"] unless provider_runtime
|
|
260
313
|
unless custom_headers_env.nil?
|
|
261
314
|
parsed = {}
|
|
262
315
|
custom_headers_env.split("\n").each do |line|
|
|
@@ -280,6 +333,7 @@ module OpenAI
|
|
|
280
333
|
end
|
|
281
334
|
@admin_api_key = admin_api_key&.to_s
|
|
282
335
|
@webhook_secret = webhook_secret&.to_s
|
|
336
|
+
@provider_runtime = provider_runtime
|
|
283
337
|
|
|
284
338
|
super(
|
|
285
339
|
base_url: base_url,
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module OpenAI
|
|
4
|
+
module Internal
|
|
5
|
+
# Private registry for OpenAI-owned provider configurations.
|
|
6
|
+
#
|
|
7
|
+
# Provider factories return opaque OpenAI::Provider instances whose public
|
|
8
|
+
# representation does not expose their definition.
|
|
9
|
+
module Provider
|
|
10
|
+
Runtime = Struct.new(:name, :base_url, :prepare_request, keyword_init: true)
|
|
11
|
+
|
|
12
|
+
class << self
|
|
13
|
+
# @api private
|
|
14
|
+
def create(definition)
|
|
15
|
+
OpenAI::Provider.send(:new, definition.freeze).freeze
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# @api private
|
|
19
|
+
def name(provider) = definition(provider).name
|
|
20
|
+
|
|
21
|
+
# @api private
|
|
22
|
+
def configure(provider) = definition(provider).configure
|
|
23
|
+
|
|
24
|
+
private def definition(provider)
|
|
25
|
+
return provider.send(:definition) if provider.instance_of?(OpenAI::Provider)
|
|
26
|
+
raise ArgumentError, "Invalid provider. Providers must be created by an OpenAI provider factory."
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -232,6 +232,14 @@ module OpenAI
|
|
|
232
232
|
# @return [Hash{String=>String}]
|
|
233
233
|
private def auth_headers = {}
|
|
234
234
|
|
|
235
|
+
# Apply final per-attempt request transformations after retry headers are
|
|
236
|
+
# set and immediately before the request reaches the transport.
|
|
237
|
+
#
|
|
238
|
+
# @api private
|
|
239
|
+
private def prepare_request(request, **_context)
|
|
240
|
+
request
|
|
241
|
+
end
|
|
242
|
+
|
|
235
243
|
# @api private
|
|
236
244
|
#
|
|
237
245
|
# @return [String]
|
|
@@ -371,6 +379,24 @@ module OpenAI
|
|
|
371
379
|
(@initial_retry_delay * scale * jitter).clamp(0, @max_retry_delay)
|
|
372
380
|
end
|
|
373
381
|
|
|
382
|
+
# @api private
|
|
383
|
+
private def raise_status_error!(url:, status:, headers:, response:, stream:)
|
|
384
|
+
decoded = Kernel.then do
|
|
385
|
+
OpenAI::Internal::Util.decode_content(headers, stream: stream, suppress_error: true)
|
|
386
|
+
ensure
|
|
387
|
+
self.class.reap_connection!(status, stream: stream)
|
|
388
|
+
end
|
|
389
|
+
|
|
390
|
+
raise OpenAI::Errors::APIStatusError.for(
|
|
391
|
+
url: url,
|
|
392
|
+
status: status,
|
|
393
|
+
headers: headers,
|
|
394
|
+
body: decoded,
|
|
395
|
+
request: nil,
|
|
396
|
+
response: response
|
|
397
|
+
)
|
|
398
|
+
end
|
|
399
|
+
|
|
374
400
|
# @api private
|
|
375
401
|
#
|
|
376
402
|
# @param request [Hash{Symbol=>Object}] .
|
|
@@ -396,13 +422,23 @@ module OpenAI
|
|
|
396
422
|
# @raise [OpenAI::Errors::APIError]
|
|
397
423
|
# @return [Array(Integer, Net::HTTPResponse, Enumerable<String>)]
|
|
398
424
|
def send_request(request, redirect_count:, retry_count:, send_retry_header:)
|
|
399
|
-
url, headers, max_retries, timeout = request.fetch_values(:url, :headers, :max_retries, :timeout)
|
|
400
|
-
input = {**request.except(:timeout), deadline: OpenAI::Internal::Util.monotonic_secs + timeout}
|
|
401
|
-
|
|
402
425
|
if send_retry_header
|
|
403
|
-
|
|
426
|
+
request = request.merge(
|
|
427
|
+
headers: request.fetch(:headers).merge("x-stainless-retry-count" => retry_count.to_s)
|
|
428
|
+
)
|
|
404
429
|
end
|
|
405
430
|
|
|
431
|
+
prepared_request = prepare_request(
|
|
432
|
+
request,
|
|
433
|
+
redirect_count: redirect_count,
|
|
434
|
+
retry_count: retry_count
|
|
435
|
+
)
|
|
436
|
+
url, max_retries, timeout = prepared_request.fetch_values(:url, :max_retries, :timeout)
|
|
437
|
+
input = {
|
|
438
|
+
**prepared_request.except(:timeout, :follow_redirects, :provider_auth),
|
|
439
|
+
deadline: OpenAI::Internal::Util.monotonic_secs + timeout
|
|
440
|
+
}
|
|
441
|
+
|
|
406
442
|
begin
|
|
407
443
|
status, response, stream = @requester.execute(input)
|
|
408
444
|
rescue OpenAI::Errors::APIConnectionError => e
|
|
@@ -410,6 +446,25 @@ module OpenAI
|
|
|
410
446
|
end
|
|
411
447
|
headers = OpenAI::Internal::Util.normalized_headers(response&.each_header&.to_h)
|
|
412
448
|
|
|
449
|
+
terminal_status =
|
|
450
|
+
case status
|
|
451
|
+
in 300..399
|
|
452
|
+
prepared_request[:follow_redirects] == false
|
|
453
|
+
in (400..)
|
|
454
|
+
retry_count >= max_retries || !self.class.should_retry?(status, headers: headers)
|
|
455
|
+
else
|
|
456
|
+
false
|
|
457
|
+
end
|
|
458
|
+
if terminal_status
|
|
459
|
+
raise_status_error!(
|
|
460
|
+
url: url,
|
|
461
|
+
status: status,
|
|
462
|
+
headers: headers,
|
|
463
|
+
response: response,
|
|
464
|
+
stream: stream
|
|
465
|
+
)
|
|
466
|
+
end
|
|
467
|
+
|
|
413
468
|
case status
|
|
414
469
|
in ..299
|
|
415
470
|
[status, response, stream]
|
|
@@ -421,30 +476,19 @@ module OpenAI
|
|
|
421
476
|
in 300..399
|
|
422
477
|
self.class.reap_connection!(status, stream: stream)
|
|
423
478
|
|
|
424
|
-
|
|
479
|
+
redirected_request = self.class.follow_redirect(
|
|
480
|
+
prepared_request,
|
|
481
|
+
status: status,
|
|
482
|
+
response_headers: headers
|
|
483
|
+
)
|
|
425
484
|
send_request(
|
|
426
|
-
|
|
485
|
+
redirected_request,
|
|
427
486
|
redirect_count: redirect_count + 1,
|
|
428
487
|
retry_count: retry_count,
|
|
429
488
|
send_retry_header: send_retry_header
|
|
430
489
|
)
|
|
431
490
|
in OpenAI::Errors::APIConnectionError if retry_count >= max_retries
|
|
432
491
|
raise status
|
|
433
|
-
in (400..) if retry_count >= max_retries || !self.class.should_retry?(status, headers: headers)
|
|
434
|
-
decoded = Kernel.then do
|
|
435
|
-
OpenAI::Internal::Util.decode_content(headers, stream: stream, suppress_error: true)
|
|
436
|
-
ensure
|
|
437
|
-
self.class.reap_connection!(status, stream: stream)
|
|
438
|
-
end
|
|
439
|
-
|
|
440
|
-
raise OpenAI::Errors::APIStatusError.for(
|
|
441
|
-
url: url,
|
|
442
|
-
status: status,
|
|
443
|
-
headers: headers,
|
|
444
|
-
body: decoded,
|
|
445
|
-
request: nil,
|
|
446
|
-
response: response
|
|
447
|
-
)
|
|
448
492
|
in (400..) | OpenAI::Errors::APIConnectionError
|
|
449
493
|
self.class.reap_connection!(status, stream: stream)
|
|
450
494
|
|
|
@@ -218,6 +218,90 @@ module OpenAI
|
|
|
218
218
|
USER_ADDED = :"user.added"
|
|
219
219
|
USER_UPDATED = :"user.updated"
|
|
220
220
|
USER_DELETED = :"user.deleted"
|
|
221
|
+
TENANT_METADATA_UPDATED = :"tenant.metadata.updated"
|
|
222
|
+
TENANT_MICROSOFT_ENTRA_MAPPING_UPSERTED = :"tenant.microsoft_entra_mapping.upserted"
|
|
223
|
+
TENANT_MICROSOFT_ENTRA_MAPPING_DELETED = :"tenant.microsoft_entra_mapping.deleted"
|
|
224
|
+
TENANT_WORKLOAD_IDENTITY_PROVIDER_CREATED = :"tenant.workload_identity.provider.created"
|
|
225
|
+
TENANT_WORKLOAD_IDENTITY_PROVIDER_UPDATED = :"tenant.workload_identity.provider.updated"
|
|
226
|
+
TENANT_WORKLOAD_IDENTITY_PROVIDER_ARCHIVED = :"tenant.workload_identity.provider.archived"
|
|
227
|
+
TENANT_WORKLOAD_IDENTITY_MAPPING_CREATED = :"tenant.workload_identity.mapping.created"
|
|
228
|
+
TENANT_WORKLOAD_IDENTITY_MAPPING_UPDATED = :"tenant.workload_identity.mapping.updated"
|
|
229
|
+
TENANT_WORKLOAD_IDENTITY_MAPPING_ARCHIVED = :"tenant.workload_identity.mapping.archived"
|
|
230
|
+
TENANT_WORKLOAD_IDENTITY_BINDING_CREATED = :"tenant.workload_identity.binding.created"
|
|
231
|
+
TENANT_WORKLOAD_IDENTITY_PRINCIPAL_PROVISIONED = :"tenant.workload_identity.principal.provisioned"
|
|
232
|
+
TENANT_ADMIN_API_KEY_CREATED = :"tenant.admin_api_key.created"
|
|
233
|
+
TENANT_ADMIN_API_KEY_UPDATED = :"tenant.admin_api_key.updated"
|
|
234
|
+
TENANT_ADMIN_API_KEY_DELETED = :"tenant.admin_api_key.deleted"
|
|
235
|
+
TENANT_PROJECT_API_KEY_CREATED = :"tenant.project_api_key.created"
|
|
236
|
+
TENANT_CHATGPT_ACCESS_TOKEN_REVOKED = :"tenant.chatgpt_access_token.revoked"
|
|
237
|
+
TENANT_MIGRATION_COMPLETED = :"tenant.migration.completed"
|
|
238
|
+
TENANT_SSO_MIGRATED = :"tenant.sso.migrated"
|
|
239
|
+
TENANT_DOMAINS_MIGRATED = :"tenant.domains.migrated"
|
|
240
|
+
TENANT_SSO_CONNECTION_CREATED = :"tenant.sso_connection.created"
|
|
241
|
+
TENANT_SSO_CONNECTION_UPDATED = :"tenant.sso_connection.updated"
|
|
242
|
+
TENANT_SSO_CONNECTION_DELETED = :"tenant.sso_connection.deleted"
|
|
243
|
+
TENANT_SSO_CONNECTION_SETUP_STARTED = :"tenant.sso_connection.setup.started"
|
|
244
|
+
TENANT_POLICY_CREATED = :"tenant.policy.created"
|
|
245
|
+
TENANT_POLICY_UPDATED = :"tenant.policy.updated"
|
|
246
|
+
TENANT_POLICY_DELETED = :"tenant.policy.deleted"
|
|
247
|
+
TENANT_POLICY_ATTACHED = :"tenant.policy.attached"
|
|
248
|
+
TENANT_POLICY_DETACHED = :"tenant.policy.detached"
|
|
249
|
+
TENANT_PRINCIPAL_AUTHENTICATION_POLICY_RESOLVED = :"tenant.principal_authentication_policy.resolved"
|
|
250
|
+
TENANT_SCIM_SETUP_STARTED = :"tenant.scim.setup.started"
|
|
251
|
+
TENANT_SCIM_DELETION_REQUESTED = :"tenant.scim.deletion.requested"
|
|
252
|
+
TENANT_SCIM_DIRECTORY_CREATED = :"tenant.scim.directory.created"
|
|
253
|
+
TENANT_PRODUCT_ACCESS_POLICY_UPDATED = :"tenant.product_access_policy.updated"
|
|
254
|
+
TENANT_RESOURCE_SHARE_GRANT_CREATED = :"tenant.resource_share_grant.created"
|
|
255
|
+
TENANT_RESOURCE_SHARE_GRANT_UPDATED = :"tenant.resource_share_grant.updated"
|
|
256
|
+
TENANT_RESOURCE_SHARE_GRANT_ACCEPTED = :"tenant.resource_share_grant.accepted"
|
|
257
|
+
TENANT_RESOURCE_SHARE_GRANT_DECLINED = :"tenant.resource_share_grant.declined"
|
|
258
|
+
TENANT_RESOURCE_SHARE_GRANT_REVOKED = :"tenant.resource_share_grant.revoked"
|
|
259
|
+
TENANT_RESOURCE_SHARE_GRANT_DELETED = :"tenant.resource_share_grant.deleted"
|
|
260
|
+
TENANT_SERVICE_ACCOUNT_UPDATED = :"tenant.service_account.updated"
|
|
261
|
+
TENANT_SERVICE_ACCOUNT_DELETED = :"tenant.service_account.deleted"
|
|
262
|
+
TENANT_SERVICE_ACCOUNT_TOKEN_REVOKED = :"tenant.service_account.token.revoked"
|
|
263
|
+
TENANT_BILLING_OVERAGE_LIMIT_UPDATED = :"tenant.billing.overage_limit.updated"
|
|
264
|
+
TENANT_BILLING_ALERTS_UPDATED = :"tenant.billing.alerts.updated"
|
|
265
|
+
TENANT_BILLING_INFO_UPDATED = :"tenant.billing.info.updated"
|
|
266
|
+
TENANT_USAGE_LIMIT_WORKSPACE_UPDATED = :"tenant.usage_limit.workspace.updated"
|
|
267
|
+
TENANT_USAGE_LIMIT_GROUP_UPDATED = :"tenant.usage_limit.group.updated"
|
|
268
|
+
TENANT_USAGE_LIMIT_USER_UPDATED = :"tenant.usage_limit.user.updated"
|
|
269
|
+
TENANT_USAGE_LIMIT_INCREASE_REQUEST_UPDATED = :"tenant.usage_limit.increase_request.updated"
|
|
270
|
+
TENANT_USAGE_LIMIT_INCREASE_REQUEST_RESOLVED = :"tenant.usage_limit.increase_request.resolved"
|
|
271
|
+
TENANT_GROUP_CREATED = :"tenant.group.created"
|
|
272
|
+
TENANT_GROUP_UPDATED = :"tenant.group.updated"
|
|
273
|
+
TENANT_GROUP_DELETED = :"tenant.group.deleted"
|
|
274
|
+
TENANT_GROUP_MEMBER_ADDED = :"tenant.group.member.added"
|
|
275
|
+
TENANT_GROUP_MEMBER_REMOVED = :"tenant.group.member.removed"
|
|
276
|
+
TENANT_MIGRATION_ROLLOUT_STATUS_UPDATED = :"tenant.migration_rollout.status.updated"
|
|
277
|
+
TENANT_MIGRATION_ROLLOUT_TIER_UPDATED = :"tenant.migration_rollout.tier.updated"
|
|
278
|
+
TENANT_ROLE_METADATA_UPDATED = :"tenant.role.metadata.updated"
|
|
279
|
+
TENANT_CUSTOM_ROLE_CREATED = :"tenant.custom_role.created"
|
|
280
|
+
TENANT_CUSTOM_ROLE_UPDATED = :"tenant.custom_role.updated"
|
|
281
|
+
TENANT_CUSTOM_ROLE_DELETED = :"tenant.custom_role.deleted"
|
|
282
|
+
TENANT_ROLE_ASSIGNMENT_CREATED = :"tenant.role_assignment.created"
|
|
283
|
+
TENANT_ROLE_ASSIGNMENT_DELETED = :"tenant.role_assignment.deleted"
|
|
284
|
+
TENANT_RESOURCE_ROLE_ASSIGNMENT_CREATED = :"tenant.resource_role_assignment.created"
|
|
285
|
+
TENANT_RESOURCE_ROLE_ASSIGNMENT_DELETED = :"tenant.resource_role_assignment.deleted"
|
|
286
|
+
TENANT_RESOURCE_ACCESS_UPDATED = :"tenant.resource_access.updated"
|
|
287
|
+
TENANT_RESOURCE_ACCESS_DELETED = :"tenant.resource_access.deleted"
|
|
288
|
+
TENANT_SESSION_POLICY_CREATED = :"tenant.session_policy.created"
|
|
289
|
+
TENANT_SESSION_POLICY_UPDATED = :"tenant.session_policy.updated"
|
|
290
|
+
TENANT_SESSION_POLICY_DELETED = :"tenant.session_policy.deleted"
|
|
291
|
+
TENANT_SESSION_REVOCATION_STARTED = :"tenant.session_revocation.started"
|
|
292
|
+
TENANT_THIRD_PARTY_APP_POLICY_UPDATED = :"tenant.third_party_app_policy.updated"
|
|
293
|
+
TENANT_USER_ADDED = :"tenant.user.added"
|
|
294
|
+
TENANT_USER_UPDATED = :"tenant.user.updated"
|
|
295
|
+
TENANT_USER_REMOVED = :"tenant.user.removed"
|
|
296
|
+
TENANT_USER_LOOKED_UP = :"tenant.user.looked_up"
|
|
297
|
+
TENANT_USER_INVITED = :"tenant.user.invited"
|
|
298
|
+
TENANT_MEMBERSHIP_REVOKED = :"tenant.membership.revoked"
|
|
299
|
+
TENANT_API_ORGANIZATION_INVITE_UPSERTED = :"tenant.api_organization_invite.upserted"
|
|
300
|
+
TENANT_API_ORGANIZATION_INVITE_DELETED = :"tenant.api_organization_invite.deleted"
|
|
301
|
+
TENANT_CHATGPT_WORKSPACE_INVITE_UPSERTED = :"tenant.chatgpt_workspace_invite.upserted"
|
|
302
|
+
TENANT_MEMBERSHIP_ACCEPTED = :"tenant.membership.accepted"
|
|
303
|
+
TENANT_MEMBERSHIP_DECLINED = :"tenant.membership.declined"
|
|
304
|
+
TENANT_WORKSPACE_INVITE_EMAIL_SETTINGS_UPDATED = :"tenant.workspace_invite_email_settings.updated"
|
|
221
305
|
|
|
222
306
|
# @!method self.values
|
|
223
307
|
# @return [Array<Symbol>]
|
|
@@ -666,6 +666,90 @@ module OpenAI
|
|
|
666
666
|
USER_ADDED = :"user.added"
|
|
667
667
|
USER_UPDATED = :"user.updated"
|
|
668
668
|
USER_DELETED = :"user.deleted"
|
|
669
|
+
TENANT_METADATA_UPDATED = :"tenant.metadata.updated"
|
|
670
|
+
TENANT_MICROSOFT_ENTRA_MAPPING_UPSERTED = :"tenant.microsoft_entra_mapping.upserted"
|
|
671
|
+
TENANT_MICROSOFT_ENTRA_MAPPING_DELETED = :"tenant.microsoft_entra_mapping.deleted"
|
|
672
|
+
TENANT_WORKLOAD_IDENTITY_PROVIDER_CREATED = :"tenant.workload_identity.provider.created"
|
|
673
|
+
TENANT_WORKLOAD_IDENTITY_PROVIDER_UPDATED = :"tenant.workload_identity.provider.updated"
|
|
674
|
+
TENANT_WORKLOAD_IDENTITY_PROVIDER_ARCHIVED = :"tenant.workload_identity.provider.archived"
|
|
675
|
+
TENANT_WORKLOAD_IDENTITY_MAPPING_CREATED = :"tenant.workload_identity.mapping.created"
|
|
676
|
+
TENANT_WORKLOAD_IDENTITY_MAPPING_UPDATED = :"tenant.workload_identity.mapping.updated"
|
|
677
|
+
TENANT_WORKLOAD_IDENTITY_MAPPING_ARCHIVED = :"tenant.workload_identity.mapping.archived"
|
|
678
|
+
TENANT_WORKLOAD_IDENTITY_BINDING_CREATED = :"tenant.workload_identity.binding.created"
|
|
679
|
+
TENANT_WORKLOAD_IDENTITY_PRINCIPAL_PROVISIONED = :"tenant.workload_identity.principal.provisioned"
|
|
680
|
+
TENANT_ADMIN_API_KEY_CREATED = :"tenant.admin_api_key.created"
|
|
681
|
+
TENANT_ADMIN_API_KEY_UPDATED = :"tenant.admin_api_key.updated"
|
|
682
|
+
TENANT_ADMIN_API_KEY_DELETED = :"tenant.admin_api_key.deleted"
|
|
683
|
+
TENANT_PROJECT_API_KEY_CREATED = :"tenant.project_api_key.created"
|
|
684
|
+
TENANT_CHATGPT_ACCESS_TOKEN_REVOKED = :"tenant.chatgpt_access_token.revoked"
|
|
685
|
+
TENANT_MIGRATION_COMPLETED = :"tenant.migration.completed"
|
|
686
|
+
TENANT_SSO_MIGRATED = :"tenant.sso.migrated"
|
|
687
|
+
TENANT_DOMAINS_MIGRATED = :"tenant.domains.migrated"
|
|
688
|
+
TENANT_SSO_CONNECTION_CREATED = :"tenant.sso_connection.created"
|
|
689
|
+
TENANT_SSO_CONNECTION_UPDATED = :"tenant.sso_connection.updated"
|
|
690
|
+
TENANT_SSO_CONNECTION_DELETED = :"tenant.sso_connection.deleted"
|
|
691
|
+
TENANT_SSO_CONNECTION_SETUP_STARTED = :"tenant.sso_connection.setup.started"
|
|
692
|
+
TENANT_POLICY_CREATED = :"tenant.policy.created"
|
|
693
|
+
TENANT_POLICY_UPDATED = :"tenant.policy.updated"
|
|
694
|
+
TENANT_POLICY_DELETED = :"tenant.policy.deleted"
|
|
695
|
+
TENANT_POLICY_ATTACHED = :"tenant.policy.attached"
|
|
696
|
+
TENANT_POLICY_DETACHED = :"tenant.policy.detached"
|
|
697
|
+
TENANT_PRINCIPAL_AUTHENTICATION_POLICY_RESOLVED = :"tenant.principal_authentication_policy.resolved"
|
|
698
|
+
TENANT_SCIM_SETUP_STARTED = :"tenant.scim.setup.started"
|
|
699
|
+
TENANT_SCIM_DELETION_REQUESTED = :"tenant.scim.deletion.requested"
|
|
700
|
+
TENANT_SCIM_DIRECTORY_CREATED = :"tenant.scim.directory.created"
|
|
701
|
+
TENANT_PRODUCT_ACCESS_POLICY_UPDATED = :"tenant.product_access_policy.updated"
|
|
702
|
+
TENANT_RESOURCE_SHARE_GRANT_CREATED = :"tenant.resource_share_grant.created"
|
|
703
|
+
TENANT_RESOURCE_SHARE_GRANT_UPDATED = :"tenant.resource_share_grant.updated"
|
|
704
|
+
TENANT_RESOURCE_SHARE_GRANT_ACCEPTED = :"tenant.resource_share_grant.accepted"
|
|
705
|
+
TENANT_RESOURCE_SHARE_GRANT_DECLINED = :"tenant.resource_share_grant.declined"
|
|
706
|
+
TENANT_RESOURCE_SHARE_GRANT_REVOKED = :"tenant.resource_share_grant.revoked"
|
|
707
|
+
TENANT_RESOURCE_SHARE_GRANT_DELETED = :"tenant.resource_share_grant.deleted"
|
|
708
|
+
TENANT_SERVICE_ACCOUNT_UPDATED = :"tenant.service_account.updated"
|
|
709
|
+
TENANT_SERVICE_ACCOUNT_DELETED = :"tenant.service_account.deleted"
|
|
710
|
+
TENANT_SERVICE_ACCOUNT_TOKEN_REVOKED = :"tenant.service_account.token.revoked"
|
|
711
|
+
TENANT_BILLING_OVERAGE_LIMIT_UPDATED = :"tenant.billing.overage_limit.updated"
|
|
712
|
+
TENANT_BILLING_ALERTS_UPDATED = :"tenant.billing.alerts.updated"
|
|
713
|
+
TENANT_BILLING_INFO_UPDATED = :"tenant.billing.info.updated"
|
|
714
|
+
TENANT_USAGE_LIMIT_WORKSPACE_UPDATED = :"tenant.usage_limit.workspace.updated"
|
|
715
|
+
TENANT_USAGE_LIMIT_GROUP_UPDATED = :"tenant.usage_limit.group.updated"
|
|
716
|
+
TENANT_USAGE_LIMIT_USER_UPDATED = :"tenant.usage_limit.user.updated"
|
|
717
|
+
TENANT_USAGE_LIMIT_INCREASE_REQUEST_UPDATED = :"tenant.usage_limit.increase_request.updated"
|
|
718
|
+
TENANT_USAGE_LIMIT_INCREASE_REQUEST_RESOLVED = :"tenant.usage_limit.increase_request.resolved"
|
|
719
|
+
TENANT_GROUP_CREATED = :"tenant.group.created"
|
|
720
|
+
TENANT_GROUP_UPDATED = :"tenant.group.updated"
|
|
721
|
+
TENANT_GROUP_DELETED = :"tenant.group.deleted"
|
|
722
|
+
TENANT_GROUP_MEMBER_ADDED = :"tenant.group.member.added"
|
|
723
|
+
TENANT_GROUP_MEMBER_REMOVED = :"tenant.group.member.removed"
|
|
724
|
+
TENANT_MIGRATION_ROLLOUT_STATUS_UPDATED = :"tenant.migration_rollout.status.updated"
|
|
725
|
+
TENANT_MIGRATION_ROLLOUT_TIER_UPDATED = :"tenant.migration_rollout.tier.updated"
|
|
726
|
+
TENANT_ROLE_METADATA_UPDATED = :"tenant.role.metadata.updated"
|
|
727
|
+
TENANT_CUSTOM_ROLE_CREATED = :"tenant.custom_role.created"
|
|
728
|
+
TENANT_CUSTOM_ROLE_UPDATED = :"tenant.custom_role.updated"
|
|
729
|
+
TENANT_CUSTOM_ROLE_DELETED = :"tenant.custom_role.deleted"
|
|
730
|
+
TENANT_ROLE_ASSIGNMENT_CREATED = :"tenant.role_assignment.created"
|
|
731
|
+
TENANT_ROLE_ASSIGNMENT_DELETED = :"tenant.role_assignment.deleted"
|
|
732
|
+
TENANT_RESOURCE_ROLE_ASSIGNMENT_CREATED = :"tenant.resource_role_assignment.created"
|
|
733
|
+
TENANT_RESOURCE_ROLE_ASSIGNMENT_DELETED = :"tenant.resource_role_assignment.deleted"
|
|
734
|
+
TENANT_RESOURCE_ACCESS_UPDATED = :"tenant.resource_access.updated"
|
|
735
|
+
TENANT_RESOURCE_ACCESS_DELETED = :"tenant.resource_access.deleted"
|
|
736
|
+
TENANT_SESSION_POLICY_CREATED = :"tenant.session_policy.created"
|
|
737
|
+
TENANT_SESSION_POLICY_UPDATED = :"tenant.session_policy.updated"
|
|
738
|
+
TENANT_SESSION_POLICY_DELETED = :"tenant.session_policy.deleted"
|
|
739
|
+
TENANT_SESSION_REVOCATION_STARTED = :"tenant.session_revocation.started"
|
|
740
|
+
TENANT_THIRD_PARTY_APP_POLICY_UPDATED = :"tenant.third_party_app_policy.updated"
|
|
741
|
+
TENANT_USER_ADDED = :"tenant.user.added"
|
|
742
|
+
TENANT_USER_UPDATED = :"tenant.user.updated"
|
|
743
|
+
TENANT_USER_REMOVED = :"tenant.user.removed"
|
|
744
|
+
TENANT_USER_LOOKED_UP = :"tenant.user.looked_up"
|
|
745
|
+
TENANT_USER_INVITED = :"tenant.user.invited"
|
|
746
|
+
TENANT_MEMBERSHIP_REVOKED = :"tenant.membership.revoked"
|
|
747
|
+
TENANT_API_ORGANIZATION_INVITE_UPSERTED = :"tenant.api_organization_invite.upserted"
|
|
748
|
+
TENANT_API_ORGANIZATION_INVITE_DELETED = :"tenant.api_organization_invite.deleted"
|
|
749
|
+
TENANT_CHATGPT_WORKSPACE_INVITE_UPSERTED = :"tenant.chatgpt_workspace_invite.upserted"
|
|
750
|
+
TENANT_MEMBERSHIP_ACCEPTED = :"tenant.membership.accepted"
|
|
751
|
+
TENANT_MEMBERSHIP_DECLINED = :"tenant.membership.declined"
|
|
752
|
+
TENANT_WORKSPACE_INVITE_EMAIL_SETTINGS_UPDATED = :"tenant.workspace_invite_email_settings.updated"
|
|
669
753
|
|
|
670
754
|
# @!method self.values
|
|
671
755
|
# @return [Array<Symbol>]
|