# HTTP API API доступно по префиксу `/map/api/`. Для запросов, требующих авторизации, используется cookie `session` (устанавливается при логине). ## Авторизация - **POST /map/api/login** — вход. Тело: `{"user":"...","pass":"..."}`. При успехе возвращается JSON с данными пользователя и выставляется cookie сессии. При первом запуске возможен bootstrap: логин `admin` и пароль из `HNHMAP_BOOTSTRAP_PASSWORD` создают первого админа. - **GET /map/api/me** — текущий пользователь (по сессии). Ответ: `username`, `auths`, при необходимости `tokens`, `prefix`. - **POST /map/api/logout** — выход (инвалидация сессии). - **GET /map/api/setup** — проверка, нужна ли первичная настройка. Ответ: `{"setupRequired": true|false}`. ## Кабинет - **POST /map/api/me/tokens** — сгенерировать новый токен загрузки (требуется право `upload`). Ответ: `{"tokens": ["...", ...]}`. - **POST /map/api/me/password** — сменить пароль. Тело: `{"pass":"..."}`. ## Карта и данные - **GET /map/api/config** — конфиг для клиента (title, auths). Требуется сессия. - **GET /map/api/v1/characters** — список персонажей на карте (требуется право `map` и при необходимости `markers`). - **GET /map/api/v1/markers** — маркеры (требуется право `map` и при необходимости `markers`). - **GET /map/api/maps** — список карт (с учётом прав и скрытых карт). ## Админ (все эндпоинты ниже требуют право `admin`) - **GET /map/api/admin/users** — список имён пользователей. - **POST /map/api/admin/users** — создать/обновить пользователя. Тело: `{"user":"...","pass":"...","auths":["admin","map",...]}`. - **GET /map/api/admin/users/:name** — данные пользователя. - **DELETE /map/api/admin/users/:name** — удалить пользователя. - **GET /map/api/admin/settings** — настройки (prefix, defaultHide, title). - **POST /map/api/admin/settings** — сохранить настройки. Тело: `{"prefix":"...","defaultHide":true|false,"title":"..."}` (поля опциональны). - **GET /map/api/admin/maps** — список карт для админки. - **POST /map/api/admin/maps/:id** — обновить карту (name, hidden, priority). - **POST /map/api/admin/maps/:id/toggle-hidden** — переключить скрытие карты. - **POST /map/api/admin/wipe** — очистить гриды, маркеры, тайлы, карты в БД. - **POST /map/api/admin/rebuildZooms** — пересобрать зум-уровни тайлов. - **GET /map/api/admin/export** — скачать экспорт данных (ZIP). - **POST /map/api/admin/merge** — загрузить и применить merge (ZIP с гридами и маркерами). - **GET /map/api/admin/wipeTile** — удалить тайл. Query: `map`, `x`, `y`. - **GET /map/api/admin/setCoords** — сдвинуть координаты гридов. Query: `map`, `fx`, `fy`, `tx`, `ty`. - **GET /map/api/admin/hideMarker** — скрыть маркер. Query: `id`. ## Коды ответов - **200** — успех. - **400** — неверный запрос (метод, тело, параметры). - **401** — не авторизован (нет или недействительная сессия). - **403** — нет прав. - **404** — не найдено. - **500** — внутренняя ошибка. Формат ошибок — текст в теле ответа или стандартные HTTP-статусы без тела.