diff --git a/.changelog-pending/2026-05-20T20-29-55-146a9a64fecd6bc4ccf8f0925608292c73b97ae6.md b/.changelog-pending/2026-05-20T20-29-55-146a9a64fecd6bc4ccf8f0925608292c73b97ae6.md new file mode 100644 index 00000000..4f549a0c --- /dev/null +++ b/.changelog-pending/2026-05-20T20-29-55-146a9a64fecd6bc4ccf8f0925608292c73b97ae6.md @@ -0,0 +1,17 @@ +* [#489](https://github.com/workos/workos-ruby/pull/489) Update generated SDK code + + **⚠️ Breaking** + * **authorization:** Remove search param from listResources operation + * Removed optional `search` parameter from `list_resources` method + * This is a breaking change as the parameter is no longer available for resource filtering + + **Features** + * **authorization:** Add filtering parameters to role assignment operations + * Added `resource_id`, `resource_external_id`, `resource_type_slug` optional parameters to `list_role_assignments` + * Added `role_slug` optional parameter to `list_role_assignments_for_resource_by_external_id` + * Added `role_slug` optional parameter to `list_role_assignments_for_resource` + * **organization_membership:** Extract organization membership methods to dedicated service + * Created new `OrganizationMembershipService` with all organization membership operations + * Moved `list_organization_memberships`, `create_organization_membership`, `get_organization_membership`, `update_organization_membership`, `delete_organization_membership`, `deactivate_organization_membership`, `reactivate_organization_membership` from `UserManagement` to `OrganizationMembershipService` + * Moved `list_organization_membership_groups` from `UserManagementOrganizationMembershipGroups` to `OrganizationMembershipService` + * Updated client to expose `organization_membership` method instead of `user_management_organization_membership_groups` diff --git a/.last-synced-sha b/.last-synced-sha index 047fc7ee..1e1c7499 100644 --- a/.last-synced-sha +++ b/.last-synced-sha @@ -1 +1 @@ -a10d9ecb766d2dd996aecb19aa9c801d78bb7c26 +13aaa9a125fc87d1ed23acd5ef740382510296be diff --git a/.oagen-manifest.json b/.oagen-manifest.json index 7c73f868..6d46936c 100644 --- a/.oagen-manifest.json +++ b/.oagen-manifest.json @@ -1,7 +1,7 @@ { "version": 2, "language": "ruby", - "generatedAt": "2026-05-06T22:30:35.198Z", + "generatedAt": "2026-05-20T20:29:03.170Z", "files": [ "lib/workos.rb", "lib/workos/admin_portal.rb", @@ -27,17 +27,17 @@ "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", + "lib/workos/audit_logs/audit_log_action.rb", "lib/workos/audit_logs/audit_log_event.rb", "lib/workos/audit_logs/audit_log_event_actor.rb", "lib/workos/audit_logs/audit_log_event_context.rb", "lib/workos/audit_logs/audit_log_event_create_response.rb", "lib/workos/audit_logs/audit_log_event_ingestion.rb", "lib/workos/audit_logs/audit_log_event_target.rb", + "lib/workos/audit_logs/audit_log_export.rb", "lib/workos/audit_logs/audit_log_export_creation.rb", - "lib/workos/audit_logs/audit_log_export_json.rb", - "lib/workos/audit_logs/audit_log_schema.rb", "lib/workos/audit_logs/audit_log_schema_actor.rb", + "lib/workos/audit_logs/audit_log_schema_dto.rb", "lib/workos/audit_logs/audit_log_schema_json.rb", "lib/workos/audit_logs/audit_log_schema_json_actor.rb", "lib/workos/audit_logs/audit_log_schema_json_target.rb", @@ -197,10 +197,15 @@ "lib/workos/organization_domains/organization_domain_verification_failed_data_organization_domain.rb", "lib/workos/organization_domains/organization_domain_verified.rb", "lib/workos/organization_domains/organization_domain_verified_data.rb", + "lib/workos/organization_membership/create_user_organization_membership.rb", + "lib/workos/organization_membership/organization_membership.rb", + "lib/workos/organization_membership/update_user_organization_membership.rb", + "lib/workos/organization_membership/user_organization_membership.rb", + "lib/workos/organization_membership_service.rb", "lib/workos/organizations.rb", "lib/workos/organizations/audit_log_configuration.rb", "lib/workos/organizations/audit_log_configuration_log_stream.rb", - "lib/workos/organizations/audit_logs_retention_json.rb", + "lib/workos/organizations/audit_logs_retention.rb", "lib/workos/organizations/organization.rb", "lib/workos/organizations/organization_created.rb", "lib/workos/organizations/organization_created_data.rb", @@ -288,7 +293,7 @@ "lib/workos/types/audit_log_configuration_log_stream_state.rb", "lib/workos/types/audit_log_configuration_log_stream_type.rb", "lib/workos/types/audit_log_configuration_state.rb", - "lib/workos/types/audit_log_export_json_state.rb", + "lib/workos/types/audit_log_export_state.rb", "lib/workos/types/authenticate_response_authentication_method.rb", "lib/workos/types/authentication_factor_enrolled_type.rb", "lib/workos/types/authentication_factor_type.rb", @@ -405,7 +410,7 @@ "lib/workos/types/vault_metadata_read_data_actor_source.rb", "lib/workos/types/vault_names_listed_data_actor_source.rb", "lib/workos/types/waitlist_user_state.rb", - "lib/workos/types/webhook_endpoint_json_status.rb", + "lib/workos/types/webhook_endpoint_status.rb", "lib/workos/types/widget_session_token_scopes.rb", "lib/workos/user_management.rb", "lib/workos/user_management/action_authentication_denied.rb", @@ -473,7 +478,6 @@ "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", "lib/workos/user_management/device_code_session_authenticate_request.rb", "lib/workos/user_management/email_change.rb", @@ -500,7 +504,6 @@ "lib/workos/user_management/magic_auth_created.rb", "lib/workos/user_management/magic_auth_created_data.rb", "lib/workos/user_management/mfa_totp_session_authenticate_request.rb", - "lib/workos/user_management/organization_membership.rb", "lib/workos/user_management/organization_selection_session_authenticate_request.rb", "lib/workos/user_management/password_reset.rb", "lib/workos/user_management/password_reset_created.rb", @@ -524,7 +527,6 @@ "lib/workos/user_management/sso_device_authorization_request.rb", "lib/workos/user_management/update_jwt_template.rb", "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_created_data_owner.rb", @@ -536,13 +538,11 @@ "lib/workos/user_management/user_deleted.rb", "lib/workos/user_management/user_identities_get_item.rb", "lib/workos/user_management/user_invite.rb", - "lib/workos/user_management/user_organization_membership.rb", "lib/workos/user_management/user_sessions_impersonator.rb", "lib/workos/user_management/user_sessions_list_item.rb", "lib/workos/user_management/user_updated.rb", "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", @@ -568,7 +568,7 @@ "lib/workos/webhooks.rb", "lib/workos/webhooks/create_webhook_endpoint.rb", "lib/workos/webhooks/update_webhook_endpoint.rb", - "lib/workos/webhooks/webhook_endpoint_json.rb", + "lib/workos/webhooks/webhook_endpoint.rb", "lib/workos/widgets.rb", "lib/workos/widgets/widget_session_token.rb", "lib/workos/widgets/widget_session_token_response.rb", @@ -590,7 +590,7 @@ "rbi/workos/api_keys.rbi", "rbi/workos/application_credentials_list_item.rbi", "rbi/workos/assign_role.rbi", - "rbi/workos/audit_log_action_json.rbi", + "rbi/workos/audit_log_action.rbi", "rbi/workos/audit_log_configuration.rbi", "rbi/workos/audit_log_configuration_log_stream.rbi", "rbi/workos/audit_log_event.rbi", @@ -599,16 +599,16 @@ "rbi/workos/audit_log_event_create_response.rbi", "rbi/workos/audit_log_event_ingestion.rbi", "rbi/workos/audit_log_event_target.rbi", + "rbi/workos/audit_log_export.rbi", "rbi/workos/audit_log_export_creation.rbi", - "rbi/workos/audit_log_export_json.rbi", - "rbi/workos/audit_log_schema.rbi", "rbi/workos/audit_log_schema_actor.rbi", + "rbi/workos/audit_log_schema_dto.rbi", "rbi/workos/audit_log_schema_json.rbi", "rbi/workos/audit_log_schema_json_actor.rbi", "rbi/workos/audit_log_schema_json_target.rbi", "rbi/workos/audit_log_schema_target.rbi", "rbi/workos/audit_logs.rbi", - "rbi/workos/audit_logs_retention_json.rbi", + "rbi/workos/audit_logs_retention.rbi", "rbi/workos/authenticate_response.rbi", "rbi/workos/authenticate_response_impersonator.rbi", "rbi/workos/authenticate_response_oauth_token.rbi", @@ -876,6 +876,7 @@ "rbi/workos/organization_membership_created_data.rbi", "rbi/workos/organization_membership_deleted.rbi", "rbi/workos/organization_membership_deleted_data.rbi", + "rbi/workos/organization_membership_service.rbi", "rbi/workos/organization_membership_updated.rbi", "rbi/workos/organization_membership_updated_data.rbi", "rbi/workos/organization_role_created.rbi", @@ -974,7 +975,6 @@ "rbi/workos/user_invite.rbi", "rbi/workos/user_management.rbi", "rbi/workos/user_management_login_request.rbi", - "rbi/workos/user_management_organization_membership_groups.rbi", "rbi/workos/user_object.rbi", "rbi/workos/user_organization_membership.rbi", "rbi/workos/user_organization_membership_base_list_data.rbi", @@ -1012,7 +1012,7 @@ "rbi/workos/waitlist_user_approved.rbi", "rbi/workos/waitlist_user_created.rbi", "rbi/workos/waitlist_user_denied.rbi", - "rbi/workos/webhook_endpoint_json.rbi", + "rbi/workos/webhook_endpoint.rbi", "rbi/workos/webhooks.rbi", "rbi/workos/widget_session_token.rbi", "rbi/workos/widget_session_token_response.rbi", @@ -1029,12 +1029,12 @@ "test/workos/test_model_round_trip.rb", "test/workos/test_multi_factor_auth.rb", "test/workos/test_organization_domains.rb", + "test/workos/test_organization_membership_service.rb", "test/workos/test_organizations.rb", "test/workos/test_pipes.rb", "test/workos/test_radar.rb", "test/workos/test_sso.rb", "test/workos/test_user_management.rb", - "test/workos/test_user_management_organization_membership_groups.rb", "test/workos/test_webhooks.rb", "test/workos/test_widgets.rb" ], @@ -1641,35 +1641,35 @@ }, "GET /user_management/organization_memberships": { "sdkMethod": "list_organization_memberships", - "service": "user_management" + "service": "organization_membership" }, "POST /user_management/organization_memberships": { "sdkMethod": "create_organization_membership", - "service": "user_management" + "service": "organization_membership" }, "GET /user_management/organization_memberships/{id}": { "sdkMethod": "get_organization_membership", - "service": "user_management" + "service": "organization_membership" }, "PUT /user_management/organization_memberships/{id}": { "sdkMethod": "update_organization_membership", - "service": "user_management" + "service": "organization_membership" }, "DELETE /user_management/organization_memberships/{id}": { "sdkMethod": "delete_organization_membership", - "service": "user_management" + "service": "organization_membership" }, "PUT /user_management/organization_memberships/{id}/deactivate": { "sdkMethod": "deactivate_organization_membership", - "service": "user_management" + "service": "organization_membership" }, "PUT /user_management/organization_memberships/{id}/reactivate": { "sdkMethod": "reactivate_organization_membership", - "service": "user_management" + "service": "organization_membership" }, "GET /user_management/organization_memberships/{omId}/groups": { "sdkMethod": "list_organization_membership_groups", - "service": "user_management_organization_membership_groups" + "service": "organization_membership" }, "POST /user_management/redirect_uris": { "sdkMethod": "create_redirect_uri", diff --git a/lib/workos.rb b/lib/workos.rb index 0b92065f..61aa8e25 100644 --- a/lib/workos.rb +++ b/lib/workos.rb @@ -21,6 +21,7 @@ module WorkOS loader.collapse("#{__dir__}/workos/groups") loader.collapse("#{__dir__}/workos/multi_factor_auth") loader.collapse("#{__dir__}/workos/organization_domains") +loader.collapse("#{__dir__}/workos/organization_membership") loader.collapse("#{__dir__}/workos/organizations") loader.collapse("#{__dir__}/workos/pipes") loader.collapse("#{__dir__}/workos/radar") diff --git a/lib/workos/audit_logs.rb b/lib/workos/audit_logs.rb index e70e9eb0..d6a91f8f 100644 --- a/lib/workos/audit_logs.rb +++ b/lib/workos/audit_logs.rb @@ -13,7 +13,7 @@ def initialize(client) # Get Retention # @param id [String] Unique identifier of the Organization. # @param request_options [Hash] (see WorkOS::Types::RequestOptions) - # @return [WorkOS::AuditLogsRetentionJson] + # @return [WorkOS::AuditLogsRetention] def get_organization_audit_logs_retention( id:, request_options: {} @@ -24,7 +24,7 @@ def get_organization_audit_logs_retention( auth: true, request_options: request_options ) - result = WorkOS::AuditLogsRetentionJson.new(response.body) + result = WorkOS::AuditLogsRetention.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 @@ -33,7 +33,7 @@ def get_organization_audit_logs_retention( # @param id [String] Unique identifier of the Organization. # @param retention_period_in_days [Integer] The number of days Audit Log events will be retained. Valid values are `30` and `365`. # @param request_options [Hash] (see WorkOS::Types::RequestOptions) - # @return [WorkOS::AuditLogsRetentionJson] + # @return [WorkOS::AuditLogsRetention] def update_organization_audit_logs_retention( id:, retention_period_in_days:, @@ -49,7 +49,7 @@ def update_organization_audit_logs_retention( body: body, request_options: request_options ) - result = WorkOS::AuditLogsRetentionJson.new(response.body) + result = WorkOS::AuditLogsRetention.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 @@ -60,7 +60,7 @@ def update_organization_audit_logs_retention( # @param limit [Integer, nil] Upper limit on the number of objects to return, between `1` and `100`. # @param order [WorkOS::Types::PaginationOrder, 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_actions( before: nil, after: nil, @@ -92,7 +92,7 @@ def list_actions( } WorkOS::Types::ListStruct.from_response( response, - model: WorkOS::AuditLogActionJson, + model: WorkOS::AuditLogAction, filters: {before: before, limit: limit, order: order}, fetch_next: fetch_next ) @@ -212,7 +212,7 @@ def create_event( # @param actor_ids [Array, nil] List of actor IDs to filter against. # @param targets [Array, nil] List of target types to filter against. # @param request_options [Hash] (see WorkOS::Types::RequestOptions) - # @return [WorkOS::AuditLogExportJson] + # @return [WorkOS::AuditLogExport] def create_export( organization_id:, range_start:, @@ -241,7 +241,7 @@ def create_export( body: body, request_options: request_options ) - result = WorkOS::AuditLogExportJson.new(response.body) + result = WorkOS::AuditLogExport.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 @@ -249,7 +249,7 @@ def create_export( # Get Export # @param audit_log_export_id [String] The unique ID of the Audit Log Export. # @param request_options [Hash] (see WorkOS::Types::RequestOptions) - # @return [WorkOS::AuditLogExportJson] + # @return [WorkOS::AuditLogExport] def get_export( audit_log_export_id:, request_options: {} @@ -260,7 +260,7 @@ def get_export( auth: true, request_options: request_options ) - result = WorkOS::AuditLogExportJson.new(response.body) + result = WorkOS::AuditLogExport.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 diff --git a/lib/workos/audit_logs/audit_log_action.rb b/lib/workos/audit_logs/audit_log_action.rb index 05f51dbf..635e5289 100644 --- a/lib/workos/audit_logs/audit_log_action.rb +++ b/lib/workos/audit_logs/audit_log_action.rb @@ -2,12 +2,8 @@ # This file is auto-generated by oagen. Do not edit. -require "json" - module WorkOS - class AuditLogAction - include HashProvider - + class AuditLogAction < WorkOS::Types::BaseModel HASH_ATTRS = { object: :object, name: :name, @@ -24,11 +20,10 @@ class AuditLogAction :updated_at def initialize(json) - hash = json.is_a?(Hash) ? json : JSON.parse(json, symbolize_names: true) - hash = hash.transform_keys(&:to_sym) if hash.keys.first.is_a?(String) + hash = self.class.normalize(json) @object = hash[:object] @name = hash[:name] - @schema = hash[:schema] ? WorkOS::AuditLogSchema.new(hash[:schema]) : nil + @schema = hash[:schema] ? WorkOS::AuditLogSchemaJson.new(hash[:schema]) : nil @created_at = hash[:created_at] @updated_at = hash[:updated_at] end diff --git a/lib/workos/audit_logs/audit_log_action_json.rb b/lib/workos/audit_logs/audit_log_action_json.rb deleted file mode 100644 index adf5b40a..00000000 --- a/lib/workos/audit_logs/audit_log_action_json.rb +++ /dev/null @@ -1,31 +0,0 @@ -# frozen_string_literal: true - -# This file is auto-generated by oagen. Do not edit. - -module WorkOS - class AuditLogActionJson < WorkOS::Types::BaseModel - HASH_ATTRS = { - object: :object, - name: :name, - schema: :schema, - created_at: :created_at, - updated_at: :updated_at - }.freeze - - attr_accessor \ - :object, - :name, - :schema, - :created_at, - :updated_at - - def initialize(json) - hash = self.class.normalize(json) - @object = hash[:object] - @name = hash[:name] - @schema = hash[:schema] ? WorkOS::AuditLogSchemaJson.new(hash[:schema]) : nil - @created_at = hash[:created_at] - @updated_at = hash[:updated_at] - end - end -end diff --git a/lib/workos/audit_logs/audit_log_export.rb b/lib/workos/audit_logs/audit_log_export.rb index b3d56fdf..414c9beb 100644 --- a/lib/workos/audit_logs/audit_log_export.rb +++ b/lib/workos/audit_logs/audit_log_export.rb @@ -2,12 +2,8 @@ # This file is auto-generated by oagen. Do not edit. -require "json" - module WorkOS - class AuditLogExport - include HashProvider - + class AuditLogExport < WorkOS::Types::BaseModel HASH_ATTRS = { object: :object, id: :id, @@ -26,8 +22,7 @@ class AuditLogExport :updated_at def initialize(json) - hash = json.is_a?(Hash) ? json : JSON.parse(json, symbolize_names: true) - hash = hash.transform_keys(&:to_sym) if hash.keys.first.is_a?(String) + hash = self.class.normalize(json) @object = hash[:object] @id = hash[:id] @state = hash[:state] diff --git a/lib/workos/audit_logs/audit_log_export_json.rb b/lib/workos/audit_logs/audit_log_export_json.rb deleted file mode 100644 index c762c435..00000000 --- a/lib/workos/audit_logs/audit_log_export_json.rb +++ /dev/null @@ -1,34 +0,0 @@ -# frozen_string_literal: true - -# This file is auto-generated by oagen. Do not edit. - -module WorkOS - class AuditLogExportJson < WorkOS::Types::BaseModel - HASH_ATTRS = { - object: :object, - id: :id, - state: :state, - url: :url, - created_at: :created_at, - updated_at: :updated_at - }.freeze - - attr_accessor \ - :object, - :id, - :state, - :url, - :created_at, - :updated_at - - def initialize(json) - hash = self.class.normalize(json) - @object = hash[:object] - @id = hash[:id] - @state = hash[:state] - @url = hash[:url] - @created_at = hash[:created_at] - @updated_at = hash[:updated_at] - end - end -end diff --git a/lib/workos/audit_logs/audit_log_schema.rb b/lib/workos/audit_logs/audit_log_schema_dto.rb similarity index 91% rename from lib/workos/audit_logs/audit_log_schema.rb rename to lib/workos/audit_logs/audit_log_schema_dto.rb index 953374ef..05afe7a8 100644 --- a/lib/workos/audit_logs/audit_log_schema.rb +++ b/lib/workos/audit_logs/audit_log_schema_dto.rb @@ -3,7 +3,7 @@ # This file is auto-generated by oagen. Do not edit. module WorkOS - class AuditLogSchema < WorkOS::Types::BaseModel + class AuditLogSchemaDto < WorkOS::Types::BaseModel HASH_ATTRS = { actor: :actor, targets: :targets, diff --git a/lib/workos/authorization.rb b/lib/workos/authorization.rb index d7c29cd6..f41959d3 100644 --- a/lib/workos/authorization.rb +++ b/lib/workos/authorization.rb @@ -260,6 +260,9 @@ def list_effective_permissions_by_external_id( # @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. For example, if you make a list request and receive 100 objects, ending with `"obj_123"`, your subsequent call can include `after="obj_123"` to fetch a new batch of objects after `"obj_123"`. # @param limit [Integer, nil] Upper limit on the number of objects to return, between `1` and `100`. # @param order [WorkOS::Types::PaginationOrder, nil] Order the results by the creation time. Supported values are `"asc"` (ascending), `"desc"` (descending), and `"normal"` (descending with reversed cursor semantics where `before` fetches older records and `after` fetches newer records). Defaults to descending. + # @param resource_id [String, nil] Filter assignments by the ID of the resource. + # @param resource_external_id [String, nil] Filter assignments by the external ID of the resource. + # @param resource_type_slug [String, nil] Filter assignments by the slug of the resource type. # @param request_options [Hash] (see WorkOS::Types::RequestOptions) # @return [WorkOS::Types::ListStruct] def list_role_assignments( @@ -268,13 +271,19 @@ def list_role_assignments( after: nil, limit: 10, order: "desc", + resource_id: nil, + resource_external_id: nil, + resource_type_slug: nil, request_options: {} ) params = { "before" => before, "after" => after, "limit" => limit, - "order" => order + "order" => order, + "resource_id" => resource_id, + "resource_external_id" => resource_external_id, + "resource_type_slug" => resource_type_slug }.compact response = @client.request( method: :get, @@ -290,13 +299,16 @@ def list_role_assignments( after: cursor, limit: limit, order: order, + resource_id: resource_id, + resource_external_id: resource_external_id, + resource_type_slug: resource_type_slug, request_options: request_options ) } WorkOS::Types::ListStruct.from_response( response, model: WorkOS::UserRoleAssignment, - filters: {organization_membership_id: organization_membership_id, before: before, limit: limit, order: order}, + filters: {organization_membership_id: organization_membership_id, before: before, limit: limit, order: order, resource_id: resource_id, resource_external_id: resource_external_id, resource_type_slug: resource_type_slug}, fetch_next: fetch_next ) end @@ -756,6 +768,7 @@ def list_memberships_for_resource_by_external_id( # @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. For example, if you make a list request and receive 100 objects, ending with `"obj_123"`, your subsequent call can include `after="obj_123"` to fetch a new batch of objects after `"obj_123"`. # @param limit [Integer, nil] Upper limit on the number of objects to return, between `1` and `100`. # @param order [WorkOS::Types::PaginationOrder, nil] Order the results by the creation time. Supported values are `"asc"` (ascending), `"desc"` (descending), and `"normal"` (descending with reversed cursor semantics where `before` fetches older records and `after` fetches newer records). Defaults to descending. + # @param role_slug [String, nil] Filter assignments by the slug of the role. # @param request_options [Hash] (see WorkOS::Types::RequestOptions) # @return [WorkOS::Types::ListStruct] def list_role_assignments_for_resource_by_external_id( @@ -766,13 +779,15 @@ def list_role_assignments_for_resource_by_external_id( after: nil, limit: 10, order: "desc", + role_slug: nil, request_options: {} ) params = { "before" => before, "after" => after, "limit" => limit, - "order" => order + "order" => order, + "role_slug" => role_slug }.compact response = @client.request( method: :get, @@ -790,13 +805,14 @@ def list_role_assignments_for_resource_by_external_id( after: cursor, limit: limit, order: order, + role_slug: role_slug, request_options: request_options ) } WorkOS::Types::ListStruct.from_response( response, model: WorkOS::UserRoleAssignment, - filters: {organization_id: organization_id, resource_type_slug: resource_type_slug, external_id: external_id, before: before, limit: limit, order: order}, + filters: {organization_id: organization_id, resource_type_slug: resource_type_slug, external_id: external_id, before: before, limit: limit, order: order, role_slug: role_slug}, fetch_next: fetch_next ) end @@ -809,7 +825,6 @@ def list_role_assignments_for_resource_by_external_id( # @param organization_id [String, nil] Filter resources by organization ID. # @param resource_type_slug [String, nil] Filter resources by resource type slug. # @param resource_external_id [String, nil] Filter resources by external ID. - # @param search [String, nil] Search resources by name. # @param parent [WorkOS::Authorization::ParentById, WorkOS::Authorization::ParentByExternalId, nil] Identifies the parent. # @param request_options [Hash] (see WorkOS::Types::RequestOptions) # @return [WorkOS::Types::ListStruct] @@ -821,7 +836,6 @@ def list_resources( organization_id: nil, resource_type_slug: nil, resource_external_id: nil, - search: nil, parent: nil, request_options: {} ) @@ -832,8 +846,7 @@ def list_resources( "order" => order, "organization_id" => organization_id, "resource_type_slug" => resource_type_slug, - "resource_external_id" => resource_external_id, - "search" => search + "resource_external_id" => resource_external_id }.compact if parent case parent @@ -862,7 +875,6 @@ def list_resources( organization_id: organization_id, resource_type_slug: resource_type_slug, resource_external_id: resource_external_id, - search: search, parent: parent, request_options: request_options ) @@ -870,7 +882,7 @@ def list_resources( WorkOS::Types::ListStruct.from_response( response, model: WorkOS::AuthorizationResource, - filters: {before: before, limit: limit, order: order, organization_id: organization_id, resource_type_slug: resource_type_slug, resource_external_id: resource_external_id, search: search, parent: parent}, + filters: {before: before, limit: limit, order: order, organization_id: organization_id, resource_type_slug: resource_type_slug, resource_external_id: resource_external_id, parent: parent}, fetch_next: fetch_next ) end @@ -1067,6 +1079,7 @@ def list_memberships_for_resource( # @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. For example, if you make a list request and receive 100 objects, ending with `"obj_123"`, your subsequent call can include `after="obj_123"` to fetch a new batch of objects after `"obj_123"`. # @param limit [Integer, nil] Upper limit on the number of objects to return, between `1` and `100`. # @param order [WorkOS::Types::PaginationOrder, nil] Order the results by the creation time. Supported values are `"asc"` (ascending), `"desc"` (descending), and `"normal"` (descending with reversed cursor semantics where `before` fetches older records and `after` fetches newer records). Defaults to descending. + # @param role_slug [String, nil] Filter assignments by the slug of the role. # @param request_options [Hash] (see WorkOS::Types::RequestOptions) # @return [WorkOS::Types::ListStruct] def list_role_assignments_for_resource( @@ -1075,13 +1088,15 @@ def list_role_assignments_for_resource( after: nil, limit: 10, order: "desc", + role_slug: nil, request_options: {} ) params = { "before" => before, "after" => after, "limit" => limit, - "order" => order + "order" => order, + "role_slug" => role_slug }.compact response = @client.request( method: :get, @@ -1097,13 +1112,14 @@ def list_role_assignments_for_resource( after: cursor, limit: limit, order: order, + role_slug: role_slug, request_options: request_options ) } WorkOS::Types::ListStruct.from_response( response, model: WorkOS::UserRoleAssignment, - filters: {resource_id: resource_id, before: before, limit: limit, order: order}, + filters: {resource_id: resource_id, before: before, limit: limit, order: order, role_slug: role_slug}, fetch_next: fetch_next ) end diff --git a/lib/workos/client.rb b/lib/workos/client.rb index fa9b29bb..2a26a9ea 100644 --- a/lib/workos/client.rb +++ b/lib/workos/client.rb @@ -64,8 +64,8 @@ def user_management @user_management ||= WorkOS::UserManagement.new(self) end - def user_management_organization_membership_groups - @user_management_organization_membership_groups ||= WorkOS::UserManagementOrganizationMembershipGroups.new(self) + def organization_membership + @organization_membership ||= WorkOS::OrganizationMembershipService.new(self) end def webhooks diff --git a/lib/workos/user_management/create_user_organization_membership.rb b/lib/workos/organization_membership/create_user_organization_membership.rb similarity index 100% rename from lib/workos/user_management/create_user_organization_membership.rb rename to lib/workos/organization_membership/create_user_organization_membership.rb diff --git a/lib/workos/user_management/organization_membership.rb b/lib/workos/organization_membership/organization_membership.rb similarity index 100% rename from lib/workos/user_management/organization_membership.rb rename to lib/workos/organization_membership/organization_membership.rb diff --git a/lib/workos/user_management/update_user_organization_membership.rb b/lib/workos/organization_membership/update_user_organization_membership.rb similarity index 100% rename from lib/workos/user_management/update_user_organization_membership.rb rename to lib/workos/organization_membership/update_user_organization_membership.rb diff --git a/lib/workos/user_management/user_organization_membership.rb b/lib/workos/organization_membership/user_organization_membership.rb similarity index 100% rename from lib/workos/user_management/user_organization_membership.rb rename to lib/workos/organization_membership/user_organization_membership.rb diff --git a/lib/workos/organization_membership_service.rb b/lib/workos/organization_membership_service.rb new file mode 100644 index 00000000..1210018d --- /dev/null +++ b/lib/workos/organization_membership_service.rb @@ -0,0 +1,273 @@ +# frozen_string_literal: true + +# This file is auto-generated by oagen. Do not edit. + +require "json" + +module WorkOS + class OrganizationMembershipService + # Identifies the role (single variant). + # + # @!attribute [r] role_slug + # @return [String] + RoleSingle = Data.define(:role_slug) + + # Identifies the role (multiple variant). + # + # @!attribute [r] role_slugs + # @return [Array] + RoleMultiple = Data.define(:role_slugs) + + def initialize(client) + @client = client + end + + # List organization memberships + # @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. For example, if you make a list request and receive 100 objects, ending with `"obj_123"`, your subsequent call can include `before="obj_123"` to fetch a new batch of objects before `"obj_123"`. + # @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. For example, if you make a list request and receive 100 objects, ending with `"obj_123"`, your subsequent call can include `after="obj_123"` to fetch a new batch of objects after `"obj_123"`. + # @param limit [Integer, nil] Upper limit on the number of objects to return, between `1` and `100`. + # @param order [WorkOS::Types::PaginationOrder, nil] Order the results by the creation time. Supported values are `"asc"` (ascending), `"desc"` (descending), and `"normal"` (descending with reversed cursor semantics where `before` fetches older records and `after` fetches newer records). Defaults to descending. + # @param organization_id [String, nil] The ID of the [organization](https://workos.com/docs/reference/organization) which the user belongs to. + # @param statuses [Array, nil] Filter by the status of the organization membership. Array including any of `active`, `inactive`, or `pending`. + # @param user_id [String, nil] The ID of the [user](https://workos.com/docs/reference/authkit/user). + # @param request_options [Hash] (see WorkOS::Types::RequestOptions) + # @return [WorkOS::Types::ListStruct] + def list_organization_memberships( + before: nil, + after: nil, + limit: 10, + order: "desc", + organization_id: nil, + statuses: nil, + user_id: nil, + request_options: {} + ) + params = { + "before" => before, + "after" => after, + "limit" => limit, + "order" => order, + "organization_id" => organization_id, + "statuses" => statuses, + "user_id" => user_id + }.compact + response = @client.request( + method: :get, + path: "/user_management/organization_memberships", + auth: true, + params: params, + request_options: request_options + ) + fetch_next = ->(cursor) { + list_organization_memberships( + before: before, + after: cursor, + limit: limit, + order: order, + organization_id: organization_id, + statuses: statuses, + user_id: user_id, + request_options: request_options + ) + } + WorkOS::Types::ListStruct.from_response( + response, + model: WorkOS::UserOrganizationMembership, + filters: {before: before, limit: limit, order: order, organization_id: organization_id, statuses: statuses, user_id: user_id}, + fetch_next: fetch_next + ) + end + + # Create an organization membership + # @param user_id [String] The ID of the [user](https://workos.com/docs/reference/authkit/user). + # @param organization_id [String] The ID of the [organization](https://workos.com/docs/reference/organization) which the user belongs to. + # @param role [WorkOS::OrganizationMembershipService::RoleSingle, WorkOS::OrganizationMembershipService::RoleMultiple, nil] Identifies the role. + # @param request_options [Hash] (see WorkOS::Types::RequestOptions) + # @return [WorkOS::OrganizationMembership] + def create_organization_membership( + user_id:, + organization_id:, + role: nil, + request_options: {} + ) + body = { + "user_id" => user_id, + "organization_id" => organization_id + } + if role + case role + when WorkOS::OrganizationMembershipService::RoleSingle + body["role_slug"] = role.role_slug + when WorkOS::OrganizationMembershipService::RoleMultiple + body["role_slugs"] = role.role_slugs + else + raise ArgumentError, "expected role to be one of: WorkOS::OrganizationMembershipService::RoleSingle, WorkOS::OrganizationMembershipService::RoleMultiple, got #{role.class}" + end + end + response = @client.request( + method: :post, + path: "/user_management/organization_memberships", + auth: true, + body: body, + request_options: request_options + ) + result = WorkOS::OrganizationMembership.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 + + # Get an organization membership + # @param id [String] The unique ID of the organization membership. + # @param request_options [Hash] (see WorkOS::Types::RequestOptions) + # @return [WorkOS::UserOrganizationMembership] + def get_organization_membership( + id:, + request_options: {} + ) + response = @client.request( + method: :get, + path: "/user_management/organization_memberships/#{WorkOS::Util.encode_path(id)}", + auth: true, + request_options: request_options + ) + result = WorkOS::UserOrganizationMembership.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 an organization membership + # @param id [String] The unique ID of the organization membership. + # @param role [WorkOS::OrganizationMembershipService::RoleSingle, WorkOS::OrganizationMembershipService::RoleMultiple, nil] Identifies the role. + # @param request_options [Hash] (see WorkOS::Types::RequestOptions) + # @return [WorkOS::UserOrganizationMembership] + def update_organization_membership( + id:, + role: nil, + request_options: {} + ) + body = {} + if role + case role + when WorkOS::OrganizationMembershipService::RoleSingle + body["role_slug"] = role.role_slug + when WorkOS::OrganizationMembershipService::RoleMultiple + body["role_slugs"] = role.role_slugs + else + raise ArgumentError, "expected role to be one of: WorkOS::OrganizationMembershipService::RoleSingle, WorkOS::OrganizationMembershipService::RoleMultiple, got #{role.class}" + end + end + response = @client.request( + method: :put, + path: "/user_management/organization_memberships/#{WorkOS::Util.encode_path(id)}", + auth: true, + body: body, + request_options: request_options + ) + result = WorkOS::UserOrganizationMembership.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 organization membership + # @param id [String] The unique ID of the organization membership. + # @param request_options [Hash] (see WorkOS::Types::RequestOptions) + # @return [void] + def delete_organization_membership( + id:, + request_options: {} + ) + @client.request( + method: :delete, + path: "/user_management/organization_memberships/#{WorkOS::Util.encode_path(id)}", + auth: true, + request_options: request_options + ) + nil + end + + # Deactivate an organization membership + # @param id [String] The unique ID of the organization membership. + # @param request_options [Hash] (see WorkOS::Types::RequestOptions) + # @return [WorkOS::OrganizationMembership] + def deactivate_organization_membership( + id:, + request_options: {} + ) + response = @client.request( + method: :put, + path: "/user_management/organization_memberships/#{WorkOS::Util.encode_path(id)}/deactivate", + auth: true, + request_options: request_options + ) + result = WorkOS::OrganizationMembership.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 + + # Reactivate an organization membership + # @param id [String] The unique ID of the organization membership. + # @param request_options [Hash] (see WorkOS::Types::RequestOptions) + # @return [WorkOS::UserOrganizationMembership] + def reactivate_organization_membership( + id:, + request_options: {} + ) + response = @client.request( + method: :put, + path: "/user_management/organization_memberships/#{WorkOS::Util.encode_path(id)}/reactivate", + auth: true, + request_options: request_options + ) + result = WorkOS::UserOrganizationMembership.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 + + # List groups + # @param om_id [String] Unique identifier of the Organization Membership. + # @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. For example, if you make a list request and receive 100 objects, ending with `"obj_123"`, your subsequent call can include `before="obj_123"` to fetch a new batch of objects before `"obj_123"`. + # @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. For example, if you make a list request and receive 100 objects, ending with `"obj_123"`, your subsequent call can include `after="obj_123"` to fetch a new batch of objects after `"obj_123"`. + # @param limit [Integer, nil] Upper limit on the number of objects to return, between `1` and `100`. + # @param order [WorkOS::Types::PaginationOrder, nil] Order the results by the creation time. Supported values are `"asc"` (ascending), `"desc"` (descending), and `"normal"` (descending with reversed cursor semantics where `before` fetches older records and `after` fetches newer records). Defaults to descending. + # @param request_options [Hash] (see WorkOS::Types::RequestOptions) + # @return [WorkOS::Types::ListStruct] + def list_organization_membership_groups( + om_id:, + before: nil, + after: nil, + limit: 10, + order: "desc", + request_options: {} + ) + params = { + "before" => before, + "after" => after, + "limit" => limit, + "order" => order + }.compact + response = @client.request( + method: :get, + path: "/user_management/organization_memberships/#{WorkOS::Util.encode_path(om_id)}/groups", + auth: true, + params: params, + request_options: request_options + ) + fetch_next = ->(cursor) { + list_organization_membership_groups( + om_id: om_id, + before: before, + after: cursor, + limit: limit, + order: order, + request_options: request_options + ) + } + WorkOS::Types::ListStruct.from_response( + response, + model: WorkOS::Group, + filters: {om_id: om_id, before: before, limit: limit, order: order}, + fetch_next: fetch_next + ) + end + end +end diff --git a/lib/workos/organizations/audit_logs_retention.rb b/lib/workos/organizations/audit_logs_retention.rb index c7fe1ab2..7f16c6c7 100644 --- a/lib/workos/organizations/audit_logs_retention.rb +++ b/lib/workos/organizations/audit_logs_retention.rb @@ -2,12 +2,8 @@ # This file is auto-generated by oagen. Do not edit. -require "json" - module WorkOS - class AuditLogsRetention - include HashProvider - + class AuditLogsRetention < WorkOS::Types::BaseModel HASH_ATTRS = { retention_period_in_days: :retention_period_in_days }.freeze @@ -15,8 +11,7 @@ class AuditLogsRetention attr_accessor :retention_period_in_days def initialize(json) - hash = json.is_a?(Hash) ? json : JSON.parse(json, symbolize_names: true) - hash = hash.transform_keys(&:to_sym) if hash.keys.first.is_a?(String) + hash = self.class.normalize(json) @retention_period_in_days = hash[:retention_period_in_days] end end diff --git a/lib/workos/organizations/audit_logs_retention_json.rb b/lib/workos/organizations/audit_logs_retention_json.rb deleted file mode 100644 index f3ed1b6e..00000000 --- a/lib/workos/organizations/audit_logs_retention_json.rb +++ /dev/null @@ -1,18 +0,0 @@ -# frozen_string_literal: true - -# This file is auto-generated by oagen. Do not edit. - -module WorkOS - class AuditLogsRetentionJson < WorkOS::Types::BaseModel - HASH_ATTRS = { - retention_period_in_days: :retention_period_in_days - }.freeze - - attr_accessor :retention_period_in_days - - def initialize(json) - hash = self.class.normalize(json) - @retention_period_in_days = hash[:retention_period_in_days] - end - end -end diff --git a/lib/workos/types/audit_log_export_json_state.rb b/lib/workos/types/audit_log_export_json_state.rb deleted file mode 100644 index a3ddd394..00000000 --- a/lib/workos/types/audit_log_export_json_state.rb +++ /dev/null @@ -1,14 +0,0 @@ -# frozen_string_literal: true - -# This file is auto-generated by oagen. Do not edit. - -module WorkOS - module Types - class AuditLogExportJsonState - PENDING = "pending" - READY = "ready" - ERROR = "error" - ALL = [PENDING, READY, ERROR].freeze - end - end -end diff --git a/lib/workos/types/webhook_endpoint_json_status.rb b/lib/workos/types/webhook_endpoint_json_status.rb deleted file mode 100644 index 1403fbee..00000000 --- a/lib/workos/types/webhook_endpoint_json_status.rb +++ /dev/null @@ -1,9 +0,0 @@ -# frozen_string_literal: true - -# This file is auto-generated by oagen. Do not edit. - -module WorkOS - module Types - WebhookEndpointJsonStatus = UpdateWebhookEndpointStatus - end -end diff --git a/lib/workos/types/webhook_endpoint_status.rb b/lib/workos/types/webhook_endpoint_status.rb index d44d79c0..7ff281b0 100644 --- a/lib/workos/types/webhook_endpoint_status.rb +++ b/lib/workos/types/webhook_endpoint_status.rb @@ -4,10 +4,6 @@ module WorkOS module Types - class WebhookEndpointStatus - ENABLED = "enabled" - DISABLED = "disabled" - ALL = [ENABLED, DISABLED].freeze - end + WebhookEndpointStatus = UpdateWebhookEndpointStatus end end diff --git a/lib/workos/user_management.rb b/lib/workos/user_management.rb index d6a7e012..a6b0ccc5 100644 --- a/lib/workos/user_management.rb +++ b/lib/workos/user_management.rb @@ -20,18 +20,6 @@ class UserManagement # @return [WorkOS::Types::CreateUserPasswordHashType] PasswordHashed = Data.define(:password_hash, :password_hash_type) - # Identifies the role (single variant). - # - # @!attribute [r] role_slug - # @return [String] - RoleSingle = Data.define(:role_slug) - - # Identifies the role (multiple variant). - # - # @!attribute [r] role_slugs - # @return [Array] - RoleMultiple = Data.define(:role_slugs) - def initialize(client) @client = client end @@ -1227,207 +1215,6 @@ def get_magic_auth( result end - # List organization memberships - # @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. For example, if you make a list request and receive 100 objects, ending with `"obj_123"`, your subsequent call can include `before="obj_123"` to fetch a new batch of objects before `"obj_123"`. - # @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. For example, if you make a list request and receive 100 objects, ending with `"obj_123"`, your subsequent call can include `after="obj_123"` to fetch a new batch of objects after `"obj_123"`. - # @param limit [Integer, nil] Upper limit on the number of objects to return, between `1` and `100`. - # @param order [WorkOS::Types::PaginationOrder, nil] Order the results by the creation time. Supported values are `"asc"` (ascending), `"desc"` (descending), and `"normal"` (descending with reversed cursor semantics where `before` fetches older records and `after` fetches newer records). Defaults to descending. - # @param organization_id [String, nil] The ID of the [organization](https://workos.com/docs/reference/organization) which the user belongs to. - # @param statuses [Array, nil] Filter by the status of the organization membership. Array including any of `active`, `inactive`, or `pending`. - # @param user_id [String, nil] The ID of the [user](https://workos.com/docs/reference/authkit/user). - # @param request_options [Hash] (see WorkOS::Types::RequestOptions) - # @return [WorkOS::Types::ListStruct] - def list_organization_memberships( - before: nil, - after: nil, - limit: 10, - order: "desc", - organization_id: nil, - statuses: nil, - user_id: nil, - request_options: {} - ) - params = { - "before" => before, - "after" => after, - "limit" => limit, - "order" => order, - "organization_id" => organization_id, - "statuses" => statuses, - "user_id" => user_id - }.compact - response = @client.request( - method: :get, - path: "/user_management/organization_memberships", - auth: true, - params: params, - request_options: request_options - ) - fetch_next = ->(cursor) { - list_organization_memberships( - before: before, - after: cursor, - limit: limit, - order: order, - organization_id: organization_id, - statuses: statuses, - user_id: user_id, - request_options: request_options - ) - } - WorkOS::Types::ListStruct.from_response( - response, - model: WorkOS::UserOrganizationMembership, - filters: {before: before, limit: limit, order: order, organization_id: organization_id, statuses: statuses, user_id: user_id}, - fetch_next: fetch_next - ) - end - - # Create an organization membership - # @param user_id [String] The ID of the [user](https://workos.com/docs/reference/authkit/user). - # @param organization_id [String] The ID of the [organization](https://workos.com/docs/reference/organization) which the user belongs to. - # @param role [WorkOS::UserManagement::RoleSingle, WorkOS::UserManagement::RoleMultiple, nil] Identifies the role. - # @param request_options [Hash] (see WorkOS::Types::RequestOptions) - # @return [WorkOS::OrganizationMembership] - def create_organization_membership( - user_id:, - organization_id:, - role: nil, - request_options: {} - ) - body = { - "user_id" => user_id, - "organization_id" => organization_id - } - if role - case role - when WorkOS::UserManagement::RoleSingle - body["role_slug"] = role.role_slug - when WorkOS::UserManagement::RoleMultiple - body["role_slugs"] = role.role_slugs - else - raise ArgumentError, "expected role to be one of: WorkOS::UserManagement::RoleSingle, WorkOS::UserManagement::RoleMultiple, got #{role.class}" - end - end - response = @client.request( - method: :post, - path: "/user_management/organization_memberships", - auth: true, - body: body, - request_options: request_options - ) - result = WorkOS::OrganizationMembership.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 - - # Get an organization membership - # @param id [String] The unique ID of the organization membership. - # @param request_options [Hash] (see WorkOS::Types::RequestOptions) - # @return [WorkOS::UserOrganizationMembership] - def get_organization_membership( - id:, - request_options: {} - ) - response = @client.request( - method: :get, - path: "/user_management/organization_memberships/#{WorkOS::Util.encode_path(id)}", - auth: true, - request_options: request_options - ) - result = WorkOS::UserOrganizationMembership.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 an organization membership - # @param id [String] The unique ID of the organization membership. - # @param role [WorkOS::UserManagement::RoleSingle, WorkOS::UserManagement::RoleMultiple, nil] Identifies the role. - # @param request_options [Hash] (see WorkOS::Types::RequestOptions) - # @return [WorkOS::UserOrganizationMembership] - def update_organization_membership( - id:, - role: nil, - request_options: {} - ) - body = {} - if role - case role - when WorkOS::UserManagement::RoleSingle - body["role_slug"] = role.role_slug - when WorkOS::UserManagement::RoleMultiple - body["role_slugs"] = role.role_slugs - else - raise ArgumentError, "expected role to be one of: WorkOS::UserManagement::RoleSingle, WorkOS::UserManagement::RoleMultiple, got #{role.class}" - end - end - response = @client.request( - method: :put, - path: "/user_management/organization_memberships/#{WorkOS::Util.encode_path(id)}", - auth: true, - body: body, - request_options: request_options - ) - result = WorkOS::UserOrganizationMembership.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 organization membership - # @param id [String] The unique ID of the organization membership. - # @param request_options [Hash] (see WorkOS::Types::RequestOptions) - # @return [void] - def delete_organization_membership( - id:, - request_options: {} - ) - @client.request( - method: :delete, - path: "/user_management/organization_memberships/#{WorkOS::Util.encode_path(id)}", - auth: true, - request_options: request_options - ) - nil - end - - # Deactivate an organization membership - # @param id [String] The unique ID of the organization membership. - # @param request_options [Hash] (see WorkOS::Types::RequestOptions) - # @return [WorkOS::OrganizationMembership] - def deactivate_organization_membership( - id:, - request_options: {} - ) - response = @client.request( - method: :put, - path: "/user_management/organization_memberships/#{WorkOS::Util.encode_path(id)}/deactivate", - auth: true, - request_options: request_options - ) - result = WorkOS::OrganizationMembership.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 - - # Reactivate an organization membership - # @param id [String] The unique ID of the organization membership. - # @param request_options [Hash] (see WorkOS::Types::RequestOptions) - # @return [WorkOS::UserOrganizationMembership] - def reactivate_organization_membership( - id:, - request_options: {} - ) - response = @client.request( - method: :put, - path: "/user_management/organization_memberships/#{WorkOS::Util.encode_path(id)}/reactivate", - auth: true, - request_options: request_options - ) - result = WorkOS::UserOrganizationMembership.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 - # Create a redirect URI # @param uri [String] The redirect URI to create. # @param request_options [Hash] (see WorkOS::Types::RequestOptions) diff --git a/lib/workos/user_management_organization_membership_groups.rb b/lib/workos/user_management_organization_membership_groups.rb deleted file mode 100644 index f2cad83f..00000000 --- a/lib/workos/user_management_organization_membership_groups.rb +++ /dev/null @@ -1,60 +0,0 @@ -# frozen_string_literal: true - -# This file is auto-generated by oagen. Do not edit. - -require "json" - -module WorkOS - class UserManagementOrganizationMembershipGroups - def initialize(client) - @client = client - end - - # List groups - # @param om_id [String] Unique identifier of the Organization Membership. - # @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. For example, if you make a list request and receive 100 objects, ending with `"obj_123"`, your subsequent call can include `before="obj_123"` to fetch a new batch of objects before `"obj_123"`. - # @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. For example, if you make a list request and receive 100 objects, ending with `"obj_123"`, your subsequent call can include `after="obj_123"` to fetch a new batch of objects after `"obj_123"`. - # @param limit [Integer, nil] Upper limit on the number of objects to return, between `1` and `100`. - # @param order [WorkOS::Types::PaginationOrder, nil] Order the results by the creation time. Supported values are `"asc"` (ascending), `"desc"` (descending), and `"normal"` (descending with reversed cursor semantics where `before` fetches older records and `after` fetches newer records). Defaults to descending. - # @param request_options [Hash] (see WorkOS::Types::RequestOptions) - # @return [WorkOS::Types::ListStruct] - def list_organization_membership_groups( - om_id:, - before: nil, - after: nil, - limit: 10, - order: "desc", - request_options: {} - ) - params = { - "before" => before, - "after" => after, - "limit" => limit, - "order" => order - }.compact - response = @client.request( - method: :get, - path: "/user_management/organization_memberships/#{WorkOS::Util.encode_path(om_id)}/groups", - auth: true, - params: params, - request_options: request_options - ) - fetch_next = ->(cursor) { - list_organization_membership_groups( - om_id: om_id, - before: before, - after: cursor, - limit: limit, - order: order, - request_options: request_options - ) - } - WorkOS::Types::ListStruct.from_response( - response, - model: WorkOS::Group, - filters: {om_id: om_id, before: before, limit: limit, order: order}, - fetch_next: fetch_next - ) - end - end -end diff --git a/lib/workos/webhooks.rb b/lib/workos/webhooks.rb index 1b77bc19..e6d5644d 100644 --- a/lib/workos/webhooks.rb +++ b/lib/workos/webhooks.rb @@ -3,6 +3,7 @@ # This file is auto-generated by oagen. Do not edit. require "json" +require "openssl" module WorkOS class Webhooks @@ -16,7 +17,7 @@ def initialize(client) # @param limit [Integer, nil] Upper limit on the number of objects to return, between `1` and `100`. # @param order [WorkOS::Types::PaginationOrder, nil] Order the results by the creation time. Supported values are `"asc"` (ascending), `"desc"` (descending), and `"normal"` (descending with reversed cursor semantics where `before` fetches older records and `after` fetches newer records). Defaults to descending. # @param request_options [Hash] (see WorkOS::Types::RequestOptions) - # @return [WorkOS::Types::ListStruct] + # @return [WorkOS::Types::ListStruct] def list_webhook_endpoints( before: nil, after: nil, @@ -48,7 +49,7 @@ def list_webhook_endpoints( } WorkOS::Types::ListStruct.from_response( response, - model: WorkOS::WebhookEndpointJson, + model: WorkOS::WebhookEndpoint, filters: {before: before, limit: limit, order: order}, fetch_next: fetch_next ) @@ -58,7 +59,7 @@ def list_webhook_endpoints( # @param endpoint_url [String] The HTTPS URL where webhooks will be sent. # @param events [Array] The events that the Webhook Endpoint is subscribed to. # @param request_options [Hash] (see WorkOS::Types::RequestOptions) - # @return [WorkOS::WebhookEndpointJson] + # @return [WorkOS::WebhookEndpoint] def create_webhook_endpoint( endpoint_url:, events:, @@ -75,7 +76,7 @@ def create_webhook_endpoint( body: body, request_options: request_options ) - result = WorkOS::WebhookEndpointJson.new(response.body) + result = WorkOS::WebhookEndpoint.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 @@ -86,7 +87,7 @@ def create_webhook_endpoint( # @param status [WorkOS::Types::UpdateWebhookEndpointStatus, nil] Whether the Webhook Endpoint is enabled or disabled. # @param events [Array, nil] The events that the Webhook Endpoint is subscribed to. # @param request_options [Hash] (see WorkOS::Types::RequestOptions) - # @return [WorkOS::WebhookEndpointJson] + # @return [WorkOS::WebhookEndpoint] def update_webhook_endpoint( id:, endpoint_url: nil, @@ -106,7 +107,7 @@ def update_webhook_endpoint( body: body, request_options: request_options ) - result = WorkOS::WebhookEndpointJson.new(response.body) + result = WorkOS::WebhookEndpoint.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 @@ -129,8 +130,6 @@ def delete_webhook_endpoint( end # @oagen-ignore-start — non-spec helpers (hand-maintained) - require "openssl" - DEFAULT_TOLERANCE_SECONDS = 180 # Verify a webhook signature and return a typed event struct. diff --git a/lib/workos/webhooks/webhook_endpoint.rb b/lib/workos/webhooks/webhook_endpoint.rb index e3b9abb0..6a109482 100644 --- a/lib/workos/webhooks/webhook_endpoint.rb +++ b/lib/workos/webhooks/webhook_endpoint.rb @@ -2,12 +2,8 @@ # This file is auto-generated by oagen. Do not edit. -require "json" - module WorkOS - class WebhookEndpoint - include HashProvider - + class WebhookEndpoint < WorkOS::Types::BaseModel HASH_ATTRS = { object: :object, id: :id, @@ -30,8 +26,7 @@ class WebhookEndpoint :updated_at def initialize(json) - hash = json.is_a?(Hash) ? json : JSON.parse(json, symbolize_names: true) - hash = hash.transform_keys(&:to_sym) if hash.keys.first.is_a?(String) + hash = self.class.normalize(json) @object = hash[:object] @id = hash[:id] @endpoint_url = hash[:endpoint_url] diff --git a/lib/workos/webhooks/webhook_endpoint_json.rb b/lib/workos/webhooks/webhook_endpoint_json.rb deleted file mode 100644 index a033e364..00000000 --- a/lib/workos/webhooks/webhook_endpoint_json.rb +++ /dev/null @@ -1,40 +0,0 @@ -# frozen_string_literal: true - -# This file is auto-generated by oagen. Do not edit. - -module WorkOS - class WebhookEndpointJson < WorkOS::Types::BaseModel - HASH_ATTRS = { - object: :object, - id: :id, - endpoint_url: :endpoint_url, - secret: :secret, - status: :status, - events: :events, - created_at: :created_at, - updated_at: :updated_at - }.freeze - - attr_accessor \ - :object, - :id, - :endpoint_url, - :secret, - :status, - :events, - :created_at, - :updated_at - - def initialize(json) - hash = self.class.normalize(json) - @object = hash[:object] - @id = hash[:id] - @endpoint_url = hash[:endpoint_url] - @secret = hash[:secret] - @status = hash[:status] - @events = hash[:events] || [] - @created_at = hash[:created_at] - @updated_at = hash[:updated_at] - end - end -end diff --git a/rbi/workos/audit_log_action.rbi b/rbi/workos/audit_log_action.rbi index 4185bd10..3560e751 100644 --- a/rbi/workos/audit_log_action.rbi +++ b/rbi/workos/audit_log_action.rbi @@ -1,4 +1,5 @@ # frozen_string_literal: true + # This file is auto-generated by oagen. Do not edit. # typed: strong @@ -20,10 +21,10 @@ module WorkOS sig { params(value: String).returns(String) } def name=(value); end - sig { returns(WorkOS::AuditLogSchema) } + sig { returns(WorkOS::AuditLogSchemaJson) } def schema; end - sig { params(value: WorkOS::AuditLogSchema).returns(WorkOS::AuditLogSchema) } + sig { params(value: WorkOS::AuditLogSchemaJson).returns(WorkOS::AuditLogSchemaJson) } def schema=(value); end sig { returns(String) } diff --git a/rbi/workos/audit_log_action_json.rbi b/rbi/workos/audit_log_action_json.rbi deleted file mode 100644 index f88f196d..00000000 --- a/rbi/workos/audit_log_action_json.rbi +++ /dev/null @@ -1,48 +0,0 @@ -# frozen_string_literal: true - -# This file is auto-generated by oagen. Do not edit. - -# typed: strong - -module WorkOS - class AuditLogActionJson - 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 name; end - - sig { params(value: String).returns(String) } - def name=(value); end - - sig { returns(WorkOS::AuditLogSchemaJson) } - def schema; end - - sig { params(value: WorkOS::AuditLogSchemaJson).returns(WorkOS::AuditLogSchemaJson) } - def schema=(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/audit_log_export.rbi b/rbi/workos/audit_log_export.rbi index f2cbe49a..fb349eb2 100644 --- a/rbi/workos/audit_log_export.rbi +++ b/rbi/workos/audit_log_export.rbi @@ -1,4 +1,5 @@ # frozen_string_literal: true + # This file is auto-generated by oagen. Do not edit. # typed: strong diff --git a/rbi/workos/audit_log_export_json.rbi b/rbi/workos/audit_log_export_json.rbi deleted file mode 100644 index acdb6312..00000000 --- a/rbi/workos/audit_log_export_json.rbi +++ /dev/null @@ -1,54 +0,0 @@ -# frozen_string_literal: true - -# This file is auto-generated by oagen. Do not edit. - -# typed: strong - -module WorkOS - class AuditLogExportJson - 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(String) } - def state; end - - sig { params(value: String).returns(String) } - def state=(value); end - - sig { returns(T.nilable(String)) } - def url; end - - sig { params(value: T.nilable(String)).returns(T.nilable(String)) } - def url=(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/audit_log_schema.rbi b/rbi/workos/audit_log_schema_dto.rbi similarity index 97% rename from rbi/workos/audit_log_schema.rbi rename to rbi/workos/audit_log_schema_dto.rbi index 580253b6..03dd5f00 100644 --- a/rbi/workos/audit_log_schema.rbi +++ b/rbi/workos/audit_log_schema_dto.rbi @@ -5,7 +5,7 @@ # typed: strong module WorkOS - class AuditLogSchema + class AuditLogSchemaDto sig { params(json: T.any(String, T::Hash[Symbol, T.untyped])).void } def initialize(json); end diff --git a/rbi/workos/audit_logs.rbi b/rbi/workos/audit_logs.rbi index b022e197..cf4532a8 100644 --- a/rbi/workos/audit_logs.rbi +++ b/rbi/workos/audit_logs.rbi @@ -13,7 +13,7 @@ module WorkOS params( id: String, request_options: T::Hash[Symbol, T.untyped] - ).returns(WorkOS::AuditLogsRetentionJson) + ).returns(WorkOS::AuditLogsRetention) end def get_organization_audit_logs_retention(id:, request_options:); end @@ -22,7 +22,7 @@ module WorkOS id: String, retention_period_in_days: Integer, request_options: T::Hash[Symbol, T.untyped] - ).returns(WorkOS::AuditLogsRetentionJson) + ).returns(WorkOS::AuditLogsRetention) end def update_organization_audit_logs_retention(id:, retention_period_in_days:, request_options:); end @@ -33,7 +33,7 @@ module WorkOS limit: T.nilable(Integer), order: T.nilable(String), request_options: T::Hash[Symbol, T.untyped] - ).returns(T::Array[WorkOS::AuditLogActionJson]) + ).returns(T::Array[WorkOS::AuditLogAction]) end def list_actions(before:, after:, limit:, order:, request_options:); end @@ -80,7 +80,7 @@ module WorkOS actor_ids: T.nilable(T::Array[String]), targets: T.nilable(T::Array[String]), request_options: T::Hash[Symbol, T.untyped] - ).returns(WorkOS::AuditLogExportJson) + ).returns(WorkOS::AuditLogExport) end def create_export(organization_id:, range_start:, range_end:, actions:, actors:, actor_names:, actor_ids:, targets:, request_options:); end @@ -88,7 +88,7 @@ module WorkOS params( audit_log_export_id: String, request_options: T::Hash[Symbol, T.untyped] - ).returns(WorkOS::AuditLogExportJson) + ).returns(WorkOS::AuditLogExport) end def get_export(audit_log_export_id:, request_options:); end diff --git a/rbi/workos/audit_logs_retention.rbi b/rbi/workos/audit_logs_retention.rbi index 4ca26347..e87a1fa6 100644 --- a/rbi/workos/audit_logs_retention.rbi +++ b/rbi/workos/audit_logs_retention.rbi @@ -1,4 +1,5 @@ # frozen_string_literal: true + # This file is auto-generated by oagen. Do not edit. # typed: strong diff --git a/rbi/workos/audit_logs_retention_json.rbi b/rbi/workos/audit_logs_retention_json.rbi deleted file mode 100644 index 151b6d7a..00000000 --- a/rbi/workos/audit_logs_retention_json.rbi +++ /dev/null @@ -1,24 +0,0 @@ -# frozen_string_literal: true - -# This file is auto-generated by oagen. Do not edit. - -# typed: strong - -module WorkOS - class AuditLogsRetentionJson - sig { params(json: T.any(String, T::Hash[Symbol, T.untyped])).void } - def initialize(json); end - - sig { returns(T.nilable(Integer)) } - def retention_period_in_days; end - - sig { params(value: T.nilable(Integer)).returns(T.nilable(Integer)) } - def retention_period_in_days=(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/authorization.rbi b/rbi/workos/authorization.rbi index 6d2d35e0..66cf9440 100644 --- a/rbi/workos/authorization.rbi +++ b/rbi/workos/authorization.rbi @@ -151,10 +151,13 @@ module WorkOS after: T.nilable(String), limit: T.nilable(Integer), order: T.nilable(String), + resource_id: T.nilable(String), + resource_external_id: T.nilable(String), + resource_type_slug: T.nilable(String), request_options: T::Hash[Symbol, T.untyped] ).returns(WorkOS::Types::ListStruct) end - def list_role_assignments(organization_membership_id:, before:, after:, limit:, order:, request_options:); end + def list_role_assignments(organization_membership_id:, before:, after:, limit:, order:, resource_id:, resource_external_id:, resource_type_slug:, request_options:); end sig do params( @@ -322,10 +325,11 @@ module WorkOS after: T.nilable(String), limit: T.nilable(Integer), order: T.nilable(String), + role_slug: T.nilable(String), request_options: T::Hash[Symbol, T.untyped] ).returns(WorkOS::Types::ListStruct) end - def list_role_assignments_for_resource_by_external_id(organization_id:, resource_type_slug:, external_id:, before:, after:, limit:, order:, request_options:); end + def list_role_assignments_for_resource_by_external_id(organization_id:, resource_type_slug:, external_id:, before:, after:, limit:, order:, role_slug:, request_options:); end sig do params( @@ -336,12 +340,11 @@ module WorkOS organization_id: T.nilable(String), resource_type_slug: T.nilable(String), resource_external_id: T.nilable(String), - search: T.nilable(String), parent: T.nilable(T.any(WorkOS::Authorization::ParentById, WorkOS::Authorization::ParentByExternalId)), request_options: T::Hash[Symbol, T.untyped] ).returns(WorkOS::Types::ListStruct) end - def list_resources(before:, after:, limit:, order:, organization_id:, resource_type_slug:, resource_external_id:, search:, parent:, request_options:); end + def list_resources(before:, after:, limit:, order:, organization_id:, resource_type_slug:, resource_external_id:, parent:, request_options:); end sig do params( @@ -405,10 +408,11 @@ module WorkOS after: T.nilable(String), limit: T.nilable(Integer), order: T.nilable(String), + role_slug: T.nilable(String), request_options: T::Hash[Symbol, T.untyped] ).returns(WorkOS::Types::ListStruct) end - def list_role_assignments_for_resource(resource_id:, before:, after:, limit:, order:, request_options:); end + def list_role_assignments_for_resource(resource_id:, before:, after:, limit:, order:, role_slug:, request_options:); end sig do params( diff --git a/rbi/workos/client.rbi b/rbi/workos/client.rbi index d2cf6514..01132932 100644 --- a/rbi/workos/client.rbi +++ b/rbi/workos/client.rbi @@ -16,7 +16,7 @@ module WorkOS def authorization; end sig { returns(WorkOS::SSO) } - def s_s_o; end + def sso; end sig { returns(WorkOS::Pipes) } def pipes; end @@ -54,8 +54,8 @@ module WorkOS sig { returns(WorkOS::UserManagement) } def user_management; end - sig { returns(WorkOS::UserManagementOrganizationMembershipGroups) } - def user_management_organization_membership_groups; end + sig { returns(WorkOS::OrganizationMembershipService) } + def organization_membership; end sig { returns(WorkOS::Webhooks) } def webhooks; end diff --git a/rbi/workos/organization_membership_service.rbi b/rbi/workos/organization_membership_service.rbi new file mode 100644 index 00000000..5cb747e6 --- /dev/null +++ b/rbi/workos/organization_membership_service.rbi @@ -0,0 +1,114 @@ +# frozen_string_literal: true + +# This file is auto-generated by oagen. Do not edit. + +# typed: strong + +module WorkOS + class OrganizationMembershipService + class RoleSingle + sig { returns(String) } + def role_slug; end + + sig do + params( + role_slug: String + ).returns(WorkOS::OrganizationMembershipService::RoleSingle) + end + def self.new(role_slug:); end + end + + class RoleMultiple + sig { returns(T::Array[String]) } + def role_slugs; end + + sig do + params( + role_slugs: T::Array[String] + ).returns(WorkOS::OrganizationMembershipService::RoleMultiple) + end + def self.new(role_slugs:); end + end + + sig { params(client: WorkOS::BaseClient).void } + def initialize(client); end + + sig do + params( + before: T.nilable(String), + after: T.nilable(String), + limit: T.nilable(Integer), + order: T.nilable(String), + organization_id: T.nilable(String), + statuses: T.nilable(T::Array[String]), + user_id: T.nilable(String), + request_options: T::Hash[Symbol, T.untyped] + ).returns(T::Array[WorkOS::UserOrganizationMembership]) + end + def list_organization_memberships(before:, after:, limit:, order:, organization_id:, statuses:, user_id:, request_options:); end + + sig do + params( + user_id: String, + organization_id: String, + role: T.nilable(T.any(WorkOS::OrganizationMembershipService::RoleSingle, WorkOS::OrganizationMembershipService::RoleMultiple)), + request_options: T::Hash[Symbol, T.untyped] + ).returns(WorkOS::OrganizationMembership) + end + def create_organization_membership(user_id:, organization_id:, role:, request_options:); end + + sig do + params( + id: String, + request_options: T::Hash[Symbol, T.untyped] + ).returns(WorkOS::UserOrganizationMembership) + end + def get_organization_membership(id:, request_options:); end + + sig do + params( + id: String, + role: T.nilable(T.any(WorkOS::OrganizationMembershipService::RoleSingle, WorkOS::OrganizationMembershipService::RoleMultiple)), + request_options: T::Hash[Symbol, T.untyped] + ).returns(WorkOS::UserOrganizationMembership) + end + def update_organization_membership(id:, role:, request_options:); end + + sig do + params( + id: String, + request_options: T::Hash[Symbol, T.untyped] + ).returns(NilClass) + end + def delete_organization_membership(id:, request_options:); end + + sig do + params( + id: String, + request_options: T::Hash[Symbol, T.untyped] + ).returns(WorkOS::OrganizationMembership) + end + def deactivate_organization_membership(id:, request_options:); end + + sig do + params( + id: String, + request_options: T::Hash[Symbol, T.untyped] + ).returns(WorkOS::UserOrganizationMembership) + end + def reactivate_organization_membership(id:, request_options:); end + + sig do + params( + om_id: String, + before: T.nilable(String), + after: T.nilable(String), + limit: T.nilable(Integer), + order: T.nilable(String), + request_options: T::Hash[Symbol, T.untyped] + ).returns(WorkOS::Types::ListStruct) + end + def list_organization_membership_groups(om_id:, before:, after:, limit:, order:, request_options:); end + + end +end diff --git a/rbi/workos/user_management.rbi b/rbi/workos/user_management.rbi index c0e19532..cf308f49 100644 --- a/rbi/workos/user_management.rbi +++ b/rbi/workos/user_management.rbi @@ -34,30 +34,6 @@ module WorkOS def self.new(password_hash:, password_hash_type:); end end - class RoleSingle - sig { returns(String) } - def role_slug; end - - sig do - params( - role_slug: String - ).returns(WorkOS::UserManagement::RoleSingle) - end - def self.new(role_slug:); end - end - - class RoleMultiple - sig { returns(T::Array[String]) } - def role_slugs; end - - sig do - params( - role_slugs: T::Array[String] - ).returns(WorkOS::UserManagement::RoleMultiple) - end - def self.new(role_slugs:); end - end - sig { params(client: WorkOS::BaseClient).void } def initialize(client); end @@ -365,71 +341,6 @@ module WorkOS end def get_magic_auth(id:, request_options:); end - sig do - params( - before: T.nilable(String), - after: T.nilable(String), - limit: T.nilable(Integer), - order: T.nilable(String), - organization_id: T.nilable(String), - statuses: T.nilable(T::Array[String]), - user_id: T.nilable(String), - request_options: T::Hash[Symbol, T.untyped] - ).returns(T::Array[WorkOS::UserOrganizationMembership]) - end - def list_organization_memberships(before:, after:, limit:, order:, organization_id:, statuses:, user_id:, request_options:); end - - sig do - params( - user_id: String, - organization_id: String, - role: T.nilable(T.any(WorkOS::UserManagement::RoleSingle, WorkOS::UserManagement::RoleMultiple)), - request_options: T::Hash[Symbol, T.untyped] - ).returns(WorkOS::OrganizationMembership) - end - def create_organization_membership(user_id:, organization_id:, role:, request_options:); end - - sig do - params( - id: String, - request_options: T::Hash[Symbol, T.untyped] - ).returns(WorkOS::UserOrganizationMembership) - end - def get_organization_membership(id:, request_options:); end - - sig do - params( - id: String, - role: T.nilable(T.any(WorkOS::UserManagement::RoleSingle, WorkOS::UserManagement::RoleMultiple)), - request_options: T::Hash[Symbol, T.untyped] - ).returns(WorkOS::UserOrganizationMembership) - end - def update_organization_membership(id:, role:, request_options:); end - - sig do - params( - id: String, - request_options: T::Hash[Symbol, T.untyped] - ).returns(NilClass) - end - def delete_organization_membership(id:, request_options:); end - - sig do - params( - id: String, - request_options: T::Hash[Symbol, T.untyped] - ).returns(WorkOS::OrganizationMembership) - end - def deactivate_organization_membership(id:, request_options:); end - - sig do - params( - id: String, - request_options: T::Hash[Symbol, T.untyped] - ).returns(WorkOS::UserOrganizationMembership) - end - def reactivate_organization_membership(id:, request_options:); end - sig do params( uri: String, diff --git a/rbi/workos/user_management_organization_membership_groups.rbi b/rbi/workos/user_management_organization_membership_groups.rbi deleted file mode 100644 index a4b8f5d5..00000000 --- a/rbi/workos/user_management_organization_membership_groups.rbi +++ /dev/null @@ -1,25 +0,0 @@ -# frozen_string_literal: true - -# This file is auto-generated by oagen. Do not edit. - -# typed: strong - -module WorkOS - class UserManagementOrganizationMembershipGroups - sig { params(client: WorkOS::BaseClient).void } - def initialize(client); end - - sig do - params( - om_id: String, - before: T.nilable(String), - after: T.nilable(String), - limit: T.nilable(Integer), - order: T.nilable(String), - request_options: T::Hash[Symbol, T.untyped] - ).returns(WorkOS::Types::ListStruct) - end - def list_organization_membership_groups(om_id:, before:, after:, limit:, order:, request_options:); end - - end -end diff --git a/rbi/workos/webhook_endpoint.rbi b/rbi/workos/webhook_endpoint.rbi index b752841c..092ffa77 100644 --- a/rbi/workos/webhook_endpoint.rbi +++ b/rbi/workos/webhook_endpoint.rbi @@ -1,4 +1,5 @@ # frozen_string_literal: true + # This file is auto-generated by oagen. Do not edit. # typed: strong diff --git a/rbi/workos/webhook_endpoint_json.rbi b/rbi/workos/webhook_endpoint_json.rbi deleted file mode 100644 index 23b74d0e..00000000 --- a/rbi/workos/webhook_endpoint_json.rbi +++ /dev/null @@ -1,66 +0,0 @@ -# frozen_string_literal: true - -# This file is auto-generated by oagen. Do not edit. - -# typed: strong - -module WorkOS - class WebhookEndpointJson - 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(String) } - def endpoint_url; end - - sig { params(value: String).returns(String) } - def endpoint_url=(value); end - - sig { returns(String) } - def secret; end - - sig { params(value: String).returns(String) } - def secret=(value); end - - sig { returns(String) } - def status; end - - sig { params(value: String).returns(String) } - def status=(value); end - - sig { returns(T::Array[String]) } - def events; end - - sig { params(value: T::Array[String]).returns(T::Array[String]) } - def events=(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/webhooks.rbi b/rbi/workos/webhooks.rbi index 7a45a24f..e6a546f2 100644 --- a/rbi/workos/webhooks.rbi +++ b/rbi/workos/webhooks.rbi @@ -25,7 +25,7 @@ module WorkOS endpoint_url: String, events: T::Array[String], request_options: T::Hash[Symbol, T.untyped] - ).returns(WorkOS::WebhookEndpointJson) + ).returns(WorkOS::WebhookEndpoint) end def create_webhook_endpoint(endpoint_url:, events:, request_options:); end @@ -36,7 +36,7 @@ module WorkOS status: T.nilable(String), events: T.nilable(T::Array[String]), request_options: T::Hash[Symbol, T.untyped] - ).returns(WorkOS::WebhookEndpointJson) + ).returns(WorkOS::WebhookEndpoint) end def update_webhook_endpoint(id:, endpoint_url:, status:, events:, request_options:); end diff --git a/test/workos/test_model_round_trip.rb b/test/workos/test_model_round_trip.rb index 1df43396..a9740bde 100644 --- a/test/workos/test_model_round_trip.rb +++ b/test/workos/test_model_round_trip.rb @@ -251,13 +251,13 @@ def test_audit_log_schema_target_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_audit_log_schema_round_trip + def test_audit_log_schema_dto_round_trip fixture = { "actor" => {}, "targets" => [], "metadata" => {} } - model = WorkOS::AuditLogSchema.new(fixture.to_json) + model = WorkOS::AuditLogSchemaDto.new(fixture.to_json) json = model.to_h assert_kind_of Hash, json fixture.each_key { |k| assert json.key?(k.to_sym) || json.key?(k), "Expected to_h to include key #{k}" } @@ -986,7 +986,7 @@ def test_audit_log_event_create_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_audit_log_export_json_round_trip + def test_audit_log_export_round_trip fixture = { "object" => "audit_log_export", "id" => "stub", @@ -995,7 +995,7 @@ def test_audit_log_export_json_round_trip "created_at" => "stub", "updated_at" => "stub" } - model = WorkOS::AuditLogExportJson.new(fixture.to_json) + model = WorkOS::AuditLogExport.new(fixture.to_json) json = model.to_h assert_kind_of Hash, json assert_equal fixture["id"], json[:id] @@ -1004,11 +1004,11 @@ def test_audit_log_export_json_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_audit_logs_retention_json_round_trip + def test_audit_logs_retention_round_trip fixture = { "retention_period_in_days" => nil } - model = WorkOS::AuditLogsRetentionJson.new(fixture.to_json) + model = WorkOS::AuditLogsRetention.new(fixture.to_json) json = model.to_h assert_kind_of Hash, json assert_nil json[:retention_period_in_days] @@ -1032,7 +1032,7 @@ def test_audit_log_schema_json_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_audit_log_action_json_round_trip + def test_audit_log_action_round_trip fixture = { "object" => "audit_log_action", "name" => "stub", @@ -1040,7 +1040,7 @@ def test_audit_log_action_json_round_trip "created_at" => "stub", "updated_at" => "stub" } - model = WorkOS::AuditLogActionJson.new(fixture.to_json) + model = WorkOS::AuditLogAction.new(fixture.to_json) json = model.to_h assert_kind_of Hash, json assert_equal fixture["name"], json[:name] @@ -6161,7 +6161,7 @@ def test_device_authorization_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_webhook_endpoint_json_round_trip + def test_webhook_endpoint_round_trip fixture = { "object" => "webhook_endpoint", "id" => "stub", @@ -6172,7 +6172,7 @@ def test_webhook_endpoint_json_round_trip "created_at" => "stub", "updated_at" => "stub" } - model = WorkOS::WebhookEndpointJson.new(fixture.to_json) + model = WorkOS::WebhookEndpoint.new(fixture.to_json) json = model.to_h assert_kind_of Hash, json assert_equal fixture["id"], json[:id] diff --git a/test/workos/test_organization_membership_service.rb b/test/workos/test_organization_membership_service.rb new file mode 100644 index 00000000..cfcf52df --- /dev/null +++ b/test/workos/test_organization_membership_service.rb @@ -0,0 +1,107 @@ +# frozen_string_literal: true + +# This file is auto-generated by oagen. Do not edit. + +require "test_helper" + +class OrganizationMembershipServiceTest < Minitest::Test + include FixtureHelper + + def setup + @client = WorkOS::Client.new(api_key: "sk_test_123") + end + + def test_list_organization_memberships_returns_expected_result + stub_request(:get, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships(\?|\z)}) + .to_return(body: '{"data": [], "list_metadata": {}}', status: 200) + result = @client.organization_membership.list_organization_memberships + assert_kind_of WorkOS::Types::ListStruct, result + end + + def test_create_organization_membership_returns_expected_result + stub_request(:post, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships(\?|\z)}) + .with(body: hash_including("user_id" => "stub", "organization_id" => "stub", "role_slug" => "stub")) + .to_return(body: "{}", status: 200) + result = @client.organization_membership.create_organization_membership(user_id: "stub", organization_id: "stub", role: WorkOS::OrganizationMembershipService::RoleSingle.new(role_slug: "stub")) + refute_nil result + end + + def test_create_organization_membership_with_role_multiple_returns_expected_result + stub_request(:post, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships(\?|\z)}) + .with(body: hash_including("user_id" => "stub", "organization_id" => "stub", "role_slugs" => ["stub"])) + .to_return(body: "{}", status: 200) + result = @client.organization_membership.create_organization_membership(user_id: "stub", organization_id: "stub", role: WorkOS::OrganizationMembershipService::RoleMultiple.new(role_slugs: ["stub"])) + refute_nil result + end + + def test_get_organization_membership_returns_expected_result + stub_request(:get, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub(\?|\z)}) + .to_return(body: "{}", status: 200) + result = @client.organization_membership.get_organization_membership(id: "stub") + refute_nil result + end + + def test_update_organization_membership_returns_expected_result + stub_request(:put, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub(\?|\z)}) + .with(body: hash_including("role_slug" => "stub")) + .to_return(body: "{}", status: 200) + result = @client.organization_membership.update_organization_membership(id: "stub", role: WorkOS::OrganizationMembershipService::RoleSingle.new(role_slug: "stub")) + refute_nil result + end + + def test_update_organization_membership_with_role_multiple_returns_expected_result + stub_request(:put, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub(\?|\z)}) + .with(body: hash_including("role_slugs" => ["stub"])) + .to_return(body: "{}", status: 200) + result = @client.organization_membership.update_organization_membership(id: "stub", role: WorkOS::OrganizationMembershipService::RoleMultiple.new(role_slugs: ["stub"])) + refute_nil result + end + + def test_delete_organization_membership_returns_expected_result + stub_request(:delete, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub(\?|\z)}) + .to_return(body: "{}", status: 200) + result = @client.organization_membership.delete_organization_membership(id: "stub") + assert_nil result + end + + def test_deactivate_organization_membership_returns_expected_result + stub_request(:put, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub/deactivate(\?|\z)}) + .to_return(body: "{}", status: 200) + result = @client.organization_membership.deactivate_organization_membership(id: "stub") + refute_nil result + end + + def test_reactivate_organization_membership_returns_expected_result + stub_request(:put, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub/reactivate(\?|\z)}) + .to_return(body: "{}", status: 200) + result = @client.organization_membership.reactivate_organization_membership(id: "stub") + refute_nil result + end + + def test_list_organization_membership_groups_returns_expected_result + stub_request(:get, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub/groups(\?|\z)}) + .to_return(body: '{"data": [], "list_metadata": {}}', status: 200) + result = @client.organization_membership.list_organization_membership_groups(om_id: "stub") + assert_kind_of WorkOS::Types::ListStruct, result + end + + # Parameterized authentication error tests (one per endpoint). + [ + {name: :list_organization_memberships, verb: :get, url: %r{\Ahttps://api\.workos\.com/user_management/organization_memberships(\?|\z)}}, + {name: :create_organization_membership, verb: :post, url: %r{\Ahttps://api\.workos\.com/user_management/organization_memberships(\?|\z)}, args: {user_id: "stub", organization_id: "stub", role: WorkOS::OrganizationMembershipService::RoleSingle.new(role_slug: "stub")}}, + {name: :get_organization_membership, verb: :get, url: %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub(\?|\z)}, args: {id: "stub"}}, + {name: :update_organization_membership, verb: :put, url: %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub(\?|\z)}, args: {id: "stub", role: WorkOS::OrganizationMembershipService::RoleSingle.new(role_slug: "stub")}}, + {name: :delete_organization_membership, verb: :delete, url: %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub(\?|\z)}, args: {id: "stub"}}, + {name: :deactivate_organization_membership, verb: :put, url: %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub/deactivate(\?|\z)}, args: {id: "stub"}}, + {name: :reactivate_organization_membership, verb: :put, url: %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub/reactivate(\?|\z)}, args: {id: "stub"}}, + {name: :list_organization_membership_groups, verb: :get, url: %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub/groups(\?|\z)}, args: {om_id: "stub"}} + ].each do |spec| + define_method("test_#{spec[:name]}_raises_authentication_error_on_401") do + stub_request(spec[:verb], spec[:url]) + .to_return(body: '{"message": "Unauthorized"}', status: 401) + assert_raises(WorkOS::AuthenticationError) do + @client.organization_membership.send(spec[:name], **(spec[:args] || {})) + end + end + end +end diff --git a/test/workos/test_user_management.rb b/test/workos/test_user_management.rb index b2aebf55..f56fd14e 100644 --- a/test/workos/test_user_management.rb +++ b/test/workos/test_user_management.rb @@ -373,73 +373,6 @@ def test_get_magic_auth_returns_expected_result refute_nil result end - def test_list_organization_memberships_returns_expected_result - stub_request(:get, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships(\?|\z)}) - .to_return(body: '{"data": [], "list_metadata": {}}', status: 200) - result = @client.user_management.list_organization_memberships - assert_kind_of WorkOS::Types::ListStruct, result - end - - def test_create_organization_membership_returns_expected_result - stub_request(:post, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships(\?|\z)}) - .with(body: hash_including("user_id" => "stub", "organization_id" => "stub", "role_slug" => "stub")) - .to_return(body: "{}", status: 200) - result = @client.user_management.create_organization_membership(user_id: "stub", organization_id: "stub", role: WorkOS::UserManagement::RoleSingle.new(role_slug: "stub")) - refute_nil result - end - - def test_create_organization_membership_with_role_multiple_returns_expected_result - stub_request(:post, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships(\?|\z)}) - .with(body: hash_including("user_id" => "stub", "organization_id" => "stub", "role_slugs" => ["stub"])) - .to_return(body: "{}", status: 200) - result = @client.user_management.create_organization_membership(user_id: "stub", organization_id: "stub", role: WorkOS::UserManagement::RoleMultiple.new(role_slugs: ["stub"])) - refute_nil result - end - - def test_get_organization_membership_returns_expected_result - stub_request(:get, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub(\?|\z)}) - .to_return(body: "{}", status: 200) - result = @client.user_management.get_organization_membership(id: "stub") - refute_nil result - end - - def test_update_organization_membership_returns_expected_result - stub_request(:put, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub(\?|\z)}) - .with(body: hash_including("role_slug" => "stub")) - .to_return(body: "{}", status: 200) - result = @client.user_management.update_organization_membership(id: "stub", role: WorkOS::UserManagement::RoleSingle.new(role_slug: "stub")) - refute_nil result - end - - def test_update_organization_membership_with_role_multiple_returns_expected_result - stub_request(:put, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub(\?|\z)}) - .with(body: hash_including("role_slugs" => ["stub"])) - .to_return(body: "{}", status: 200) - result = @client.user_management.update_organization_membership(id: "stub", role: WorkOS::UserManagement::RoleMultiple.new(role_slugs: ["stub"])) - refute_nil result - end - - def test_delete_organization_membership_returns_expected_result - stub_request(:delete, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub(\?|\z)}) - .to_return(body: "{}", status: 200) - result = @client.user_management.delete_organization_membership(id: "stub") - assert_nil result - end - - def test_deactivate_organization_membership_returns_expected_result - stub_request(:put, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub/deactivate(\?|\z)}) - .to_return(body: "{}", status: 200) - result = @client.user_management.deactivate_organization_membership(id: "stub") - refute_nil result - end - - def test_reactivate_organization_membership_returns_expected_result - stub_request(:put, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub/reactivate(\?|\z)}) - .to_return(body: "{}", status: 200) - result = @client.user_management.reactivate_organization_membership(id: "stub") - refute_nil result - end - def test_create_redirect_uri_returns_expected_result stub_request(:post, %r{\Ahttps://api\.workos\.com/user_management/redirect_uris(\?|\z)}) .to_return(body: "{}", status: 200) @@ -509,13 +442,6 @@ def test_create_user_api_key_returns_expected_result {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"}}, - {name: :list_organization_memberships, verb: :get, url: %r{\Ahttps://api\.workos\.com/user_management/organization_memberships(\?|\z)}}, - {name: :create_organization_membership, verb: :post, url: %r{\Ahttps://api\.workos\.com/user_management/organization_memberships(\?|\z)}, args: {user_id: "stub", organization_id: "stub", role: WorkOS::UserManagement::RoleSingle.new(role_slug: "stub")}}, - {name: :get_organization_membership, verb: :get, url: %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub(\?|\z)}, args: {id: "stub"}}, - {name: :update_organization_membership, verb: :put, url: %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub(\?|\z)}, args: {id: "stub", role: WorkOS::UserManagement::RoleSingle.new(role_slug: "stub")}}, - {name: :delete_organization_membership, verb: :delete, url: %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub(\?|\z)}, args: {id: "stub"}}, - {name: :deactivate_organization_membership, verb: :put, url: %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub/deactivate(\?|\z)}, args: {id: "stub"}}, - {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"}}, diff --git a/test/workos/test_user_management_organization_membership_groups.rb b/test/workos/test_user_management_organization_membership_groups.rb deleted file mode 100644 index b0f07081..00000000 --- a/test/workos/test_user_management_organization_membership_groups.rb +++ /dev/null @@ -1,33 +0,0 @@ -# frozen_string_literal: true - -# This file is auto-generated by oagen. Do not edit. - -require "test_helper" - -class UserManagementOrganizationMembershipGroupsTest < Minitest::Test - include FixtureHelper - - def setup - @client = WorkOS::Client.new(api_key: "sk_test_123") - end - - def test_list_organization_membership_groups_returns_expected_result - stub_request(:get, %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub/groups(\?|\z)}) - .to_return(body: '{"data": [], "list_metadata": {}}', status: 200) - result = @client.user_management_organization_membership_groups.list_organization_membership_groups(om_id: "stub") - assert_kind_of WorkOS::Types::ListStruct, result - end - - # Parameterized authentication error tests (one per endpoint). - [ - {name: :list_organization_membership_groups, verb: :get, url: %r{\Ahttps://api\.workos\.com/user_management/organization_memberships/stub/groups(\?|\z)}, args: {om_id: "stub"}} - ].each do |spec| - define_method("test_#{spec[:name]}_raises_authentication_error_on_401") do - stub_request(spec[:verb], spec[:url]) - .to_return(body: '{"message": "Unauthorized"}', status: 401) - assert_raises(WorkOS::AuthenticationError) do - @client.user_management_organization_membership_groups.send(spec[:name], **(spec[:args] || {})) - end - end - end -end