/** * TOTP (2FA) API endpoints * Handles Two-Factor Authentication with Google Authenticator */ import { apiClient } from './client' import type { TotpStatus, TotpSetupRequest, TotpSetupResponse, TotpEnableRequest, TotpEnableResponse, TotpDisableRequest, TotpVerificationMethod } from '@/types' /** * Get TOTP status for current user * @returns TOTP status including enabled state and feature availability */ export async function getStatus(): Promise { const { data } = await apiClient.get('/user/totp/status') return data } /** * Get verification method for TOTP operations * @returns Method ('email' or 'password') required for setup/disable */ export async function getVerificationMethod(): Promise { const { data } = await apiClient.get('/user/totp/verification-method') return data } /** * Send email verification code for TOTP operations * @returns Success response */ export async function sendVerifyCode(): Promise<{ success: boolean }> { const { data } = await apiClient.post<{ success: boolean }>('/user/totp/send-code') return data } /** * Initiate TOTP setup - generates secret and QR code * @param request - Email code or password depending on verification method * @returns Setup response with secret, QR code URL, and setup token */ export async function initiateSetup(request?: TotpSetupRequest): Promise { const { data } = await apiClient.post('/user/totp/setup', request || {}) return data } /** * Complete TOTP setup by verifying the code * @param request - TOTP code and setup token * @returns Enable response with success status and enabled timestamp */ export async function enable(request: TotpEnableRequest): Promise { const { data } = await apiClient.post('/user/totp/enable', request) return data } /** * Disable TOTP for current user * @param request - Email code or password depending on verification method * @returns Success response */ export async function disable(request: TotpDisableRequest): Promise<{ success: boolean }> { const { data } = await apiClient.post<{ success: boolean }>('/user/totp/disable', request) return data } export const totpAPI = { getStatus, getVerificationMethod, sendVerifyCode, initiateSetup, enable, disable } export default totpAPI