Files
hnh-map/docs/api.md
Nikolay Tatarinov 605a31567e Add initial project structure with backend and frontend setup
- Created backend structure with Go, including main application logic and API endpoints.
- Added Docker support for both development and production environments.
- Introduced frontend using Nuxt 3 with Tailwind CSS for styling.
- Included configuration files for Docker and environment variables.
- Established basic documentation for contributing, development, and deployment processes.
- Set up .gitignore and .dockerignore files to manage ignored files in the repository.
2026-02-24 22:27:05 +03:00

52 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 с гридами и маркерами).
Дополнительные админ-действия (формы или внутренние вызовы): wipeTile, setCoords, hideMarker — см. реализацию в `internal/app/api.go` и `admin.go`.
## Коды ответов
- **200** — успех.
- **400** — неверный запрос (метод, тело, параметры).
- **401** — не авторизован (нет или недействительная сессия).
- **403** — нет прав.
- **404** — не найдено.
- **500** — внутренняя ошибка.
Формат ошибок — текст в теле ответа или стандартные HTTP-статусы без тела.