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

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

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

ПараметрТипОписание
exchangeIdstringИдентификатор обмена из /api/avia/ticket_exchange_calculation
offerItemIdstringID выбранного варианта обмена
bookingIdguidИдентификатор бронирования (формат UUID)
ticketNumberstringНомер билета для обмена, не более 14 символов (может включать префикс vendor)
forExchangeMonetaryAmountСумма к оплате за обмен
legsLeg[]Массив новых маршрутов
passengersPassenger[]Массив пассажиров

Структуры данных#

MonetaryAmount#

ПараметрТипОбязательноОписание
currencyCodestringДаКод валюты (ISO 4217, например: RUB, USD); формат ^[A-Z]{3}$
valuedecimalДаСумма к оплате за обмен; должна быть больше 0

Leg (маршрут)#

ПараметрТипОбязательноОписание
segmentsSegment[]ДаМассив сегментов маршрута

Segment (сегмент)#

ПараметрТипОбязательноОписание
idstringДаID сегмента из варианта обмена; не более 50 символов
classstringДаКласс бронирования (буква, например: Y, C, F)
destinationBoardOffPointДаПункт назначения с датой/временем
flightFlightDesignatorДаИнформация о рейсе
originBoardOffPointДаПункт отправления с датой/временем

BoardOffPoint#

ПараметрТипОбязательноОписание
airportstringДаIATA код аэропорта (3 символа)
dateTimedatetimeДаДата и время (ISO 8601); должна быть строго в будущем

FlightDesignator#

ПараметрТипОбязательноОписание
carrierCodestringДаIATA код авиакомпании (2 символа)
flightNumberstringДаНомер рейса

Passenger (пассажир)#

ПараметрТипОбязательноОписание
lastNamestringДаФамилия (латиница, как в документе); не более 50 символов
firstNamestringДаИмя (латиница, как в документе); не более 50 символов
typePassengerTypeНетТип пассажира (adt, chd, inf)
documentsDocument[]ДаМассив документов пассажира; не менее одного документа

Document (документ)#

ПараметрТипОбязательноОписание
typeDocumentTypeНетТип документа (internationalPassport, nationalPassport, birthCertificate, identityCard, notSet)
numberstringДаНомер документа; не более 50 символов
lastNamestringДаФамилия в документе (латиницей)
firstNamestringДаИмя в документе (латиницей)
middleNamestringНетОтчество в документе
seriesstringНетСерия документа (если применимо)
birthDatedateНетДата рождения (формат: YYYY-MM-DD)
issueDatedateНетДата выдачи (формат: YYYY-MM-DD)
expireDatedateНетСрок действия (формат: YYYY-MM-DD); если указан — должен быть в будущем
countrystringДаСтрана выдачи (ISO 3166-1 alpha-2)

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

 1{
 2  "exchangeId": "DC0BED1AEF4D9CE789DDBBA384A9593C",
 3  "offerItemId": "fa94ea6a-ac07-49d7-a810-a4640f2774fd",
 4  "bookingId": "019a0ce7-b2b1-7670-9bb0-0823c0853344",
 5  "ticketNumber": "425-6170037301",
 6  "forExchange": {
 7    "currencyCode": "RUB",
 8    "value": 5000
 9  },
10  "legs": [
11    {
12      "segments": [
13        {
14          "id": "NLc0EJEsw0GJer9QRFb4Sg",
15          "class": "P",
16          "destination": {
17            "airport": "KZN",
18            "dateTime": "2025-11-29T09:20:00"
19          },
20          "flight": {
21            "carrierCode": "DP",
22            "flightNumber": "6841"
23          },
24          "origin": {
25            "airport": "SVO",
26            "dateTime": "2025-11-29T07:40:00"
27          }
28        }
29      ]
30    }
31  ],
32  "passengers": [
33    {
34      "lastName": "KOZLOV",
35      "firstName": "IVAN",
36      "type": "adt",
37      "documents": [
38        {
39          "type": "internationalPassport",
40          "number": "1234567890",
41          "lastName": "KOZLOV",
42          "firstName": "IVAN",
43          "birthDate": "1980-05-15",
44          "issueDate": "2015-06-20",
45          "expireDate": "2030-12-31",
46          "country": "RU"
47        }
48      ]
49    }
50  ]
51}

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

При обмене билета могут возникнуть следующие ошибки:

Код ошибкиПричинаРешение
BOOKING_NOT_FOUNDБронирование не найдено или не принадлежит клиентуПроверьте bookingId
EXCHANGE_NOT_FOUNDДанные расчёта обмена не найдены или срок их действия истёкВыполните ticket_exchange_calculation заново
VALIDATION_ERRORОшибка валидации запроса (HTTP 400)Проверьте обязательные поля и форматы значений
NO_TARGETSПод запрос не нашлось ни одного поставщика: ни один не настроен либо все отсеяны на этапе подготовки запросаПроверьте настройки офисов и пресетов в личном кабинете; при сохранении ошибки обратитесь в поддержку
SUPPLIER_ERRORПоставщик вернул ошибку. Причина — текстом поставщика в поле messageРазберите message; при необходимости повторите запрос позже
SYSTEM_ERRORВнутренняя ошибка Travel APIПовторите запрос позже; при повторении обратитесь в поддержку с errorId

Ошибки, пришедшие от GDS/NDC-поставщика, возвращаются под кодом SUPPLIER_ERROR: отдельного кода на каждую причину отказа Travel API не формирует, причина передаётся текстом поставщика в поле message. Не завязывайте логику на разбор message — его формат зависит от поставщика и не фиксирован.


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