# Позывной → маршрут

Определение аэропортов вылета и прибытия по позывному ADS-B в реальном времени — точное совпадение или резервный вариант на уровне авиакомпании.



Сопоставьте текущий **позывной** (позывной рейса, транслируемый по [ADS-B](https://www.faa.gov/air_traffic/technology/adsb), например `BAW178`) с аэропортами вылета и прибытия. Если в SkyLink есть точное совпадение позывного, ответ содержит `departure_icao` и `arrival_icao` с `confidence: "high"`. Если точного позывного нет, API возвращает резервный список маршрутов на уровне авиакомпании в массиве `routes` (та же структура, что и у [маршрутов аэропорта](/docs/v31/routes-airport)).

<DocRequirements>
  <DocRequirementAuth />
</DocRequirements>

## Запрос [#request]

<DocApiPath method="GET" path="/routes/callsign/{callsign}" />

| Параметр   | Тип    | Обязательный | Описание                                                                                |
| ---------- | ------ | ------------ | --------------------------------------------------------------------------------------- |
| `callsign` | string | Да           | Параметр пути с позывным рейса — код авиакомпании и числовой суффикс, например `BAW178` |

## Ответ [#response]

**Пример точного совпадения:**

```json
{
  "callsign": "BAW178",
  "callsign_prefix": "BAW",
  "airline_code": "BAW",
  "departure_icao": "KJFK",
  "arrival_icao": "EGLL",
  "airports": ["KJFK", "EGLL"],
  "confidence": "high",
  "source": "vrs"
}
```

**Пример резервного ответа** (строки с точным позывным нет — возвращаются маршруты на уровне авиакомпании):

```json
{
  "callsign": "BAW999",
  "callsign_prefix": "BAW",
  "airline_code": "BAW",
  "departure_icao": null,
  "arrival_icao": null,
  "airports": null,
  "confidence": "low",
  "source": "vrs",
  "routes": [
    {
      "departure": "LHR",
      "arrival": "JFK",
      "airlines": ["British Airways"],
      "km": 5555,
      "duration_min": 430
    }
  ]
}
```

| Поле              | Тип    | Обязательный          | Null?                      | Описание                                                                                                                                                                           |
| ----------------- | ------ | --------------------- | -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `callsign`        | string | **Да**                | Никогда                    | Запрошенный позывной                                                                                                                                                               |
| `callsign_prefix` | string | **Да**                | Никогда                    | Префикс авиакомпании ICAO, извлечённый из позывного                                                                                                                                |
| `airline_code`    | string | **Да**                | Никогда                    | Определённый код ICAO авиакомпании                                                                                                                                                 |
| `departure_icao`  | string | При точном совпадении | **Да** (резервный ответ)   | Код ICAO аэропорта вылета, если известен                                                                                                                                           |
| `arrival_icao`    | string | При точном совпадении | **Да** (резервный ответ)   | Код ICAO аэропорта прибытия, если известен                                                                                                                                         |
| `airports`        | array  | При точном совпадении | **Да** (резервный ответ)   | Упорядоченные коды ICAO `[departure, arrival]`                                                                                                                                     |
| `confidence`      | string | **Да**                | Никогда                    | Качество совпадения — `high` при точном совпадении позывного                                                                                                                       |
| `source`          | string | **Да**                | Никогда                    | Непрозрачный идентификатор источника данных о маршрутах от API                                                                                                                     |
| `routes`          | array  | В резервном ответе    | **Да** (точное совпадение) | Список маршрутов на уровне авиакомпании, если строки с точным позывным нет, — та же структура элементов, что и у [маршрутов аэропорта](/docs/v31/routes-airport#route-item-routes) |

**Важно:** считайте `confidence: "high"` надёжной парой городов с `departure_icao`/`arrival_icao`. Если присутствует только `routes[]`, покажите первый маршрут как предположение и дайте пользователю его подтвердить — не считайте, что первая строка соответствует текущему рейсу.

## Клиентские типы [#client-types]

<DocClientTypes id="v31/routes/routes-types" />

## Интеграция [#integration]

Определяйте вероятные аэропорты вылета и прибытия по позывному [ADS-B](https://www.faa.gov/air_traffic/technology/adsb) в реальном времени для слоёв на карте и карточек рейсов.

Пример ниже кэширует результаты поиска по позывному на 24 часа, поскольку назначенные маршруты меняются редко. Каждый запрос использует явные таймауты (10 s на подключение / 15 s на чтение). Вспомогательная функция приводит ответы с точным совпадением и резервные ответы к единому объекту `RouteGuess` для кода интерфейса.

<DocExample id="v31/routes/callsign-fetch" />

### Примечания по реализации [#implementation-notes]

**Нормализация кодов.** Переводите позывные в верхний регистр перед поиском (`baw178` → `BAW178`). Удаляйте пробельные символы из данных потоков [ADS-B](https://www.faa.gov/air_traffic/technology/adsb).

**Смешение кодов аэропортов.** В зависимости от исходной строки маршруты могут использовать коды IATA или ICAO — нормализуйте их через [Аэропорты](/docs/v31/airports) перед объединением с другими наборами данных.

## Ответы с ошибками [#error-responses]

Ошибка валидации `422`: см. [раздел «Маршруты»](/docs/v31/routes#error-responses).

<APIPage document="&#x22;https://api.skylinkapi.com/v3.1/openapi.json&#x22;" operations="[{&#x22;path&#x22;:&#x22;/routes/callsign/{callsign}&#x22;,&#x22;method&#x22;:&#x22;get&#x22;}]" />
