text
Base URL: http://localhost:5000/api/v1     (API_PREFIX default)

// success
{ "success": true, "message": "...", "data": { ... } }

// success with paging (admin users list)
{ "success": true, "message": "...", "data": { ... }, "pagination": { ... } }

// error
{ "success": false, "message": "...", "code": "ERROR_CODE", "details": ... }

MethodPathAuth
POST/auth/registerpublic
POST/auth/loginpublic
POST/auth/logoutcookie
POST/auth/refreshrefresh cookie
GET/auth/mecookie or Bearer
GET/auth/verify-email/:tokenpublic
POST/auth/resend-verificationpublic
POST/auth/forgot-passwordpublic (3/email·15min)
POST/auth/verify-otppublic (5/email·15min)
POST/auth/reset-passwordpublic (5/email·15min)
GET/auth/googlepublic — starts OAuth
GET/auth/google/callbackGoogle redirect only
POST/auth/google/linkcookie or Bearer
POST/auth/google/unlinkcookie or Bearer

MethodPathAuth
GET/users/profilecookie or Bearer
PATCH/users/profilecookie or Bearer
POST/users/change-passwordcookie or Bearer
POST/users/deactivatecookie or Bearer
DELETE/users/deletecookie or Bearer

MethodPathAuth
GET/admin/usersadmin + query filters
GET/admin/statsadmin
GET/admin/users/:idadmin
PATCH/admin/users/:idadmin

curl http://localhost:5000/api/v1/health
# → {"success":true,"message":"Server is healthy","timestamp":"…"}
# (non-production also returns "uptime")