PhoenixPass API

Фаст-треки

Быстрый проход контроля в аэропорту

Fast-track API — бронирование быстрого прохода контроля в аэропорту для B2B-партнёров: каталог доступных фаст-треков, двухшаговое бронирование («создать → подтвердить»), получение данных прохода и уведомления об изменении статусов через webhooks.

Быстрый старт

  1. Получите client_id/client_secret у команды интеграции и обменяйте их на access token — POST /oauth/v2/token с грантом client_credentials и нужным scope (catalog.fasttrack:read, booking.fasttrack:write, booking.fasttrack:read).
  2. Найдите фаст-трек — GET /v2/catalog/fast-tracks.
  3. Создайте бронь — POST /v2/b2b/booking/fast-tracks: ответ 202 означает, что запрос принят в обработку, а не что бронь готова.
  4. Дождитесь booking.status.changed со статусом Issued, либо опросите GET /v2/b2b/booking/fast-tracks/{bookingID}.
  5. Подтвердите бронь — POST /v2/b2b/booking/fast-tracks/{bookingID}/confirm.
  6. Получите данные прохода — GET /v2/b2b/booking/fast-tracks/{bookingID}/pass.

Авторизация

Каталог (GET /v2/catalog/fast-tracks*) защищён только Bearer-токеном. Операции бронирования (POST/GET .../booking/fast-tracks*) требуют и Bearer-токен, и клиентский mTLS-сертификат — это отдельный контур безопасности от каталога, учитывайте это при настройке HTTP-клиента.

Идемпотентность

POST /v2/b2b/booking/fast-tracks обязательно принимает заголовок Idempotency-Key. Повторный запрос с тем же ключом и телом возвращает сохранённый результат (Idempotency-Status: reused); с другим телом — 409 IdempotencyConflict. Ключ живёт 72 часа. Операции confirm/cancel идемпотентны по своей природе (повторный вызов при недопустимом состоянии возвращает 409) и ключа не требуют.

Статусы брони

Бронирование проходит через статусы: PendingIssued (пропуск сгенерирован) → Confirmed (партнёр подтвердил) → Completed (проход использован). Если партнёр не подтвердил бронь вовремя, она переходит из Issued в Expired. Из любого статуса возможен переход в Canceled. Отслеживайте переходы через booking.status.changed и pass.status.changed, либо тестируйте их локально через Sandbox.

On this page