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

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

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

При успешном расчете API возвращает HTTP 200 и объект с вариантами обмена.

Основная структура#

ПолеТипОписание
exchangeIdstringУникальный идентификатор расчета обмена
offersOffer[]Массив доступных вариантов обмена
flightsDictionary<string, Flight>Словарь с детальной информацией о рейсах
fareFamiliesDictionary<string, FareFamily>Информация о тарифных семействах
passengerstringТип пассажира (adt, chd, inf)

Структура Offer#

Каждый вариант обмена содержит:

ПолеТипОписание
legsLeg[]Массив маршрутов
offerItemsOfferItem[]Массив вариантов цен
validatingCarrierstringIATA код валидирующего перевозчика

Структура Leg#

ПолеТипОписание
segmentsSegment[]Массив сегментов маршрута
durationstringОбщая продолжительность маршрута (формат: HH:MM:SS)

Структура Segment#

ПолеТипОписание
keystringУникальный ключ сегмента
flightKeystringКлюч рейса для поиска в словаре flights
technicalStopsintegerКоличество технических остановок
technicalStopsDetailsTechnicalStop[]Детали технических остановок

Структура OfferItem#

Детальная информация о ценах и условиях обмена:

ПолеТипОписание
offerItemIdstringУникальный идентификатор варианта (используется при выборе в /api/avia/ticket_exchange)
forExchangeMonetaryAmountОбщая стоимость обмена (сумма к доплате)
fareMonetaryAmountСтоимость тарифа
taxesMonetaryAmountСумма такс и сборов
exchangeDetailsDictionary<string, PassengerPricing>Детали обмена по типам пассажиров
timeLimitstring (datetime)Срок действия расчета (ISO 8601)
additionalDataAdditionalDataДополнительные данные
officeGuidguidИдентификатор офиса (формат UUID)

Структура PassengerPricing#

Детали обмена для конкретного типа пассажира:

ПолеТипОписание
fareMonetaryAmountСтоимость тарифа для данного типа пассажира
faresInfoFareInfo[]Информация о тарифах по сегментам
priceMonetaryAmountПолная стоимость (тариф + таксы)
taxesTax[]Массив такс и сборов

Структура FareInfo#

ПолеТипОписание
fareBasisstringКод тарифа
ticketDesignatorstringДескриптор билета для специальных тарифов (опционально)
accountCodestringКорпоративный/промо код тарифа (опционально)
baggageAllowanceBaggageAllowanceНорма багажа
segmentKeysstring[]Массив ключей сегментов, к которым применяется тариф
cabinTypestringКласс обслуживания (economy, premiumEconomy, business, first)
classstringБуква класса бронирования
fareFamilyKeystringКлюч тарифного семейства
seatsAvailableintegerКоличество доступных мест
brandBrandInfoИнформация о брендированном тарифе (опционально)

Структура BrandInfo#

ПолеТипОписание
brandCodestringКод бренда
brandNamestringНазвание бренда (опционально)

Структура BaggageAllowance#

ПолеТипОписание
typestringТип багажа (carryOn, checked)
pieceAllowancePieceAllowanceНорма по количеству мест
weightAllowanceWeightAllowanceНорма по весу (опционально)

Структура PieceAllowance#

ПолеТипОписание
totalPiecesintegerОбщее количество мест багажа

Структура Tax#

ПолеТипОписание
codestringКод таксы (YR, YQ, и т.д.)
amountMonetaryAmountСумма таксы

Структура Flight (словарь)#

Детальная информация о рейсах:

ПолеТипОписание
marketingCarrierFlightDesignatorМаркетинговый перевозчик
operatingCarrierFlightDesignatorОперирующий перевозчик (опционально, для код-шеринга)
originBoardOffPointПункт отправления
destinationBoardOffPointПункт назначения
durationstringПродолжительность полета (формат: HH:MM:SS)
equipmentstringТип воздушного судна (IATA код)
typestringТип рейса (scheduled, charter)

Структура FlightDesignator#

Используется для marketingCarrier и operatingCarrier.

ПолеТипОписание
carrierCodestringIATA код авиакомпании
flightNumberstringНомер рейса

Структура BoardOffPoint#

Используется для origin и destination (плоская структура, без вложенного объекта location).

ПолеТипОписание
airportstringIATA код аэропорта
dateTimestring (datetime)Дата и время (ISO 8601)
terminalstringТерминал (опционально)

Структура FareFamily (словарь)#

Информация о тарифных семействах:

ПолеТипОписание
carrierstringIATA код авиакомпании
namestringНазвание тарифного семейства
descriptionstringОписание условий тарифа

Структура MonetaryAmount#

ПолеТипОписание
currencyCodestringКод валюты (ISO 4217, например: RUB, USD)
valuedecimalСумма

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

Успешный расчет#

  1{
  2  "exchangeId": "019a0ce6-2633-787f-a6bc-5dbddc02cc1f",
  3  "offers": [
  4    {
  5      "legs": [
  6        {
  7          "segments": [
  8            {
  9              "key": "NLc0EJEsw0GJer9QRFb4Sg",
 10              "flightKey": "DP6841SVO-KZN291120250740",
 11              "technicalStopsDetails": [],
 12              "technicalStops": 0
 13            }
 14          ],
 15          "duration": "01:40:00"
 16        }
 17      ],
 18      "offerItems": [
 19        {
 20          "offerItemId": "offer-item-1",
 21          "forExchange": {
 22            "currencyCode": "RUB",
 23            "value": 5000
 24          },
 25          "fare": {
 26            "currencyCode": "RUB",
 27            "value": 0
 28          },
 29          "taxes": {
 30            "currencyCode": "RUB",
 31            "value": 100
 32          },
 33          "exchangeDetails": {
 34            "adt": {
 35              "fare": {
 36                "currencyCode": "RUB",
 37                "value": 0
 38              },
 39              "faresInfo": [
 40                {
 41                  "fareBasis": "PAD",
 42                  "baggageAllowance": {
 43                    "type": "carryOn",
 44                    "pieceAllowance": {
 45                      "totalPieces": 1
 46                    }
 47                  },
 48                  "segmentKeys": ["NLc0EJEsw0GJer9QRFb4Sg"],
 49                  "cabinType": "economy",
 50                  "class": "P",
 51                  "fareFamilyKey": "DP_ВЫГОДНЫЙ",
 52                  "seatsAvailable": 5
 53                }
 54              ],
 55              "price": {
 56                "currencyCode": "RUB",
 57                "value": 5100
 58              },
 59              "taxes": [
 60                {
 61                  "code": "YR",
 62                  "amount": {
 63                    "currencyCode": "RUB",
 64                    "value": 100
 65                  }
 66                }
 67              ]
 68            }
 69          },
 70          "timeLimit": "2025-10-22T13:16:37.7360318Z",
 71          "additionalData": {
 72            "fareRefKeys": []
 73          },
 74          "officeGuid": "019a0ce7-b2b1-7670-9bb0-0823c0853344"
 75        }
 76      ],
 77      "validatingCarrier": ""
 78    }
 79  ],
 80  "flights": {
 81    "DP6841SVO-KZN291120250740": {
 82      "marketingCarrier": {
 83        "carrierCode": "DP",
 84        "flightNumber": "6841"
 85      },
 86      "origin": {
 87        "airport": "SVO",
 88        "dateTime": "2025-11-29T07:40:00"
 89      },
 90      "destination": {
 91        "airport": "KZN",
 92        "dateTime": "2025-11-29T09:20:00"
 93      },
 94      "duration": "01:40:00",
 95      "equipment": "73H",
 96      "type": "scheduled"
 97    }
 98  },
 99  "fareFamilies": {
100    "DP_ВЫГОДНЫЙ": {
101      "carrier": "DP",
102      "name": "ВЫГОДНЫЙ",
103      "description": "НОРМА РУЧНОЙ КЛАДИ\n\nДО 10КГ 203СМ\n\nС26ПО32РЯДЫ\n\nС19ПО25РЯДЫBCDE12A\n\nС19ПО25РЯДЫAF"
104    }
105  },
106  "passenger": "adt"
107}

Нет доступных вариантов#

Если обмен невозможен или нет доступных мест:

1{
2  "exchangeId": "019a0ce6-2633-787f-a6bc-5dbddc02cc1f",
3  "offers": [],
4  "flights": {},
5  "fareFamilies": {},
6  "passenger": "adt"
7}

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

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

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


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