Skip to content

Repository files navigation

The API Mystery

The API Mystery

The API Mystery - это увлекательная детективная игра, в которой вам предстоит раскрыть преступления и тренироваться в работе с Web API, RPC и GraphQL.

В игре вы будете использовать эти технологии для взаимодействия с различными сервисами и программами, а также для получения необходимой информации для расследования. Вы будете отправлять запросы к Web API, использовать RPC для удаленного вызова процедур и работать с GraphQL для получения данных.

Предисловие от автора

Приветствую всех! С самого начала, когда я увидел The SQL Murder Mystery, я не мог поверить, что не существует продолжения или подобной игры с решением через Web API. Когда у меня наконец появилось свободное время, я решил создать такую игру, и вот родилась The API Mystery!

Эта игра состоит из нескольких отдельных частей. В каждой из них вам предстоит разгадать детективную загадку и найти преступника. Вы играете за девушку криминалиста Api Fox.

Данная игра направлена на развитие ваших навыков работы с Web API и требует активного использования вашей смекалки и дедукции. Будьте готовы к вызовам и наслаждайтесь процессом разгадывания загадок и поиска преступников!

Все персонажи и события являются вымышленными, и любое совпадение с реально живущими или жившими людьми и событиями случайно.

Установка и начало работы

Самый простой способ использовать предварительно подготовленный контейнер. Для этого, вам необходимо установить Docker Desktop или docker-engine на ваш компьютер и добавить их в переменную среды path. Вы можете найти инструкции по установке по ссылке Docker Desktop. После установки Docker, выполните следующие шаги:

  1. Создайте новую папку на вашем компьютере.
  2. Перейдите в созданную папку.
  3. Скачайте файл docker-compose.yml из этого репозитория. docker-compose.yml
wget wget  https://raw.githubusercontent.com/SnoweTiger/APIMystery/master/docker-compose.yml -O docker-compose.yml
  1. Запустите контейнер с помощью команды docker-compose up -d

Сервер будет доступен по адресу http://localhost:8080. Чтобы проверить доступность сервера, вы можете ввести в браузере http://localhost:8080/ping

curl http://localhost:8080/ping

Сервер ответит:

StatusCode        : 200
StatusDescription : OK
Content           : {"message":"pong"}

Документация к Web API будет доступна по адресу http://localhost:8080/docs

Остановить и удалить контейнер можно следующей командой

docker-compose down

Часть 0: Погружение в чистый API

Вашему вниманию представляется дело о краже талисмана Золотой Гоффер, произошедшей в городе N city ночью 29 октября 2025 года. Кража произошла из витрины музея кафедры Информационных технологий, накануне его открытия. Был похищен талисман Золотой Гоффер. Полиция уже ведет расследование и пытается найти преступника, а также установить, где находится похищенный талисман.Ваша задача, в качестве стажера-криминалиста, заключается в расследовании данного дела.

Вам был выслан доступ к служебному API, который позволит вам получить дополнительную информацию для расследования. Доступы были отправлены вам 30 октября 2025 года личным сообщением в Cakebook.

По завершении расследования вам необходимо будет передать результаты с помощью API PATCH /police/api/report.

Удачи в расследовании!

С чего начать

Как получить доступ к документации на Web API описано в Установка и начало работы.

Так же вам передали ключи для доступа к API местного финтнес центра GetFitNow и социальной сети Cakebook и ваш id пользователя:

GETFITNOW_API_TOKEN = 'd901050d-07ec-4990-a05c-ab2178e2e09c'
CAKEBOOK_API_TOKEN = 'd901050d-07ec-4990-a05c-ab2178e2e09c'
PERSON_ID = 12345

Чтобы получить сообщения, используйте токен CAKEBOOK_API_TOKEN, для кого сообщение PERSON_ID и дату сообщения 20251030, вам потребуется выполнить HTTP-запрос к соответствующему эндпоинту API. Вы можете использовать свой любимый инструмент для работы с веб-запросами, такой как Bruno или расширение REST Client для VS Code.

Вот пример запроса с использованием расширения REST Client:

POST http://localhost:8080/cakebook/api/events HTTP/1.1
Content-Type: application/json
Authorization: Bearer d901050d-07ec-4990-a05c-ab2178e2e09c

{
    "person_id": 12345,
    "start_date": 20251030,
    "end_date": 20251030
}

В ответ вы получите JSON, содержащий сообщения от техподдержки с доступами к служебному API (police/api/).

C помощью служебного API и зная дату совершения преступления получите отчет о преступлении и приступайте к расследованию. Для этого сначала авторизуйтесь в служебном API и получите токен с помощью метода POST /police/auth/login. Затем с помощью метода POST /police/api/report/search получите отчет с места преступления.

Вот пример запросов с использованием расширения REST Client:

###
# @name login_response
POST http://localhost:8080/police/auth/login HTTP/1.1
Content-Type: application/json

{
    "login": "ApiFox",
    "password": "Fox2025"
}

###
@token = {{login_response.response.body.token}}

###
POST http://localhost:8080/police/api/report/search HTTP/1.1
Content-Type: application/json
Authorization: Bearer {{token}}

{
    "date_from": 20251029,
    "date_to": 20251029,
    "type": "theft"
}

Из отчета мы узнаем что произошло и ФИО потерпевшего и о том что он был приглашен на опрос(interview)

Далее чуть хитрее. Что бы получить опрос(interview) персонажа надо знать его id или id персонажа person_id. Но мы знаем как зовут потерпевшего и можем узнать его person_id с помощь еще одного метода нашего API.

Из опроса потерпевшего мы можем узнать как вычислить преступника

Как проверить результат расследования

Для проверки результатов расследования вы можете использовать метод PATCH /police/api/report. Например, с помощью REST Client вы можете отправить следующий запрос:

PATCH http://localhost:8080/police/api/report HTTP/1.1
Content-Type: application/json
Authorization: Bearer YOUR_TOKEN

{
  "suspect_id": ID_ПОДОЗРЕВАЕМОГО,
  "suspect_name": "ИМЯ_ПОДОЗРЕВАЕМОГО",
  "report_id": ID_ОТЧЕТА
}

В ответе судья сообщит правы ли вы.

В будущих обновлениях (Дорожная карта)

  1. Новые части
  2. Больше детектива
  3. Сюжетный режим
  4. Загадки решаемые при помощи RPC и GraphQL
  5. Загадки решаемые при помощи Web UI

Copyright

Данный проект распространяется под лицензией MIT @SnoweTiger 2024. За основу данных проекта взята SQL база из The Sql Murder Mystery под Creative Commons CC BY-SA 4.0 Изображения проекта распространяется под лицензией MIT @SnoweTiger 2024. Они созданы с помощью модели ReV Animated (SD 1.5) под Creative Commons CC BY-SA 4.0

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages