{"name":"Password Vault API","version":"3.1","auth":{"methods":["Bearer <jwt>","X-API-Key: <key>","Authorization: Key <key>"]},"roles":{"super_admin":"Full access + user management","user":"Own vault only"},"item":{"fields":"title(req), password(secret value; optional for notes), username, url, category, project, notes, type, data","types":["login","api_key","token","secure_note","card","data"],"data":"arbitrary object/string, encrypted; returned decrypted/parsed"},"endpoints":{"POST /api/auth/signup":"First user only → becomes super_admin","POST /api/auth/login":"Returns JWT + user with role","POST /api/auth/change-password":"Self: { currentPassword, newPassword } — re-encrypts vault+files, revokes all other sessions + API keys, returns fresh token","GET /api/auth/me":"Current user info","GET /api/auth/setup-check":"Check if first-time setup needed","POST /api/admin/users":"[admin] Create user: { name, email, password, role? }","GET /api/admin/users":"[admin] List all users with password counts","PATCH /api/admin/users/:id/toggle":"[admin] Enable/disable user","PATCH /api/admin/users/:id/reset-password":"[admin] Reset password: { password }","DELETE /api/admin/users/:id":"[admin] Delete user + their vault","GET /api/admin/users/:id/passwords":"[admin] View user passwords (titles, no decrypted pw)","POST /api/keys":"Generate API key","GET /api/keys":"List API keys","DELETE /api/keys/:id":"Delete API key","GET /api/passwords":"List all items (login/api_key/token/note/data) — decrypted","GET /api/passwords/search?q=&category=&project=&type=":"Search (filter by project/type too)","GET /api/passwords/:id":"Get single","POST /api/projects":"Create project (empty allowed): { name, description?, color? }","GET /api/projects":"List projects (incl empty) with entry counts + meta","PATCH /api/projects/:id":"Rename/update project { name?, description?, color? } (re-tags creds)","DELETE /api/projects/:id":"Delete project (creds untagged, not deleted)","POST /api/passwords":"Create (single or array) — fields: title,password?,type?,data?,project?,category?,username?,url?,notes?","PUT /api/passwords/:id":"Update","PATCH /api/passwords/:id/fav":"Toggle favorite","DELETE /api/passwords/:id":"Delete","POST /api/files":"Upload file (multipart field \"file\", +project?, notes?) → stored in R2, AES-encrypted","GET /api/files":"List files (?project= optional)","GET /api/files/:id/download":"Download (decrypted, owner only)","DELETE /api/files/:id":"Delete file (R2 + row)","GET /api/generate?len=16":"Generate password"}}