# NOTAM

Действующие NOTAM для аэропортов мира: закрытие ВПП, отказы радионавигационных средств, препятствия и извещения о воздушном пространстве в реальном времени.



Получайте действующие извещения для пилотов (Notices to Air Missions, [**NOTAM**](https://www.icao.int/safety/pages/notam-service-profiles.aspx) — официальные операционные извещения, относящиеся к определённому пункту или воздушному пространству) для любого кода аэропорта ICAO в мире. Используйте этот эндпоинт в процессах брифинга, на дашбордах диспетчеризации и в предполётных чек-листах, когда вам нужны операционные извещения без поддержки отдельного потока [NOTAM](https://www.icao.int/safety/pages/notam-service-profiles.aspx).

**Важно:** к трёхбуквенным кодам пунктов США (например, `JFK`) автоматически добавляется префикс `K`. Пустой массив `notams` — это обычный ответ `200`, когда действующих извещений нет, а не ошибка.

Каждая запись содержит полный текст [NOTAM](https://www.icao.int/safety/pages/notam-service-profiles.aspx) в стандартном формате ICAO (`raw`), идентификаторы ICAO и национальные идентификаторы (если применимо), время начала и окончания действия, отдельные разобранные пункты и необязательные метаданные об области действия. Фильтруйте записи на стороне клиента по `scope` и `type` или используйте `exclude_qcode`/`exclude_scope`, чтобы исключать категории NOTAM на стороне сервера и уменьшать размер ответа ещё до того, как он дойдёт до вас.

**Планируете маршрут на более отдалённую дату?** По умолчанию возвращаются только уже действующие NOTAM — так же, как в брифинге AIS в реальном времени. NOTAM, опубликованный с будущей датой вступления в силу (например, аэропорт заранее, за две недели, публикует изменение расписания работы), не появится до наступления этой даты. Передайте `include_future=true`, чтобы уже сейчас видеть такие предстоящие NOTAM с меткой `status: "FUTURE"`, позволяющей отличить их от действующих сегодня.

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

<DocRequirements>
  <DocRequirementAuth />
</DocRequirements>

<DocApiPath method="GET" path="/notams/{icao}" />

`exclude_qcode` и `exclude_scope` фильтруют на стороне сервера; `scope` и `type` остаются в ответе для дополнительной фильтрации на стороне клиента.

| Параметр         | Тип             | Обязательный | Описание                                                                                                                                                                                                                                      |
| ---------------- | --------------- | ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `icao`           | string          | Да           | Четырёхбуквенный ICAO-код аэропорта (например, `KJFK`, `EGLL`). К трёхбуквенным кодам США автоматически добавляется префикс `K`                                                                                                               |
| `exclude_qcode`  | string (query)  | Нет          | Префиксы Q-кодов ICAO через запятую для исключения на стороне сервера, например `QK` (вся тематическая категория — исключает все NOTAM-чек-листы `QK*`) или `QKKKK` (только точный код)                                                       |
| `exclude_scope`  | string (query)  | Нет          | Значения `scope` через запятую для исключения на стороне сервера: `AERODROME`, `FIR`                                                                                                                                                          |
| `include_future` | boolean (query) | Нет          | Также возвращать NOTAM, дата вступления в силу которых ещё не наступила, с меткой `status: "FUTURE"`. Значение по умолчанию `false` возвращает только действующие в данный момент NOTAM. Истёкшие NOTAM не возвращаются ни в одном из случаев |

**Пример фильтрации на стороне сервера:** `GET /notams/EGLL?exclude_qcode=QK&exclude_scope=FIR` исключает ежемесячные NOTAM-чек-листы (тематика Q-кода `QK*`, например `QKKKK`) и административные извещения и извещения на маршруте для всего FIR, возвращая только записи, относящиеся непосредственно к аэродрому EGLL.

## Ответ [#response]

```json
{
  "icao": "KJFK",
  "notams": [
    {
      "raw": "A0373/26 NOTAMN\nQ) KZNY/QMXLC/IV/M/A/000/999/4038N07346W005\nA) KJFK\nB) 2603241038\nC) 2608311800\nE) TWY D HLDG PSN MARKINGS FOR RWY 13L/31R NORTH SIDE NOT STD",
      "notam_id": "A0373/2026",
      "notam_id_domestic": "03/0373",
      "type": "N",
      "location": "KJFK",
      "effective": "202603241038",
      "expiration": "202608311800",
      "body": "TWY D HLDG PSN MARKINGS FOR RWY 13L/31R NORTH SIDE NOT STD",
      "schedule": null,
      "lower_limit": null,
      "upper_limit": null,
      "affected_fir": "KZNY",
      "q_code": "QMXLC",
      "qline": "KZNY/QMXLC/IV/M/A/000/999/4038N07346W005",
      "scope": "AERODROME",
      "status": "ACTIVE"
    }
  ],
  "total": 1
}
```

`raw` — это **многострочная** строка (с разделителем `\n`), содержащая извещение точно в том виде, в каком его публикует брифинг AIS. См. раздел [Формат ICAO](#icao-format) ниже.

### Поля верхнего уровня [#top-level-fields]

| Поле     | Тип     | Обязательный | Описание                                           |
| -------- | ------- | ------------ | -------------------------------------------------- |
| `icao`   | string  | **Да**       | Определённый для запроса код ICAO                  |
| `notams` | array   | **Да**       | Действующие записи NOTAM (может быть пустым)       |
| `total`  | integer | Нет          | Количество элементов в `notams` (по умолчанию `0`) |

### Элемент NOTAM (`notams[]`) [#notam-item-notams]

| Поле                | Тип    | Обязательный | Null?   | Описание                                                                                                                                      |
| ------------------- | ------ | ------------ | ------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| `raw`               | string | **Да**       | Никогда | Полный текст NOTAM в стандартном формате ICAO (многострочный, с разделителем `\n`)                                                            |
| `notam_id`          | string | Нет          | **Да**  | Идентификатор NOTAM ICAO (например, `373/2026`)                                                                                               |
| `notam_id_domestic` | string | Нет          | **Да**  | Национальный идентификатор FAA (например, `03/373`)                                                                                           |
| `type`              | string | Нет          | **Да**  | `N` (новый), `R` (замена), `C` (отмена)                                                                                                       |
| `location`          | string | Нет          | **Да**  | Идентификатор затрагиваемого пункта                                                                                                           |
| `effective`         | string | Нет          | **Да**  | Начало действия (UTC, формат поставщика данных)                                                                                               |
| `expiration`        | string | Нет          | **Да**  | Окончание действия (UTC, формат поставщика данных)                                                                                            |
| `body`              | string | Нет          | **Да**  | Текст NOTAM (пункт E) без заголовка                                                                                                           |
| `schedule`          | string | Нет          | **Да**  | Расписание действия (пункт D), например `MON-FRI 0600-1800`                                                                                   |
| `lower_limit`       | string | Нет          | **Да**  | Нижний предел по высоте (например, `SFC`, `FL050`)                                                                                            |
| `upper_limit`       | string | Нет          | **Да**  | Верхний предел по высоте (например, `FL195`, `UNL`)                                                                                           |
| `affected_fir`      | string | Нет          | **Да**  | FIR/ARTCC, в котором зарегистрирован NOTAM                                                                                                    |
| `q_code`            | string | Нет          | **Да**  | Q-код NOTAM ICAO, если присутствует — может быть `null` в национальных извещениях FAA                                                         |
| `qline`             | string | Нет          | **Да**  | Полная строка Q ICAO, если предоставлена                                                                                                      |
| `scope`             | string | Нет          | **Да**  | `AERODROME` (объект аэропорта) или `FIR` (воздушное пространство на маршруте)                                                                 |
| `status`            | string | Нет          | **Да**  | `ACTIVE` (действует сейчас) или `FUTURE` (дата вступления в силу ещё не наступила — присутствует, только если запрошен `include_future=true`) |

`raw` присутствует всегда. Большинство полей метаданных могут быть `null` в зависимости от того, как было закодировано исходное сообщение.

**Важно:** извещения с `scope: "AERODROME"` напрямую касаются аэропорта — показывайте их на видном месте в панелях брифинга. Извещения с `scope: "FIR"` относятся к воздушному пространству на маршруте и тоже присутствуют в ответе — выводите их в отдельном разделе или сворачивайте по умолчанию. Аналогично, считайте извещения с `status: "FUTURE"` предстоящими, а не текущими: в большинстве интерфейсов брифинга их следует показывать отдельно от действующих сегодня.

## Формат ICAO [#icao-format]

`raw` содержит извещение в стандартной структуре ICAO, которую пилоты учатся читать: строка идентификации, за которой следуют пункты, обозначенные буквами. Отображайте его в блоке с моноширинным шрифтом без повторного переноса строк:

```text
A0373/26 NOTAMN
Q) KZNY/QMXLC/IV/M/A/000/999/4038N07346W005
A) KJFK
B) 2603241038
C) 2608311800
E) TWY D HLDG PSN MARKINGS FOR RWY 13L/31R NORTH SIDE NOT STD
```

| Пункт   | Значение                                                                                 | Соответствующее поле              |
| ------- | ---------------------------------------------------------------------------------------- | --------------------------------- |
| Q)      | Строка Q — FIR, Q-код, тип движения, назначение, область действия, пределы, центр/радиус | `qline`, `q_code`, `affected_fir` |
| A)      | Пункт, к которому относится извещение                                                    | `location`                        |
| B)      | Начало действия (`YYMMDDHHMM`, UTC)                                                      | `effective`                       |
| C)      | Окончание действия или `PERM`                                                            | `expiration`                      |
| D)      | Расписание действия, если извещение действует периодически                               | `schedule`                        |
| E)      | Сам текст извещения                                                                      | `body`                            |
| F) / G) | Нижний и верхний вертикальные пределы                                                    | `lower_limit`, `upper_limit`      |

Если орган, издавший извещение, опубликовал собственный перевод в формате ICAO, `raw` воспроизводит его байт в байт; в противном случае текст составляется из перечисленных выше разобранных пунктов.

**Пункты присутствуют в том виде, в каком были поданы.** Пункт присутствует, только если его указал составитель:

* **Q)** — международные извещения содержат полную строку Q. Многие **национальные извещения США** подаются вообще без Q-кода, поэтому `Q)`, `q_code` и `qline` для них отсутствуют.
* **D)** — только в извещениях с расписанием действия; большинство действуют непрерывно между B) и C).
* **F)/G)** — только в извещениях о воздушном пространстве и навигации, в которых указан вертикальный диапазон.

Разбирайте `raw` для отображения, а отдельные поля — для логики; не требуйте наличия всех пунктов.

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

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

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

Опрашивайте действующие [NOTAM](https://www.icao.int/safety/pages/notam-service-profiles.aspx) для аэропорта вылета и выводите компактный сводный список в интерфейсе брифинга.

Пример ниже кэширует ответы [NOTAM](https://www.icao.int/safety/pages/notam-service-profiles.aspx) на 5 минут, поскольку в периоды активной работы извещения могут часто меняться. Каждый запрос использует тайм-аут чтения 30 с, чтобы справляться с большими наборами [NOTAM](https://www.icao.int/safety/pages/notam-service-profiles.aspx) в загруженных хабах. Вспомогательная функция преобразует записи в сокращённый `NotamSummary` для отображения в списке, сохраняя `raw` для детального просмотра.

<DocExample id="v31/notams/notams-fetch" />

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

**Кэширование с коротким TTL.** В продакшне используйте окна кэширования 2–5 минут; в процессах авиации общего назначения и чартерных перевозок обходите кэш в течение часа до вылета.

**Обработка отмен.** Записи с `type: "C"` отменяют ранее опубликованный [NOTAM](https://www.icao.int/safety/pages/notam-service-profiles.aspx) — если вы храните локальное состояние, отслеживайте их по `notam_id`.

**Префикс для кодов США.** Принимайте от пользователей `JFK`; API преобразует его в `KJFK`.

**Планирование маршрута на будущие даты.** В инструментах планирования полётов, проверяющих аэропорт на несколько дней или недель вперёд, запрашивайте `?include_future=true` и разделяйте записи по `status`: показывайте извещения `ACTIVE` как текущие условия, а `FUTURE` — как предстоящие изменения, о которых экипаж должен знать до полёта.

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

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

### 422 — недопустимая длина кода ICAO [#422--invalid-icao-length]

```json
{
  "detail": [
    {
      "type": "string_too_short",
      "loc": ["path", "icao"],
      "msg": "String should have at least 4 characters"
    }
  ]
}
```

Возвращается, если параметр пути короче четырёх символов и не может быть нормализован.

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

***

См. также: [Полётный брифинг](/docs/v31/flight-briefing) · [Задержки FAA](/docs/v31/faa-delays) · [METAR](/docs/v31/weather-metar)
