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

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

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

Запрос должен содержать ровно один из двух объектов — offer или booking. Если не передать ни одного или передать оба одновременно, запрос будет отклонен с ошибкой валидации.

ПараметрТипОбязательноОписание
offerOfferОдин из двухКонтекст предложения поиска (карта мест до бронирования)
bookingBookingОдин из двухКонтекст бронирования (карта мест после бронирования)

Структура offer#

ПолеТипОбязательноОписание
segRefIdstring[]ДаИдентификаторы сегментов, для которых нужна карта мест (не может быть пустым)
searchIdstringДаИдентификатор поиска из /api/avia/search
offerItemIdstringДаИдентификатор варианта тарифа
paxPax[]ДаПассажиры, для которых нужно рассчитать цены мест (не может быть пустым)

Структура pax#

ПолеТипОбязательноОписание
idstringДаИдентификатор пассажира (тот же, что позже будет использован в passengers[].id запроса pnr_create)
typePassengerTypeДаТип пассажира (adt, chd, inf)

Структура booking#

ПолеТипОбязательноОписание
idguidДаИдентификатор бронирования (bookingId из pnr_create/pnr_retrieve)
segRefIdstring[]ДаИдентификаторы сегментов из itinerary[].segments[].id ответа pnr_retrieve (не может быть пустым)

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

Карта мест до бронирования#

Используйте offer, когда бронирование еще не создано — сразу после поиска или актуализации цены:

 1{
 2  "offer": {
 3    "segRefId": ["5b6c7d8e-9f0a-41b2-8c3d-4e5f60718293"],
 4    "searchId": "AAF6301E87DD7C73E7A8A636FDC77ED5",
 5    "offerItemId": "DAB32144B940FCC65CC85E9BCE682346",
 6    "pax": [
 7      { "id": "P1", "type": "adt" },
 8      { "id": "P2", "type": "chd" }
 9    ]
10  }
11}

Карта мест после бронирования#

Используйте booking, когда PNR уже создан — например, чтобы поменять место или показать актуальные статусы:

1{
2  "booking": {
3    "id": "019a1f3e-6c2a-7d4b-9a11-3c5e7f902abc",
4    "segRefId": ["5b6c7d8e-9f0a-41b2-8c3d-4e5f60718293"]
5  }
6}

Карта мест сразу по нескольким сегментам#

Передайте несколько идентификаторов в segRefId, чтобы получить карты мест одним запросом:

1{
2  "booking": {
3    "id": "019a1f3e-6c2a-7d4b-9a11-3c5e7f902abc",
4    "segRefId": [
5      "5b6c7d8e-9f0a-41b2-8c3d-4e5f60718293",
6      "6c7d8e9f-0a1b-42c3-9d4e-5f6071829304"
7    ]
8  }
9}

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

Минимальный запрос (по предложению)#

 1curl -X POST https://test.travelplatform.ru/api/avia/seat_map \
 2  -H "Authorization: Bearer YOUR_TOKEN" \
 3  -H "Content-Type: application/json" \
 4  -d '{
 5    "offer": {
 6      "segRefId": ["5b6c7d8e-9f0a-41b2-8c3d-4e5f60718293"],
 7      "searchId": "AAF6301E87DD7C73E7A8A636FDC77ED5",
 8      "offerItemId": "DAB32144B940FCC65CC85E9BCE682346",
 9      "pax": [
10        { "id": "P1", "type": "adt" }
11      ]
12    }
13  }'
 1var request = new SeatMapRequest
 2{
 3    Offer = new Offer
 4    {
 5        SegRefId = new[] { "5b6c7d8e-9f0a-41b2-8c3d-4e5f60718293" },
 6        SearchId = "AAF6301E87DD7C73E7A8A636FDC77ED5",
 7        OfferItemId = "DAB32144B940FCC65CC85E9BCE682346",
 8        Pax = new[]
 9        {
10            new Pax { Id = "P1", Type = PassengerType.ADT }
11        }
12    }
13};
14
15var response = await httpClient.PostAsJsonAsync(
16    "https://test.travelplatform.ru/api/avia/seat_map",
17    request
18);
19
20var result = await response.Content.ReadFromJsonAsync<SeatMapResponse>();

Запрос по существующему бронированию#

Развернуть пример
1{
2  "booking": {
3    "id": "019a1f3e-6c2a-7d4b-9a11-3c5e7f902abc",
4    "segRefId": ["5b6c7d8e-9f0a-41b2-8c3d-4e5f60718293"]
5  }
6}

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

Код ошибкиПричинаРешение
OFFER_NOT_FOUNDПредложение истекло или не найдено в кэшеВыполните новый поиск / offer_price
BOOKING_NOT_FOUNDБронирование не найдено либо принадлежит другому клиентуПроверьте booking.id
SEAT_INVALID_REQUESTНе передан ни один из offer/booking, переданы оба, либо segRefId/pax пустыHTTP 400. Проверьте состав запроса
VALIDATION_ERRORПрочие нарушения формата запросаHTTP 400. Проверьте обязательные поля

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