Files
hnh-map/docs/api.md
Nikolay Tatarinov 82cb8a13f5 Update project documentation and improve frontend functionality
- Updated the backend documentation in CONTRIBUTING.md and README.md to reflect changes in application structure and API endpoints.
- Enhanced the frontend components in MapView.vue for better handling of context menu actions.
- Added new types and interfaces in TypeScript for improved type safety in the frontend.
- Introduced new utility classes for managing characters and markers in the map.
- Updated .gitignore to include .vscode directory for better development environment management.
2026-02-24 23:32:50 +03:00

4.1 KiB
Raw Blame History

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-статусы без тела.