API для разработчиков

Открытый API только для чтения: JSON, без ключей, CORS разрешён. Данные онлайна обновляются раз в 5 секунд — не запрашивайте их чаще.

ЗапросЧто возвращает
GET /api/v1/statusНазвание сети, адрес FSD-сервера, состояние данных
GET /api/v1/onlineПилоты (позиция, высота, скорость, курс, план) и диспетчеры (частота, рейтинг, позиция)
GET /api/v1/statsУчастники, онлайн, число подключений
GET /api/v1/members/{cid}Профиль участника: имя, диспетчерский, пилотский и военный рейтинги, часы пилотом и диспетчером
GET /api/v1/members/{cid}/sessionsПоследние 50 подключений
GET /api/v1/events[?lang=en]Ближайшие мероприятия
GET /api/v1/events/{id}[?lang=en]Мероприятие
GET /api/v1/bookingsБронирование позиций
GET /api/v1/news[?lang=en]Новости
GET /api/v1/pilots/{callsign}/routeМаршрут пилота в сети точками (из SimBrief или восстановленный по плану полёта), пройденный путь, а для планов из SimBrief — бортовой номер и ступенчатый набор
GET /api/v1/routes/decode?departure=UUEE&destination=EDDF&route=…Текст маршрута точками: пункты, раскрытые трассы, координаты; ненайденные элементы
GET /api/v1/airports/{icao}/layoutСхема аэропорта: ВПП, рулёжки, перроны, стоянки (OpenStreetMap)
GET /api/v1/metar/{icao}Текущий METAR
POST /api/v1/auth/pilotПроверяет CID и пароль участника для SkyPilot и возвращает имя и рейтинг; 401 при ошибке, 403 для заблокированных
GET /api/flightplans/latest?cid={cid}Последний поданный план участника (формат SkyPilot); 404, если плана нет

Пример

curl https://sky-network.online/api/v1/online

Время везде — UTC в формате ISO 8601. Сырой поток FSD-сервера доступен и напрямую: /data.json на HTTP-порту сервера.

SkyNetwork Connect

Вход через SkyNetwork для сайтов дивизионов и других сайтов сети (OAuth 2.0, authorization code, поддерживается PKCE). Участник входит на сайте сети и один раз даёт согласие; пароль сайт не видит. Администратор сети регистрирует сайт и выдаёт ему client ID и секрет.

  1. Отправьте участника на GET https://sky-network.online/oauth/authorize?response_type=code&client_id=…&redirect_uri=…&scope=profile&state=… (по желанию code_challenge и code_challenge_method=S256).
  2. Участник вернётся на redirect_uri с code и state (или error=access_denied).
  3. Обменяйте код в течение 5 минут: POST https://sky-network.online/oauth/token (форма: grant_type=authorization_code, code, redirect_uri, client_id, client_secret, code_verifier) → access_token на 1 час.
  4. GET https://sky-network.online/oauth/userinfo с заголовком Authorization: Bearer access_token → cid, name, rating, staffRank, pilotRating, militaryRating, country; email — при scope email.

API дивизионов

Для сайтов дивизионов. В каждом запросе передаётся ключ дивизиона, который выдаёт администратор сети: заголовок Authorization: Bearer (или X-Api-Key). Ответы в JSON; ошибки приходят как { "error": код, "message": текст }.

ЗапросЧто возвращает
GET /api/division/v1/members/{cid}Участник и его рейтинги: проверить CID перед экзаменом
POST /api/division/v1/rating-requestsУченик сдал экзамен: запросить рейтинг. Заявку одобряет супервайзер
GET /api/division/v1/rating-requests[?status=&cid=]Ваши заявки на рейтинг и их статус: pending, approved, declined, withdrawn
GET /api/division/v1/rating-requests/{id}Заявка на рейтинг
DELETE /api/division/v1/rating-requests/{id}Отозвать заявку, которая ещё на рассмотрении

Заявка на рейтинг

curl -X POST https://sky-network.online/api/division/v1/rating-requests \
  -H "Authorization: Bearer skd_..." -H "Content-Type: application/json" \
  -d '{
    "cid": 25,
    "track": "atc",
    "rating": "S2",
    "examinerCid": 7,
    "examinerName": "Ivan Petrov",
    "examDate": "2026-09-20",
    "score": "92%",
    "reportUrl": "https://academy.example/exams/1841",
    "comment": "Practical exam at UUEE_TWR",
    "externalId": "exam-1841"
  }'
  • track — atc, pilot или military; rating — краткое название рейтинга (S1…I3, PPL…FE, M1…M4).
  • У участника ещё не должно быть этого рейтинга. На рассмотрении может быть только одна заявка на участника по каждому направлению.
  • externalId делает повторы безопасными: с тем же значением вернётся уже созданная заявка, а не новая.
  • Ответы: 201 — создана, 200 — уже отправлялась, 401 — неверный ключ, 404 — нет такого участника, 409 — уже есть заявка на рассмотрении, 422 — нельзя, 429 — слишком много запросов.
  • Супервайзеры одобряют диспетчерские рейтинги до C3 и все пилотские и военные; инструкторские рейтинги (I1–I3) одобряют администраторы.