No description
  • Rust 94.6%
  • Dockerfile 5.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-04-27 01:33:20 +04:00
src Improve error handling in config and storage modules 2026-04-27 01:33:20 +04:00
.dockerignore add Docker configuration and example files 2026-04-05 17:28:13 +04:00
.gitignore new session storage 2026-04-11 01:27:11 +04:00
Cargo.lock require PIN for session start and generate new pin on reset 2026-04-19 19:44:27 +04:00
Cargo.toml new session storage 2026-04-11 01:27:11 +04:00
config.yml.example add Docker configuration and example files 2026-04-05 17:28:13 +04:00
docker-compose.yml update Docker configuration to use data directory 2026-04-05 20:38:05 +04:00
Dockerfile update Docker configuration to use data directory 2026-04-05 20:38:05 +04:00
items.yml add inventory management 2026-04-12 00:26:33 +04:00
questions.yml add Docker configuration and example files 2026-04-05 17:28:13 +04:00
README.md Add documentation and improve current_question endpoint 2026-04-20 20:04:31 +04:00

QuestionAPI

HTTP API на Rust для участия в GameJam.

Конфигурация

Все основные настройки лежат в config.yml. Данные берутся из questions.yml и items.yml.

Endpoints

Базовый префикс: /api

Пользовательские

  • GET /api/can_start - можно ли начать новую сессию (true/false).
  • POST /api/start - стартует сессию, возвращает UUID-ключ (используется дальше в заголовке Key).
    • Тело запроса: строка с шестизначным PIN-кодом
    • Ошибки:
      • 400 - PIN в неверном формате
      • 401 - PIN неверный
  • POST /api/send_answer - принимает ответ пользователя и возвращает результат.
    • Заголовок: Key: <uuid>
    • Тело запроса: строка с ответом
    • Ответы:
      • false - ответ неверный
      • true - если дан верный ответ на последний вопрос
  • GET /api/current_question - возвращает текст текущего вопроса для активной сессии.
    • Заголовок: Key: <uuid>
    • Ошибки:
      • 404 - вопросы закончились
  • GET /api/inventory - возвращает текущий инвентарь сессии в формате объектов из items.yml.
    • Заголовок: Key: <uuid>

Админские

Базовый префикс: /api/admin

Все админские endpoint'ы требуют заголовок:

Authorization: Bearer <admin_token>

  • POST /api/admin/reset_session - сбрасывает сессию и текущий индекс вопроса, генерирует и возвращает новый шестизначный PIN-код для /api/start.
  • POST /api/admin/inventory/add - добавляет предмет в инвентарь текущей сессии по id из items.yml.
    • Тело запроса: строка с одним числом (id)
  • GET /api/admin/questions - возвращает полный список вопросов и ответов.
  • GET /api/admin/current_question - возвращает индекс текущего вопроса.