workos 8.0.2 → 9.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +1 -1
- data/.github/workflows/docs.yml +1 -1
- data/.github/workflows/lint.yml +1 -1
- data/.github/workflows/release-please.yml +175 -5
- data/.github/workflows/release.yml +1 -1
- data/.last-synced-sha +1 -1
- data/.oagen-manifest.json +129 -34
- data/.release-please-manifest.json +1 -1
- data/CHANGELOG.md +55 -3
- data/Gemfile.lock +4 -4
- data/lib/workos/api_keys/api_key.rb +3 -0
- data/lib/workos/api_keys/api_key_created.rb +5 -5
- data/lib/workos/api_keys/api_key_created_data.rb +3 -0
- data/lib/workos/api_keys/api_key_revoked.rb +5 -5
- data/lib/workos/api_keys/create_organization_api_key.rb +5 -2
- data/lib/workos/api_keys/organization_api_key.rb +3 -0
- data/lib/workos/api_keys/organization_api_key_with_value.rb +3 -0
- data/lib/workos/api_keys.rb +4 -1
- data/lib/workos/audit_logs/audit_log_action.rb +2 -7
- data/lib/workos/audit_logs/audit_log_export.rb +2 -7
- data/lib/workos/audit_logs/audit_log_schema.rb +11 -2
- data/lib/workos/audit_logs/{audit_log_schema_json_actor.rb → audit_log_schema_actor_input.rb} +1 -1
- data/lib/workos/audit_logs/audit_log_schema_input.rb +25 -0
- data/lib/workos/audit_logs/audit_log_schema_target.rb +16 -1
- data/lib/workos/{types/radar_type.rb → audit_logs/audit_log_schema_target_input.rb} +1 -3
- data/lib/workos/audit_logs.rb +16 -16
- data/lib/workos/authorization/permission_created.rb +5 -5
- data/lib/workos/authorization/permission_deleted.rb +5 -5
- data/lib/workos/authorization/permission_updated.rb +5 -5
- data/lib/workos/authorization/role_created.rb +5 -5
- data/lib/workos/authorization/role_deleted.rb +5 -5
- data/lib/workos/authorization/role_updated.rb +5 -5
- data/lib/workos/authorization.rb +28 -12
- data/lib/workos/base_client.rb +1 -14
- data/lib/workos/client.rb +6 -6
- data/lib/workos/connect/connect_application.rb +12 -0
- data/lib/workos/{audit_logs/audit_log_schema_json_target.rb → connect/connect_application_redirect_uri.rb} +7 -7
- data/lib/workos/directory_sync/dsync_activated.rb +5 -5
- data/lib/workos/directory_sync/dsync_deactivated.rb +5 -5
- data/lib/workos/directory_sync/dsync_deleted.rb +5 -5
- data/lib/workos/directory_sync/dsync_group_created.rb +5 -5
- data/lib/workos/directory_sync/dsync_group_deleted.rb +5 -5
- data/lib/workos/directory_sync/dsync_group_updated.rb +5 -5
- data/lib/workos/directory_sync/dsync_group_user_added.rb +5 -5
- data/lib/workos/directory_sync/dsync_group_user_removed.rb +5 -5
- data/lib/workos/directory_sync/dsync_user_created.rb +5 -5
- data/lib/workos/directory_sync/dsync_user_deleted.rb +5 -5
- data/lib/workos/directory_sync/dsync_user_updated.rb +5 -5
- data/lib/workos/feature_flags/flag_created.rb +5 -5
- data/lib/workos/feature_flags/flag_deleted.rb +5 -5
- data/lib/workos/feature_flags/flag_rule_updated.rb +5 -5
- data/lib/workos/feature_flags/flag_rule_updated_context_configured_target_organization.rb +1 -16
- data/lib/workos/feature_flags/flag_rule_updated_context_previous_attribute_context_configured_target_organization.rb +1 -1
- data/lib/workos/feature_flags/flag_updated.rb +5 -5
- data/lib/workos/inflections.rb +4 -1
- data/lib/workos/organization_domains/organization_domain_created.rb +5 -5
- data/lib/workos/organization_domains/organization_domain_deleted.rb +5 -5
- data/lib/workos/organization_domains/organization_domain_updated.rb +5 -5
- data/lib/workos/organization_domains/organization_domain_verification_failed.rb +5 -5
- data/lib/workos/organization_domains/organization_domain_verified.rb +5 -5
- data/lib/workos/organization_membership_service.rb +273 -0
- data/lib/workos/organizations/audit_logs_retention.rb +2 -7
- data/lib/workos/organizations/organization_created.rb +5 -5
- data/lib/workos/organizations/organization_deleted.rb +5 -5
- data/lib/workos/organizations/organization_membership_created.rb +5 -5
- data/lib/workos/organizations/organization_membership_deleted.rb +5 -5
- data/lib/workos/organizations/organization_membership_updated.rb +5 -5
- data/lib/workos/organizations/organization_role_created.rb +5 -5
- data/lib/workos/organizations/organization_role_deleted.rb +5 -5
- data/lib/workos/organizations/organization_role_updated.rb +5 -5
- data/lib/workos/organizations/organization_updated.rb +5 -5
- data/lib/workos/radar/radar_standalone_assess_request.rb +2 -8
- data/lib/workos/radar.rb +6 -12
- data/lib/workos/shared/connect_application_m2m.rb +46 -0
- data/lib/workos/shared/connect_application_oauth.rb +58 -0
- data/lib/workos/shared/connect_application_oauth_redirect_uris.rb +22 -0
- data/lib/workos/shared/error_response.rb +18 -0
- data/lib/workos/shared/group_created.rb +5 -5
- data/lib/workos/shared/group_deleted.rb +5 -5
- data/lib/workos/shared/group_member_added.rb +5 -5
- data/lib/workos/shared/group_member_removed.rb +5 -5
- data/lib/workos/shared/group_updated.rb +5 -5
- data/lib/workos/shared/pipe_connected_account.rb +46 -0
- data/lib/workos/{audit_logs/audit_log_export_json.rb → shared/pipes_connected_account_connected.rb} +10 -10
- data/lib/workos/shared/pipes_connected_account_disconnected.rb +34 -0
- data/lib/workos/shared/pipes_connected_account_reauthorization_needed.rb +34 -0
- data/lib/workos/shared/waitlist_user_approved.rb +5 -5
- data/lib/workos/shared/waitlist_user_created.rb +5 -5
- data/lib/workos/shared/waitlist_user_denied.rb +5 -5
- data/lib/workos/sso/connection_activated.rb +5 -5
- data/lib/workos/sso/connection_deactivated.rb +5 -5
- data/lib/workos/sso/connection_deleted.rb +5 -5
- data/lib/workos/sso/connection_saml_certificate_renewal_required.rb +5 -5
- data/lib/workos/sso/connection_saml_certificate_renewed.rb +5 -5
- data/lib/workos/types/create_webhook_endpoint_events.rb +4 -1
- data/lib/workos/types/pipe_connected_account_state.rb +13 -0
- data/lib/workos/types/{radar_action.rb → radar_list_action.rb} +1 -1
- data/lib/workos/types/radar_list_type.rb +18 -0
- data/lib/workos/types/radar_standalone_assess_request_action.rb +1 -7
- data/lib/workos/types/radar_standalone_response_blocklist_type.rb +1 -10
- data/lib/workos/types/radar_standalone_response_control.rb +1 -3
- data/lib/workos/types/user_management_authentication_screen_hint.rb +1 -5
- data/{rbi/workos/types/request_options.rbi → lib/workos/types/vault_order.rb} +4 -3
- data/lib/workos/types/webhook_endpoint_status.rb +1 -5
- data/lib/workos/user_management/action_authentication_denied.rb +6 -6
- data/lib/workos/user_management/action_user_registration_denied.rb +6 -6
- data/lib/workos/user_management/authentication_email_verification_failed.rb +5 -5
- data/lib/workos/user_management/authentication_email_verification_succeeded.rb +5 -5
- data/lib/workos/user_management/authentication_magic_auth_failed.rb +5 -5
- data/lib/workos/user_management/authentication_magic_auth_succeeded.rb +5 -5
- data/lib/workos/user_management/authentication_mfa_failed.rb +5 -5
- data/lib/workos/user_management/authentication_mfa_succeeded.rb +5 -5
- data/lib/workos/user_management/authentication_oauth_failed.rb +5 -5
- data/lib/workos/user_management/authentication_oauth_succeeded.rb +5 -5
- data/lib/workos/user_management/authentication_passkey_failed.rb +5 -5
- data/lib/workos/user_management/authentication_passkey_succeeded.rb +5 -5
- data/lib/workos/user_management/authentication_password_failed.rb +5 -5
- data/lib/workos/user_management/authentication_password_succeeded.rb +5 -5
- data/lib/workos/user_management/authentication_radar_risk_detected.rb +5 -5
- data/lib/workos/user_management/authentication_sso_failed.rb +5 -5
- data/lib/workos/user_management/authentication_sso_started.rb +5 -5
- data/lib/workos/user_management/authentication_sso_succeeded.rb +5 -5
- data/lib/workos/user_management/authentication_sso_timed_out.rb +5 -5
- data/lib/workos/user_management/create_user_api_key.rb +5 -2
- data/lib/workos/user_management/email_verification_created.rb +5 -5
- data/lib/workos/user_management/invitation_accepted.rb +5 -5
- data/lib/workos/user_management/invitation_created.rb +5 -5
- data/lib/workos/user_management/invitation_resent.rb +5 -5
- data/lib/workos/user_management/invitation_revoked.rb +5 -5
- data/lib/workos/user_management/magic_auth_created.rb +5 -5
- data/lib/workos/user_management/password_reset_created.rb +5 -5
- data/lib/workos/user_management/password_reset_succeeded.rb +5 -5
- data/lib/workos/user_management/session_created.rb +5 -5
- data/lib/workos/user_management/session_revoked.rb +5 -5
- data/lib/workos/user_management/user_api_key.rb +3 -0
- data/lib/workos/user_management/user_api_key_with_value.rb +3 -0
- data/lib/workos/user_management/user_created.rb +5 -5
- data/lib/workos/user_management/user_deleted.rb +5 -5
- data/lib/workos/user_management/user_updated.rb +5 -5
- data/lib/workos/user_management.rb +4 -214
- data/lib/workos/vault/actor.rb +22 -0
- data/lib/workos/vault/create_data_key_request.rb +18 -0
- data/lib/workos/vault/create_data_key_response.rb +28 -0
- data/lib/workos/vault/create_object_request.rb +25 -0
- data/lib/workos/vault/decrypt_request.rb +18 -0
- data/lib/workos/vault/decrypt_response.rb +22 -0
- data/lib/workos/vault/delete_object_response.rb +22 -0
- data/lib/workos/vault/object.rb +28 -0
- data/lib/workos/vault/object_metadata.rb +37 -0
- data/lib/workos/{audit_logs/audit_log_action_json.rb → vault/object_summary.rb} +4 -10
- data/lib/workos/vault/object_version.rb +31 -0
- data/lib/workos/vault/object_without_value.rb +25 -0
- data/lib/workos/vault/rekey_request.rb +22 -0
- data/lib/workos/vault/update_object_request.rb +22 -0
- data/lib/workos/vault/vault_byok_key_deleted.rb +5 -5
- data/lib/workos/vault/vault_byok_key_verification_completed.rb +5 -5
- data/lib/workos/vault/vault_data_created.rb +5 -5
- data/lib/workos/vault/vault_data_deleted.rb +5 -5
- data/lib/workos/vault/vault_data_read.rb +5 -5
- data/lib/workos/vault/vault_data_updated.rb +5 -5
- data/lib/workos/vault/vault_dek_decrypted.rb +5 -5
- data/lib/workos/vault/vault_dek_read.rb +5 -5
- data/lib/workos/vault/vault_kek_created.rb +5 -5
- data/lib/workos/vault/vault_metadata_read.rb +5 -5
- data/lib/workos/vault/vault_names_listed.rb +5 -5
- data/lib/workos/vault/version_list_response.rb +22 -0
- data/lib/workos/vault.rb +273 -139
- data/lib/workos/version.rb +1 -1
- data/lib/workos/webhooks/webhook_endpoint.rb +2 -7
- data/lib/workos/webhooks.rb +7 -8
- data/lib/workos.rb +1 -0
- data/rbi/workos/action_authentication_denied.rbi +10 -10
- data/rbi/workos/action_user_registration_denied.rbi +10 -10
- data/rbi/workos/actor.rbi +30 -0
- data/rbi/workos/api_key.rbi +6 -0
- data/rbi/workos/api_key_created.rbi +6 -6
- data/rbi/workos/api_key_created_data.rbi +6 -0
- data/rbi/workos/api_key_revoked.rbi +6 -6
- data/rbi/workos/api_key_revoked_data.rbi +6 -0
- data/rbi/workos/api_keys.rbi +2 -1
- data/rbi/workos/audit_log_action.rbi +1 -0
- data/rbi/workos/audit_log_export.rbi +1 -0
- data/rbi/workos/audit_log_schema.rbi +18 -0
- data/rbi/workos/{audit_log_schema_json_actor.rbi → audit_log_schema_actor_input.rbi} +1 -1
- data/rbi/workos/audit_log_schema_input.rbi +36 -0
- data/rbi/workos/{audit_log_schema_json_target.rbi → audit_log_schema_target_input.rbi} +1 -1
- data/rbi/workos/audit_logs.rbi +9 -9
- data/rbi/workos/audit_logs_retention.rbi +1 -0
- data/rbi/workos/authentication_email_verification_failed.rbi +6 -6
- data/rbi/workos/authentication_email_verification_succeeded.rbi +6 -6
- data/rbi/workos/authentication_magic_auth_failed.rbi +6 -6
- data/rbi/workos/authentication_magic_auth_succeeded.rbi +6 -6
- data/rbi/workos/authentication_mfa_failed.rbi +6 -6
- data/rbi/workos/authentication_mfa_succeeded.rbi +6 -6
- data/rbi/workos/authentication_oauth_failed.rbi +6 -6
- data/rbi/workos/authentication_oauth_succeeded.rbi +6 -6
- data/rbi/workos/authentication_passkey_failed.rbi +6 -6
- data/rbi/workos/authentication_passkey_succeeded.rbi +6 -6
- data/rbi/workos/authentication_password_failed.rbi +6 -6
- data/rbi/workos/authentication_password_succeeded.rbi +6 -6
- data/rbi/workos/authentication_radar_risk_detected.rbi +6 -6
- data/rbi/workos/authentication_sso_failed.rbi +6 -6
- data/rbi/workos/authentication_sso_started.rbi +6 -6
- data/rbi/workos/authentication_sso_succeeded.rbi +6 -6
- data/rbi/workos/authentication_sso_timed_out.rbi +6 -6
- data/rbi/workos/authorization.rbi +9 -5
- data/rbi/workos/client.rbi +6 -3
- data/rbi/workos/connect_application.rbi +0 -12
- data/rbi/workos/{webhook_endpoint_json.rbi → connect_application_m2m.rbi} +23 -11
- data/rbi/workos/connect_application_oauth.rbi +102 -0
- data/rbi/workos/connect_application_oauth_redirect_uris.rbi +30 -0
- data/rbi/workos/connection_activated.rbi +6 -6
- data/rbi/workos/connection_deactivated.rbi +6 -6
- data/rbi/workos/connection_deleted.rbi +6 -6
- data/rbi/workos/connection_saml_certificate_renewal_required.rbi +6 -6
- data/rbi/workos/connection_saml_certificate_renewed.rbi +6 -6
- data/rbi/workos/{audit_logs_retention_json.rbi → create_data_key_request.rbi} +5 -5
- data/rbi/workos/create_data_key_response.rbi +42 -0
- data/rbi/workos/create_object_request.rbi +36 -0
- data/rbi/workos/create_organization_api_key.rbi +6 -0
- data/rbi/workos/create_user_api_key.rbi +6 -0
- data/rbi/workos/decrypt_request.rbi +24 -0
- data/rbi/workos/decrypt_response.rbi +30 -0
- data/rbi/workos/delete_object_response.rbi +30 -0
- data/rbi/workos/dsync_activated.rbi +6 -6
- data/rbi/workos/dsync_deactivated.rbi +6 -6
- data/rbi/workos/dsync_deleted.rbi +6 -6
- data/rbi/workos/dsync_group_created.rbi +6 -6
- data/rbi/workos/dsync_group_deleted.rbi +6 -6
- data/rbi/workos/dsync_group_updated.rbi +6 -6
- data/rbi/workos/dsync_group_user_added.rbi +6 -6
- data/rbi/workos/dsync_group_user_removed.rbi +6 -6
- data/rbi/workos/dsync_user_created.rbi +6 -6
- data/rbi/workos/dsync_user_deleted.rbi +6 -6
- data/rbi/workos/dsync_user_updated.rbi +6 -6
- data/rbi/workos/email_verification_created.rbi +6 -6
- data/rbi/workos/error_response.rbi +24 -0
- data/rbi/workos/flag_created.rbi +6 -6
- data/rbi/workos/flag_deleted.rbi +6 -6
- data/rbi/workos/flag_rule_updated.rbi +6 -6
- data/rbi/workos/flag_updated.rbi +6 -6
- data/rbi/workos/group_created.rbi +6 -6
- data/rbi/workos/group_deleted.rbi +6 -6
- data/rbi/workos/group_member_added.rbi +6 -6
- data/rbi/workos/group_member_removed.rbi +6 -6
- data/rbi/workos/group_updated.rbi +6 -6
- data/rbi/workos/invitation_accepted.rbi +6 -6
- data/rbi/workos/invitation_created.rbi +6 -6
- data/rbi/workos/invitation_resent.rbi +6 -6
- data/rbi/workos/invitation_revoked.rbi +6 -6
- data/rbi/workos/magic_auth_created.rbi +6 -6
- data/rbi/workos/object.rbi +42 -0
- data/rbi/workos/object_metadata.rbi +60 -0
- data/rbi/workos/object_summary.rbi +36 -0
- data/rbi/workos/{audit_log_action_json.rbi → object_version.rbi} +17 -17
- data/rbi/workos/object_without_value.rbi +36 -0
- data/rbi/workos/organization_api_key.rbi +6 -0
- data/rbi/workos/organization_api_key_with_value.rbi +6 -0
- data/rbi/workos/organization_created.rbi +6 -6
- data/rbi/workos/organization_deleted.rbi +6 -6
- data/rbi/workos/organization_domain_created.rbi +6 -6
- data/rbi/workos/organization_domain_deleted.rbi +6 -6
- data/rbi/workos/organization_domain_updated.rbi +6 -6
- data/rbi/workos/organization_domain_verification_failed.rbi +6 -6
- data/rbi/workos/organization_domain_verified.rbi +6 -6
- data/rbi/workos/organization_membership_created.rbi +6 -6
- data/rbi/workos/organization_membership_deleted.rbi +6 -6
- data/rbi/workos/organization_membership_service.rbi +114 -0
- data/rbi/workos/organization_membership_updated.rbi +6 -6
- data/rbi/workos/organization_role_created.rbi +6 -6
- data/rbi/workos/organization_role_deleted.rbi +6 -6
- data/rbi/workos/organization_role_updated.rbi +6 -6
- data/rbi/workos/organization_updated.rbi +6 -6
- data/rbi/workos/password_reset_created.rbi +6 -6
- data/rbi/workos/password_reset_succeeded.rbi +6 -6
- data/rbi/workos/permission_created.rbi +6 -6
- data/rbi/workos/permission_deleted.rbi +6 -6
- data/rbi/workos/permission_updated.rbi +6 -6
- data/rbi/workos/pipe_connected_account.rbi +78 -0
- data/rbi/workos/{audit_log_export_json.rbi → pipes_connected_account_connected.rbi} +11 -11
- data/rbi/workos/pipes_connected_account_disconnected.rbi +54 -0
- data/rbi/workos/pipes_connected_account_reauthorization_needed.rbi +54 -0
- data/rbi/workos/radar.rbi +1 -3
- data/rbi/workos/radar_standalone_assess_request.rbi +0 -12
- data/rbi/workos/rekey_request.rbi +30 -0
- data/rbi/workos/role_created.rbi +6 -6
- data/rbi/workos/role_deleted.rbi +6 -6
- data/rbi/workos/role_updated.rbi +6 -6
- data/rbi/workos/session_created.rbi +6 -6
- data/rbi/workos/session_manager.rbi +1 -1
- data/rbi/workos/session_revoked.rbi +6 -6
- data/rbi/workos/update_object_request.rbi +30 -0
- data/rbi/workos/user_api_key.rbi +6 -0
- data/rbi/workos/user_api_key_with_value.rbi +6 -0
- data/rbi/workos/user_created.rbi +6 -6
- data/rbi/workos/user_deleted.rbi +6 -6
- data/rbi/workos/user_management.rbi +2 -90
- data/rbi/workos/user_updated.rbi +6 -6
- data/rbi/workos/vault.rbi +70 -95
- data/rbi/workos/vault_byok_key_deleted.rbi +6 -6
- data/rbi/workos/vault_byok_key_verification_completed.rbi +6 -6
- data/rbi/workos/vault_data_created.rbi +6 -6
- data/rbi/workos/vault_data_deleted.rbi +6 -6
- data/rbi/workos/vault_data_read.rbi +6 -6
- data/rbi/workos/vault_data_updated.rbi +6 -6
- data/rbi/workos/vault_dek_decrypted.rbi +6 -6
- data/rbi/workos/vault_dek_read.rbi +6 -6
- data/rbi/workos/vault_kek_created.rbi +6 -6
- data/rbi/workos/vault_metadata_read.rbi +6 -6
- data/rbi/workos/vault_names_listed.rbi +6 -6
- data/rbi/workos/waitlist_user_approved.rbi +6 -6
- data/rbi/workos/waitlist_user_created.rbi +6 -6
- data/rbi/workos/waitlist_user_denied.rbi +6 -6
- data/rbi/workos/webhook_endpoint.rbi +1 -0
- data/rbi/workos/webhooks.rbi +2 -2
- data/renovate.json +1 -1
- data/test/workos/test_base_client.rb +0 -163
- data/test/workos/test_model_round_trip.rb +577 -212
- data/test/workos/test_organization_membership_service.rb +107 -0
- data/test/workos/test_user_management.rb +0 -74
- data/test/workos/test_vault.rb +91 -87
- metadata +65 -41
- data/lib/workos/audit_logs/audit_log_schema_json.rb +0 -34
- data/lib/workos/organizations/audit_logs_retention_json.rb +0 -18
- data/lib/workos/types/audit_log_export_json_state.rb +0 -14
- data/lib/workos/types/webhook_endpoint_json_status.rb +0 -9
- data/lib/workos/user_management_organization_membership_groups.rb +0 -60
- data/lib/workos/webhooks/webhook_endpoint_json.rb +0 -40
- data/rbi/workos/actions.rbi +0 -48
- data/rbi/workos/audit_log_schema_json.rbi +0 -54
- data/rbi/workos/base_client.rbi +0 -132
- data/rbi/workos/configuration.rbi +0 -68
- data/rbi/workos/encryptors/aes_gcm.rbi +0 -19
- data/rbi/workos/errors.rbi +0 -43
- data/rbi/workos/hash_provider.rbi +0 -18
- data/rbi/workos/passwordless.rbi +0 -47
- data/rbi/workos/public_client.rbi +0 -12
- data/rbi/workos/session.rbi +0 -43
- data/rbi/workos/types/api_response.rbi +0 -29
- data/rbi/workos/types/base_model.rbi +0 -22
- data/rbi/workos/types/list_struct.rbi +0 -89
- data/rbi/workos/user_management_organization_membership_groups.rbi +0 -25
- data/rbi/workos/util.rbi +0 -12
- data/test/workos/test_user_management_organization_membership_groups.rb +0 -33
- /data/lib/workos/{user_management → organization_membership}/create_user_organization_membership.rb +0 -0
- /data/lib/workos/{user_management → organization_membership}/organization_membership.rb +0 -0
- /data/lib/workos/{user_management → organization_membership}/update_user_organization_membership.rb +0 -0
- /data/lib/workos/{user_management → organization_membership}/user_organization_membership.rb +0 -0
|
@@ -9,6 +9,12 @@ module WorkOS
|
|
|
9
9
|
sig { params(json: T.any(String, T::Hash[Symbol, T.untyped])).void }
|
|
10
10
|
def initialize(json); end
|
|
11
11
|
|
|
12
|
+
sig { returns(String) }
|
|
13
|
+
def object; end
|
|
14
|
+
|
|
15
|
+
sig { params(value: String).returns(String) }
|
|
16
|
+
def object=(value); end
|
|
17
|
+
|
|
12
18
|
sig { returns(String) }
|
|
13
19
|
def id; end
|
|
14
20
|
|
|
@@ -39,12 +45,6 @@ module WorkOS
|
|
|
39
45
|
sig { params(value: T.nilable(WorkOS::EventContext)).returns(T.nilable(WorkOS::EventContext)) }
|
|
40
46
|
def context=(value); end
|
|
41
47
|
|
|
42
|
-
sig { returns(String) }
|
|
43
|
-
def object; end
|
|
44
|
-
|
|
45
|
-
sig { params(value: String).returns(String) }
|
|
46
|
-
def object=(value); end
|
|
47
|
-
|
|
48
48
|
sig { returns(T::Hash[Symbol, T.untyped]) }
|
|
49
49
|
def to_h; end
|
|
50
50
|
|
|
@@ -9,6 +9,12 @@ module WorkOS
|
|
|
9
9
|
sig { params(json: T.any(String, T::Hash[Symbol, T.untyped])).void }
|
|
10
10
|
def initialize(json); end
|
|
11
11
|
|
|
12
|
+
sig { returns(String) }
|
|
13
|
+
def object; end
|
|
14
|
+
|
|
15
|
+
sig { params(value: String).returns(String) }
|
|
16
|
+
def object=(value); end
|
|
17
|
+
|
|
12
18
|
sig { returns(String) }
|
|
13
19
|
def id; end
|
|
14
20
|
|
|
@@ -39,12 +45,6 @@ module WorkOS
|
|
|
39
45
|
sig { params(value: T.nilable(WorkOS::EventContext)).returns(T.nilable(WorkOS::EventContext)) }
|
|
40
46
|
def context=(value); end
|
|
41
47
|
|
|
42
|
-
sig { returns(String) }
|
|
43
|
-
def object; end
|
|
44
|
-
|
|
45
|
-
sig { params(value: String).returns(String) }
|
|
46
|
-
def object=(value); end
|
|
47
|
-
|
|
48
48
|
sig { returns(T::Hash[Symbol, T.untyped]) }
|
|
49
49
|
def to_h; end
|
|
50
50
|
|
|
@@ -9,6 +9,12 @@ module WorkOS
|
|
|
9
9
|
sig { params(json: T.any(String, T::Hash[Symbol, T.untyped])).void }
|
|
10
10
|
def initialize(json); end
|
|
11
11
|
|
|
12
|
+
sig { returns(String) }
|
|
13
|
+
def object; end
|
|
14
|
+
|
|
15
|
+
sig { params(value: String).returns(String) }
|
|
16
|
+
def object=(value); end
|
|
17
|
+
|
|
12
18
|
sig { returns(String) }
|
|
13
19
|
def id; end
|
|
14
20
|
|
|
@@ -39,12 +45,6 @@ module WorkOS
|
|
|
39
45
|
sig { params(value: T.nilable(WorkOS::EventContext)).returns(T.nilable(WorkOS::EventContext)) }
|
|
40
46
|
def context=(value); end
|
|
41
47
|
|
|
42
|
-
sig { returns(String) }
|
|
43
|
-
def object; end
|
|
44
|
-
|
|
45
|
-
sig { params(value: String).returns(String) }
|
|
46
|
-
def object=(value); end
|
|
47
|
-
|
|
48
48
|
sig { returns(T::Hash[Symbol, T.untyped]) }
|
|
49
49
|
def to_h; end
|
|
50
50
|
|
|
@@ -9,6 +9,12 @@ module WorkOS
|
|
|
9
9
|
sig { params(json: T.any(String, T::Hash[Symbol, T.untyped])).void }
|
|
10
10
|
def initialize(json); end
|
|
11
11
|
|
|
12
|
+
sig { returns(String) }
|
|
13
|
+
def object; end
|
|
14
|
+
|
|
15
|
+
sig { params(value: String).returns(String) }
|
|
16
|
+
def object=(value); end
|
|
17
|
+
|
|
12
18
|
sig { returns(String) }
|
|
13
19
|
def id; end
|
|
14
20
|
|
|
@@ -39,12 +45,6 @@ module WorkOS
|
|
|
39
45
|
sig { params(value: T.nilable(WorkOS::EventContext)).returns(T.nilable(WorkOS::EventContext)) }
|
|
40
46
|
def context=(value); end
|
|
41
47
|
|
|
42
|
-
sig { returns(String) }
|
|
43
|
-
def object; end
|
|
44
|
-
|
|
45
|
-
sig { params(value: String).returns(String) }
|
|
46
|
-
def object=(value); end
|
|
47
|
-
|
|
48
48
|
sig { returns(T::Hash[Symbol, T.untyped]) }
|
|
49
49
|
def to_h; end
|
|
50
50
|
|
|
@@ -9,6 +9,12 @@ module WorkOS
|
|
|
9
9
|
sig { params(json: T.any(String, T::Hash[Symbol, T.untyped])).void }
|
|
10
10
|
def initialize(json); end
|
|
11
11
|
|
|
12
|
+
sig { returns(String) }
|
|
13
|
+
def object; end
|
|
14
|
+
|
|
15
|
+
sig { params(value: String).returns(String) }
|
|
16
|
+
def object=(value); end
|
|
17
|
+
|
|
12
18
|
sig { returns(String) }
|
|
13
19
|
def id; end
|
|
14
20
|
|
|
@@ -39,12 +45,6 @@ module WorkOS
|
|
|
39
45
|
sig { params(value: T.nilable(WorkOS::EventContext)).returns(T.nilable(WorkOS::EventContext)) }
|
|
40
46
|
def context=(value); end
|
|
41
47
|
|
|
42
|
-
sig { returns(String) }
|
|
43
|
-
def object; end
|
|
44
|
-
|
|
45
|
-
sig { params(value: String).returns(String) }
|
|
46
|
-
def object=(value); end
|
|
47
|
-
|
|
48
48
|
sig { returns(T::Hash[Symbol, T.untyped]) }
|
|
49
49
|
def to_h; end
|
|
50
50
|
|
|
@@ -9,6 +9,12 @@ module WorkOS
|
|
|
9
9
|
sig { params(json: T.any(String, T::Hash[Symbol, T.untyped])).void }
|
|
10
10
|
def initialize(json); end
|
|
11
11
|
|
|
12
|
+
sig { returns(String) }
|
|
13
|
+
def object; end
|
|
14
|
+
|
|
15
|
+
sig { params(value: String).returns(String) }
|
|
16
|
+
def object=(value); end
|
|
17
|
+
|
|
12
18
|
sig { returns(String) }
|
|
13
19
|
def id; end
|
|
14
20
|
|
|
@@ -39,12 +45,6 @@ module WorkOS
|
|
|
39
45
|
sig { params(value: T.nilable(WorkOS::EventContext)).returns(T.nilable(WorkOS::EventContext)) }
|
|
40
46
|
def context=(value); end
|
|
41
47
|
|
|
42
|
-
sig { returns(String) }
|
|
43
|
-
def object; end
|
|
44
|
-
|
|
45
|
-
sig { params(value: String).returns(String) }
|
|
46
|
-
def object=(value); end
|
|
47
|
-
|
|
48
48
|
sig { returns(T::Hash[Symbol, T.untyped]) }
|
|
49
49
|
def to_h; end
|
|
50
50
|
|
|
@@ -9,6 +9,12 @@ module WorkOS
|
|
|
9
9
|
sig { params(json: T.any(String, T::Hash[Symbol, T.untyped])).void }
|
|
10
10
|
def initialize(json); end
|
|
11
11
|
|
|
12
|
+
sig { returns(String) }
|
|
13
|
+
def object; end
|
|
14
|
+
|
|
15
|
+
sig { params(value: String).returns(String) }
|
|
16
|
+
def object=(value); end
|
|
17
|
+
|
|
12
18
|
sig { returns(String) }
|
|
13
19
|
def id; end
|
|
14
20
|
|
|
@@ -39,12 +45,6 @@ module WorkOS
|
|
|
39
45
|
sig { params(value: T.nilable(WorkOS::EventContext)).returns(T.nilable(WorkOS::EventContext)) }
|
|
40
46
|
def context=(value); end
|
|
41
47
|
|
|
42
|
-
sig { returns(String) }
|
|
43
|
-
def object; end
|
|
44
|
-
|
|
45
|
-
sig { params(value: String).returns(String) }
|
|
46
|
-
def object=(value); end
|
|
47
|
-
|
|
48
48
|
sig { returns(T::Hash[Symbol, T.untyped]) }
|
|
49
49
|
def to_h; end
|
|
50
50
|
|
data/rbi/workos/webhooks.rbi
CHANGED
|
@@ -25,7 +25,7 @@ module WorkOS
|
|
|
25
25
|
endpoint_url: String,
|
|
26
26
|
events: T::Array[String],
|
|
27
27
|
request_options: T::Hash[Symbol, T.untyped]
|
|
28
|
-
).returns(WorkOS::
|
|
28
|
+
).returns(WorkOS::WebhookEndpoint)
|
|
29
29
|
end
|
|
30
30
|
def create_webhook_endpoint(endpoint_url:, events:, request_options:); end
|
|
31
31
|
|
|
@@ -36,7 +36,7 @@ module WorkOS
|
|
|
36
36
|
status: T.nilable(String),
|
|
37
37
|
events: T.nilable(T::Array[String]),
|
|
38
38
|
request_options: T::Hash[Symbol, T.untyped]
|
|
39
|
-
).returns(WorkOS::
|
|
39
|
+
).returns(WorkOS::WebhookEndpoint)
|
|
40
40
|
end
|
|
41
41
|
def update_webhook_endpoint(id:, endpoint_url:, status:, events:, request_options:); end
|
|
42
42
|
|
data/renovate.json
CHANGED
|
@@ -82,36 +82,10 @@ class BaseClientTest < Minitest::Test
|
|
|
82
82
|
end
|
|
83
83
|
end
|
|
84
84
|
|
|
85
|
-
# A pooled connection that either returns a canned response or raises when
|
|
86
|
-
# driven, so execute_request can be exercised without real TCP+TLS.
|
|
87
|
-
class StubConnection < FakeConnection
|
|
88
|
-
attr_accessor :read_timeout, :open_timeout
|
|
89
|
-
|
|
90
|
-
def initialize(response: nil, error: nil, **kwargs)
|
|
91
|
-
super(**kwargs)
|
|
92
|
-
@response = response
|
|
93
|
-
@error = error
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
def request(_request)
|
|
97
|
-
raise @error if @error
|
|
98
|
-
|
|
99
|
-
@response
|
|
100
|
-
end
|
|
101
|
-
end
|
|
102
|
-
|
|
103
85
|
def setup
|
|
104
86
|
@client = WorkOS::BaseClient.new(api_key: "sk_test_123", max_retries: 1)
|
|
105
87
|
end
|
|
106
88
|
|
|
107
|
-
def teardown
|
|
108
|
-
super
|
|
109
|
-
# Close any open connections and clear the fiber-local cache to avoid
|
|
110
|
-
# leaking pooled connections between tests.
|
|
111
|
-
@client.shutdown
|
|
112
|
-
Fiber[:workos_connections] = nil
|
|
113
|
-
end
|
|
114
|
-
|
|
115
89
|
def test_request_dispatches_known_methods
|
|
116
90
|
client = RecordingClient.new(api_key: "sk_test_123")
|
|
117
91
|
|
|
@@ -240,141 +214,4 @@ class BaseClientTest < Minitest::Test
|
|
|
240
214
|
redacted = @client.send(:redact_path, "/user_management/magic_auth/magic_secret?token=qs_token")
|
|
241
215
|
assert_equal "/user_management/magic_auth/[REDACTED]?token=[REDACTED]", redacted
|
|
242
216
|
end
|
|
243
|
-
|
|
244
|
-
# An exception execute_request's rescue clause doesn't list still leaves the
|
|
245
|
-
# socket mid-stream, so the connection must not survive in the pool for the
|
|
246
|
-
# next request on this thread to pick up.
|
|
247
|
-
def test_unlisted_request_error_evicts_the_pooled_connection
|
|
248
|
-
conn = StubConnection.new(error: Net::HTTPBadResponse.new("wrong version"))
|
|
249
|
-
cache = @client.send(:thread_connections)
|
|
250
|
-
cache["https:api.workos.com:443:30"] = conn
|
|
251
|
-
|
|
252
|
-
assert_raises(Net::HTTPBadResponse) do
|
|
253
|
-
@client.execute_request(request: Net::HTTP::Get.new("/things"))
|
|
254
|
-
end
|
|
255
|
-
|
|
256
|
-
refute cache.key?("https:api.workos.com:443:30"),
|
|
257
|
-
"a connection whose request did not complete must not stay pooled"
|
|
258
|
-
assert conn.finished
|
|
259
|
-
end
|
|
260
|
-
|
|
261
|
-
def test_completed_request_keeps_the_connection_pooled
|
|
262
|
-
conn = StubConnection.new(response: Net::HTTPOK.new("1.1", "200", "OK"))
|
|
263
|
-
cache = @client.send(:thread_connections)
|
|
264
|
-
cache["https:api.workos.com:443:30"] = conn
|
|
265
|
-
|
|
266
|
-
@client.execute_request(request: Net::HTTP::Get.new("/things"))
|
|
267
|
-
|
|
268
|
-
assert cache.key?("https:api.workos.com:443:30")
|
|
269
|
-
refute conn.finished
|
|
270
|
-
end
|
|
271
|
-
|
|
272
|
-
# Raised asynchronously into the worker thread to stand in for a caller-side
|
|
273
|
-
# abort: Timeout.timeout, Thread#kill, a signal handler unwinding the stack.
|
|
274
|
-
# It descends from Exception rather than StandardError so that nothing in
|
|
275
|
-
# execute_request can catch it — the `ensure` is the only cleanup that runs.
|
|
276
|
-
class AbortSignal < Exception; end # standard:disable Lint/InheritException
|
|
277
|
-
|
|
278
|
-
# End-to-end regression test over a real keep-alive socket, for the failure
|
|
279
|
-
# the eviction actually prevents: request one is abandoned mid-flight, the
|
|
280
|
-
# server then writes response one onto that socket, and request two on the
|
|
281
|
-
# same thread reads those stale bytes as if they were its own response.
|
|
282
|
-
#
|
|
283
|
-
# Before the fix, request two sees marker "one" (or a mangled response) off
|
|
284
|
-
# the pooled socket. After it, the abandoned socket is closed and the server
|
|
285
|
-
# accepts a fresh connection for request two.
|
|
286
|
-
def test_aborted_request_does_not_leak_its_response_to_the_next_request
|
|
287
|
-
WebMock.disable!
|
|
288
|
-
server = TCPServer.new("127.0.0.1", 0)
|
|
289
|
-
port = server.addr[1]
|
|
290
|
-
client = WorkOS::BaseClient.new(
|
|
291
|
-
api_key: "sk_test_123",
|
|
292
|
-
base_url: "http://127.0.0.1:#{port}",
|
|
293
|
-
timeout: 5,
|
|
294
|
-
max_retries: 0
|
|
295
|
-
)
|
|
296
|
-
|
|
297
|
-
request_one_read = Queue.new
|
|
298
|
-
release_response_one = Queue.new
|
|
299
|
-
response_one_written = Queue.new
|
|
300
|
-
aborted = Queue.new
|
|
301
|
-
connections = Queue.new
|
|
302
|
-
|
|
303
|
-
server_thread = Thread.new do
|
|
304
|
-
# Connection one: read the request, then hold the response back until
|
|
305
|
-
# the client has been aborted and has unwound.
|
|
306
|
-
first = server.accept
|
|
307
|
-
connections << first
|
|
308
|
-
read_http_request(first)
|
|
309
|
-
request_one_read << true
|
|
310
|
-
release_response_one.pop
|
|
311
|
-
begin
|
|
312
|
-
write_http_response(first, {marker: "one"})
|
|
313
|
-
rescue Errno::EPIPE, Errno::ECONNRESET, IOError
|
|
314
|
-
# Expected once the fix closes the abandoned socket.
|
|
315
|
-
end
|
|
316
|
-
response_one_written << true
|
|
317
|
-
|
|
318
|
-
# Connection two: a fresh accept, which only completes because the
|
|
319
|
-
# client did not reuse the socket above.
|
|
320
|
-
second = server.accept
|
|
321
|
-
connections << second
|
|
322
|
-
read_http_request(second)
|
|
323
|
-
write_http_response(second, {marker: "two"})
|
|
324
|
-
end
|
|
325
|
-
|
|
326
|
-
worker = Thread.new do
|
|
327
|
-
begin
|
|
328
|
-
client.execute_request(request: Net::HTTP::Get.new("/one"))
|
|
329
|
-
rescue AbortSignal
|
|
330
|
-
# The caller unwinds but the thread survives and goes on to serve more
|
|
331
|
-
# work, the way a Puma or Solid Queue worker does. execute_request's
|
|
332
|
-
# `ensure` has already run by the time this body executes.
|
|
333
|
-
aborted << true
|
|
334
|
-
response_one_written.pop
|
|
335
|
-
end
|
|
336
|
-
response = client.execute_request(request: Net::HTTP::Get.new("/two"))
|
|
337
|
-
JSON.parse(response.body)["marker"]
|
|
338
|
-
end
|
|
339
|
-
|
|
340
|
-
marker = Timeout.timeout(15) do
|
|
341
|
-
request_one_read.pop
|
|
342
|
-
worker.raise(AbortSignal)
|
|
343
|
-
aborted.pop
|
|
344
|
-
release_response_one << true
|
|
345
|
-
worker.value
|
|
346
|
-
end
|
|
347
|
-
|
|
348
|
-
assert_equal "two", marker,
|
|
349
|
-
"request two read the abandoned socket's response instead of its own"
|
|
350
|
-
ensure
|
|
351
|
-
server_thread&.kill
|
|
352
|
-
worker&.kill
|
|
353
|
-
until connections.nil? || connections.empty?
|
|
354
|
-
socket = connections.pop
|
|
355
|
-
socket.close unless socket.closed?
|
|
356
|
-
end
|
|
357
|
-
server&.close
|
|
358
|
-
WebMock.enable!
|
|
359
|
-
end
|
|
360
|
-
|
|
361
|
-
def read_http_request(socket)
|
|
362
|
-
socket.gets # request line
|
|
363
|
-
loop do
|
|
364
|
-
line = socket.gets
|
|
365
|
-
break if line.nil? || line == "\r\n"
|
|
366
|
-
end
|
|
367
|
-
end
|
|
368
|
-
|
|
369
|
-
def write_http_response(socket, body)
|
|
370
|
-
payload = JSON.generate(body)
|
|
371
|
-
socket.write(
|
|
372
|
-
"HTTP/1.1 200 OK\r\n" \
|
|
373
|
-
"Content-Type: application/json\r\n" \
|
|
374
|
-
"Content-Length: #{payload.bytesize}\r\n" \
|
|
375
|
-
"Connection: keep-alive\r\n" \
|
|
376
|
-
"\r\n#{payload}"
|
|
377
|
-
)
|
|
378
|
-
socket.flush
|
|
379
|
-
end
|
|
380
217
|
end
|