# Авиакомпании

Справочные данные об авиакомпаниях по коду ICAO или IATA: позывной, страна, признак активности и URL логотипа, если он доступен.



Ищите авиакомпанию по **коду авиакомпании ICAO** (трёхбуквенный указатель, например `BAW` для British Airways) или по **коду авиакомпании IATA** (двухбуквенный код, который видят пассажиры, например `BA`). Ответ содержит название перевозчика, **радиотелефонный позывной** (позывной, используемый в радиообмене с УВД, например `SPEEDBIRD`), страну, статус деятельности и URL логотипа, размещённого на серверах SkyLink, если он доступен. Используйте этот эндпоинт, чтобы дополнять строки [расписаний](/docs/v31/schedules) и карточки [статуса рейса](/docs/v31/flight-status).

Передайте ровно один код (`icao` или `iata`). Если передать оба, вернётся `400`.

**Важно:** для неизвестных кодов возвращается HTTP **200** с пустым массивом `[]`, а не `404`. Предусмотрите в интерфейсе заглушку для отсутствующего перевозчика, а не состояние ошибки.

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

<DocRequirements>
  <DocRequirementAuth />
</DocRequirements>

<DocApiPath method="GET" path="/airlines/search" />

| Параметр | Тип    | Обязательный            | По умолчанию | Описание                                        |
| -------- | ------ | ----------------------- | ------------ | ----------------------------------------------- |
| `icao`   | string | Один из `icao` / `iata` | -            | Код авиакомпании ICAO (3 буквы), например `AAL` |
| `iata`   | string | Один из `icao` / `iata` | -            | Код авиакомпании IATA (2 буквы), например `AA`  |

## Ответ [#response]

Эндпоинт возвращает массив подходящих авиакомпаний (для корректного кода обычно один элемент).

```json
[
  {
    "id": 24,
    "name": "American Airlines",
    "alias": null,
    "iata": "AA",
    "icao": "AAL",
    "callsign": "AMERICAN",
    "country": "United States",
    "active": "Y",
    "logo": "https://media.skylinkapi.com/logos/AA.png"
  }
]
```

### Объект авиакомпании [#airline-object]

| Поле       | Тип            | Обязательный | Null?   | Описание                                                          |
| ---------- | -------------- | ------------ | ------- | ----------------------------------------------------------------- |
| `id`       | integer        | **Да**       | Никогда | Числовой идентификатор записи                                     |
| `name`     | string         | **Да**       | Никогда | Название авиакомпании                                             |
| `alias`    | string \| null | Нет          | **Да**  | Альтернативное название, если есть                                |
| `iata`     | string \| null | Нет          | **Да**  | Код IATA (2 буквы)                                                |
| `icao`     | string \| null | Нет          | **Да**  | Код ICAO (3 буквы)                                                |
| `callsign` | string \| null | Нет          | **Да**  | Радиотелефонный позывной ICAO                                     |
| `country`  | string \| null | Нет          | **Да**  | Название страны на английском языке                               |
| `active`   | string         | **Да**       | Никогда | `Y` — действующая, `N` — неактивная или прекратившая деятельность |
| `logo`     | string \| null | Нет          | **Да**  | URL логотипа на серверах SkyLink, если доступен                   |

### Семантика «не найдено» [#not-found-semantic]

| HTTP-статус | Тело            | Значение                                            |
| ----------- | --------------- | --------------------------------------------------- |
| `200`       | `[]`            | Подходящий перевозчик не найден — покажите заглушку |
| `400`       | строка `detail` | Код не указан или переданы оба кода                 |

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

<DocClientTypes id="v31/airlines/lookup-types" />

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

Определите перевозчика по коду ICAO и преобразуйте его в компактную модель интерфейса для отображения расписаний.

Пример ниже кэширует результаты поиска авиакомпаний на 24 часа и использует явные тайм-ауты, чтобы медленный вызов внешнего сервиса не блокировал ваш API-воркер.

<DocExample id="v31/airlines/lookup-fetch" />

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

**Неактивные перевозчики.** Отфильтровывайте `active: "N"`, если только вашей функции не нужны исторические рейсы.

**Резервный логотип.** Всегда обрабатывайте `logo: null`, подставляя локальное изображение-заглушку.

**Выбор кода.** Код ICAO стабильнее для операционных систем; код IATA лучше подходит для подписей, которые видят пассажиры.

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

Общие ошибки платформы см. в разделе [Обработка ошибок](/docs/errors). Ошибки, специфичные для эндпоинта:

### 400 - не указан код для поиска [#400---missing-lookup-code]

```json
{
  "detail": "Either ICAO or IATA code must be provided"
}
```

### 400 - указаны оба кода [#400---both-codes-provided]

```json
{
  "detail": "Provide either ICAO or IATA, not both"
}
```

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

***

См. также: [Расписания](/docs/v31/schedules) · [Статус рейса](/docs/v31/flight-status) · [Аэропорты](/docs/v31/airports)
