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

Детальное описание структуры ответа от /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Уникальный идентификатор варианта (используется при выборе в /avia/ticket_exchange)
forExchangeMoneyОбщая стоимость обмена (сумма к доплате)
fareMoneyСтоимость тарифа
taxesMoneyСумма такс и сборов
exchangeDetailsDictionary<string, PassengerPricing>Детали обмена по типам пассажиров
timeLimitstring (datetime)Срок действия расчета (ISO 8601)
additionalDataAdditionalDataДополнительные данные
officeGuidguidИдентификатор офиса (формат UUID)

Структура PassengerPricing#

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

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

Структура FareInfo#

ПолеТипОписание
fareBasisstringКод тарифа
baggageAllowanceBaggageAllowanceНорма багажа
segmentKeysstring[]Массив ключей сегментов, к которым применяется тариф
cabinTypestringКласс обслуживания (economy, business, first)
classstringБуква класса бронирования
fareFamilyKeystringКлюч тарифного семейства
seatsAvailableintegerКоличество доступных мест
externalIdstringВнешний идентификатор

Структура BaggageAllowance#

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

Структура PieceAllowance#

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

Структура Tax#

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

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

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

ПолеТипОписание
marketingCarrierCarrierМаркетинговый перевозчик
originFlightPointПункт отправления
destinationFlightPointПункт назначения
durationstringПродолжительность полета (формат: HH:MM:SS)
equipmentstringТип воздушного судна (IATA код)
typestringТип рейса (scheduled, charter)

Структура Carrier#

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

Структура FlightPoint#

ПолеТипОписание
locationLocationИнформация о локации
dateTimestring (datetime)Дата и время (ISO 8601)

Структура Location#

ПолеТипОписание
codestringIATA код аэропорта/города
codeTypestringТип кода (iata)
typestringТип локации (airport, city)

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

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

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

Структура Money#

ПолеТипОписание
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                  "externalId": "40fa5fc8-f774-4be2-a33f-b4019373f112:_:0916826c-62c9-4af7-97a3-bbbdf3bbf97e"
 54                }
 55              ],
 56              "price": {
 57                "currencyCode": "RUB",
 58                "value": 5100
 59              },
 60              "taxes": [
 61                {
 62                  "code": "YR",
 63                  "amount": {
 64                    "currencyCode": "RUB",
 65                    "value": 100
 66                  }
 67                }
 68              ]
 69            }
 70          },
 71          "timeLimit": "2025-10-22T13:16:37.7360318Z",
 72          "additionalData": {
 73            "fareRefKeys": []
 74          },
 75          "officeGuid": "019a0ce7-b2b1-7670-9bb0-0823c0853344"
 76        }
 77      ],
 78      "validatingCarrier": ""
 79    }
 80  ],
 81  "flights": {
 82    "DP6841SVO-KZN291120250740": {
 83      "marketingCarrier": {
 84        "carrierCode": "DP",
 85        "flightNumber": "6841"
 86      },
 87      "origin": {
 88        "location": {
 89          "code": "SVO",
 90          "codeType": "iata",
 91          "type": "airport"
 92        },
 93        "dateTime": "2025-11-29T07:40:00"
 94      },
 95      "destination": {
 96        "location": {
 97          "code": "KZN",
 98          "codeType": "iata",
 99          "type": "airport"
100        },
101        "dateTime": "2025-11-29T09:20:00"
102      },
103      "duration": "01:40:00",
104      "equipment": "73H",
105      "type": "scheduled"
106    }
107  },
108  "fareFamilies": {
109    "DP_ВЫГОДНЫЙ": {
110      "carrier": "DP",
111      "name": "ВЫГОДНЫЙ",
112      "description": "НОРМА РУЧНОЙ КЛАДИ\n\nДО 10КГ 203СМ\n\nС26ПО32РЯДЫ\n\nС19ПО25РЯДЫBCDE12A\n\nС19ПО25РЯДЫAF"
113    }
114  },
115  "passenger": "adt"
116}

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

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

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

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

Код ошибкиПричинаРешение
TICKET_NOT_FOUNDБилет не найденПроверьте номер билета и bookingId
EXCHANGE_NOT_ALLOWEDОбмен запрещен тарифомОбмен невозможен по правилам тарифа
BOOKING_NOT_FOUNDБронирование не найденоПроверьте bookingId
NO_AVAILABILITYНет мест на рейсеВыберите другой рейс или дату
INVALID_ROUTEНеверный маршрутПроверьте коды аэропортов и дату

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