{"name":"Web-IM Unified Plugins Server (Fastify + MongoDB)","status":"online","localization":"Append ?lang=<code> (or send X-Lang / Accept-Language) to any GET endpoint for localized content. Add translations via PUT .../:id/translations/:lang","auth":{"note":"All modules except weather require Authorization: Bearer <token>","login":"POST /api/auth/login {username|email, password}","logout":"POST /api/auth/logout","me":"GET /api/auth/me"},"plugins":{"birthdays":{"list":"GET /api/birthdays","getById":"GET /api/birthdays/:id","celebrate":"POST /api/birthdays/:id/celebrate","sendWish":"POST /api/birthdays/:id/wishes","addMember":"POST /api/birthdays/members","deleteMember":"DELETE /api/birthdays/:id","setTranslations":"PUT /api/birthdays/:id/translations/:lang"},"manifesto":{"list":"GET /api/manifesto","getById":"GET /api/manifesto/:id","status":"GET /api/manifesto/status/:clientId","confirm":"POST /api/manifesto/confirm","confirmations":"GET /api/manifesto/confirmations","reset":"POST /api/manifesto/reset","setTranslations":"PUT /api/manifesto/:id/translations/:lang"},"meals":{"today":"GET /api/meals/today","month":"GET /api/meals?month=YYYY-MM","getById":"GET /api/meals/:id (includes comments)","vote":"POST /api/meals/:id/vote {vote: 1-5} (served meals only, one vote per client)","comment":"POST /api/meals/:id/comments {message, senderName?}","deleteComment":"DELETE /api/meals/:id/comments/:commentId","upsertMenu":"PUT /api/meals/menu/:date {items, note?}","deleteMenu":"DELETE /api/meals/menu/:id"},"weather":{"forecast":"GET /api/weather/forecast?latitude=..&longitude=..&units=metric|imperial (served from MongoDB, refreshed by a background job)","locations":"GET /api/weather/locations","trackLocation":"POST /api/weather/locations {q | latitude+longitude, units?}","untrackLocation":"DELETE /api/weather/locations/:key","search":"GET /api/weather/search?q=istanbul","reverse":"GET /api/weather/reverse?latitude=..&longitude=.."}},"health":"GET /api/health","jobs":"GET /api/jobs"}