interface BaseRequest { client_id?: string } export type GetCustomSignTicketFn = () => Promise export interface SignInRequest extends BaseRequest, EncryptParams { username?: string password?: string verification_token?: string version?: string query?: { with_department?: boolean; with_role?: boolean } verification_code?: string; verify_opt?: string; } export interface SignInWithProviderRequest extends BaseRequest { provider_token: string version?: string } export interface SignUpRequest extends BaseRequest { phone_number?: string email?: string verification_code?: string verification_token?: string provider_token?: string password?: string name?: string gender?: string picture?: string locale?: string } export interface GetVerificationRequest extends BaseRequest { phone_number?: string email?: string target?: string | 'ANY' usage?: string } export interface GetVerificationResponse { verification_id?: string is_user?: boolean | false } export interface VerifyResponse { verification_token?: string } export interface VerifyRequest extends BaseRequest { verification_code: string verification_id?: string verification_token?: string version?: string } export interface ProviderBindRequest { provider_token: string } export interface GrantProviderTokenRequest extends BaseRequest { provider_id: string provider_redirect_uri?: string provider_code?: string provider_access_token?: string provider_id_token?: string } export interface GrantProviderTokenResponse { provider_token: string expires_in: number code?: string error_code?: string provider_profile?: ProviderProfile } export interface PatchProviderTokenRequest extends BaseRequest { provider_id?: string provider_token: string provider_params: { encryptedData?: string iv?: string code?: string provider_code_type?: string } } export interface PatchProviderTokenResponse { provider_token: string expires_in: number provider_profile: ProviderProfile } // export interface GenProviderRedirectUriRequest { // provider_id: string; // provider_redirect_uri: string; // state: string; // other_params?: { // sign_out_uri?: string; // }; // } export interface GenProviderRedirectUriResponse { uri: string signout_uri?: string } export interface BindWithProviderRequest extends BaseRequest { provider_token: string } export interface BindWithProviderRequest { provider_token: string } export interface UserProfileProvider { id?: string provider_user_id?: string name?: string } export interface UserProfile { name?: string picture?: string username?: string email?: string email_verified?: boolean phone_number?: string providers?: [UserProfileProvider] gender?: string birthdate?: string zoneinfo?: string locale?: string created_from?: string sub?: string uid?: string address?: { formatted?: string street_address?: string locality?: string region?: string postal_code?: string country?: string } nickName?: string // TODO: province?: string // TODO: country?: string // TODO: city?: string // TODO: } export type UserInfo = UserProfile export interface ProviderProfile { provider_id: string phone_number?: string name?: string picture?: string email?: string } export interface TransByProviderRequest { provider_token: string } export interface GrantTokenRequest extends BaseRequest { client_secret?: string code?: string grant_type?: string redirect_uri?: string nonce?: string refresh_token?: string scope?: string } export interface UnbindProviderRequest extends BaseRequest { provider_id: string } export interface BindPhoneRequest extends BaseRequest { phone_number: string sudo_token: string verification_token: string } export interface SetPasswordRequest extends BaseRequest { new_password: string sudo_token: string } export interface ChangeBindedProviderRequest extends BaseRequest { trans_token: string provider_id: string } export interface QueryUserProfileReq extends BaseRequest { appended_params: string } export interface SignInWithProviderRequest { provider_token: string provider_id?: string } export interface SignInCustomRequest { provider_id?: string ticket: string } export interface SignUpRequest { phone_number?: string email?: string verification_code?: string verification_token?: string provider_token?: string verify_opt?: string username?: string password?: string name?: string gender?: string picture?: string locale?: string anonymous_token?: string } export interface GetVerificationRequest { phone_number?: string email?: string // 可选 ANY,USER,NOT_USER, CUR_USER; target?: string | 'ANY' usage?: string email_redirect_to?: string } export interface GetVerificationResponse { verification_id?: string is_user?: boolean | false } export interface VerifyResponse { verification_token?: string expires_in: number } export interface VerifyRequest { verification_code: string verification_id?: string verification_token?: string version?: string } export interface ProviderBindRequest { provider_token: string expires_in: number } export interface GrantProviderTokenRequest { provider_id: string provider_redirect_uri?: string provider_code?: string provider_access_token?: string provider_id_token?: string provider_params?: { provider_code_type?: string appid?: string code?: string // 微信小程序手机号授权的code } } export interface PatchProviderTokenRequest { provider_token: string provider_id?: string provider_params: { encryptedData?: string iv?: string code?: string provider_code_type?: string } } export interface PatchProviderTokenResponse { provider_token: string expires_in: number provider_profile: ProviderProfile } export interface GenProviderRedirectUriRequest { provider_id: string redirect_uri?: string /** * @deprecated */ provider_redirect_uri?: string state: string scope?: string response_type?: string other_params?: { [key: string]: string } } export interface GenProviderRedirectUriResponse { uri: string signout_uri?: string } export interface BindWithProviderRequest { provider_token: string } export interface BindWithProviderRequest { provider_token: string } export interface UserProfileProvider { id?: string provider_user_id?: string name?: string } interface ProfileGroup { id: string expires_at?: string } export interface UserProfile { sub?: string name?: string picture?: string username?: string email?: string email_verified?: boolean phone_number?: string groups?: [ProfileGroup] providers?: [UserProfileProvider] gender?: string birthdate?: string zoneinfo?: string locale?: string created_from?: string created_at?: string updated_at?: string loginType?: string avatarUrl?: string location?: any hasPassword?: boolean } interface UserProvider { id: string name: string provider_user_name?: string bind: boolean } export interface ProvidersResponse { total: number data: [UserProvider] } export interface ProviderProfile { provider_id: string name?: string picture?: string phone_number?: string email?: string } export interface TransByProviderRequest { provider_token: string } export interface GrantTokenRequest { client_secret?: string code?: string grant_type?: string redirect_uri?: string nonce?: string refresh_token?: string username?: string password?: string scope?: string code_verifier?: string device_code?: string } export interface UnbindProviderRequest { provider_id: string } export interface CheckPasswordRequest extends BaseRequest { password: string } export interface EditContactRequest { phone_number?: string email?: string sudo_token: string verification_token: string // 冲突解决方案 // 可选:DEFAULT, 默认解决方案:提示用户该手机号已被其他人绑定 // DELETE_ACCOUNT_TRANSFER,标记原来的账号为已注销,并将手机换绑给自己 // TRANSFER 仅换绑手机号,不注销原有账号。(原有账号无法登录情况下,则自动标记为注销) conflict_resolution?: string } export interface BindPhoneRequest { phone_number: string sudo_token: string verification_token: string conflict_resolution: string // 1. DEFAULT 0, 默认提示用户手机号已被绑定 // 2. DELETE_ACCOUNT_TRANSFER 1, 标记原账号已被注销,并将手机换绑给自己 // 3. TRANSFER 2, 仅换绑手机号,不注销原有账号(换绑后原账号无法登录时,则自动注销原账号) } export interface BindEmailRequest { email: string sudo_token: string verification_token: string } export interface SetPasswordRequest { new_password: string sudo_token: string } export interface SetPasswordRequest { new_password: string sudo_token: string } export interface UpdatePasswordRequest { old_password: string new_password: string } // password 和 verification_token 而选一,如果绑定了手机号,则必须使用verification_token 进行sudo export interface SudoRequest { password?: string verification_token?: string } export interface SudoResponse { sudo_token?: string } export interface WithSudoRequest { sudo_token: string version?: string } export interface ChangeBoundProviderRequest { trans_token: string provider_id: string } export interface ChangeBoundProviderResponse { client_id: string } export interface QueryUserProfileRequest { id?: [string] username?: string email?: string phone_number?: string } export interface QueryUserProfileResponse { total: number data?: [SimpleUserProfile] } export interface ResetPasswordRequest extends BaseRequest { email?: string phone_number?: string new_password: string verification_token: string } export interface DeviceAuthorizeRequest extends BaseRequest { scope?: string } export interface AuthorizeRequest extends BaseRequest { response_type?: string redirect_uri?: string state?: string scope?: string code_challenge?: string code_challenge_method?: string sign_out_uri?: string } export interface AuthorizeResponse { code?: string access_token?: string id_token?: string token_type?: string scope?: string state?: string expires_in?: number } export interface AuthorizeInfoRequest extends BaseRequest { response_type?: string redirect_uri?: string state?: string scope?: string sign_out_uri?: string locale?: string } export interface Scope { id: string name: string description?: string picture?: string url?: string children?: Scope[] } export interface AuthorizeInfoResponse { client: { id: string name: string description?: string picture?: string url?: string } scopes?: Scope[] } export interface RevokeDeviceRequest { device_id: string } export interface SignoutRequest { redirect_uri?: string state?: string } export interface SignoutResponse { redirect_uri?: string } export interface AuthorizeDeviceRequest extends BaseRequest { user_code: string scope?: string state?: string } export interface DeviceAuthorizeResponse { device_code: string user_code?: string expires_in: number interval: number verification_uri?: string verification_uri_complete?: string } // 简化版用户信息 export interface SimpleUserProfile { sub: string name: string picture?: string gender?: string locale?: string email?: string phone_number?: string } export interface CheckUsernameRequest { username: string } export interface CheckIfUserExistRequest { username: string } export interface CheckIfUserExistResponse { exist: boolean } export interface PublicKey { public_key: string // 加密的公钥 public_key_thumbprint: string // 加密的公钥指纹 } export interface EncryptParams { isEncrypt?: boolean // 是否需要加密 public_key_thumbprint?: string // 加密的公钥指纹 params?: string // 加密的数据 } export interface ProviderSubType { id: string provider_sub_type: 'NO_AUTH_LOGIN' | '' // NO_AUTH_LOGIN-免密登录 } export interface GetMiniProgramQrCodeRequest { envId: string wxAppId: string } export interface GetMiniProgramQrCodeResponse { qr_code: string qr_code_id: string expires_in: number } export interface GetMiniProgramQrCodeStatusRequest { qrCodeId: string envId: string wxAppId: string } export interface GetMiniProgramQrCodeStatusResponse { status: string provider_token: string expires_in: number } export interface ModifyUserBasicInfoRequest { user_id?: string nickname?: string username?: string description?: string avatar_url?: string gender?: 'MALE' | 'FEMALE' password?: string // 旧密码 new_password?: string // 新密码 email?: string phone?: string } export interface GetUserBehaviorLog { type: 'LOGIN' | 'MODIFY' // LOGIN-登录日志,MODIFY-修改登录方式日志 limit: number // 每页查询数量 page_token?: string } export interface GetUserBehaviorLogRes { id: string ip: string user_agent: string client_id: string device_id: string created_at: string meta: { from: string } } export interface ModifyPasswordWithoutLoginRequest { username?: string password?: string // 旧密码 new_password?: string // 新密码 } export interface ToDefaultLoginPage { config_version?: 'env' | string; // 登录配置,默认env(托管登录页) redirect_uri?: string; // 登录后回调地址,默认当前地址 app_id?: string; // 应用id,托管登录页不需要传 query?: Record // 跳转登录链接携带的自定义参数,会拼接在链接后面 }