/** * Authentication API * * Endpoints for user authentication and session management */ import { get, post, setAuthTokens, clearAuthTokens } from './client'; import type { RegisterRequest, LoginRequest, AuthResponse, RefreshTokenRequest, UserPayload, SuccessResponse, } from '@/types/api'; /** * Register new user * POST /api/v1/auth/register */ export async function register(data: RegisterRequest): Promise { const response = await post('/api/v1/auth/register', data, false); // Store tokens setAuthTokens(response.accessToken, response.refreshToken); return response; } /** * User login * POST /api/v1/auth/login */ export async function login(data: LoginRequest): Promise { const response = await post('/api/v1/auth/login', data, false); // Store tokens setAuthTokens(response.accessToken, response.refreshToken); return response; } /** * Refresh access token * POST /api/v1/auth/refresh */ export async function refreshToken(data: RefreshTokenRequest): Promise<{ accessToken: string }> { return post<{ accessToken: string }>('/api/v1/auth/refresh', data, false); } /** * Logout * POST /api/v1/auth/logout */ export async function logout(): Promise { try { const response = await post('/api/v1/auth/logout'); return response; } finally { // Always clear tokens locally clearAuthTokens(); } } /** * Get current user profile * GET /api/v1/auth/me */ export async function getCurrentUser(): Promise { return get('/api/v1/auth/me'); }