workos 8.0.0 → 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 +5 -2
- data/.github/workflows/lint.yml +1 -1
- data/.github/workflows/release-please.yml +176 -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 +66 -0
- data/Gemfile.lock +4 -4
- data/README.md +19 -0
- data/docs/V7_MIGRATION_GUIDE.md +21 -0
- data/lib/workos/actions.rb +1 -1
- 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 +71 -5
- 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/encryptors/aes_gcm.rb +19 -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/session.rb +28 -7
- data/lib/workos/session_manager.rb +24 -1
- 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 +11 -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 +8 -9
- 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_actions.rb +9 -0
- data/test/workos/test_base_client.rb +44 -0
- data/test/workos/test_encryptors_aes_gcm.rb +16 -1
- data/test/workos/test_model_round_trip.rb +577 -212
- data/test/workos/test_organization_membership_service.rb +107 -0
- data/test/workos/test_session.rb +43 -4
- data/test/workos/test_user_management.rb +0 -74
- data/test/workos/test_vault.rb +91 -87
- data/test/workos/test_webhook_verify.rb +11 -0
- 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
|
@@ -5,30 +5,30 @@
|
|
|
5
5
|
module WorkOS
|
|
6
6
|
class VaultNamesListed < WorkOS::Types::BaseModel
|
|
7
7
|
HASH_ATTRS = {
|
|
8
|
+
object: :object,
|
|
8
9
|
id: :id,
|
|
9
10
|
event: :event,
|
|
10
11
|
data: :data,
|
|
11
12
|
created_at: :created_at,
|
|
12
|
-
context: :context
|
|
13
|
-
object: :object
|
|
13
|
+
context: :context
|
|
14
14
|
}.freeze
|
|
15
15
|
|
|
16
16
|
attr_accessor \
|
|
17
|
+
:object,
|
|
17
18
|
:id,
|
|
18
19
|
:event,
|
|
19
20
|
:data,
|
|
20
21
|
:created_at,
|
|
21
|
-
:context
|
|
22
|
-
:object
|
|
22
|
+
:context
|
|
23
23
|
|
|
24
24
|
def initialize(json)
|
|
25
25
|
hash = self.class.normalize(json)
|
|
26
|
+
@object = hash[:object]
|
|
26
27
|
@id = hash[:id]
|
|
27
28
|
@event = hash[:event]
|
|
28
29
|
@data = hash[:data] ? WorkOS::VaultNamesListedData.new(hash[:data]) : nil
|
|
29
30
|
@created_at = hash[:created_at]
|
|
30
31
|
@context = hash[:context] ? WorkOS::EventContext.new(hash[:context]) : nil
|
|
31
|
-
@object = hash[:object]
|
|
32
32
|
end
|
|
33
33
|
end
|
|
34
34
|
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# This file is auto-generated by oagen. Do not edit.
|
|
4
|
+
|
|
5
|
+
module WorkOS
|
|
6
|
+
class VersionListResponse < WorkOS::Types::BaseModel
|
|
7
|
+
HASH_ATTRS = {
|
|
8
|
+
data: :data,
|
|
9
|
+
list_metadata: :list_metadata
|
|
10
|
+
}.freeze
|
|
11
|
+
|
|
12
|
+
attr_accessor \
|
|
13
|
+
:data,
|
|
14
|
+
:list_metadata
|
|
15
|
+
|
|
16
|
+
def initialize(json)
|
|
17
|
+
hash = self.class.normalize(json)
|
|
18
|
+
@data = (hash[:data] || []).map { |item| item ? WorkOS::ObjectVersion.new(item) : nil }
|
|
19
|
+
@list_metadata = hash[:list_metadata] ? WorkOS::ListMetadata.new(hash[:list_metadata]) : nil
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
data/lib/workos/vault.rb
CHANGED
|
@@ -1,176 +1,309 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
#
|
|
4
|
-
|
|
5
|
-
# AES-GCM encrypt/decrypt (H18). The Vault HTTP API is not in the OpenAPI spec
|
|
6
|
-
# and the AES-GCM helpers are inherently client-side, so this stays
|
|
7
|
-
# hand-maintained regardless of spec coverage.
|
|
8
|
-
require "base64"
|
|
3
|
+
# This file is auto-generated by oagen. Do not edit.
|
|
4
|
+
|
|
9
5
|
require "json"
|
|
6
|
+
require "base64"
|
|
10
7
|
require "openssl"
|
|
11
8
|
require "securerandom"
|
|
12
9
|
|
|
13
10
|
module WorkOS
|
|
14
|
-
# WorkOS Vault: KV secret storage, server-managed key wrapping, and
|
|
15
|
-
# client-side AES-GCM encrypt/decrypt.
|
|
16
|
-
#
|
|
17
|
-
# @example Store and retrieve a secret
|
|
18
|
-
# client.vault.create_object(name: "api-key", value: "sk_...", key_context: { "tenant" => "t1" })
|
|
19
|
-
# obj = client.vault.read_object_by_name(name: "api-key")
|
|
20
|
-
# obj.value # => "sk_..."
|
|
21
|
-
#
|
|
22
|
-
# @example Client-side encrypt/decrypt
|
|
23
|
-
# encrypted = client.vault.encrypt(data: "plaintext", key_context: { "tenant" => "t1" })
|
|
24
|
-
# client.vault.decrypt(encrypted_data: encrypted)
|
|
25
11
|
class Vault
|
|
26
|
-
DEFAULT_RESPONSE_LIMIT = 10
|
|
27
|
-
|
|
28
|
-
DataKey = Data.define(:id, :key) do
|
|
29
|
-
def self.from_response(hash)
|
|
30
|
-
new(id: hash["id"], key: hash["data_key"])
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
DataKeyPair = Data.define(:context, :data_key, :encrypted_keys) do
|
|
35
|
-
def self.from_response(hash)
|
|
36
|
-
new(
|
|
37
|
-
context: hash["context"],
|
|
38
|
-
data_key: DataKey.new(id: hash["id"], key: hash["data_key"]),
|
|
39
|
-
encrypted_keys: hash["encrypted_keys"]
|
|
40
|
-
)
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
ObjectUpdateBy = Data.define(:id, :name) do
|
|
45
|
-
def self.from_hash(hash)
|
|
46
|
-
return nil if hash.nil?
|
|
47
|
-
new(id: hash["id"], name: hash["name"])
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
ObjectMetadata = Data.define(:context, :environment_id, :id, :key_id, :updated_at, :updated_by, :version_id) do
|
|
52
|
-
def self.from_hash(hash)
|
|
53
|
-
new(
|
|
54
|
-
context: hash["context"],
|
|
55
|
-
environment_id: hash["environment_id"],
|
|
56
|
-
id: hash["id"],
|
|
57
|
-
key_id: hash["key_id"],
|
|
58
|
-
updated_at: hash["updated_at"],
|
|
59
|
-
updated_by: ObjectUpdateBy.from_hash(hash["updated_by"]),
|
|
60
|
-
version_id: hash["version_id"]
|
|
61
|
-
)
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
VaultObject = Data.define(:id, :name, :value, :metadata) do
|
|
66
|
-
def self.from_hash(hash)
|
|
67
|
-
new(
|
|
68
|
-
id: hash["id"],
|
|
69
|
-
name: hash["name"],
|
|
70
|
-
value: hash["value"],
|
|
71
|
-
metadata: hash["metadata"] ? ObjectMetadata.from_hash(hash["metadata"]) : nil
|
|
72
|
-
)
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
ObjectDigest = Data.define(:id, :name, :updated_at) do
|
|
77
|
-
def self.from_hash(hash)
|
|
78
|
-
new(id: hash["id"], name: hash["name"], updated_at: hash["updated_at"])
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
ObjectVersion = Data.define(:id, :created_at, :current_version) do
|
|
83
|
-
def self.from_hash(hash)
|
|
84
|
-
new(id: hash["id"], created_at: hash["created_at"], current_version: hash["current_version"])
|
|
85
|
-
end
|
|
86
|
-
end
|
|
87
|
-
|
|
88
12
|
def initialize(client)
|
|
89
13
|
@client = client
|
|
90
14
|
end
|
|
91
15
|
|
|
92
|
-
#
|
|
93
|
-
|
|
94
|
-
#
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
16
|
+
# Create a data key
|
|
17
|
+
# @param context [Hash{String => String}] Map of values used to determine the encryption key.
|
|
18
|
+
# @param request_options [Hash] (see WorkOS::Types::RequestOptions)
|
|
19
|
+
# @return [WorkOS::CreateDataKeyResponse]
|
|
20
|
+
def create_data_key(
|
|
21
|
+
context:,
|
|
22
|
+
request_options: {}
|
|
23
|
+
)
|
|
24
|
+
body = {
|
|
25
|
+
"context" => context
|
|
26
|
+
}
|
|
27
|
+
response = @client.request(
|
|
28
|
+
method: :post,
|
|
29
|
+
path: "/vault/v1/keys/data-key",
|
|
30
|
+
auth: true,
|
|
31
|
+
body: body,
|
|
32
|
+
request_options: request_options
|
|
33
|
+
)
|
|
34
|
+
result = WorkOS::CreateDataKeyResponse.new(response.body)
|
|
35
|
+
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"])
|
|
36
|
+
result
|
|
98
37
|
end
|
|
99
38
|
|
|
100
|
-
#
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
39
|
+
# Decrypt a data key
|
|
40
|
+
# @param keys [String] Base64-encoded encrypted data key to decrypt.
|
|
41
|
+
# @param request_options [Hash] (see WorkOS::Types::RequestOptions)
|
|
42
|
+
# @return [WorkOS::DecryptResponse]
|
|
43
|
+
def create_decrypt(
|
|
44
|
+
keys:,
|
|
45
|
+
request_options: {}
|
|
46
|
+
)
|
|
47
|
+
body = {
|
|
48
|
+
"keys" => keys
|
|
49
|
+
}
|
|
50
|
+
response = @client.request(
|
|
51
|
+
method: :post,
|
|
52
|
+
path: "/vault/v1/keys/decrypt",
|
|
53
|
+
auth: true,
|
|
54
|
+
body: body,
|
|
55
|
+
request_options: request_options
|
|
56
|
+
)
|
|
57
|
+
result = WorkOS::DecryptResponse.new(response.body)
|
|
58
|
+
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"])
|
|
59
|
+
result
|
|
104
60
|
end
|
|
105
61
|
|
|
106
|
-
#
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
62
|
+
# Re-encrypt a data key
|
|
63
|
+
# @param context [Hash{String => String}] Map of values used to determine the new encryption key.
|
|
64
|
+
# @param encrypted_keys [String] Base64-encoded encrypted data key blob to re-encrypt.
|
|
65
|
+
# @param request_options [Hash] (see WorkOS::Types::RequestOptions)
|
|
66
|
+
# @return [WorkOS::CreateDataKeyResponse]
|
|
67
|
+
def create_rekey(
|
|
68
|
+
context:,
|
|
69
|
+
encrypted_keys:,
|
|
70
|
+
request_options: {}
|
|
71
|
+
)
|
|
72
|
+
body = {
|
|
73
|
+
"context" => context,
|
|
74
|
+
"encrypted_keys" => encrypted_keys
|
|
75
|
+
}
|
|
76
|
+
response = @client.request(
|
|
77
|
+
method: :post,
|
|
78
|
+
path: "/vault/v1/keys/rekey",
|
|
79
|
+
auth: true,
|
|
80
|
+
body: body,
|
|
81
|
+
request_options: request_options
|
|
82
|
+
)
|
|
83
|
+
result = WorkOS::CreateDataKeyResponse.new(response.body)
|
|
84
|
+
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"])
|
|
85
|
+
result
|
|
110
86
|
end
|
|
111
87
|
|
|
112
|
-
# List
|
|
113
|
-
# @
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
88
|
+
# List objects
|
|
89
|
+
# @param limit [Integer, nil] Upper limit on the number of objects to return.
|
|
90
|
+
# @param before [String, nil] Cursor for the previous page of results.
|
|
91
|
+
# @param after [String, nil] Cursor for the next page of results.
|
|
92
|
+
# @param order [WorkOS::Types::VaultOrder, nil] Sort direction for results.
|
|
93
|
+
# @param search [String, nil] Filter results by name or structured search JSON.
|
|
94
|
+
# @param updated_after [String, nil] ISO 8601 timestamp to filter by last modified time.
|
|
95
|
+
# @param request_options [Hash] (see WorkOS::Types::RequestOptions)
|
|
96
|
+
# @return [WorkOS::Types::ListStruct<WorkOS::ObjectSummary>]
|
|
97
|
+
def list_kv(
|
|
98
|
+
limit: 10,
|
|
99
|
+
before: nil,
|
|
100
|
+
after: nil,
|
|
101
|
+
order: nil,
|
|
102
|
+
search: nil,
|
|
103
|
+
updated_after: nil,
|
|
104
|
+
request_options: {}
|
|
105
|
+
)
|
|
106
|
+
params = {
|
|
107
|
+
"limit" => limit,
|
|
108
|
+
"before" => before,
|
|
109
|
+
"after" => after,
|
|
110
|
+
"order" => order,
|
|
111
|
+
"search" => search,
|
|
112
|
+
"updatedAfter" => updated_after
|
|
113
|
+
}.compact
|
|
114
|
+
response = @client.request(
|
|
115
|
+
method: :get,
|
|
116
|
+
path: "/vault/v1/kv",
|
|
117
|
+
auth: true,
|
|
118
|
+
params: params,
|
|
119
|
+
request_options: request_options
|
|
120
|
+
)
|
|
121
|
+
fetch_next = ->(cursor) {
|
|
122
|
+
list_kv(
|
|
123
|
+
limit: limit,
|
|
124
|
+
before: before,
|
|
125
|
+
after: cursor,
|
|
126
|
+
order: order,
|
|
127
|
+
search: search,
|
|
128
|
+
updated_after: updated_after,
|
|
129
|
+
request_options: request_options
|
|
130
|
+
)
|
|
131
|
+
}
|
|
132
|
+
WorkOS::Types::ListStruct.from_response(
|
|
133
|
+
response,
|
|
134
|
+
model: WorkOS::ObjectSummary,
|
|
135
|
+
filters: {limit: limit, before: before, order: order, search: search, updated_after: updated_after},
|
|
136
|
+
fetch_next: fetch_next
|
|
137
|
+
)
|
|
119
138
|
end
|
|
120
139
|
|
|
121
|
-
#
|
|
122
|
-
# @
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
140
|
+
# Create an object
|
|
141
|
+
# @param key_context [Hash{String => String}] Map of values used to determine the encryption key.
|
|
142
|
+
# @param name [String] Unique name for the object.
|
|
143
|
+
# @param value [String] Plaintext data to encrypt and store.
|
|
144
|
+
# @param request_options [Hash] (see WorkOS::Types::RequestOptions)
|
|
145
|
+
# @return [WorkOS::ObjectMetadata]
|
|
146
|
+
def create_kv(
|
|
147
|
+
key_context:,
|
|
148
|
+
name:,
|
|
149
|
+
value:,
|
|
150
|
+
request_options: {}
|
|
151
|
+
)
|
|
152
|
+
body = {
|
|
153
|
+
"key_context" => key_context,
|
|
154
|
+
"name" => name,
|
|
155
|
+
"value" => value
|
|
156
|
+
}
|
|
157
|
+
response = @client.request(
|
|
158
|
+
method: :post,
|
|
159
|
+
path: "/vault/v1/kv",
|
|
160
|
+
auth: true,
|
|
161
|
+
body: body,
|
|
162
|
+
request_options: request_options
|
|
163
|
+
)
|
|
164
|
+
result = WorkOS::ObjectMetadata.new(response.body)
|
|
165
|
+
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"])
|
|
166
|
+
result
|
|
127
167
|
end
|
|
128
168
|
|
|
129
|
-
#
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
169
|
+
# Read an object by name
|
|
170
|
+
# @param name [String] Unique name of the object.
|
|
171
|
+
# @param request_options [Hash] (see WorkOS::Types::RequestOptions)
|
|
172
|
+
# @return [WorkOS::ObjectModel]
|
|
173
|
+
def get_name(
|
|
174
|
+
name:,
|
|
175
|
+
request_options: {}
|
|
176
|
+
)
|
|
177
|
+
response = @client.request(
|
|
178
|
+
method: :get,
|
|
179
|
+
path: "/vault/v1/kv/name/#{WorkOS::Util.encode_path(name)}",
|
|
180
|
+
auth: true,
|
|
181
|
+
request_options: request_options
|
|
182
|
+
)
|
|
183
|
+
result = WorkOS::ObjectModel.new(response.body)
|
|
184
|
+
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"])
|
|
185
|
+
result
|
|
134
186
|
end
|
|
135
187
|
|
|
136
|
-
#
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
188
|
+
# Read an object by ID
|
|
189
|
+
# @param id [String] Unique identifier of the object.
|
|
190
|
+
# @param request_options [Hash] (see WorkOS::Types::RequestOptions)
|
|
191
|
+
# @return [WorkOS::ObjectModel]
|
|
192
|
+
def get_kv(
|
|
193
|
+
id:,
|
|
194
|
+
request_options: {}
|
|
195
|
+
)
|
|
196
|
+
response = @client.request(
|
|
197
|
+
method: :get,
|
|
198
|
+
path: "/vault/v1/kv/#{WorkOS::Util.encode_path(id)}",
|
|
199
|
+
auth: true,
|
|
200
|
+
request_options: request_options
|
|
201
|
+
)
|
|
202
|
+
result = WorkOS::ObjectModel.new(response.body)
|
|
203
|
+
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"])
|
|
204
|
+
result
|
|
141
205
|
end
|
|
142
206
|
|
|
143
|
-
#
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
207
|
+
# Update an object
|
|
208
|
+
# @param id [String] Unique identifier of the object.
|
|
209
|
+
# @param value [String] New plaintext value.
|
|
210
|
+
# @param version_check [String, nil] ID of the expected current version for optimistic locking.
|
|
211
|
+
# @param request_options [Hash] (see WorkOS::Types::RequestOptions)
|
|
212
|
+
# @return [WorkOS::ObjectWithoutValue]
|
|
213
|
+
def update_kv(
|
|
214
|
+
id:,
|
|
215
|
+
value:,
|
|
216
|
+
version_check: nil,
|
|
217
|
+
request_options: {}
|
|
218
|
+
)
|
|
219
|
+
body = {
|
|
220
|
+
"value" => value,
|
|
221
|
+
"version_check" => version_check
|
|
222
|
+
}.compact
|
|
223
|
+
response = @client.request(
|
|
224
|
+
method: :put,
|
|
225
|
+
path: "/vault/v1/kv/#{WorkOS::Util.encode_path(id)}",
|
|
226
|
+
auth: true,
|
|
227
|
+
body: body,
|
|
228
|
+
request_options: request_options
|
|
229
|
+
)
|
|
230
|
+
result = WorkOS::ObjectWithoutValue.new(response.body)
|
|
231
|
+
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"])
|
|
232
|
+
result
|
|
147
233
|
end
|
|
148
234
|
|
|
149
|
-
#
|
|
235
|
+
# Delete an object
|
|
236
|
+
# @param id [String] Unique identifier of the object.
|
|
237
|
+
# @param version_check [String, nil] Expected current version for optimistic locking.
|
|
238
|
+
# @param request_options [Hash] (see WorkOS::Types::RequestOptions)
|
|
239
|
+
# @return [WorkOS::DeleteObjectResponse]
|
|
240
|
+
def delete_kv(
|
|
241
|
+
id:,
|
|
242
|
+
version_check: nil,
|
|
243
|
+
request_options: {}
|
|
244
|
+
)
|
|
245
|
+
params = {
|
|
246
|
+
"version_check" => version_check
|
|
247
|
+
}.compact
|
|
248
|
+
response = @client.request(
|
|
249
|
+
method: :delete,
|
|
250
|
+
path: "/vault/v1/kv/#{WorkOS::Util.encode_path(id)}",
|
|
251
|
+
auth: true,
|
|
252
|
+
params: params,
|
|
253
|
+
request_options: request_options
|
|
254
|
+
)
|
|
255
|
+
result = WorkOS::DeleteObjectResponse.new(response.body)
|
|
256
|
+
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"])
|
|
257
|
+
result
|
|
258
|
+
end
|
|
150
259
|
|
|
151
|
-
#
|
|
152
|
-
# @
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
260
|
+
# Describe an object
|
|
261
|
+
# @param id [String] Unique identifier of the object.
|
|
262
|
+
# @param request_options [Hash] (see WorkOS::Types::RequestOptions)
|
|
263
|
+
# @return [WorkOS::ObjectWithoutValue]
|
|
264
|
+
def list_kv_metadata(
|
|
265
|
+
id:,
|
|
266
|
+
request_options: {}
|
|
267
|
+
)
|
|
268
|
+
response = @client.request(
|
|
269
|
+
method: :get,
|
|
270
|
+
path: "/vault/v1/kv/#{WorkOS::Util.encode_path(id)}/metadata",
|
|
271
|
+
auth: true,
|
|
272
|
+
request_options: request_options
|
|
273
|
+
)
|
|
274
|
+
result = WorkOS::ObjectWithoutValue.new(response.body)
|
|
275
|
+
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"])
|
|
276
|
+
result
|
|
157
277
|
end
|
|
158
278
|
|
|
159
|
-
#
|
|
160
|
-
# @
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
279
|
+
# List object versions
|
|
280
|
+
# @param id [String] Unique identifier of the object.
|
|
281
|
+
# @param request_options [Hash] (see WorkOS::Types::RequestOptions)
|
|
282
|
+
# @return [WorkOS::Types::ListStruct<WorkOS::ObjectVersion>]
|
|
283
|
+
def list_kv_versions(
|
|
284
|
+
id:,
|
|
285
|
+
request_options: {}
|
|
286
|
+
)
|
|
287
|
+
response = @client.request(
|
|
288
|
+
method: :get,
|
|
289
|
+
path: "/vault/v1/kv/#{WorkOS::Util.encode_path(id)}/versions",
|
|
290
|
+
auth: true,
|
|
291
|
+
request_options: request_options
|
|
292
|
+
)
|
|
293
|
+
WorkOS::Types::ListStruct.from_response(
|
|
294
|
+
response,
|
|
295
|
+
model: WorkOS::ObjectVersion,
|
|
296
|
+
filters: {id: id}
|
|
297
|
+
)
|
|
165
298
|
end
|
|
166
299
|
|
|
167
|
-
#
|
|
300
|
+
# @oagen-ignore-start — client-side AES-GCM encrypt/decrypt (H18, hand-maintained)
|
|
168
301
|
|
|
169
302
|
# Encrypt data locally using AES-GCM with a data key derived from the context.
|
|
170
303
|
# Returns base64(IV || TAG || LEB128(len(keyBlob)) || keyBlob || ciphertext).
|
|
171
|
-
def encrypt(data:,
|
|
172
|
-
pair = create_data_key(
|
|
173
|
-
key = Base64.decode64(pair.data_key
|
|
304
|
+
def encrypt(data:, context:, associated_data: nil)
|
|
305
|
+
pair = create_data_key(context: context)
|
|
306
|
+
key = Base64.decode64(pair.data_key)
|
|
174
307
|
key_blob = Base64.decode64(pair.encrypted_keys)
|
|
175
308
|
prefix = encode_u32_leb128(key_blob.bytesize)
|
|
176
309
|
iv, ciphertext, tag = aes_gcm_encrypt(data.b, key, associated_data&.b)
|
|
@@ -186,8 +319,8 @@ module WorkOS
|
|
|
186
319
|
keys_index = 28 + leb_len
|
|
187
320
|
key_blob = payload.byteslice(keys_index, key_len)
|
|
188
321
|
ciphertext = payload.byteslice(keys_index + key_len, payload.bytesize - (keys_index + key_len))
|
|
189
|
-
|
|
190
|
-
key = Base64.decode64(data_key
|
|
322
|
+
dk = create_decrypt(keys: Base64.strict_encode64(key_blob))
|
|
323
|
+
key = Base64.decode64(dk.data_key)
|
|
191
324
|
aes_gcm_decrypt(ciphertext, key, iv, tag, associated_data&.b)
|
|
192
325
|
end
|
|
193
326
|
|
|
@@ -237,5 +370,6 @@ module WorkOS
|
|
|
237
370
|
end
|
|
238
371
|
raise ArgumentError, "LEB128 not terminated"
|
|
239
372
|
end
|
|
373
|
+
# @oagen-ignore-end
|
|
240
374
|
end
|
|
241
375
|
end
|
data/lib/workos/version.rb
CHANGED
|
@@ -2,12 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
# This file is auto-generated by oagen. Do not edit.
|
|
4
4
|
|
|
5
|
-
require "json"
|
|
6
|
-
|
|
7
5
|
module WorkOS
|
|
8
|
-
class WebhookEndpoint
|
|
9
|
-
include HashProvider
|
|
10
|
-
|
|
6
|
+
class WebhookEndpoint < WorkOS::Types::BaseModel
|
|
11
7
|
HASH_ATTRS = {
|
|
12
8
|
object: :object,
|
|
13
9
|
id: :id,
|
|
@@ -30,8 +26,7 @@ module WorkOS
|
|
|
30
26
|
:updated_at
|
|
31
27
|
|
|
32
28
|
def initialize(json)
|
|
33
|
-
hash =
|
|
34
|
-
hash = hash.transform_keys(&:to_sym) if hash.keys.first.is_a?(String)
|
|
29
|
+
hash = self.class.normalize(json)
|
|
35
30
|
@object = hash[:object]
|
|
36
31
|
@id = hash[:id]
|
|
37
32
|
@endpoint_url = hash[:endpoint_url]
|
data/lib/workos/webhooks.rb
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
# This file is auto-generated by oagen. Do not edit.
|
|
4
4
|
|
|
5
5
|
require "json"
|
|
6
|
+
require "openssl"
|
|
6
7
|
|
|
7
8
|
module WorkOS
|
|
8
9
|
class Webhooks
|
|
@@ -16,7 +17,7 @@ module WorkOS
|
|
|
16
17
|
# @param limit [Integer, nil] Upper limit on the number of objects to return, between `1` and `100`.
|
|
17
18
|
# @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.
|
|
18
19
|
# @param request_options [Hash] (see WorkOS::Types::RequestOptions)
|
|
19
|
-
# @return [WorkOS::Types::ListStruct<WorkOS::
|
|
20
|
+
# @return [WorkOS::Types::ListStruct<WorkOS::WebhookEndpoint>]
|
|
20
21
|
def list_webhook_endpoints(
|
|
21
22
|
before: nil,
|
|
22
23
|
after: nil,
|
|
@@ -48,7 +49,7 @@ module WorkOS
|
|
|
48
49
|
}
|
|
49
50
|
WorkOS::Types::ListStruct.from_response(
|
|
50
51
|
response,
|
|
51
|
-
model: WorkOS::
|
|
52
|
+
model: WorkOS::WebhookEndpoint,
|
|
52
53
|
filters: {before: before, limit: limit, order: order},
|
|
53
54
|
fetch_next: fetch_next
|
|
54
55
|
)
|
|
@@ -58,7 +59,7 @@ module WorkOS
|
|
|
58
59
|
# @param endpoint_url [String] The HTTPS URL where webhooks will be sent.
|
|
59
60
|
# @param events [Array<WorkOS::Types::CreateWebhookEndpointEvents>] The events that the Webhook Endpoint is subscribed to.
|
|
60
61
|
# @param request_options [Hash] (see WorkOS::Types::RequestOptions)
|
|
61
|
-
# @return [WorkOS::
|
|
62
|
+
# @return [WorkOS::WebhookEndpoint]
|
|
62
63
|
def create_webhook_endpoint(
|
|
63
64
|
endpoint_url:,
|
|
64
65
|
events:,
|
|
@@ -75,7 +76,7 @@ module WorkOS
|
|
|
75
76
|
body: body,
|
|
76
77
|
request_options: request_options
|
|
77
78
|
)
|
|
78
|
-
result = WorkOS::
|
|
79
|
+
result = WorkOS::WebhookEndpoint.new(response.body)
|
|
79
80
|
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"])
|
|
80
81
|
result
|
|
81
82
|
end
|
|
@@ -86,7 +87,7 @@ module WorkOS
|
|
|
86
87
|
# @param status [WorkOS::Types::UpdateWebhookEndpointStatus, nil] Whether the Webhook Endpoint is enabled or disabled.
|
|
87
88
|
# @param events [Array<WorkOS::Types::UpdateWebhookEndpointEvents>, nil] The events that the Webhook Endpoint is subscribed to.
|
|
88
89
|
# @param request_options [Hash] (see WorkOS::Types::RequestOptions)
|
|
89
|
-
# @return [WorkOS::
|
|
90
|
+
# @return [WorkOS::WebhookEndpoint]
|
|
90
91
|
def update_webhook_endpoint(
|
|
91
92
|
id:,
|
|
92
93
|
endpoint_url: nil,
|
|
@@ -106,7 +107,7 @@ module WorkOS
|
|
|
106
107
|
body: body,
|
|
107
108
|
request_options: request_options
|
|
108
109
|
)
|
|
109
|
-
result = WorkOS::
|
|
110
|
+
result = WorkOS::WebhookEndpoint.new(response.body)
|
|
110
111
|
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"])
|
|
111
112
|
result
|
|
112
113
|
end
|
|
@@ -129,8 +130,6 @@ module WorkOS
|
|
|
129
130
|
end
|
|
130
131
|
|
|
131
132
|
# @oagen-ignore-start — non-spec helpers (hand-maintained)
|
|
132
|
-
require "openssl"
|
|
133
|
-
|
|
134
133
|
DEFAULT_TOLERANCE_SECONDS = 180
|
|
135
134
|
|
|
136
135
|
# Verify a webhook signature and return a typed event struct.
|
|
@@ -193,7 +192,7 @@ module WorkOS
|
|
|
193
192
|
timestamp_ms, signature_hash = parse_signature_header(sig_header)
|
|
194
193
|
max_age = tolerance.to_i
|
|
195
194
|
issued_at = timestamp_ms.to_i / 1000.0
|
|
196
|
-
if (Time.now.to_f - issued_at) > max_age
|
|
195
|
+
if (Time.now.to_f - issued_at).abs > max_age
|
|
197
196
|
raise WorkOS::SignatureVerificationError.new(
|
|
198
197
|
message: "Timestamp outside the tolerance zone",
|
|
199
198
|
http_status: nil
|
data/lib/workos.rb
CHANGED
|
@@ -21,6 +21,7 @@ loader.collapse("#{__dir__}/workos/feature_flags")
|
|
|
21
21
|
loader.collapse("#{__dir__}/workos/groups")
|
|
22
22
|
loader.collapse("#{__dir__}/workos/multi_factor_auth")
|
|
23
23
|
loader.collapse("#{__dir__}/workos/organization_domains")
|
|
24
|
+
loader.collapse("#{__dir__}/workos/organization_membership")
|
|
24
25
|
loader.collapse("#{__dir__}/workos/organizations")
|
|
25
26
|
loader.collapse("#{__dir__}/workos/pipes")
|
|
26
27
|
loader.collapse("#{__dir__}/workos/radar")
|