From 45c56af3dbb54f3826a9262e062de4127718119e Mon Sep 17 00:00:00 2001 From: "workos-sdk-automation[bot]" <255426317+workos-sdk-automation[bot]@users.noreply.github.com> Date: Sun, 3 May 2026 22:58:28 +0000 Subject: [PATCH] feat!(generated): regenerate from spec (7 changes) --- .last-synced-sha | 2 +- .oagen-manifest.json | 58 +++- lib/workos/api_keys.rb | 88 ++--- lib/workos/api_keys/api_key.rb | 2 +- lib/workos/api_keys/api_key_created_data.rb | 2 +- lib/workos/api_keys/organization_api_key.rb | 43 +++ .../api_keys/organization_api_key_owner.rb | 7 + .../organization_api_key_with_value.rb | 46 +++ .../organization_api_key_with_value_owner.rb | 7 + ..._organization_membership_base_list_data.rb | 7 +- lib/workos/client.rb | 8 +- lib/workos/directory_sync/directory_user.rb | 3 + .../directory_user_with_groups.rb | 5 +- .../directory_sync/dsync_user_updated_data.rb | 3 + lib/workos/sso/profile.rb | 3 + lib/workos/types/api_keys_order.rb | 14 + lib/workos/types/applications_order.rb | 7 +- lib/workos/types/audit_logs_order.rb | 2 +- lib/workos/types/authorization_order.rb | 2 +- lib/workos/types/connections_order.rb | 2 +- lib/workos/types/directories_order.rb | 2 +- lib/workos/types/directory_groups_order.rb | 2 +- lib/workos/types/directory_users_order.rb | 2 +- .../types/event_context_actor_source.rb | 3 +- lib/workos/types/events_order.rb | 2 +- lib/workos/types/feature_flags_order.rb | 2 +- lib/workos/types/groups_order.rb | 2 +- .../types/organizations_api_keys_order.rb | 2 +- .../organizations_feature_flags_order.rb | 2 +- lib/workos/types/organizations_order.rb | 2 +- lib/workos/types/permissions_order.rb | 2 +- .../user_management_invitations_order.rb | 2 +- ...ement_multi_factor_authentication_order.rb | 2 +- ...nt_organization_membership_groups_order.rb | 2 +- ...anagement_organization_membership_order.rb | 2 +- ...ent_users_authorized_applications_order.rb | 2 +- ...er_management_users_feature_flags_order.rb | 2 +- .../types/user_management_users_order.rb | 2 +- ...ault_byok_key_deleted_data_key_provider.rb | 14 + ...erification_completed_data_key_provider.rb | 7 +- lib/workos/types/webhooks_order.rb | 2 +- lib/workos/user_management.rb | 97 ++++++ .../user_management/create_user_api_key.rb | 25 ++ .../organization_membership.rb | 7 +- lib/workos/user_management/user_api_key.rb | 43 +++ .../user_management/user_api_key_owner.rb | 25 ++ .../user_api_key_with_value.rb} | 4 +- .../user_api_key_with_value_owner.rb} | 2 +- .../user_organization_membership.rb | 7 +- lib/workos/vault/vault_byok_key_deleted.rb | 34 ++ .../vault/vault_byok_key_deleted_data.rb | 22 ++ rbi/workos/api_keys.rbi | 34 +- rbi/workos/client.rbi | 6 +- rbi/workos/create_user_api_key.rbi | 36 ++ rbi/workos/directory_user.rbi | 6 + rbi/workos/directory_user_with_groups.rbi | 6 + rbi/workos/dsync_user_updated_data.rbi | 6 + rbi/workos/organization_api_key.rbi | 72 ++++ ...ner.rbi => organization_api_key_owner.rbi} | 2 +- .../organization_api_key_with_value.rbi | 78 +++++ .../organization_api_key_with_value_owner.rbi | 30 ++ rbi/workos/organization_membership.rbi | 6 + rbi/workos/profile.rbi | 6 + rbi/workos/user_api_key.rbi | 72 ++++ rbi/workos/user_api_key_owner.rbi | 36 ++ ..._value.rbi => user_api_key_with_value.rbi} | 6 +- rbi/workos/user_api_key_with_value_owner.rbi | 36 ++ rbi/workos/user_management.rbi | 31 ++ rbi/workos/user_organization_membership.rbi | 6 + ...organization_membership_base_list_data.rbi | 6 + rbi/workos/vault_byok_key_deleted.rbi | 54 +++ rbi/workos/vault_byok_key_deleted_data.rbi | 30 ++ test/workos/test_api_keys.rb | 34 +- test/workos/test_model_round_trip.rb | 323 +++++++++++++----- test/workos/test_user_management.rb | 26 +- 75 files changed, 1356 insertions(+), 229 deletions(-) create mode 100644 lib/workos/api_keys/organization_api_key.rb create mode 100644 lib/workos/api_keys/organization_api_key_owner.rb create mode 100644 lib/workos/api_keys/organization_api_key_with_value.rb create mode 100644 lib/workos/api_keys/organization_api_key_with_value_owner.rb create mode 100644 lib/workos/types/api_keys_order.rb create mode 100644 lib/workos/types/vault_byok_key_deleted_data_key_provider.rb create mode 100644 lib/workos/user_management/create_user_api_key.rb create mode 100644 lib/workos/user_management/user_api_key.rb create mode 100644 lib/workos/user_management/user_api_key_owner.rb rename lib/workos/{api_keys/api_key_with_value.rb => user_management/user_api_key_with_value.rb} (87%) rename lib/workos/{api_keys/api_key_with_value_owner.rb => user_management/user_api_key_with_value_owner.rb} (68%) create mode 100644 lib/workos/vault/vault_byok_key_deleted.rb create mode 100644 lib/workos/vault/vault_byok_key_deleted_data.rb create mode 100644 rbi/workos/create_user_api_key.rbi create mode 100644 rbi/workos/organization_api_key.rbi rename rbi/workos/{api_key_with_value_owner.rbi => organization_api_key_owner.rbi} (95%) create mode 100644 rbi/workos/organization_api_key_with_value.rbi create mode 100644 rbi/workos/organization_api_key_with_value_owner.rbi create mode 100644 rbi/workos/user_api_key.rbi create mode 100644 rbi/workos/user_api_key_owner.rbi rename rbi/workos/{api_key_with_value.rbi => user_api_key_with_value.rbi} (90%) create mode 100644 rbi/workos/user_api_key_with_value_owner.rbi create mode 100644 rbi/workos/vault_byok_key_deleted.rbi create mode 100644 rbi/workos/vault_byok_key_deleted_data.rbi diff --git a/.last-synced-sha b/.last-synced-sha index f72eb0e2..33f76880 100644 --- a/.last-synced-sha +++ b/.last-synced-sha @@ -1 +1 @@ -92db0495807c86fbbc4d45bd266a6c1f5bcbb59c +ff939ff075453287993e1e6182f1d6f23c67ab80 diff --git a/.oagen-manifest.json b/.oagen-manifest.json index 3dd2b3da..868bb46e 100644 --- a/.oagen-manifest.json +++ b/.oagen-manifest.json @@ -1,7 +1,7 @@ { "version": 2, "language": "ruby", - "generatedAt": "2026-04-30T17:41:02.756Z", + "generatedAt": "2026-05-03T22:57:55.027Z", "files": [ "lib/workos.rb", "lib/workos/admin_portal.rb", @@ -20,9 +20,11 @@ "lib/workos/api_keys/api_key_revoked_data.rb", "lib/workos/api_keys/api_key_revoked_data_owner.rb", "lib/workos/api_keys/api_key_validation_response.rb", - "lib/workos/api_keys/api_key_with_value.rb", - "lib/workos/api_keys/api_key_with_value_owner.rb", "lib/workos/api_keys/create_organization_api_key.rb", + "lib/workos/api_keys/organization_api_key.rb", + "lib/workos/api_keys/organization_api_key_owner.rb", + "lib/workos/api_keys/organization_api_key_with_value.rb", + "lib/workos/api_keys/organization_api_key_with_value_owner.rb", "lib/workos/api_keys/validate_api_key.rb", "lib/workos/audit_logs.rb", "lib/workos/audit_logs/audit_log_action_json.rb", @@ -283,6 +285,7 @@ "lib/workos/sso/sso_token_response.rb", "lib/workos/sso/sso_token_response_oauth_token.rb", "lib/workos/sso/token_query.rb", + "lib/workos/types/api_keys_order.rb", "lib/workos/types/applications_order.rb", "lib/workos/types/audit_log_configuration_log_stream_state.rb", "lib/workos/types/audit_log_configuration_log_stream_type.rb", @@ -412,6 +415,7 @@ "lib/workos/types/user_organization_membership_status.rb", "lib/workos/types/user_sessions_auth_method.rb", "lib/workos/types/user_sessions_status.rb", + "lib/workos/types/vault_byok_key_deleted_data_key_provider.rb", "lib/workos/types/vault_byok_key_verification_completed_data_key_provider.rb", "lib/workos/types/vault_data_created_data_actor_source.rb", "lib/workos/types/vault_data_deleted_data_actor_source.rb", @@ -490,6 +494,7 @@ "lib/workos/user_management/create_password_reset_token.rb", "lib/workos/user_management/create_redirect_uri.rb", "lib/workos/user_management/create_user.rb", + "lib/workos/user_management/create_user_api_key.rb", "lib/workos/user_management/create_user_invite_options.rb", "lib/workos/user_management/create_user_organization_membership.rb", "lib/workos/user_management/device_authorization_response.rb", @@ -544,6 +549,10 @@ "lib/workos/user_management/update_user.rb", "lib/workos/user_management/update_user_organization_membership.rb", "lib/workos/user_management/user.rb", + "lib/workos/user_management/user_api_key.rb", + "lib/workos/user_management/user_api_key_owner.rb", + "lib/workos/user_management/user_api_key_with_value.rb", + "lib/workos/user_management/user_api_key_with_value_owner.rb", "lib/workos/user_management/user_created.rb", "lib/workos/user_management/user_deleted.rb", "lib/workos/user_management/user_identities_get_item.rb", @@ -555,6 +564,8 @@ "lib/workos/user_management/verify_email_address.rb", "lib/workos/user_management/verify_email_response.rb", "lib/workos/user_management_organization_membership_groups.rb", + "lib/workos/vault/vault_byok_key_deleted.rb", + "lib/workos/vault/vault_byok_key_deleted_data.rb", "lib/workos/vault/vault_byok_key_verification_completed.rb", "lib/workos/vault/vault_byok_key_verification_completed_data.rb", "lib/workos/vault/vault_data_created.rb", @@ -597,8 +608,6 @@ "rbi/workos/api_key_revoked_data.rbi", "rbi/workos/api_key_revoked_data_owner.rbi", "rbi/workos/api_key_validation_response.rbi", - "rbi/workos/api_key_with_value.rbi", - "rbi/workos/api_key_with_value_owner.rbi", "rbi/workos/api_keys.rbi", "rbi/workos/application_credentials_list_item.rbi", "rbi/workos/assign_role.rbi", @@ -730,6 +739,7 @@ "rbi/workos/create_redirect_uri.rbi", "rbi/workos/create_role.rbi", "rbi/workos/create_user.rbi", + "rbi/workos/create_user_api_key.rbi", "rbi/workos/create_user_invite_options.rbi", "rbi/workos/create_user_organization_membership.rbi", "rbi/workos/create_webhook_endpoint.rbi", @@ -856,6 +866,10 @@ "rbi/workos/multi_factor_auth.rbi", "rbi/workos/new_connect_application_secret.rbi", "rbi/workos/organization.rbi", + "rbi/workos/organization_api_key.rbi", + "rbi/workos/organization_api_key_owner.rbi", + "rbi/workos/organization_api_key_with_value.rbi", + "rbi/workos/organization_api_key_with_value_owner.rbi", "rbi/workos/organization_created.rbi", "rbi/workos/organization_created_data.rbi", "rbi/workos/organization_created_data_domain.rbi", @@ -968,6 +982,10 @@ "rbi/workos/update_user_organization_membership.rbi", "rbi/workos/update_webhook_endpoint.rbi", "rbi/workos/user.rbi", + "rbi/workos/user_api_key.rbi", + "rbi/workos/user_api_key_owner.rbi", + "rbi/workos/user_api_key_with_value.rbi", + "rbi/workos/user_api_key_with_value_owner.rbi", "rbi/workos/user_authentication_factor_enroll_response.rbi", "rbi/workos/user_consent_option.rbi", "rbi/workos/user_consent_option_choice.rbi", @@ -985,6 +1003,8 @@ "rbi/workos/user_sessions_list_item.rbi", "rbi/workos/user_updated.rbi", "rbi/workos/validate_api_key.rbi", + "rbi/workos/vault_byok_key_deleted.rbi", + "rbi/workos/vault_byok_key_deleted_data.rbi", "rbi/workos/vault_byok_key_verification_completed.rbi", "rbi/workos/vault_byok_key_verification_completed_data.rbi", "rbi/workos/vault_data_created.rbi", @@ -1038,14 +1058,6 @@ "test/workos/test_widgets.rb" ], "operations": { - "POST /api_keys/validations": { - "sdkMethod": "create_validation", - "service": "api_keys" - }, - "DELETE /api_keys/{id}": { - "sdkMethod": "delete_api_key", - "service": "api_keys" - }, "POST /auth/challenges/{id}/verify": { "sdkMethod": "verify_challenge", "service": "multi_factor_auth" @@ -1622,6 +1634,10 @@ "sdkMethod": "revoke_invitation", "service": "user_management" }, + "GET /user_management/jwt_template": { + "sdkMethod": "list_jwt_template", + "service": "user_management" + }, "PUT /user_management/jwt_template": { "sdkMethod": "update_jwt_template", "service": "user_management" @@ -1722,6 +1738,22 @@ "sdkMethod": "create_token", "service": "widgets" }, + "POST /api_keys/validations": { + "sdkMethod": "create_validation", + "service": "api_keys" + }, + "DELETE /api_keys/{id}": { + "sdkMethod": "delete_api_key", + "service": "api_keys" + }, + "GET /user_management/users/{userId}/api_keys": { + "sdkMethod": "list_user_api_keys", + "service": "user_management" + }, + "POST /user_management/users/{userId}/api_keys": { + "sdkMethod": "create_user_api_key", + "service": "user_management" + }, "GET /audit_logs/actions": { "sdkMethod": "list_actions", "service": "audit_logs" diff --git a/lib/workos/api_keys.rb b/lib/workos/api_keys.rb index 5fb3a995..bcabf00f 100644 --- a/lib/workos/api_keys.rb +++ b/lib/workos/api_keys.rb @@ -10,46 +10,6 @@ def initialize(client) @client = client end - # Validate API key - # @param value [String] The value for an API key. - # @param request_options [Hash] (see WorkOS::Types::RequestOptions) - # @return [WorkOS::ApiKeyValidationResponse] - def create_validation( - value:, - request_options: {} - ) - body = { - "value" => value - } - response = @client.request( - method: :post, - path: "/api_keys/validations", - auth: true, - body: body, - request_options: request_options - ) - result = WorkOS::ApiKeyValidationResponse.new(response.body) - result.last_response = WorkOS::Types::ApiResponse.new(http_status: response.code.to_i, http_headers: response.each_header.to_h, request_id: response["x-request-id"]) - result - end - - # Delete an API key - # @param id [String] The unique ID of the API key. - # @param request_options [Hash] (see WorkOS::Types::RequestOptions) - # @return [void] - def delete_api_key( - id:, - request_options: {} - ) - @client.request( - method: :delete, - path: "/api_keys/#{WorkOS::Util.encode_path(id)}", - auth: true, - request_options: request_options - ) - nil - end - # List API keys for an organization # @param organization_id [String] Unique identifier of the Organization. # @param before [String, nil] An object ID that defines your place in the list. When the ID is not present, you are at the end of the list. @@ -57,7 +17,7 @@ def delete_api_key( # @param limit [Integer, nil] Upper limit on the number of objects to return, between `1` and `100`. # @param order [WorkOS::Types::OrganizationsApiKeysOrder, nil] Order the results by the creation time. # @param request_options [Hash] (see WorkOS::Types::RequestOptions) - # @return [WorkOS::Types::ListStruct] + # @return [WorkOS::Types::ListStruct] def list_organization_api_keys( organization_id:, before: nil, @@ -91,7 +51,7 @@ def list_organization_api_keys( } WorkOS::Types::ListStruct.from_response( response, - model: WorkOS::ApiKey, + model: WorkOS::OrganizationApiKey, filters: {organization_id: organization_id, before: before, limit: limit, order: order}, fetch_next: fetch_next ) @@ -102,7 +62,7 @@ def list_organization_api_keys( # @param name [String] The name for the API key. # @param permissions [Array, nil] The permission slugs to assign to the API key. # @param request_options [Hash] (see WorkOS::Types::RequestOptions) - # @return [WorkOS::ApiKeyWithValue] + # @return [WorkOS::OrganizationApiKeyWithValue] def create_organization_api_key( organization_id:, name:, @@ -120,9 +80,49 @@ def create_organization_api_key( body: body, request_options: request_options ) - result = WorkOS::ApiKeyWithValue.new(response.body) + result = WorkOS::OrganizationApiKeyWithValue.new(response.body) result.last_response = WorkOS::Types::ApiResponse.new(http_status: response.code.to_i, http_headers: response.each_header.to_h, request_id: response["x-request-id"]) result end + + # Validate API key + # @param value [String] The value for an API key. + # @param request_options [Hash] (see WorkOS::Types::RequestOptions) + # @return [WorkOS::ApiKeyValidationResponse] + def create_validation( + value:, + request_options: {} + ) + body = { + "value" => value + } + response = @client.request( + method: :post, + path: "/api_keys/validations", + auth: true, + body: body, + request_options: request_options + ) + result = WorkOS::ApiKeyValidationResponse.new(response.body) + result.last_response = WorkOS::Types::ApiResponse.new(http_status: response.code.to_i, http_headers: response.each_header.to_h, request_id: response["x-request-id"]) + result + end + + # Delete an API key + # @param id [String] The unique ID of the API key. + # @param request_options [Hash] (see WorkOS::Types::RequestOptions) + # @return [void] + def delete_api_key( + id:, + request_options: {} + ) + @client.request( + method: :delete, + path: "/api_keys/#{WorkOS::Util.encode_path(id)}", + auth: true, + request_options: request_options + ) + nil + end end end diff --git a/lib/workos/api_keys/api_key.rb b/lib/workos/api_keys/api_key.rb index 94020562..87a2fb3b 100644 --- a/lib/workos/api_keys/api_key.rb +++ b/lib/workos/api_keys/api_key.rb @@ -31,7 +31,7 @@ def initialize(json) hash = self.class.normalize(json) @object = hash[:object] @id = hash[:id] - @owner = hash[:owner] ? WorkOS::ApiKeyOwner.new(hash[:owner]) : nil + @owner = hash[:owner] @name = hash[:name] @obfuscated_value = hash[:obfuscated_value] @last_used_at = hash[:last_used_at] diff --git a/lib/workos/api_keys/api_key_created_data.rb b/lib/workos/api_keys/api_key_created_data.rb index 024af96c..0c8d34af 100644 --- a/lib/workos/api_keys/api_key_created_data.rb +++ b/lib/workos/api_keys/api_key_created_data.rb @@ -31,7 +31,7 @@ def initialize(json) hash = self.class.normalize(json) @object = hash[:object] @id = hash[:id] - @owner = hash[:owner] ? WorkOS::ApiKeyCreatedDataOwner.new(hash[:owner]) : nil + @owner = hash[:owner] @name = hash[:name] @obfuscated_value = hash[:obfuscated_value] @last_used_at = hash[:last_used_at] diff --git a/lib/workos/api_keys/organization_api_key.rb b/lib/workos/api_keys/organization_api_key.rb new file mode 100644 index 00000000..f2131bae --- /dev/null +++ b/lib/workos/api_keys/organization_api_key.rb @@ -0,0 +1,43 @@ +# frozen_string_literal: true + +# This file is auto-generated by oagen. Do not edit. + +module WorkOS + class OrganizationApiKey < WorkOS::Types::BaseModel + HASH_ATTRS = { + object: :object, + id: :id, + owner: :owner, + name: :name, + obfuscated_value: :obfuscated_value, + last_used_at: :last_used_at, + permissions: :permissions, + created_at: :created_at, + updated_at: :updated_at + }.freeze + + attr_accessor \ + :object, + :id, + :owner, + :name, + :obfuscated_value, + :last_used_at, + :permissions, + :created_at, + :updated_at + + def initialize(json) + hash = self.class.normalize(json) + @object = hash[:object] + @id = hash[:id] + @owner = hash[:owner] ? WorkOS::OrganizationApiKeyOwner.new(hash[:owner]) : nil + @name = hash[:name] + @obfuscated_value = hash[:obfuscated_value] + @last_used_at = hash[:last_used_at] + @permissions = hash[:permissions] || [] + @created_at = hash[:created_at] + @updated_at = hash[:updated_at] + end + end +end diff --git a/lib/workos/api_keys/organization_api_key_owner.rb b/lib/workos/api_keys/organization_api_key_owner.rb new file mode 100644 index 00000000..6b8527a8 --- /dev/null +++ b/lib/workos/api_keys/organization_api_key_owner.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +# This file is auto-generated by oagen. Do not edit. + +module WorkOS + OrganizationApiKeyOwner = ApiKeyCreatedDataOwner +end diff --git a/lib/workos/api_keys/organization_api_key_with_value.rb b/lib/workos/api_keys/organization_api_key_with_value.rb new file mode 100644 index 00000000..c8bced69 --- /dev/null +++ b/lib/workos/api_keys/organization_api_key_with_value.rb @@ -0,0 +1,46 @@ +# frozen_string_literal: true + +# This file is auto-generated by oagen. Do not edit. + +module WorkOS + class OrganizationApiKeyWithValue < WorkOS::Types::BaseModel + HASH_ATTRS = { + object: :object, + id: :id, + owner: :owner, + name: :name, + obfuscated_value: :obfuscated_value, + last_used_at: :last_used_at, + permissions: :permissions, + created_at: :created_at, + updated_at: :updated_at, + value: :value + }.freeze + + attr_accessor \ + :object, + :id, + :owner, + :name, + :obfuscated_value, + :last_used_at, + :permissions, + :created_at, + :updated_at, + :value + + def initialize(json) + hash = self.class.normalize(json) + @object = hash[:object] + @id = hash[:id] + @owner = hash[:owner] ? WorkOS::OrganizationApiKeyWithValueOwner.new(hash[:owner]) : nil + @name = hash[:name] + @obfuscated_value = hash[:obfuscated_value] + @last_used_at = hash[:last_used_at] + @permissions = hash[:permissions] || [] + @created_at = hash[:created_at] + @updated_at = hash[:updated_at] + @value = hash[:value] + end + end +end diff --git a/lib/workos/api_keys/organization_api_key_with_value_owner.rb b/lib/workos/api_keys/organization_api_key_with_value_owner.rb new file mode 100644 index 00000000..8b685426 --- /dev/null +++ b/lib/workos/api_keys/organization_api_key_with_value_owner.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +# This file is auto-generated by oagen. Do not edit. + +module WorkOS + OrganizationApiKeyWithValueOwner = ApiKeyCreatedDataOwner +end diff --git a/lib/workos/authorization/user_organization_membership_base_list_data.rb b/lib/workos/authorization/user_organization_membership_base_list_data.rb index c52c73d0..5403c5df 100644 --- a/lib/workos/authorization/user_organization_membership_base_list_data.rb +++ b/lib/workos/authorization/user_organization_membership_base_list_data.rb @@ -14,7 +14,8 @@ class UserOrganizationMembershipBaseListData < WorkOS::Types::BaseModel organization_name: :organization_name, custom_attributes: :custom_attributes, created_at: :created_at, - updated_at: :updated_at + updated_at: :updated_at, + user: :user }.freeze attr_accessor \ @@ -27,7 +28,8 @@ class UserOrganizationMembershipBaseListData < WorkOS::Types::BaseModel :organization_name, :custom_attributes, :created_at, - :updated_at + :updated_at, + :user def initialize(json) hash = self.class.normalize(json) @@ -41,6 +43,7 @@ def initialize(json) @custom_attributes = hash[:custom_attributes] || {} @created_at = hash[:created_at] @updated_at = hash[:updated_at] + @user = hash[:user] ? WorkOS::User.new(hash[:user]) : nil end end end diff --git a/lib/workos/client.rb b/lib/workos/client.rb index 36aa03a9..fa9b29bb 100644 --- a/lib/workos/client.rb +++ b/lib/workos/client.rb @@ -4,10 +4,6 @@ module WorkOS class Client < BaseClient - def api_keys - @api_keys ||= WorkOS::ApiKeys.new(self) - end - def multi_factor_auth @multi_factor_auth ||= WorkOS::MultiFactorAuth.new(self) end @@ -48,6 +44,10 @@ def organizations @organizations ||= WorkOS::Organizations.new(self) end + def api_keys + @api_keys ||= WorkOS::ApiKeys.new(self) + end + def groups @groups ||= WorkOS::Groups.new(self) end diff --git a/lib/workos/directory_sync/directory_user.rb b/lib/workos/directory_sync/directory_user.rb index b3b06b43..e5c7d28e 100644 --- a/lib/workos/directory_sync/directory_user.rb +++ b/lib/workos/directory_sync/directory_user.rb @@ -13,6 +13,7 @@ class DirectoryUser < WorkOS::Types::BaseModel email: :email, first_name: :first_name, last_name: :last_name, + name: :name, emails: :emails, job_title: :job_title, username: :username, @@ -43,6 +44,7 @@ class DirectoryUser < WorkOS::Types::BaseModel :email, :first_name, :last_name, + :name, :state, :custom_attributes, :role, @@ -88,6 +90,7 @@ def initialize(json) @email = hash[:email] @first_name = hash[:first_name] @last_name = hash[:last_name] + @name = hash[:name] @emails = (hash[:emails] || []).map { |item| item ? WorkOS::DirectoryUserEmail.new(item) : nil } @job_title = hash[:job_title] @username = hash[:username] diff --git a/lib/workos/directory_sync/directory_user_with_groups.rb b/lib/workos/directory_sync/directory_user_with_groups.rb index b75d84fc..7bcbf7c0 100644 --- a/lib/workos/directory_sync/directory_user_with_groups.rb +++ b/lib/workos/directory_sync/directory_user_with_groups.rb @@ -13,6 +13,7 @@ class DirectoryUserWithGroups < WorkOS::Types::BaseModel email: :email, first_name: :first_name, last_name: :last_name, + name: :name, emails: :emails, job_title: :job_title, username: :username, @@ -35,7 +36,7 @@ class DirectoryUserWithGroups < WorkOS::Types::BaseModel # @!attribute raw_attributes # @deprecated The raw attributes received from the directory provider. # @!attribute groups - # @deprecated The directory groups the user belongs to. Use the List Directory Groups endpoint with a user filter instead. + # @deprecated The directory groups the user belongs to. Deprecated: starting May 1, 2026, this field returns an empty array by default for newly created teams. Existing teams currently depending on this field should migrate to the new access pattern for better throughput performance — the field is unbounded by user, so users with many group memberships produce large, slow response payloads. Use the List Directory Groups endpoint with a `user` filter to fetch a user's group memberships. attr_accessor \ :object, @@ -46,6 +47,7 @@ class DirectoryUserWithGroups < WorkOS::Types::BaseModel :email, :first_name, :last_name, + :name, :state, :custom_attributes, :role, @@ -98,6 +100,7 @@ def initialize(json) @email = hash[:email] @first_name = hash[:first_name] @last_name = hash[:last_name] + @name = hash[:name] @emails = (hash[:emails] || []).map { |item| item ? WorkOS::DirectoryUserWithGroupsEmail.new(item) : nil } @job_title = hash[:job_title] @username = hash[:username] diff --git a/lib/workos/directory_sync/dsync_user_updated_data.rb b/lib/workos/directory_sync/dsync_user_updated_data.rb index 8298a54c..55791806 100644 --- a/lib/workos/directory_sync/dsync_user_updated_data.rb +++ b/lib/workos/directory_sync/dsync_user_updated_data.rb @@ -13,6 +13,7 @@ class DsyncUserUpdatedData < WorkOS::Types::BaseModel email: :email, first_name: :first_name, last_name: :last_name, + name: :name, emails: :emails, job_title: :job_title, username: :username, @@ -44,6 +45,7 @@ class DsyncUserUpdatedData < WorkOS::Types::BaseModel :email, :first_name, :last_name, + :name, :state, :custom_attributes, :role, @@ -90,6 +92,7 @@ def initialize(json) @email = hash[:email] @first_name = hash[:first_name] @last_name = hash[:last_name] + @name = hash[:name] @emails = (hash[:emails] || []).map { |item| item ? WorkOS::DsyncUserUpdatedDataEmail.new(item) : nil } @job_title = hash[:job_title] @username = hash[:username] diff --git a/lib/workos/sso/profile.rb b/lib/workos/sso/profile.rb index 39b3520c..ba35eeb5 100644 --- a/lib/workos/sso/profile.rb +++ b/lib/workos/sso/profile.rb @@ -14,6 +14,7 @@ class Profile < WorkOS::Types::BaseModel email: :email, first_name: :first_name, last_name: :last_name, + name: :name, role: :role, roles: :roles, groups: :groups, @@ -31,6 +32,7 @@ class Profile < WorkOS::Types::BaseModel :email, :first_name, :last_name, + :name, :role, :roles, :groups, @@ -48,6 +50,7 @@ def initialize(json) @email = hash[:email] @first_name = hash[:first_name] @last_name = hash[:last_name] + @name = hash[:name] @role = hash[:role] ? WorkOS::SlimRole.new(hash[:role]) : nil @roles = (hash[:roles] || []).map { |item| item ? WorkOS::SlimRole.new(item) : nil } @groups = hash[:groups] || [] diff --git a/lib/workos/types/api_keys_order.rb b/lib/workos/types/api_keys_order.rb new file mode 100644 index 00000000..84063987 --- /dev/null +++ b/lib/workos/types/api_keys_order.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +# This file is auto-generated by oagen. Do not edit. + +module WorkOS + module Types + class ApiKeysOrder + NORMAL = "normal" + DESC = "desc" + ASC = "asc" + ALL = [NORMAL, DESC, ASC].freeze + end + end +end diff --git a/lib/workos/types/applications_order.rb b/lib/workos/types/applications_order.rb index 779a57ee..f54407f5 100644 --- a/lib/workos/types/applications_order.rb +++ b/lib/workos/types/applications_order.rb @@ -4,11 +4,6 @@ module WorkOS module Types - class ApplicationsOrder - NORMAL = "normal" - DESC = "desc" - ASC = "asc" - ALL = [NORMAL, DESC, ASC].freeze - end + ApplicationsOrder = ApiKeysOrder end end diff --git a/lib/workos/types/audit_logs_order.rb b/lib/workos/types/audit_logs_order.rb index 598b6279..867cd0cc 100644 --- a/lib/workos/types/audit_logs_order.rb +++ b/lib/workos/types/audit_logs_order.rb @@ -4,6 +4,6 @@ module WorkOS module Types - AuditLogsOrder = ApplicationsOrder + AuditLogsOrder = ApiKeysOrder end end diff --git a/lib/workos/types/authorization_order.rb b/lib/workos/types/authorization_order.rb index 76c3a7e4..17589a4d 100644 --- a/lib/workos/types/authorization_order.rb +++ b/lib/workos/types/authorization_order.rb @@ -4,6 +4,6 @@ module WorkOS module Types - AuthorizationOrder = ApplicationsOrder + AuthorizationOrder = ApiKeysOrder end end diff --git a/lib/workos/types/connections_order.rb b/lib/workos/types/connections_order.rb index 97175e72..5f645a80 100644 --- a/lib/workos/types/connections_order.rb +++ b/lib/workos/types/connections_order.rb @@ -4,6 +4,6 @@ module WorkOS module Types - ConnectionsOrder = ApplicationsOrder + ConnectionsOrder = ApiKeysOrder end end diff --git a/lib/workos/types/directories_order.rb b/lib/workos/types/directories_order.rb index 4fc0eff0..ceaeb06a 100644 --- a/lib/workos/types/directories_order.rb +++ b/lib/workos/types/directories_order.rb @@ -4,6 +4,6 @@ module WorkOS module Types - DirectoriesOrder = ApplicationsOrder + DirectoriesOrder = ApiKeysOrder end end diff --git a/lib/workos/types/directory_groups_order.rb b/lib/workos/types/directory_groups_order.rb index 1cc006ec..a616bae2 100644 --- a/lib/workos/types/directory_groups_order.rb +++ b/lib/workos/types/directory_groups_order.rb @@ -4,6 +4,6 @@ module WorkOS module Types - DirectoryGroupsOrder = ApplicationsOrder + DirectoryGroupsOrder = ApiKeysOrder end end diff --git a/lib/workos/types/directory_users_order.rb b/lib/workos/types/directory_users_order.rb index 37052177..3fe90c8e 100644 --- a/lib/workos/types/directory_users_order.rb +++ b/lib/workos/types/directory_users_order.rb @@ -4,6 +4,6 @@ module WorkOS module Types - DirectoryUsersOrder = ApplicationsOrder + DirectoryUsersOrder = ApiKeysOrder end end diff --git a/lib/workos/types/event_context_actor_source.rb b/lib/workos/types/event_context_actor_source.rb index 8ba757fa..d49ea597 100644 --- a/lib/workos/types/event_context_actor_source.rb +++ b/lib/workos/types/event_context_actor_source.rb @@ -7,8 +7,9 @@ module Types class EventContextActorSource API = "api" DASHBOARD = "dashboard" + ADMIN_PORTAL = "admin_portal" SYSTEM = "system" - ALL = [API, DASHBOARD, SYSTEM].freeze + ALL = [API, DASHBOARD, ADMIN_PORTAL, SYSTEM].freeze end end end diff --git a/lib/workos/types/events_order.rb b/lib/workos/types/events_order.rb index 4f73381f..2fd98591 100644 --- a/lib/workos/types/events_order.rb +++ b/lib/workos/types/events_order.rb @@ -4,6 +4,6 @@ module WorkOS module Types - EventsOrder = ApplicationsOrder + EventsOrder = ApiKeysOrder end end diff --git a/lib/workos/types/feature_flags_order.rb b/lib/workos/types/feature_flags_order.rb index c66da69e..7bad48e9 100644 --- a/lib/workos/types/feature_flags_order.rb +++ b/lib/workos/types/feature_flags_order.rb @@ -4,6 +4,6 @@ module WorkOS module Types - FeatureFlagsOrder = ApplicationsOrder + FeatureFlagsOrder = ApiKeysOrder end end diff --git a/lib/workos/types/groups_order.rb b/lib/workos/types/groups_order.rb index a000ce31..9db84e27 100644 --- a/lib/workos/types/groups_order.rb +++ b/lib/workos/types/groups_order.rb @@ -4,6 +4,6 @@ module WorkOS module Types - GroupsOrder = ApplicationsOrder + GroupsOrder = ApiKeysOrder end end diff --git a/lib/workos/types/organizations_api_keys_order.rb b/lib/workos/types/organizations_api_keys_order.rb index 01c79f57..5f37fe4c 100644 --- a/lib/workos/types/organizations_api_keys_order.rb +++ b/lib/workos/types/organizations_api_keys_order.rb @@ -4,6 +4,6 @@ module WorkOS module Types - OrganizationsApiKeysOrder = ApplicationsOrder + OrganizationsApiKeysOrder = ApiKeysOrder end end diff --git a/lib/workos/types/organizations_feature_flags_order.rb b/lib/workos/types/organizations_feature_flags_order.rb index d7e5414e..117ecd11 100644 --- a/lib/workos/types/organizations_feature_flags_order.rb +++ b/lib/workos/types/organizations_feature_flags_order.rb @@ -4,6 +4,6 @@ module WorkOS module Types - OrganizationsFeatureFlagsOrder = ApplicationsOrder + OrganizationsFeatureFlagsOrder = ApiKeysOrder end end diff --git a/lib/workos/types/organizations_order.rb b/lib/workos/types/organizations_order.rb index 38fad388..0174a648 100644 --- a/lib/workos/types/organizations_order.rb +++ b/lib/workos/types/organizations_order.rb @@ -4,6 +4,6 @@ module WorkOS module Types - OrganizationsOrder = ApplicationsOrder + OrganizationsOrder = ApiKeysOrder end end diff --git a/lib/workos/types/permissions_order.rb b/lib/workos/types/permissions_order.rb index a55d8a97..bb015ed2 100644 --- a/lib/workos/types/permissions_order.rb +++ b/lib/workos/types/permissions_order.rb @@ -4,6 +4,6 @@ module WorkOS module Types - PermissionsOrder = ApplicationsOrder + PermissionsOrder = ApiKeysOrder end end diff --git a/lib/workos/types/user_management_invitations_order.rb b/lib/workos/types/user_management_invitations_order.rb index 59339740..68e8294b 100644 --- a/lib/workos/types/user_management_invitations_order.rb +++ b/lib/workos/types/user_management_invitations_order.rb @@ -4,6 +4,6 @@ module WorkOS module Types - UserManagementInvitationsOrder = ApplicationsOrder + UserManagementInvitationsOrder = ApiKeysOrder end end diff --git a/lib/workos/types/user_management_multi_factor_authentication_order.rb b/lib/workos/types/user_management_multi_factor_authentication_order.rb index 32948f79..f03ac698 100644 --- a/lib/workos/types/user_management_multi_factor_authentication_order.rb +++ b/lib/workos/types/user_management_multi_factor_authentication_order.rb @@ -4,6 +4,6 @@ module WorkOS module Types - UserManagementMultiFactorAuthenticationOrder = ApplicationsOrder + UserManagementMultiFactorAuthenticationOrder = ApiKeysOrder end end diff --git a/lib/workos/types/user_management_organization_membership_groups_order.rb b/lib/workos/types/user_management_organization_membership_groups_order.rb index 5b8749cf..dbae1834 100644 --- a/lib/workos/types/user_management_organization_membership_groups_order.rb +++ b/lib/workos/types/user_management_organization_membership_groups_order.rb @@ -4,6 +4,6 @@ module WorkOS module Types - UserManagementOrganizationMembershipGroupsOrder = ApplicationsOrder + UserManagementOrganizationMembershipGroupsOrder = ApiKeysOrder end end diff --git a/lib/workos/types/user_management_organization_membership_order.rb b/lib/workos/types/user_management_organization_membership_order.rb index 54b5bc4c..d25feb42 100644 --- a/lib/workos/types/user_management_organization_membership_order.rb +++ b/lib/workos/types/user_management_organization_membership_order.rb @@ -4,6 +4,6 @@ module WorkOS module Types - UserManagementOrganizationMembershipOrder = ApplicationsOrder + UserManagementOrganizationMembershipOrder = ApiKeysOrder end end diff --git a/lib/workos/types/user_management_users_authorized_applications_order.rb b/lib/workos/types/user_management_users_authorized_applications_order.rb index e3b383f3..fdfef1d4 100644 --- a/lib/workos/types/user_management_users_authorized_applications_order.rb +++ b/lib/workos/types/user_management_users_authorized_applications_order.rb @@ -4,6 +4,6 @@ module WorkOS module Types - UserManagementUsersAuthorizedApplicationsOrder = ApplicationsOrder + UserManagementUsersAuthorizedApplicationsOrder = ApiKeysOrder end end diff --git a/lib/workos/types/user_management_users_feature_flags_order.rb b/lib/workos/types/user_management_users_feature_flags_order.rb index 8ab6a151..e44e61a4 100644 --- a/lib/workos/types/user_management_users_feature_flags_order.rb +++ b/lib/workos/types/user_management_users_feature_flags_order.rb @@ -4,6 +4,6 @@ module WorkOS module Types - UserManagementUsersFeatureFlagsOrder = ApplicationsOrder + UserManagementUsersFeatureFlagsOrder = ApiKeysOrder end end diff --git a/lib/workos/types/user_management_users_order.rb b/lib/workos/types/user_management_users_order.rb index 6caafaf0..e70f81bc 100644 --- a/lib/workos/types/user_management_users_order.rb +++ b/lib/workos/types/user_management_users_order.rb @@ -4,6 +4,6 @@ module WorkOS module Types - UserManagementUsersOrder = ApplicationsOrder + UserManagementUsersOrder = ApiKeysOrder end end diff --git a/lib/workos/types/vault_byok_key_deleted_data_key_provider.rb b/lib/workos/types/vault_byok_key_deleted_data_key_provider.rb new file mode 100644 index 00000000..be8cd99d --- /dev/null +++ b/lib/workos/types/vault_byok_key_deleted_data_key_provider.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +# This file is auto-generated by oagen. Do not edit. + +module WorkOS + module Types + class VaultByokKeyDeletedDataKeyProvider + AWS_KMS = "AWS_KMS" + GCP_KMS = "GCP_KMS" + AZURE_KEY_VAULT = "AZURE_KEY_VAULT" + ALL = [AWS_KMS, GCP_KMS, AZURE_KEY_VAULT].freeze + end + end +end diff --git a/lib/workos/types/vault_byok_key_verification_completed_data_key_provider.rb b/lib/workos/types/vault_byok_key_verification_completed_data_key_provider.rb index f50670b3..7f5fa43e 100644 --- a/lib/workos/types/vault_byok_key_verification_completed_data_key_provider.rb +++ b/lib/workos/types/vault_byok_key_verification_completed_data_key_provider.rb @@ -4,11 +4,6 @@ module WorkOS module Types - class VaultByokKeyVerificationCompletedDataKeyProvider - AWS_KMS = "AWS_KMS" - GCP_KMS = "GCP_KMS" - AZURE_KEY_VAULT = "AZURE_KEY_VAULT" - ALL = [AWS_KMS, GCP_KMS, AZURE_KEY_VAULT].freeze - end + VaultByokKeyVerificationCompletedDataKeyProvider = VaultByokKeyDeletedDataKeyProvider end end diff --git a/lib/workos/types/webhooks_order.rb b/lib/workos/types/webhooks_order.rb index 955368cd..9e0003ba 100644 --- a/lib/workos/types/webhooks_order.rb +++ b/lib/workos/types/webhooks_order.rb @@ -4,6 +4,6 @@ module WorkOS module Types - WebhooksOrder = ApplicationsOrder + WebhooksOrder = ApiKeysOrder end end diff --git a/lib/workos/user_management.rb b/lib/workos/user_management.rb index b76145fa..01c6ecae 100644 --- a/lib/workos/user_management.rb +++ b/lib/workos/user_management.rb @@ -1144,6 +1144,21 @@ def revoke_invitation( result end + # Get JWT template + # @param request_options [Hash] (see WorkOS::Types::RequestOptions) + # @return [WorkOS::JWTTemplateResponse] + def list_jwt_template(request_options: {}) + response = @client.request( + method: :get, + path: "/user_management/jwt_template", + auth: true, + request_options: request_options + ) + result = WorkOS::JWTTemplateResponse.new(response.body) + result.last_response = WorkOS::Types::ApiResponse.new(http_status: response.code.to_i, http_headers: response.each_header.to_h, request_id: response["x-request-id"]) + result + end + # Update JWT template # @param content [String] The JWT template content as a Liquid template string. # @param request_options [Hash] (see WorkOS::Types::RequestOptions) @@ -1502,6 +1517,88 @@ def delete_user_authorized_application( nil end + # List API keys for a user + # @param user_id [String] Unique identifier of the user. + # @param before [String, nil] An object ID that defines your place in the list. When the ID is not present, you are at the end of the list. + # @param after [String, nil] An object ID that defines your place in the list. When the ID is not present, you are at the end of the list. + # @param limit [Integer, nil] Upper limit on the number of objects to return, between `1` and `100`. + # @param order [WorkOS::Types::ApiKeysOrder, nil] Order the results by the creation time. + # @param organization_id [String, nil] The ID of the organization to filter user API keys by. When provided, only API keys created against that organization membership are returned. + # @param request_options [Hash] (see WorkOS::Types::RequestOptions) + # @return [WorkOS::Types::ListStruct] + def list_user_api_keys( + user_id:, + before: nil, + after: nil, + limit: nil, + order: "desc", + organization_id: nil, + request_options: {} + ) + params = { + "before" => before, + "after" => after, + "limit" => limit, + "order" => order, + "organization_id" => organization_id + }.compact + response = @client.request( + method: :get, + path: "/user_management/users/#{WorkOS::Util.encode_path(user_id)}/api_keys", + auth: true, + params: params, + request_options: request_options + ) + fetch_next = ->(cursor) { + list_user_api_keys( + user_id: user_id, + before: before, + after: cursor, + limit: limit, + order: order, + organization_id: organization_id, + request_options: request_options + ) + } + WorkOS::Types::ListStruct.from_response( + response, + model: WorkOS::UserApiKey, + filters: {user_id: user_id, before: before, limit: limit, order: order, organization_id: organization_id}, + fetch_next: fetch_next + ) + end + + # Create an API key for a user + # @param user_id [String] Unique identifier of the user. + # @param name [String] A descriptive name for the API key. + # @param organization_id [String] The ID of the organization the user API key is associated with. The user must have an active membership in this organization. + # @param permissions [Array, nil] The permission slugs to assign to the API key. Each permission must be enabled for user API keys. + # @param request_options [Hash] (see WorkOS::Types::RequestOptions) + # @return [WorkOS::UserApiKeyWithValue] + def create_user_api_key( + user_id:, + name:, + organization_id:, + permissions: nil, + request_options: {} + ) + body = { + "name" => name, + "organization_id" => organization_id, + "permissions" => permissions + }.compact + response = @client.request( + method: :post, + path: "/user_management/users/#{WorkOS::Util.encode_path(user_id)}/api_keys", + auth: true, + body: body, + request_options: request_options + ) + result = WorkOS::UserApiKeyWithValue.new(response.body) + result.last_response = WorkOS::Types::ApiResponse.new(http_status: response.code.to_i, http_headers: response.each_header.to_h, request_id: response["x-request-id"]) + result + end + # @oagen-ignore-start — non-spec helpers (hand-maintained) # H13 — Build the JWKS URL for a given client_id (no HTTP call). # Pair with #get_jwks (generated) to fetch the keyset. diff --git a/lib/workos/user_management/create_user_api_key.rb b/lib/workos/user_management/create_user_api_key.rb new file mode 100644 index 00000000..17cf44f5 --- /dev/null +++ b/lib/workos/user_management/create_user_api_key.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +# This file is auto-generated by oagen. Do not edit. + +module WorkOS + class CreateUserApiKey < WorkOS::Types::BaseModel + HASH_ATTRS = { + name: :name, + organization_id: :organization_id, + permissions: :permissions + }.freeze + + attr_accessor \ + :name, + :organization_id, + :permissions + + def initialize(json) + hash = self.class.normalize(json) + @name = hash[:name] + @organization_id = hash[:organization_id] + @permissions = hash[:permissions] || [] + end + end +end diff --git a/lib/workos/user_management/organization_membership.rb b/lib/workos/user_management/organization_membership.rb index e2d9cf95..e73f24f3 100644 --- a/lib/workos/user_management/organization_membership.rb +++ b/lib/workos/user_management/organization_membership.rb @@ -15,7 +15,8 @@ class OrganizationMembership < WorkOS::Types::BaseModel custom_attributes: :custom_attributes, created_at: :created_at, updated_at: :updated_at, - role: :role + role: :role, + user: :user }.freeze attr_accessor \ @@ -29,7 +30,8 @@ class OrganizationMembership < WorkOS::Types::BaseModel :custom_attributes, :created_at, :updated_at, - :role + :role, + :user def initialize(json) hash = self.class.normalize(json) @@ -44,6 +46,7 @@ def initialize(json) @created_at = hash[:created_at] @updated_at = hash[:updated_at] @role = hash[:role] ? WorkOS::SlimRole.new(hash[:role]) : nil + @user = hash[:user] ? WorkOS::User.new(hash[:user]) : nil end end end diff --git a/lib/workos/user_management/user_api_key.rb b/lib/workos/user_management/user_api_key.rb new file mode 100644 index 00000000..cd68aec5 --- /dev/null +++ b/lib/workos/user_management/user_api_key.rb @@ -0,0 +1,43 @@ +# frozen_string_literal: true + +# This file is auto-generated by oagen. Do not edit. + +module WorkOS + class UserApiKey < WorkOS::Types::BaseModel + HASH_ATTRS = { + object: :object, + id: :id, + owner: :owner, + name: :name, + obfuscated_value: :obfuscated_value, + last_used_at: :last_used_at, + permissions: :permissions, + created_at: :created_at, + updated_at: :updated_at + }.freeze + + attr_accessor \ + :object, + :id, + :owner, + :name, + :obfuscated_value, + :last_used_at, + :permissions, + :created_at, + :updated_at + + def initialize(json) + hash = self.class.normalize(json) + @object = hash[:object] + @id = hash[:id] + @owner = hash[:owner] ? WorkOS::UserApiKeyOwner.new(hash[:owner]) : nil + @name = hash[:name] + @obfuscated_value = hash[:obfuscated_value] + @last_used_at = hash[:last_used_at] + @permissions = hash[:permissions] || [] + @created_at = hash[:created_at] + @updated_at = hash[:updated_at] + end + end +end diff --git a/lib/workos/user_management/user_api_key_owner.rb b/lib/workos/user_management/user_api_key_owner.rb new file mode 100644 index 00000000..90432081 --- /dev/null +++ b/lib/workos/user_management/user_api_key_owner.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +# This file is auto-generated by oagen. Do not edit. + +module WorkOS + class UserApiKeyOwner < WorkOS::Types::BaseModel + HASH_ATTRS = { + type: :type, + id: :id, + organization_id: :organization_id + }.freeze + + attr_accessor \ + :type, + :id, + :organization_id + + def initialize(json) + hash = self.class.normalize(json) + @type = hash[:type] + @id = hash[:id] + @organization_id = hash[:organization_id] + end + end +end diff --git a/lib/workos/api_keys/api_key_with_value.rb b/lib/workos/user_management/user_api_key_with_value.rb similarity index 87% rename from lib/workos/api_keys/api_key_with_value.rb rename to lib/workos/user_management/user_api_key_with_value.rb index 196bcce0..6016ae72 100644 --- a/lib/workos/api_keys/api_key_with_value.rb +++ b/lib/workos/user_management/user_api_key_with_value.rb @@ -3,7 +3,7 @@ # This file is auto-generated by oagen. Do not edit. module WorkOS - class ApiKeyWithValue < WorkOS::Types::BaseModel + class UserApiKeyWithValue < WorkOS::Types::BaseModel HASH_ATTRS = { object: :object, id: :id, @@ -33,7 +33,7 @@ def initialize(json) hash = self.class.normalize(json) @object = hash[:object] @id = hash[:id] - @owner = hash[:owner] ? WorkOS::ApiKeyWithValueOwner.new(hash[:owner]) : nil + @owner = hash[:owner] ? WorkOS::UserApiKeyWithValueOwner.new(hash[:owner]) : nil @name = hash[:name] @obfuscated_value = hash[:obfuscated_value] @last_used_at = hash[:last_used_at] diff --git a/lib/workos/api_keys/api_key_with_value_owner.rb b/lib/workos/user_management/user_api_key_with_value_owner.rb similarity index 68% rename from lib/workos/api_keys/api_key_with_value_owner.rb rename to lib/workos/user_management/user_api_key_with_value_owner.rb index 20ed52cd..567e3def 100644 --- a/lib/workos/api_keys/api_key_with_value_owner.rb +++ b/lib/workos/user_management/user_api_key_with_value_owner.rb @@ -3,5 +3,5 @@ # This file is auto-generated by oagen. Do not edit. module WorkOS - ApiKeyWithValueOwner = ApiKeyCreatedDataOwner + UserApiKeyWithValueOwner = UserApiKeyOwner end diff --git a/lib/workos/user_management/user_organization_membership.rb b/lib/workos/user_management/user_organization_membership.rb index ff127f31..22a8b2fb 100644 --- a/lib/workos/user_management/user_organization_membership.rb +++ b/lib/workos/user_management/user_organization_membership.rb @@ -15,7 +15,8 @@ class UserOrganizationMembership < WorkOS::Types::BaseModel custom_attributes: :custom_attributes, created_at: :created_at, updated_at: :updated_at, - role: :role + role: :role, + user: :user }.freeze attr_accessor \ @@ -29,7 +30,8 @@ class UserOrganizationMembership < WorkOS::Types::BaseModel :custom_attributes, :created_at, :updated_at, - :role + :role, + :user def initialize(json) hash = self.class.normalize(json) @@ -44,6 +46,7 @@ def initialize(json) @created_at = hash[:created_at] @updated_at = hash[:updated_at] @role = hash[:role] ? WorkOS::SlimRole.new(hash[:role]) : nil + @user = hash[:user] ? WorkOS::User.new(hash[:user]) : nil end end end diff --git a/lib/workos/vault/vault_byok_key_deleted.rb b/lib/workos/vault/vault_byok_key_deleted.rb new file mode 100644 index 00000000..8ad39249 --- /dev/null +++ b/lib/workos/vault/vault_byok_key_deleted.rb @@ -0,0 +1,34 @@ +# frozen_string_literal: true + +# This file is auto-generated by oagen. Do not edit. + +module WorkOS + class VaultByokKeyDeleted < WorkOS::Types::BaseModel + HASH_ATTRS = { + id: :id, + event: :event, + data: :data, + created_at: :created_at, + context: :context, + object: :object + }.freeze + + attr_accessor \ + :id, + :event, + :data, + :created_at, + :context, + :object + + def initialize(json) + hash = self.class.normalize(json) + @id = hash[:id] + @event = hash[:event] + @data = hash[:data] ? WorkOS::VaultByokKeyDeletedData.new(hash[:data]) : nil + @created_at = hash[:created_at] + @context = hash[:context] ? WorkOS::EventContext.new(hash[:context]) : nil + @object = hash[:object] + end + end +end diff --git a/lib/workos/vault/vault_byok_key_deleted_data.rb b/lib/workos/vault/vault_byok_key_deleted_data.rb new file mode 100644 index 00000000..9c3a51f9 --- /dev/null +++ b/lib/workos/vault/vault_byok_key_deleted_data.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +# This file is auto-generated by oagen. Do not edit. + +module WorkOS + class VaultByokKeyDeletedData < WorkOS::Types::BaseModel + HASH_ATTRS = { + organization_id: :organization_id, + key_provider: :key_provider + }.freeze + + attr_accessor \ + :organization_id, + :key_provider + + def initialize(json) + hash = self.class.normalize(json) + @organization_id = hash[:organization_id] + @key_provider = hash[:key_provider] + end + end +end diff --git a/rbi/workos/api_keys.rbi b/rbi/workos/api_keys.rbi index 059df93a..ae85f013 100644 --- a/rbi/workos/api_keys.rbi +++ b/rbi/workos/api_keys.rbi @@ -9,22 +9,6 @@ module WorkOS sig { params(client: WorkOS::BaseClient).void } def initialize(client); end - sig do - params( - value: String, - request_options: T::Hash[Symbol, T.untyped] - ).returns(WorkOS::ApiKeyValidationResponse) - end - def create_validation(value:, request_options:); end - - sig do - params( - id: String, - request_options: T::Hash[Symbol, T.untyped] - ).returns(NilClass) - end - def delete_api_key(id:, request_options:); end - sig do params( organization_id: String, @@ -43,9 +27,25 @@ module WorkOS name: String, permissions: T.nilable(T::Array[String]), request_options: T::Hash[Symbol, T.untyped] - ).returns(WorkOS::ApiKeyWithValue) + ).returns(WorkOS::OrganizationApiKeyWithValue) end def create_organization_api_key(organization_id:, name:, permissions:, request_options:); end + sig do + params( + value: String, + request_options: T::Hash[Symbol, T.untyped] + ).returns(WorkOS::ApiKeyValidationResponse) + end + def create_validation(value:, request_options:); end + + sig do + params( + id: String, + request_options: T::Hash[Symbol, T.untyped] + ).returns(NilClass) + end + def delete_api_key(id:, request_options:); end + end end diff --git a/rbi/workos/client.rbi b/rbi/workos/client.rbi index ca3c8bc1..d2cf6514 100644 --- a/rbi/workos/client.rbi +++ b/rbi/workos/client.rbi @@ -6,9 +6,6 @@ module WorkOS class Client < BaseClient - sig { returns(WorkOS::ApiKeys) } - def api_keys; end - sig { returns(WorkOS::MultiFactorAuth) } def multi_factor_auth; end @@ -42,6 +39,9 @@ module WorkOS sig { returns(WorkOS::AuditLogs) } def audit_logs; end + sig { returns(WorkOS::ApiKeys) } + def api_keys; end + sig { returns(WorkOS::Groups) } def groups; end diff --git a/rbi/workos/create_user_api_key.rbi b/rbi/workos/create_user_api_key.rbi new file mode 100644 index 00000000..6186a001 --- /dev/null +++ b/rbi/workos/create_user_api_key.rbi @@ -0,0 +1,36 @@ +# frozen_string_literal: true + +# This file is auto-generated by oagen. Do not edit. + +# typed: strong + +module WorkOS + class CreateUserApiKey + sig { params(json: T.any(String, T::Hash[Symbol, T.untyped])).void } + def initialize(json); end + + sig { returns(String) } + def name; end + + sig { params(value: String).returns(String) } + def name=(value); end + + sig { returns(String) } + def organization_id; end + + sig { params(value: String).returns(String) } + def organization_id=(value); end + + sig { returns(T.nilable(T::Array[String])) } + def permissions; end + + sig { params(value: T.nilable(T::Array[String])).returns(T.nilable(T::Array[String])) } + def permissions=(value); end + + sig { returns(T::Hash[Symbol, T.untyped]) } + def to_h; end + + sig { params(args: T.untyped).returns(String) } + def to_json(*args); end + end +end diff --git a/rbi/workos/directory_user.rbi b/rbi/workos/directory_user.rbi index baaaaa95..a0e65e9a 100644 --- a/rbi/workos/directory_user.rbi +++ b/rbi/workos/directory_user.rbi @@ -57,6 +57,12 @@ module WorkOS sig { params(value: T.nilable(String)).returns(T.nilable(String)) } def last_name=(value); end + sig { returns(T.nilable(String)) } + def name; end + + sig { params(value: T.nilable(String)).returns(T.nilable(String)) } + def name=(value); end + sig { returns(T.nilable(T::Array[WorkOS::DirectoryUserEmail])) } def emails; end diff --git a/rbi/workos/directory_user_with_groups.rbi b/rbi/workos/directory_user_with_groups.rbi index 55fba4d7..61bddd7b 100644 --- a/rbi/workos/directory_user_with_groups.rbi +++ b/rbi/workos/directory_user_with_groups.rbi @@ -57,6 +57,12 @@ module WorkOS sig { params(value: T.nilable(String)).returns(T.nilable(String)) } def last_name=(value); end + sig { returns(T.nilable(String)) } + def name; end + + sig { params(value: T.nilable(String)).returns(T.nilable(String)) } + def name=(value); end + sig { returns(T.nilable(T::Array[WorkOS::DirectoryUserWithGroupsEmail])) } def emails; end diff --git a/rbi/workos/dsync_user_updated_data.rbi b/rbi/workos/dsync_user_updated_data.rbi index a96b6925..f1d26b09 100644 --- a/rbi/workos/dsync_user_updated_data.rbi +++ b/rbi/workos/dsync_user_updated_data.rbi @@ -57,6 +57,12 @@ module WorkOS sig { params(value: T.nilable(String)).returns(T.nilable(String)) } def last_name=(value); end + sig { returns(T.nilable(String)) } + def name; end + + sig { params(value: T.nilable(String)).returns(T.nilable(String)) } + def name=(value); end + sig { returns(T.nilable(T::Array[WorkOS::DsyncUserUpdatedDataEmail])) } def emails; end diff --git a/rbi/workos/organization_api_key.rbi b/rbi/workos/organization_api_key.rbi new file mode 100644 index 00000000..c2413b53 --- /dev/null +++ b/rbi/workos/organization_api_key.rbi @@ -0,0 +1,72 @@ +# frozen_string_literal: true + +# This file is auto-generated by oagen. Do not edit. + +# typed: strong + +module WorkOS + class OrganizationApiKey + sig { params(json: T.any(String, T::Hash[Symbol, T.untyped])).void } + def initialize(json); end + + sig { returns(String) } + def object; end + + sig { params(value: String).returns(String) } + def object=(value); end + + sig { returns(String) } + def id; end + + sig { params(value: String).returns(String) } + def id=(value); end + + sig { returns(WorkOS::OrganizationApiKeyOwner) } + def owner; end + + sig { params(value: WorkOS::OrganizationApiKeyOwner).returns(WorkOS::OrganizationApiKeyOwner) } + def owner=(value); end + + sig { returns(String) } + def name; end + + sig { params(value: String).returns(String) } + def name=(value); end + + sig { returns(String) } + def obfuscated_value; end + + sig { params(value: String).returns(String) } + def obfuscated_value=(value); end + + sig { returns(T.nilable(String)) } + def last_used_at; end + + sig { params(value: T.nilable(String)).returns(T.nilable(String)) } + def last_used_at=(value); end + + sig { returns(T::Array[String]) } + def permissions; end + + sig { params(value: T::Array[String]).returns(T::Array[String]) } + def permissions=(value); end + + sig { returns(String) } + def created_at; end + + sig { params(value: String).returns(String) } + def created_at=(value); end + + sig { returns(String) } + def updated_at; end + + sig { params(value: String).returns(String) } + def updated_at=(value); end + + sig { returns(T::Hash[Symbol, T.untyped]) } + def to_h; end + + sig { params(args: T.untyped).returns(String) } + def to_json(*args); end + end +end diff --git a/rbi/workos/api_key_with_value_owner.rbi b/rbi/workos/organization_api_key_owner.rbi similarity index 95% rename from rbi/workos/api_key_with_value_owner.rbi rename to rbi/workos/organization_api_key_owner.rbi index 4dcca49b..00ddb120 100644 --- a/rbi/workos/api_key_with_value_owner.rbi +++ b/rbi/workos/organization_api_key_owner.rbi @@ -5,7 +5,7 @@ # typed: strong module WorkOS - class ApiKeyWithValueOwner + class OrganizationApiKeyOwner sig { params(json: T.any(String, T::Hash[Symbol, T.untyped])).void } def initialize(json); end diff --git a/rbi/workos/organization_api_key_with_value.rbi b/rbi/workos/organization_api_key_with_value.rbi new file mode 100644 index 00000000..ddf7c6a1 --- /dev/null +++ b/rbi/workos/organization_api_key_with_value.rbi @@ -0,0 +1,78 @@ +# frozen_string_literal: true + +# This file is auto-generated by oagen. Do not edit. + +# typed: strong + +module WorkOS + class OrganizationApiKeyWithValue + sig { params(json: T.any(String, T::Hash[Symbol, T.untyped])).void } + def initialize(json); end + + sig { returns(String) } + def object; end + + sig { params(value: String).returns(String) } + def object=(value); end + + sig { returns(String) } + def id; end + + sig { params(value: String).returns(String) } + def id=(value); end + + sig { returns(WorkOS::OrganizationApiKeyWithValueOwner) } + def owner; end + + sig { params(value: WorkOS::OrganizationApiKeyWithValueOwner).returns(WorkOS::OrganizationApiKeyWithValueOwner) } + def owner=(value); end + + sig { returns(String) } + def name; end + + sig { params(value: String).returns(String) } + def name=(value); end + + sig { returns(String) } + def obfuscated_value; end + + sig { params(value: String).returns(String) } + def obfuscated_value=(value); end + + sig { returns(T.nilable(String)) } + def last_used_at; end + + sig { params(value: T.nilable(String)).returns(T.nilable(String)) } + def last_used_at=(value); end + + sig { returns(T::Array[String]) } + def permissions; end + + sig { params(value: T::Array[String]).returns(T::Array[String]) } + def permissions=(value); end + + sig { returns(String) } + def created_at; end + + sig { params(value: String).returns(String) } + def created_at=(value); end + + sig { returns(String) } + def updated_at; end + + sig { params(value: String).returns(String) } + def updated_at=(value); end + + sig { returns(String) } + def value; end + + sig { params(value: String).returns(String) } + def value=(value); end + + sig { returns(T::Hash[Symbol, T.untyped]) } + def to_h; end + + sig { params(args: T.untyped).returns(String) } + def to_json(*args); end + end +end diff --git a/rbi/workos/organization_api_key_with_value_owner.rbi b/rbi/workos/organization_api_key_with_value_owner.rbi new file mode 100644 index 00000000..3a470243 --- /dev/null +++ b/rbi/workos/organization_api_key_with_value_owner.rbi @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +# This file is auto-generated by oagen. Do not edit. + +# typed: strong + +module WorkOS + class OrganizationApiKeyWithValueOwner + sig { params(json: T.any(String, T::Hash[Symbol, T.untyped])).void } + def initialize(json); end + + sig { returns(String) } + def type; end + + sig { params(value: String).returns(String) } + def type=(value); end + + sig { returns(String) } + def id; end + + sig { params(value: String).returns(String) } + def id=(value); end + + sig { returns(T::Hash[Symbol, T.untyped]) } + def to_h; end + + sig { params(args: T.untyped).returns(String) } + def to_json(*args); end + end +end diff --git a/rbi/workos/organization_membership.rbi b/rbi/workos/organization_membership.rbi index f51180a2..90776d84 100644 --- a/rbi/workos/organization_membership.rbi +++ b/rbi/workos/organization_membership.rbi @@ -75,6 +75,12 @@ module WorkOS sig { params(value: WorkOS::SlimRole).returns(WorkOS::SlimRole) } def role=(value); end + sig { returns(WorkOS::User) } + def user; end + + sig { params(value: WorkOS::User).returns(WorkOS::User) } + def user=(value); end + sig { returns(T::Hash[Symbol, T.untyped]) } def to_h; end diff --git a/rbi/workos/profile.rbi b/rbi/workos/profile.rbi index fc021e14..d2ff5e40 100644 --- a/rbi/workos/profile.rbi +++ b/rbi/workos/profile.rbi @@ -63,6 +63,12 @@ module WorkOS sig { params(value: T.nilable(String)).returns(T.nilable(String)) } def last_name=(value); end + sig { returns(T.nilable(String)) } + def name; end + + sig { params(value: T.nilable(String)).returns(T.nilable(String)) } + def name=(value); end + sig { returns(T.nilable(WorkOS::SlimRole)) } def role; end diff --git a/rbi/workos/user_api_key.rbi b/rbi/workos/user_api_key.rbi new file mode 100644 index 00000000..3da15af1 --- /dev/null +++ b/rbi/workos/user_api_key.rbi @@ -0,0 +1,72 @@ +# frozen_string_literal: true + +# This file is auto-generated by oagen. Do not edit. + +# typed: strong + +module WorkOS + class UserApiKey + sig { params(json: T.any(String, T::Hash[Symbol, T.untyped])).void } + def initialize(json); end + + sig { returns(String) } + def object; end + + sig { params(value: String).returns(String) } + def object=(value); end + + sig { returns(String) } + def id; end + + sig { params(value: String).returns(String) } + def id=(value); end + + sig { returns(WorkOS::UserApiKeyOwner) } + def owner; end + + sig { params(value: WorkOS::UserApiKeyOwner).returns(WorkOS::UserApiKeyOwner) } + def owner=(value); end + + sig { returns(String) } + def name; end + + sig { params(value: String).returns(String) } + def name=(value); end + + sig { returns(String) } + def obfuscated_value; end + + sig { params(value: String).returns(String) } + def obfuscated_value=(value); end + + sig { returns(T.nilable(String)) } + def last_used_at; end + + sig { params(value: T.nilable(String)).returns(T.nilable(String)) } + def last_used_at=(value); end + + sig { returns(T::Array[String]) } + def permissions; end + + sig { params(value: T::Array[String]).returns(T::Array[String]) } + def permissions=(value); end + + sig { returns(String) } + def created_at; end + + sig { params(value: String).returns(String) } + def created_at=(value); end + + sig { returns(String) } + def updated_at; end + + sig { params(value: String).returns(String) } + def updated_at=(value); end + + sig { returns(T::Hash[Symbol, T.untyped]) } + def to_h; end + + sig { params(args: T.untyped).returns(String) } + def to_json(*args); end + end +end diff --git a/rbi/workos/user_api_key_owner.rbi b/rbi/workos/user_api_key_owner.rbi new file mode 100644 index 00000000..272e6d62 --- /dev/null +++ b/rbi/workos/user_api_key_owner.rbi @@ -0,0 +1,36 @@ +# frozen_string_literal: true + +# This file is auto-generated by oagen. Do not edit. + +# typed: strong + +module WorkOS + class UserApiKeyOwner + sig { params(json: T.any(String, T::Hash[Symbol, T.untyped])).void } + def initialize(json); end + + sig { returns(String) } + def type; end + + sig { params(value: String).returns(String) } + def type=(value); end + + sig { returns(String) } + def id; end + + sig { params(value: String).returns(String) } + def id=(value); end + + sig { returns(String) } + def organization_id; end + + sig { params(value: String).returns(String) } + def organization_id=(value); end + + sig { returns(T::Hash[Symbol, T.untyped]) } + def to_h; end + + sig { params(args: T.untyped).returns(String) } + def to_json(*args); end + end +end diff --git a/rbi/workos/api_key_with_value.rbi b/rbi/workos/user_api_key_with_value.rbi similarity index 90% rename from rbi/workos/api_key_with_value.rbi rename to rbi/workos/user_api_key_with_value.rbi index 6519584f..66c5296e 100644 --- a/rbi/workos/api_key_with_value.rbi +++ b/rbi/workos/user_api_key_with_value.rbi @@ -5,7 +5,7 @@ # typed: strong module WorkOS - class ApiKeyWithValue + class UserApiKeyWithValue sig { params(json: T.any(String, T::Hash[Symbol, T.untyped])).void } def initialize(json); end @@ -21,10 +21,10 @@ module WorkOS sig { params(value: String).returns(String) } def id=(value); end - sig { returns(WorkOS::ApiKeyWithValueOwner) } + sig { returns(WorkOS::UserApiKeyWithValueOwner) } def owner; end - sig { params(value: WorkOS::ApiKeyWithValueOwner).returns(WorkOS::ApiKeyWithValueOwner) } + sig { params(value: WorkOS::UserApiKeyWithValueOwner).returns(WorkOS::UserApiKeyWithValueOwner) } def owner=(value); end sig { returns(String) } diff --git a/rbi/workos/user_api_key_with_value_owner.rbi b/rbi/workos/user_api_key_with_value_owner.rbi new file mode 100644 index 00000000..1f1b7566 --- /dev/null +++ b/rbi/workos/user_api_key_with_value_owner.rbi @@ -0,0 +1,36 @@ +# frozen_string_literal: true + +# This file is auto-generated by oagen. Do not edit. + +# typed: strong + +module WorkOS + class UserApiKeyWithValueOwner + sig { params(json: T.any(String, T::Hash[Symbol, T.untyped])).void } + def initialize(json); end + + sig { returns(String) } + def type; end + + sig { params(value: String).returns(String) } + def type=(value); end + + sig { returns(String) } + def id; end + + sig { params(value: String).returns(String) } + def id=(value); end + + sig { returns(String) } + def organization_id; end + + sig { params(value: String).returns(String) } + def organization_id=(value); end + + sig { returns(T::Hash[Symbol, T.untyped]) } + def to_h; end + + sig { params(args: T.untyped).returns(String) } + def to_json(*args); end + end +end diff --git a/rbi/workos/user_management.rbi b/rbi/workos/user_management.rbi index 2d2c0bca..c0e19532 100644 --- a/rbi/workos/user_management.rbi +++ b/rbi/workos/user_management.rbi @@ -333,6 +333,13 @@ module WorkOS end def revoke_invitation(id:, request_options:); end + sig do + params( + request_options: T::Hash[Symbol, T.untyped] + ).returns(WorkOS::JWTTemplateResponse) + end + def list_jwt_template(request_options:); end + sig do params( content: String, @@ -452,5 +459,29 @@ module WorkOS end def delete_user_authorized_application(application_id:, user_id:, request_options:); end + sig do + params( + user_id: String, + before: T.nilable(String), + after: T.nilable(String), + limit: T.nilable(Integer), + order: T.nilable(String), + organization_id: T.nilable(String), + request_options: T::Hash[Symbol, T.untyped] + ).returns(WorkOS::Types::ListStruct) + end + def list_user_api_keys(user_id:, before:, after:, limit:, order:, organization_id:, request_options:); end + + sig do + params( + user_id: String, + name: String, + organization_id: String, + permissions: T.nilable(T::Array[String]), + request_options: T::Hash[Symbol, T.untyped] + ).returns(WorkOS::UserApiKeyWithValue) + end + def create_user_api_key(user_id:, name:, organization_id:, permissions:, request_options:); end + end end diff --git a/rbi/workos/user_organization_membership.rbi b/rbi/workos/user_organization_membership.rbi index 5ebf5d51..06990a12 100644 --- a/rbi/workos/user_organization_membership.rbi +++ b/rbi/workos/user_organization_membership.rbi @@ -75,6 +75,12 @@ module WorkOS sig { params(value: WorkOS::SlimRole).returns(WorkOS::SlimRole) } def role=(value); end + sig { returns(WorkOS::User) } + def user; end + + sig { params(value: WorkOS::User).returns(WorkOS::User) } + def user=(value); end + sig { returns(T::Hash[Symbol, T.untyped]) } def to_h; end diff --git a/rbi/workos/user_organization_membership_base_list_data.rbi b/rbi/workos/user_organization_membership_base_list_data.rbi index 33d6d634..d720fe76 100644 --- a/rbi/workos/user_organization_membership_base_list_data.rbi +++ b/rbi/workos/user_organization_membership_base_list_data.rbi @@ -69,6 +69,12 @@ module WorkOS sig { params(value: String).returns(String) } def updated_at=(value); end + sig { returns(WorkOS::User) } + def user; end + + sig { params(value: WorkOS::User).returns(WorkOS::User) } + def user=(value); end + sig { returns(T::Hash[Symbol, T.untyped]) } def to_h; end diff --git a/rbi/workos/vault_byok_key_deleted.rbi b/rbi/workos/vault_byok_key_deleted.rbi new file mode 100644 index 00000000..c82e4f2d --- /dev/null +++ b/rbi/workos/vault_byok_key_deleted.rbi @@ -0,0 +1,54 @@ +# frozen_string_literal: true + +# This file is auto-generated by oagen. Do not edit. + +# typed: strong + +module WorkOS + class VaultByokKeyDeleted + sig { params(json: T.any(String, T::Hash[Symbol, T.untyped])).void } + def initialize(json); end + + sig { returns(String) } + def id; end + + sig { params(value: String).returns(String) } + def id=(value); end + + sig { returns(String) } + def event; end + + sig { params(value: String).returns(String) } + def event=(value); end + + sig { returns(WorkOS::VaultByokKeyDeletedData) } + def data; end + + sig { params(value: WorkOS::VaultByokKeyDeletedData).returns(WorkOS::VaultByokKeyDeletedData) } + def data=(value); end + + sig { returns(String) } + def created_at; end + + sig { params(value: String).returns(String) } + def created_at=(value); end + + sig { returns(T.nilable(WorkOS::EventContext)) } + def context; end + + sig { params(value: T.nilable(WorkOS::EventContext)).returns(T.nilable(WorkOS::EventContext)) } + def context=(value); end + + sig { returns(String) } + def object; end + + sig { params(value: String).returns(String) } + def object=(value); end + + sig { returns(T::Hash[Symbol, T.untyped]) } + def to_h; end + + sig { params(args: T.untyped).returns(String) } + def to_json(*args); end + end +end diff --git a/rbi/workos/vault_byok_key_deleted_data.rbi b/rbi/workos/vault_byok_key_deleted_data.rbi new file mode 100644 index 00000000..37dff254 --- /dev/null +++ b/rbi/workos/vault_byok_key_deleted_data.rbi @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +# This file is auto-generated by oagen. Do not edit. + +# typed: strong + +module WorkOS + class VaultByokKeyDeletedData + sig { params(json: T.any(String, T::Hash[Symbol, T.untyped])).void } + def initialize(json); end + + sig { returns(String) } + def organization_id; end + + sig { params(value: String).returns(String) } + def organization_id=(value); end + + sig { returns(String) } + def key_provider; end + + sig { params(value: String).returns(String) } + def key_provider=(value); end + + sig { returns(T::Hash[Symbol, T.untyped]) } + def to_h; end + + sig { params(args: T.untyped).returns(String) } + def to_json(*args); end + end +end diff --git a/test/workos/test_api_keys.rb b/test/workos/test_api_keys.rb index 0e3737f2..f2695f69 100644 --- a/test/workos/test_api_keys.rb +++ b/test/workos/test_api_keys.rb @@ -11,20 +11,6 @@ def setup @client = WorkOS::Client.new(api_key: "sk_test_123") end - def test_create_validation_returns_expected_result - stub_request(:post, %r{\Ahttps://api\.workos\.com/api_keys/validations(\?|\z)}) - .to_return(body: "{}", status: 200) - result = @client.api_keys.create_validation(value: "stub") - refute_nil result - end - - def test_delete_api_key_returns_expected_result - stub_request(:delete, %r{\Ahttps://api\.workos\.com/api_keys/stub(\?|\z)}) - .to_return(body: "{}", status: 200) - result = @client.api_keys.delete_api_key(id: "stub") - assert_nil result - end - def test_list_organization_api_keys_returns_expected_result stub_request(:get, %r{\Ahttps://api\.workos\.com/organizations/stub/api_keys(\?|\z)}) .to_return(body: '{"data": [], "list_metadata": {}}', status: 200) @@ -39,12 +25,26 @@ def test_create_organization_api_key_returns_expected_result refute_nil result end + def test_create_validation_returns_expected_result + stub_request(:post, %r{\Ahttps://api\.workos\.com/api_keys/validations(\?|\z)}) + .to_return(body: "{}", status: 200) + result = @client.api_keys.create_validation(value: "stub") + refute_nil result + end + + def test_delete_api_key_returns_expected_result + stub_request(:delete, %r{\Ahttps://api\.workos\.com/api_keys/stub(\?|\z)}) + .to_return(body: "{}", status: 200) + result = @client.api_keys.delete_api_key(id: "stub") + assert_nil result + end + # Parameterized authentication error tests (one per endpoint). [ - {name: :create_validation, verb: :post, url: %r{\Ahttps://api\.workos\.com/api_keys/validations(\?|\z)}, args: {value: "stub"}}, - {name: :delete_api_key, verb: :delete, url: %r{\Ahttps://api\.workos\.com/api_keys/stub(\?|\z)}, args: {id: "stub"}}, {name: :list_organization_api_keys, verb: :get, url: %r{\Ahttps://api\.workos\.com/organizations/stub/api_keys(\?|\z)}, args: {organization_id: "stub"}}, - {name: :create_organization_api_key, verb: :post, url: %r{\Ahttps://api\.workos\.com/organizations/stub/api_keys(\?|\z)}, args: {organization_id: "stub", name: "stub"}} + {name: :create_organization_api_key, verb: :post, url: %r{\Ahttps://api\.workos\.com/organizations/stub/api_keys(\?|\z)}, args: {organization_id: "stub", name: "stub"}}, + {name: :create_validation, verb: :post, url: %r{\Ahttps://api\.workos\.com/api_keys/validations(\?|\z)}, args: {value: "stub"}}, + {name: :delete_api_key, verb: :delete, url: %r{\Ahttps://api\.workos\.com/api_keys/stub(\?|\z)}, args: {id: "stub"}} ].each do |spec| define_method("test_#{spec[:name]}_raises_authentication_error_on_401") do stub_request(spec[:verb], spec[:url]) diff --git a/test/workos/test_model_round_trip.rb b/test/workos/test_model_round_trip.rb index b5b481c7..f78bd77c 100644 --- a/test/workos/test_model_round_trip.rb +++ b/test/workos/test_model_round_trip.rb @@ -709,6 +709,20 @@ def test_update_user_organization_membership_round_trip fixture.each_key { |k| assert json.key?(k.to_sym) || json.key?(k), "Expected to_h to include key #{k}" } end + def test_create_user_api_key_round_trip + fixture = { + "name" => "stub", + "organization_id" => "stub", + "permissions" => [] + } + model = WorkOS::CreateUserApiKey.new(fixture.to_json) + json = model.to_h + assert_kind_of Hash, json + assert_equal fixture["name"], json[:name] + assert_equal fixture["organization_id"], json[:organization_id] + fixture.each_key { |k| assert json.key?(k.to_sym) || json.key?(k), "Expected to_h to include key #{k}" } + end + def test_create_user_round_trip fixture = { "email" => "stub", @@ -1238,6 +1252,38 @@ def test_role_list_round_trip fixture.each_key { |k| assert json.key?(k.to_sym) || json.key?(k), "Expected to_h to include key #{k}" } end + def test_user_round_trip + fixture = { + "object" => "user", + "id" => "stub", + "first_name" => nil, + "last_name" => nil, + "profile_picture_url" => nil, + "email" => "stub", + "email_verified" => true, + "external_id" => nil, + "metadata" => {}, + "last_sign_in_at" => nil, + "locale" => nil, + "created_at" => "stub", + "updated_at" => "stub" + } + model = WorkOS::User.new(fixture.to_json) + json = model.to_h + assert_kind_of Hash, json + assert_equal fixture["id"], json[:id] + assert_nil json[:first_name] + assert_nil json[:last_name] + assert_nil json[:profile_picture_url] + assert_equal fixture["email"], json[:email] + assert_equal fixture["email_verified"], json[:email_verified] + assert_nil json[:external_id] + assert_nil json[:last_sign_in_at] + assert_equal fixture["created_at"], json[:created_at] + assert_equal fixture["updated_at"], json[:updated_at] + fixture.each_key { |k| assert json.key?(k.to_sym) || json.key?(k), "Expected to_h to include key #{k}" } + end + def test_connection_round_trip fixture = { "object" => "connection", @@ -1341,6 +1387,7 @@ def test_directory_user_with_groups_round_trip "email" => nil, "first_name" => nil, "last_name" => nil, + "name" => nil, "emails" => [], "job_title" => nil, "username" => nil, @@ -1427,6 +1474,7 @@ def test_directory_user_round_trip "email" => nil, "first_name" => nil, "last_name" => nil, + "name" => nil, "emails" => [], "job_title" => nil, "username" => nil, @@ -1451,38 +1499,6 @@ def test_directory_user_round_trip fixture.each_key { |k| assert json.key?(k.to_sym) || json.key?(k), "Expected to_h to include key #{k}" } end - def test_user_round_trip - fixture = { - "object" => "user", - "id" => "stub", - "first_name" => nil, - "last_name" => nil, - "profile_picture_url" => nil, - "email" => "stub", - "email_verified" => true, - "external_id" => nil, - "metadata" => {}, - "last_sign_in_at" => nil, - "locale" => nil, - "created_at" => "stub", - "updated_at" => "stub" - } - model = WorkOS::User.new(fixture.to_json) - json = model.to_h - assert_kind_of Hash, json - assert_equal fixture["id"], json[:id] - assert_nil json[:first_name] - assert_nil json[:last_name] - assert_nil json[:profile_picture_url] - assert_equal fixture["email"], json[:email] - assert_equal fixture["email_verified"], json[:email_verified] - assert_nil json[:external_id] - assert_nil json[:last_sign_in_at] - assert_equal fixture["created_at"], json[:created_at] - assert_equal fixture["updated_at"], json[:updated_at] - fixture.each_key { |k| assert json.key?(k.to_sym) || json.key?(k), "Expected to_h to include key #{k}" } - end - def test_waitlist_user_round_trip fixture = { "object" => "waitlist_user", @@ -3109,6 +3125,7 @@ def test_dsync_user_updated_data_round_trip "email" => nil, "first_name" => nil, "last_name" => nil, + "name" => nil, "emails" => [], "job_title" => nil, "username" => nil, @@ -5161,6 +5178,35 @@ def test_user_updated_round_trip fixture.each_key { |k| assert json.key?(k.to_sym) || json.key?(k), "Expected to_h to include key #{k}" } end + def test_vault_byok_key_deleted_round_trip + fixture = { + "id" => "stub", + "event" => "vault.byok_key.deleted", + "data" => {}, + "created_at" => "stub", + "context" => {}, + "object" => "event" + } + model = WorkOS::VaultByokKeyDeleted.new(fixture.to_json) + json = model.to_h + assert_kind_of Hash, json + assert_equal fixture["id"], json[:id] + assert_equal fixture["created_at"], json[:created_at] + fixture.each_key { |k| assert json.key?(k.to_sym) || json.key?(k), "Expected to_h to include key #{k}" } + end + + def test_vault_byok_key_deleted_data_round_trip + fixture = { + "organization_id" => "stub", + "key_provider" => "stub" + } + model = WorkOS::VaultByokKeyDeletedData.new(fixture.to_json) + json = model.to_h + assert_kind_of Hash, json + assert_equal fixture["organization_id"], json[:organization_id] + fixture.each_key { |k| assert json.key?(k.to_sym) || json.key?(k), "Expected to_h to include key #{k}" } + end + def test_vault_byok_key_verification_completed_round_trip fixture = { "id" => "stub", @@ -5548,22 +5594,6 @@ def test_waitlist_user_denied_round_trip fixture.each_key { |k| assert json.key?(k.to_sym) || json.key?(k), "Expected to_h to include key #{k}" } end - def test_jwt_template_response_round_trip - fixture = { - "object" => "jwt_template", - "content" => "stub", - "created_at" => "stub", - "updated_at" => "stub" - } - model = WorkOS::JWTTemplateResponse.new(fixture.to_json) - json = model.to_h - assert_kind_of Hash, json - assert_equal fixture["content"], json[:content] - assert_equal fixture["created_at"], json[:created_at] - assert_equal fixture["updated_at"], json[:updated_at] - fixture.each_key { |k| assert json.key?(k.to_sym) || json.key?(k), "Expected to_h to include key #{k}" } - end - def test_organization_domain_stand_alone_round_trip fixture = { "object" => "organization_domain", @@ -5616,7 +5646,31 @@ def test_flag_round_trip fixture.each_key { |k| assert json.key?(k.to_sym) || json.key?(k), "Expected to_h to include key #{k}" } end - def test_api_key_with_value_round_trip + def test_organization_api_key_round_trip + fixture = { + "object" => "api_key", + "id" => "stub", + "owner" => {}, + "name" => "stub", + "obfuscated_value" => "stub", + "last_used_at" => nil, + "permissions" => [], + "created_at" => "stub", + "updated_at" => "stub" + } + model = WorkOS::OrganizationApiKey.new(fixture.to_json) + json = model.to_h + assert_kind_of Hash, json + assert_equal fixture["id"], json[:id] + assert_equal fixture["name"], json[:name] + assert_equal fixture["obfuscated_value"], json[:obfuscated_value] + assert_nil json[:last_used_at] + assert_equal fixture["created_at"], json[:created_at] + assert_equal fixture["updated_at"], json[:updated_at] + fixture.each_key { |k| assert json.key?(k.to_sym) || json.key?(k), "Expected to_h to include key #{k}" } + end + + def test_organization_api_key_with_value_round_trip fixture = { "object" => "api_key", "id" => "stub", @@ -5629,7 +5683,7 @@ def test_api_key_with_value_round_trip "updated_at" => "stub", "value" => "stub" } - model = WorkOS::ApiKeyWithValue.new(fixture.to_json) + model = WorkOS::OrganizationApiKeyWithValue.new(fixture.to_json) json = model.to_h assert_kind_of Hash, json assert_equal fixture["id"], json[:id] @@ -5879,7 +5933,8 @@ def test_user_organization_membership_round_trip "custom_attributes" => {}, "created_at" => "stub", "updated_at" => "stub", - "role" => {} + "role" => {}, + "user" => {} } model = WorkOS::UserOrganizationMembership.new(fixture.to_json) json = model.to_h @@ -5893,6 +5948,56 @@ def test_user_organization_membership_round_trip fixture.each_key { |k| assert json.key?(k.to_sym) || json.key?(k), "Expected to_h to include key #{k}" } end + def test_user_api_key_round_trip + fixture = { + "object" => "api_key", + "id" => "stub", + "owner" => {}, + "name" => "stub", + "obfuscated_value" => "stub", + "last_used_at" => nil, + "permissions" => [], + "created_at" => "stub", + "updated_at" => "stub" + } + model = WorkOS::UserApiKey.new(fixture.to_json) + json = model.to_h + assert_kind_of Hash, json + assert_equal fixture["id"], json[:id] + assert_equal fixture["name"], json[:name] + assert_equal fixture["obfuscated_value"], json[:obfuscated_value] + assert_nil json[:last_used_at] + assert_equal fixture["created_at"], json[:created_at] + assert_equal fixture["updated_at"], json[:updated_at] + fixture.each_key { |k| assert json.key?(k.to_sym) || json.key?(k), "Expected to_h to include key #{k}" } + end + + def test_user_api_key_with_value_round_trip + fixture = { + "object" => "api_key", + "id" => "stub", + "owner" => {}, + "name" => "stub", + "obfuscated_value" => "stub", + "last_used_at" => nil, + "permissions" => [], + "created_at" => "stub", + "updated_at" => "stub", + "value" => "stub" + } + model = WorkOS::UserApiKeyWithValue.new(fixture.to_json) + json = model.to_h + assert_kind_of Hash, json + assert_equal fixture["id"], json[:id] + assert_equal fixture["name"], json[:name] + assert_equal fixture["obfuscated_value"], json[:obfuscated_value] + assert_nil json[:last_used_at] + assert_equal fixture["created_at"], json[:created_at] + assert_equal fixture["updated_at"], json[:updated_at] + assert_equal fixture["value"], json[:value] + fixture.each_key { |k| assert json.key?(k.to_sym) || json.key?(k), "Expected to_h to include key #{k}" } + end + def test_email_verification_round_trip fixture = { "object" => "email_verification", @@ -6081,6 +6186,7 @@ def test_profile_round_trip "email" => "stub", "first_name" => nil, "last_name" => nil, + "name" => nil, "role" => nil, "roles" => nil, "groups" => [], @@ -6097,6 +6203,7 @@ def test_profile_round_trip assert_equal fixture["email"], json[:email] assert_nil json[:first_name] assert_nil json[:last_name] + assert_nil json[:name] fixture.each_key { |k| assert json.key?(k.to_sym) || json.key?(k), "Expected to_h to include key #{k}" } end @@ -6139,6 +6246,22 @@ def test_jwks_response_round_trip fixture.each_key { |k| assert json.key?(k.to_sym) || json.key?(k), "Expected to_h to include key #{k}" } end + def test_jwt_template_response_round_trip + fixture = { + "object" => "jwt_template", + "content" => "stub", + "created_at" => "stub", + "updated_at" => "stub" + } + model = WorkOS::JWTTemplateResponse.new(fixture.to_json) + json = model.to_h + assert_kind_of Hash, json + assert_equal fixture["content"], json[:content] + assert_equal fixture["created_at"], json[:created_at] + assert_equal fixture["updated_at"], json[:updated_at] + fixture.each_key { |k| assert json.key?(k.to_sym) || json.key?(k), "Expected to_h to include key #{k}" } + end + def test_jwks_response_keys_round_trip fixture = { "alg" => "RS256", @@ -6209,6 +6332,34 @@ def test_authenticate_response_oauth_token_round_trip fixture.each_key { |k| assert json.key?(k.to_sym) || json.key?(k), "Expected to_h to include key #{k}" } end + def test_user_api_key_with_value_owner_round_trip + fixture = { + "type" => "user", + "id" => "stub", + "organization_id" => "stub" + } + model = WorkOS::UserApiKeyWithValueOwner.new(fixture.to_json) + json = model.to_h + assert_kind_of Hash, json + assert_equal fixture["id"], json[:id] + assert_equal fixture["organization_id"], json[:organization_id] + fixture.each_key { |k| assert json.key?(k.to_sym) || json.key?(k), "Expected to_h to include key #{k}" } + end + + def test_user_api_key_owner_round_trip + fixture = { + "type" => "user", + "id" => "stub", + "organization_id" => "stub" + } + model = WorkOS::UserApiKeyOwner.new(fixture.to_json) + json = model.to_h + assert_kind_of Hash, json + assert_equal fixture["id"], json[:id] + assert_equal fixture["organization_id"], json[:organization_id] + fixture.each_key { |k| assert json.key?(k.to_sym) || json.key?(k), "Expected to_h to include key #{k}" } + end + def test_data_integrations_list_response_data_round_trip fixture = { "object" => "data_provider", @@ -6295,12 +6446,24 @@ def test_organization_domain_round_trip fixture.each_key { |k| assert json.key?(k.to_sym) || json.key?(k), "Expected to_h to include key #{k}" } end - def test_api_key_with_value_owner_round_trip + def test_organization_api_key_with_value_owner_round_trip + fixture = { + "type" => "organization", + "id" => "stub" + } + model = WorkOS::OrganizationApiKeyWithValueOwner.new(fixture.to_json) + json = model.to_h + assert_kind_of Hash, json + assert_equal fixture["id"], json[:id] + fixture.each_key { |k| assert json.key?(k.to_sym) || json.key?(k), "Expected to_h to include key #{k}" } + end + + def test_organization_api_key_owner_round_trip fixture = { "type" => "organization", "id" => "stub" } - model = WorkOS::ApiKeyWithValueOwner.new(fixture.to_json) + model = WorkOS::OrganizationApiKeyOwner.new(fixture.to_json) json = model.to_h assert_kind_of Hash, json assert_equal fixture["id"], json[:id] @@ -6358,6 +6521,32 @@ def test_event_context_google_analytics_session_round_trip fixture.each_key { |k| assert json.key?(k.to_sym) || json.key?(k), "Expected to_h to include key #{k}" } end + def test_user_organization_membership_base_list_data_round_trip + fixture = { + "object" => "organization_membership", + "id" => "stub", + "user_id" => "stub", + "organization_id" => "stub", + "status" => "stub", + "directory_managed" => true, + "organization_name" => "stub", + "custom_attributes" => {}, + "created_at" => "stub", + "updated_at" => "stub", + "user" => {} + } + model = WorkOS::UserOrganizationMembershipBaseListData.new(fixture.to_json) + json = model.to_h + assert_kind_of Hash, json + assert_equal fixture["id"], json[:id] + assert_equal fixture["user_id"], json[:user_id] + assert_equal fixture["organization_id"], json[:organization_id] + assert_equal fixture["directory_managed"], json[:directory_managed] + assert_equal fixture["created_at"], json[:created_at] + assert_equal fixture["updated_at"], json[:updated_at] + fixture.each_key { |k| assert json.key?(k.to_sym) || json.key?(k), "Expected to_h to include key #{k}" } + end + def test_directory_user_with_groups_email_round_trip fixture = { "primary" => true, @@ -6407,31 +6596,6 @@ def test_connection_option_round_trip fixture.each_key { |k| assert json.key?(k.to_sym) || json.key?(k), "Expected to_h to include key #{k}" } end - def test_user_organization_membership_base_list_data_round_trip - fixture = { - "object" => "organization_membership", - "id" => "stub", - "user_id" => "stub", - "organization_id" => "stub", - "status" => "stub", - "directory_managed" => true, - "organization_name" => "stub", - "custom_attributes" => {}, - "created_at" => "stub", - "updated_at" => "stub" - } - model = WorkOS::UserOrganizationMembershipBaseListData.new(fixture.to_json) - json = model.to_h - assert_kind_of Hash, json - assert_equal fixture["id"], json[:id] - assert_equal fixture["user_id"], json[:user_id] - assert_equal fixture["organization_id"], json[:organization_id] - assert_equal fixture["directory_managed"], json[:directory_managed] - assert_equal fixture["created_at"], json[:created_at] - assert_equal fixture["updated_at"], json[:updated_at] - fixture.each_key { |k| assert json.key?(k.to_sym) || json.key?(k), "Expected to_h to include key #{k}" } - end - def test_role_assignment_resource_round_trip fixture = { "id" => "stub", @@ -6990,7 +7154,8 @@ def test_organization_membership_round_trip "custom_attributes" => {}, "created_at" => "stub", "updated_at" => "stub", - "role" => {} + "role" => {}, + "user" => {} } model = WorkOS::OrganizationMembership.new(fixture.to_json) json = model.to_h diff --git a/test/workos/test_user_management.rb b/test/workos/test_user_management.rb index f2520e0b..b2aebf55 100644 --- a/test/workos/test_user_management.rb +++ b/test/workos/test_user_management.rb @@ -345,6 +345,13 @@ def test_revoke_invitation_returns_expected_result refute_nil result end + def test_list_jwt_template_returns_expected_result + stub_request(:get, %r{\Ahttps://api\.workos\.com/user_management/jwt_template(\?|\z)}) + .to_return(body: "{}", status: 200) + result = @client.user_management.list_jwt_template + refute_nil result + end + def test_update_jwt_template_returns_expected_result stub_request(:put, %r{\Ahttps://api\.workos\.com/user_management/jwt_template(\?|\z)}) .to_return(body: "{}", status: 200) @@ -454,6 +461,20 @@ def test_delete_user_authorized_application_returns_expected_result assert_nil result end + def test_list_user_api_keys_returns_expected_result + stub_request(:get, %r{\Ahttps://api\.workos\.com/user_management/users/stub/api_keys(\?|\z)}) + .to_return(body: '{"data": [], "list_metadata": {}}', status: 200) + result = @client.user_management.list_user_api_keys(user_id: "stub") + assert_kind_of WorkOS::Types::ListStruct, result + end + + def test_create_user_api_key_returns_expected_result + stub_request(:post, %r{\Ahttps://api\.workos\.com/user_management/users/stub/api_keys(\?|\z)}) + .to_return(body: "{}", status: 200) + result = @client.user_management.create_user_api_key(user_id: "stub", name: "stub", organization_id: "stub") + refute_nil result + end + # Parameterized authentication error tests (one per endpoint). [ {name: :get_jwks, verb: :get, url: %r{\Ahttps://api\.workos\.com/sso/jwks/stub(\?|\z)}, args: {client_id: "stub"}}, @@ -484,6 +505,7 @@ def test_delete_user_authorized_application_returns_expected_result {name: :accept_invitation, verb: :post, url: %r{\Ahttps://api\.workos\.com/user_management/invitations/stub/accept(\?|\z)}, args: {id: "stub"}}, {name: :resend_invitation, verb: :post, url: %r{\Ahttps://api\.workos\.com/user_management/invitations/stub/resend(\?|\z)}, args: {id: "stub"}}, {name: :revoke_invitation, verb: :post, url: %r{\Ahttps://api\.workos\.com/user_management/invitations/stub/revoke(\?|\z)}, args: {id: "stub"}}, + {name: :list_jwt_template, verb: :get, url: %r{\Ahttps://api\.workos\.com/user_management/jwt_template(\?|\z)}}, {name: :update_jwt_template, verb: :put, url: %r{\Ahttps://api\.workos\.com/user_management/jwt_template(\?|\z)}, args: {content: "stub"}}, {name: :create_magic_auth, verb: :post, url: %r{\Ahttps://api\.workos\.com/user_management/magic_auth(\?|\z)}, args: {email: "stub"}}, {name: :get_magic_auth, verb: :get, url: %r{\Ahttps://api\.workos\.com/user_management/magic_auth/stub(\?|\z)}, args: {id: "stub"}}, @@ -496,7 +518,9 @@ def test_delete_user_authorized_application_returns_expected_result {name: :reactivate_organization_membership, verb: :put, url: %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub/reactivate(\?|\z)}, args: {id: "stub"}}, {name: :create_redirect_uri, verb: :post, url: %r{\Ahttps://api\.workos\.com/user_management/redirect_uris(\?|\z)}, args: {uri: "stub"}}, {name: :list_user_authorized_applications, verb: :get, url: %r{\Ahttps://api\.workos\.com/user_management/users/stub/authorized_applications(\?|\z)}, args: {user_id: "stub"}}, - {name: :delete_user_authorized_application, verb: :delete, url: %r{\Ahttps://api\.workos\.com/user_management/users/stub/authorized_applications/stub(\?|\z)}, args: {application_id: "stub", user_id: "stub"}} + {name: :delete_user_authorized_application, verb: :delete, url: %r{\Ahttps://api\.workos\.com/user_management/users/stub/authorized_applications/stub(\?|\z)}, args: {application_id: "stub", user_id: "stub"}}, + {name: :list_user_api_keys, verb: :get, url: %r{\Ahttps://api\.workos\.com/user_management/users/stub/api_keys(\?|\z)}, args: {user_id: "stub"}}, + {name: :create_user_api_key, verb: :post, url: %r{\Ahttps://api\.workos\.com/user_management/users/stub/api_keys(\?|\z)}, args: {user_id: "stub", name: "stub", organization_id: "stub"}} ].each do |spec| define_method("test_#{spec[:name]}_raises_authentication_error_on_401") do stub_request(spec[:verb], spec[:url])