Параметры запроса#

Детальное описание всех параметров для запроса /api/avia/seat_book.

Обязательные параметры#

ПараметрТипОписание
bookingIdguidИдентификатор бронирования (формат UUID)
seatsSeat[]Список мест для бронирования (не может быть пустым)

Структура seats#

ПолеТипОбязательноОписание
paxRefIdstringДаСсылка на пассажира — значение passengers[].id из ответа pnr_retrieve
segRefIdstringДаСсылка на сегмент — значение itinerary[].segments[].id из ответа pnr_retrieve
rowintegerДаНомер ряда, положительное число (например, 13)
columnstringДаБуквенное обозначение места — ровно одна латинская буква (например, A)

Массив seats не может содержать две записи с одинаковой парой (paxRefId, segRefId) — на одного пассажира на одном сегменте допускается не более одного места. Цена места в запросе не указывается: она разрешается сервером из результата предшествующего seat_map.


Как использовать параметры#

Одно место для одного пассажира#

1{
2  "bookingId": "019a1f3e-6c2a-7d4b-9a11-3c5e7f902abc",
3  "seats": [
4    { "paxRefId": "P1", "segRefId": "5b6c7d8e-9f0a-41b2-8c3d-4e5f60718293", "row": 13, "column": "A" }
5  ]
6}

Места для нескольких пассажиров на нескольких сегментах#

Для сегмента туда и сегмента обратно указывайте разные segRefId для того же пассажира:

1{
2  "bookingId": "019a1f3e-6c2a-7d4b-9a11-3c5e7f902abc",
3  "seats": [
4    { "paxRefId": "P1", "segRefId": "5b6c7d8e-9f0a-41b2-8c3d-4e5f60718293", "row": 13, "column": "A" },
5    { "paxRefId": "P2", "segRefId": "5b6c7d8e-9f0a-41b2-8c3d-4e5f60718293", "row": 13, "column": "F" },
6    { "paxRefId": "P1", "segRefId": "6c7d8e9f-0a1b-42c3-9d4e-5f6071829304", "row": 14, "column": "C" }
7  ]
8}

Примеры запросов#

Минимальный запрос#

1curl -X POST https://test.travelplatform.ru/api/avia/seat_book \
2  -H "Authorization: Bearer YOUR_TOKEN" \
3  -H "Content-Type: application/json" \
4  -d '{
5    "bookingId": "019a1f3e-6c2a-7d4b-9a11-3c5e7f902abc",
6    "seats": [
7      { "paxRefId": "P1", "segRefId": "5b6c7d8e-9f0a-41b2-8c3d-4e5f60718293", "row": 13, "column": "A" }
8    ]
9  }'
 1var request = new SeatBookRequest
 2{
 3    BookingId = Guid.Parse("019a1f3e-6c2a-7d4b-9a11-3c5e7f902abc"),
 4    Seats = new[]
 5    {
 6        new Seat
 7        {
 8            PaxRefId = "P1",
 9            SegRefId = "5b6c7d8e-9f0a-41b2-8c3d-4e5f60718293",
10            Row = 13,
11            Column = "A"
12        }
13    }
14};
15
16var response = await httpClient.PostAsJsonAsync(
17    "https://test.travelplatform.ru/api/avia/seat_book",
18    request
19);
20
21var result = await response.Content.ReadFromJsonAsync<SeatBookResponse>();

Запрос на несколько мест#

Развернуть пример
1{
2  "bookingId": "019a1f3e-6c2a-7d4b-9a11-3c5e7f902abc",
3  "seats": [
4    { "paxRefId": "P1", "segRefId": "5b6c7d8e-9f0a-41b2-8c3d-4e5f60718293", "row": 13, "column": "A" },
5    { "paxRefId": "P2", "segRefId": "5b6c7d8e-9f0a-41b2-8c3d-4e5f60718293", "row": 13, "column": "F" }
6  ]
7}

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

Код ошибкиПричинаРешение
BOOKING_NOT_FOUNDБронирование не найдено либо принадлежит другому клиентуПроверьте bookingId
SEAT_REF_NOT_FOUNDpaxRefId или segRefId не найдены в этом бронированииСверьте значения с ответом pnr_retrieve
SEAT_PRICE_NOT_FOUND_FOR_PAX_TYPEДля места нет цены применительно к типу пассажираВыберите другое место через seat_map
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 — источник paxRefId/segRefId и итоговых статусов мест