Структура ответа#

Детальное описание структуры ответа от /api/avia/seat_book.

Успешный ответ#

При успешном бронировании мест возвращается пустой объект:

1{}

Ответ не содержит ни статусов мест, ни номеров сопутствующих EMD (Electronic Miscellaneous Document, если место платное) — эти данные нужно запрашивать отдельно через /api/avia/pnr_retrieve, поле pnr.seats[].


Примеры ответов#

Успешное бронирование#

1{}

Ответ с ошибкой (место недоступно для типа пассажира)#

1{
2  "error": {
3    "code": "SEAT_PRICE_NOT_FOUND_FOR_PAX_TYPE",
4    "message": "One or more requested seats are not available for the passenger type",
5    "description": "One or more requested seats are not available for the passenger type",
6    "errorId": "018c5f2e-9b3a-7f4d-8e2c-1a2b3c4d5e6f"
7  }
8}

Ответ с ошибкой (некорректная ссылка)#

1{
2  "error": {
3    "code": "SEAT_REF_NOT_FOUND",
4    "message": "Passenger reference 'P9' not found in booking",
5    "description": "Passenger reference 'P9' not found in booking",
6    "errorId": "018c5f2e-9b3a-7f4d-8e2c-1a2b3c4d5e6f"
7  }
8}

Использование данных#

Проверка результата и статусов мест#

Сразу после seat_book запросите pnr_retrieve, чтобы увидеть итоговый статус каждого места:

1await SeatBook(bookingId, seats);
2
3var pnr = await RetrieveBooking(bookingId);
4
5foreach (var seat in pnr.Pnr.Seats)
6{
7    Console.WriteLine($"{seat.PaxRefId}, сегмент {seat.SegRefId}: место {seat.Row}{seat.Column} — {seat.Status}");
8}

Обработка ошибок#

 1try
 2{
 3    await SeatBook(bookingId, seats);
 4}
 5catch (ApiException ex) when (ex.Code == "SEAT_PRICE_NOT_FOUND_FOR_PAX_TYPE")
 6{
 7    Console.WriteLine("Место недоступно для данного типа пассажира, выберите другое");
 8}
 9catch (ApiException ex) when (ex.Code == "SEAT_REF_NOT_FOUND")
10{
11    Console.WriteLine("Некорректный paxRefId или segRefId, сверьте с pnr_retrieve");
12}
13catch (ApiException ex) when (ex.Code == "BOOKING_NOT_FOUND")
14{
15    Console.WriteLine("Бронирование не найдено");
16}

Типичные ошибки#

Код ошибкиПричинаРешение
BOOKING_NOT_FOUNDБронирование не найдено либо принадлежит другому клиентуПроверьте bookingId
SEAT_REF_NOT_FOUNDpaxRefId или segRefId не найдены в этом бронированииСверьте значения с ответом pnr_retrieve
SEAT_PRICE_NOT_FOUND_FOR_PAX_TYPEДля места нет цены применительно к типу пассажираЗапросите актуальную карту мест и выберите другое место
SYSTEM_ERRORНе удалось получить данные бронирования при разрешении местПовторите запрос позднее
SEAT_INVALID_REQUESTНе заполнены bookingId, seats, либо paxRefId/segRefId внутри seats[]HTTP 400. Проверьте состав запроса
SEAT_INVALID_ROWНомер ряда должен быть положительным целым числомHTTP 400. Укажите ряд из ответа seat_map
SEAT_INVALID_COLUMNБуква места должна быть одной латинской буквой A-ZHTTP 400. Укажите место из ответа seat_map
SEAT_DUPLICATEУ пассажира указано более одного места на одном сегментеHTTP 400. Оставьте по одному месту на пассажира и сегмент
VALIDATION_ERRORПрочие нарушения формата запросаHTTP 400. Проверьте обязательные поля

Связанные операции#

  • Карта мест — получение мест и цен перед бронированием
  • Получение PNR — итоговые статусы мест (pnr.seats[]) после бронирования
  • Создание PNR — альтернативный способ выбрать места полем seats при создании бронирования