Files
hnh-map/docs/api.md
Nikolay Tatarinov fea17e6bac Refactor routing and documentation for SPA deployment
- Updated the application to serve the SPA from the root path instead of /map/, enhancing accessibility.
- Modified redirect logic to ensure backward compatibility with old /map/* URLs.
- Adjusted documentation across multiple files to reflect the new routing structure and API endpoints.
- Improved handling of OAuth redirects and session management in the backend.
- Updated frontend configuration to align with the new base URL settings.
2026-02-25 00:32:59 +03:00

5.0 KiB
Raw Blame History

HTTP API

API доступно по префиксу /map/api/. Для запросов, требующих авторизации, используется cookie session (устанавливается при логине).

Авторизация

  • POST /map/api/login — вход. Тело: {"user":"...","pass":"..."}. При успехе возвращается JSON с данными пользователя и выставляется cookie сессии. При первом запуске возможен bootstrap: логин admin и пароль из HNHMAP_BOOTSTRAP_PASSWORD создают первого админа. Для пользователей, созданных через OAuth (без пароля), возвращается 401 с {"error":"Use OAuth to sign in"}.
  • GET /map/api/me — текущий пользователь (по сессии). Ответ: username, auths, при необходимости tokens, prefix.
  • POST /map/api/logout — выход (инвалидация сессии).
  • GET /map/api/setup — проверка, нужна ли первичная настройка. Ответ: {"setupRequired": true|false}.

OAuth

  • GET /map/api/oauth/providers — список настроенных OAuth-провайдеров. Ответ: ["google", ...].
  • GET /map/api/oauth/{provider}/login — редирект на страницу авторизации провайдера. Query: redirect — путь для редиректа после успешного входа (например /profile).
  • GET /map/api/oauth/{provider}/callback — callback от провайдера (вызывается автоматически). Обменивает code на токены, создаёт или находит пользователя, создаёт сессию и редиректит на /profile или redirect из state.

Кабинет

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