Перейти к содержанию

Интерфейс программирования

Основа — https://api.metroskop.petproj.ru. Ответы в JSON, кодировка UTF-8, авторизация не требуется. Все запросы, кроме управления сценариями, читающие.

Схема сети

GET /api/network

Геометрия сети: линии, их цвета, упорядоченные станции с координатами и перегоны с временем хода. Ответ большой (около 400 КБ) и меняется только при пересборке справочника, поэтому отдаётся с заголовком кеширования на сутки.

curl -s https://api.metroskop.petproj.ru/api/network | head -c 400

Положение составов

GET /api/trains

Мгновенный снимок: где каждый состав находится на текущую секунду модельного времени.

{
  "modelTime": "2026-08-19T13:16:40.941797486Z",
  "period": "вечерний час пик",
  "serviceOpen": true,
  "demoMode": false,
  "trains": [
    {
      "id": "1-0",
      "line": "1",
      "lat": 55.67831,
      "lon": 37.50782,
      "bearing": 45.0,
      "progress": 0.067,
      "dwelling": false,
      "from": "Проспект Вернадского",
      "to": "Университет"
    }
  ]
}

Поле progress — доля пройденного перегона, bearing — направление движения в градусах: по ним карта плавно доводит состав между кадрами. dwelling означает стоянку на станции.

Поток обновлений

GET /api/stream
Accept: text/event-stream

Тот же снимок, но раз в секунду и в виде потока событий. Событие называется snapshot. Именно этим каналом живёт карта.

curl -N -H 'Accept: text/event-stream' https://api.metroskop.petproj.ru/api/stream

Сжатие для этого адреса отключено намеренно: буферизация задерживала бы кадры. Подробнее — решение 0007.

Состояние сервиса

GET /api/status

Сводка для интерфейса: модельное время, период суток, число составов, открытые и просроченные обращения, состояние сценариев отказов и версия запущенного образа.

curl -s https://api.metroskop.petproj.ru/api/status | python3 -m json.tool

Обращения жителей

GET /api/incidents
GET /api/incidents/stats

Последние обращения и сводная статистика: сколько открыто, сколько просрочено, какая доля закрывается в срок.

Сценарии отказов

POST /api/chaos/memory-leak
POST /api/chaos/slow-responses
POST /api/chaos/rush-hour
POST /api/chaos/load
POST /api/chaos/reset

Включают сценарии, описанные в разделе сценарии отказов. Ответ содержит признак принятия, пояснение и время автоматического выключения:

{
  "accepted": true,
  "message": "Утечка памяти включена, автоматическое выключение через 10 минут",
  "autoResetAt": "2026-08-19T13:34:05Z"
}

Ограничение — двенадцать запусков в минуту на весь стенд. При превышении приходит ответ с кодом 429.

Служебные адреса

GET /actuator/health/liveness
GET /actuator/health/readiness
GET /actuator/prometheus

Проверки живости и готовности используются самим Kubernetes; метрики забирает Prometheus. Остальные точки Actuator намеренно не открыты: наружу выставлено только то, что нужно платформе.