UNPKG

@auth0/auth0-spa-js

Version:

Auth0 SDK for Single Page Applications using Authorization Code Grant Flow with PKCE

356 lines (300 loc) 9.57 kB
import type { AuthorizationParams } from '../global'; import type { PasskeyCreationOptions, PasskeyCredentialResponse } from '@auth0/auth0-auth-js'; // ─── Connected Accounts ────────────────────────────────────────────────────── export interface ConnectRequest { connection: string; scopes?: string[]; redirect_uri: string; state?: string; code_challenge?: string; code_challenge_method?: 'S256'; authorization_params?: AuthorizationParams; } export interface ConnectResponse { connect_uri: string; auth_session: string; connect_params: { ticket: string; }; expires_in: number; } export interface CompleteRequest { auth_session: string; connect_code: string; redirect_uri: string; code_verifier?: string; } export interface CompleteResponse { id: string; connection: string; access_type: 'offline'; scopes?: string[]; created_at: string; expires_at?: string; } // ─── Error ─────────────────────────────────────────────────────────────────── export interface ErrorResponse { type: string; status: number; title: string; detail: string; validation_errors?: { detail: string; field?: string; pointer?: string; source?: string; }[]; } // ─── Factors ───────────────────────────────────────────────────────────────── export type AuthenticationMethodType = | 'passkey' | 'password' | 'phone' | 'totp' | 'email' | 'push-notification' | 'recovery-code' | 'webauthn-platform' | 'webauthn-roaming'; export interface Factor { type: AuthenticationMethodType; usage?: ('primary' | 'secondary')[]; } // ─── Authentication Methods ─────────────────────────────────────────────────── interface AuthenticationMethodBase { id: string; created_at: string; usage: ('primary' | 'secondary')[]; } interface AuthenticationMethodWithMetadata extends AuthenticationMethodBase { confirmed: boolean; name?: string; last_auth_at?: string; } interface WebAuthnAuthenticationMethodBase extends AuthenticationMethodWithMetadata { key_id?: string; public_key?: string; } export interface PasskeyAuthenticationMethod extends AuthenticationMethodBase { type: 'passkey'; key_id: string; public_key: string; credential_device_type: 'single_device' | 'multi_device'; credential_backed_up: boolean; identity_user_id: string; user_handle: string; transports?: string[]; user_agent?: string; aaguid?: string; relying_party_id?: string; last_auth_at?: string; } export interface WebAuthnPlatformAuthenticationMethod extends WebAuthnAuthenticationMethodBase { type: 'webauthn-platform'; } export interface WebAuthnRoamingAuthenticationMethod extends WebAuthnAuthenticationMethodBase { type: 'webauthn-roaming'; } export interface PhoneAuthenticationMethod extends AuthenticationMethodWithMetadata { type: 'phone'; phone_number: string; preferred_authentication_method: 'sms' | 'voice'; } export interface EmailAuthenticationMethod extends AuthenticationMethodWithMetadata { type: 'email'; email: string; } export interface PasswordAuthenticationMethod extends AuthenticationMethodBase { type: 'password'; identity_user_id: string; last_password_reset?: string; } export interface TotpAuthenticationMethod extends AuthenticationMethodWithMetadata { type: 'totp'; } export interface PushNotificationAuthenticationMethod extends AuthenticationMethodWithMetadata { type: 'push-notification'; } export interface RecoveryCodeAuthenticationMethod extends Omit<AuthenticationMethodWithMetadata, 'name'> { type: 'recovery-code'; } export type AuthenticationMethod = | PasskeyAuthenticationMethod | WebAuthnPlatformAuthenticationMethod | WebAuthnRoamingAuthenticationMethod | PhoneAuthenticationMethod | EmailAuthenticationMethod | PasswordAuthenticationMethod | TotpAuthenticationMethod | PushNotificationAuthenticationMethod | RecoveryCodeAuthenticationMethod; export interface UpdateAuthenticationMethodRequest { name?: string; /** Only valid when updating a phone authentication method. */ preferred_authentication_method?: 'sms' | 'voice'; } // ─── Enrollment Challenge Options ──────────────────────────────────────────── export interface PasskeyEnrollmentChallengeOptions { type: 'passkey'; connection?: string; identity_user_id?: string; } export interface PhoneEnrollmentChallengeOptions { type: 'phone'; phone_number: string; preferred_authentication_method?: 'sms' | 'voice'; } export interface EmailEnrollmentChallengeOptions { type: 'email'; email: string; } export interface TotpEnrollmentChallengeOptions { type: 'totp'; } export interface PushNotificationEnrollmentChallengeOptions { type: 'push-notification'; } export interface RecoveryCodeEnrollmentChallengeOptions { type: 'recovery-code'; } export interface PasswordEnrollmentChallengeOptions { type: 'password'; connection?: string; identity_user_id?: string; } export type EnrollmentChallengeOptions = | PasskeyEnrollmentChallengeOptions | PhoneEnrollmentChallengeOptions | EmailEnrollmentChallengeOptions | TotpEnrollmentChallengeOptions | PushNotificationEnrollmentChallengeOptions | RecoveryCodeEnrollmentChallengeOptions | PasswordEnrollmentChallengeOptions; // ─── Enrollment Challenge Response ─────────────────────────────────────────── interface EnrollmentChallengeBaseResponse { id: string; location: string; auth_session: string; } export interface PasskeyEnrollmentChallengeResponse extends EnrollmentChallengeBaseResponse { type: 'passkey'; authn_params_public_key: PasskeyCreationOptions; } export interface PhoneEnrollmentChallengeResponse extends EnrollmentChallengeBaseResponse { type: 'phone'; } export interface EmailEnrollmentChallengeResponse extends EnrollmentChallengeBaseResponse { type: 'email'; } export interface TotpEnrollmentChallengeResponse extends EnrollmentChallengeBaseResponse { type: 'totp'; barcode_uri: string; manual_input_code?: string; } export interface PushNotificationEnrollmentChallengeResponse extends EnrollmentChallengeBaseResponse { type: 'push-notification'; barcode_uri: string; manual_input_code?: string; } export interface RecoveryCodeEnrollmentChallengeResponse extends EnrollmentChallengeBaseResponse { type: 'recovery-code'; recovery_code: string; } export interface PasswordPolicy { complexity: { min_length: number; character_types: ('uppercase' | 'lowercase' | 'number' | 'special')[]; character_type_rule: 'all' | 'three_of_four'; identical_characters: 'allow' | 'block'; sequential_characters: 'allow' | 'block'; max_length_exceeded: 'truncate' | 'error'; }; profile_data: { active: boolean; blocked_fields: string[]; }; history: { active: boolean; size: number; }; dictionary: { active: boolean; default: 'en_10k' | 'en_100k'; }; } export interface PasswordEnrollmentChallengeResponse extends EnrollmentChallengeBaseResponse { type: 'password'; policy: PasswordPolicy; } export type EnrollmentChallengeResponse = | PasskeyEnrollmentChallengeResponse | PhoneEnrollmentChallengeResponse | EmailEnrollmentChallengeResponse | TotpEnrollmentChallengeResponse | PushNotificationEnrollmentChallengeResponse | RecoveryCodeEnrollmentChallengeResponse | PasswordEnrollmentChallengeResponse; // ─── Enrollment Verify ──────────────────────────────────────────────────────── interface EnrollmentVerifyBaseOptions { location: string; auth_session: string; } export interface PasskeyEnrollmentVerifyOptions extends EnrollmentVerifyBaseOptions { type: 'passkey'; authn_response: PasskeyCredentialResponse; } export interface PhoneEnrollmentVerifyOptions extends EnrollmentVerifyBaseOptions { type: 'phone'; otp_code: string; } export interface EmailEnrollmentVerifyOptions extends EnrollmentVerifyBaseOptions { type: 'email'; otp_code: string; } export interface TotpEnrollmentVerifyOptions extends EnrollmentVerifyBaseOptions { type: 'totp'; otp_code: string; } export interface PushNotificationEnrollmentVerifyOptions extends EnrollmentVerifyBaseOptions { type: 'push-notification'; } export interface RecoveryCodeEnrollmentVerifyOptions extends EnrollmentVerifyBaseOptions { type: 'recovery-code'; } export interface PasswordEnrollmentVerifyOptions extends EnrollmentVerifyBaseOptions { type: 'password'; new_password: string; } export type EnrollmentVerifyOptions = | PasskeyEnrollmentVerifyOptions | PhoneEnrollmentVerifyOptions | EmailEnrollmentVerifyOptions | TotpEnrollmentVerifyOptions | PushNotificationEnrollmentVerifyOptions | RecoveryCodeEnrollmentVerifyOptions | PasswordEnrollmentVerifyOptions;