Параметры запроса#
Детальное описание всех параметров для запроса /api/avia/seat_map.
Параметры запроса#
Запрос должен содержать ровно один из двух объектов — offer или booking. Если не передать ни одного или передать оба одновременно, запрос будет отклонен с ошибкой валидации.
| Параметр | Тип | Обязательно | Описание |
|---|---|---|---|
offer | Offer | Один из двух | Контекст предложения поиска (карта мест до бронирования) |
booking | Booking | Один из двух | Контекст бронирования (карта мест после бронирования) |
Структура offer#
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
segRefId | string[] | Да | Идентификаторы сегментов, для которых нужна карта мест (не может быть пустым) |
searchId | string | Да | Идентификатор поиска из /api/avia/search |
offerItemId | string | Да | Идентификатор варианта тарифа |
pax | Pax[] | Да | Пассажиры, для которых нужно рассчитать цены мест (не может быть пустым) |
Структура pax#
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
id | string | Да | Идентификатор пассажира (тот же, что позже будет использован в passengers[].id запроса pnr_create) |
type | PassengerType | Да | Тип пассажира (adt, chd, inf) |
Структура booking#
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
id | guid | Да | Идентификатор бронирования (bookingId из pnr_create/pnr_retrieve) |
segRefId | string[] | Да | Идентификаторы сегментов из 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. Проверьте обязательные поля |
Связанные операции#
- Поиск билетов — источник
searchId/offerItemId - Создание PNR — источник
bookingId; полеseatsпринимает выбранные места - Получение PNR — источник
segRefId(itinerary[].segments[].id) - Бронирование мест — следующий шаг после получения карты мест по
booking