Структура ответа#
Детальное описание структуры ответа от /avia/ticket_exchange_calculation.
Успешный ответ#
При успешном расчете API возвращает HTTP 200 и объект с вариантами обмена.
Основная структура#
| Поле | Тип | Описание |
|---|
exchangeId | string | Уникальный идентификатор расчета обмена |
offers | Offer[] | Массив доступных вариантов обмена |
flights | Dictionary<string, Flight> | Словарь с детальной информацией о рейсах |
fareFamilies | Dictionary<string, FareFamily> | Информация о тарифных семействах |
passenger | string | Тип пассажира (adt, chd, inf) |
Структура Offer#
Каждый вариант обмена содержит:
| Поле | Тип | Описание |
|---|
legs | Leg[] | Массив маршрутов |
offerItems | OfferItem[] | Массив вариантов цен |
validatingCarrier | string | IATA код валидирующего перевозчика |
Структура Leg#
| Поле | Тип | Описание |
|---|
segments | Segment[] | Массив сегментов маршрута |
duration | string | Общая продолжительность маршрута (формат: HH:MM:SS) |
Структура Segment#
| Поле | Тип | Описание |
|---|
key | string | Уникальный ключ сегмента |
flightKey | string | Ключ рейса для поиска в словаре flights |
technicalStops | integer | Количество технических остановок |
technicalStopsDetails | TechnicalStop[] | Детали технических остановок |
Структура OfferItem#
Детальная информация о ценах и условиях обмена:
| Поле | Тип | Описание |
|---|
offerItemId | string | Уникальный идентификатор варианта (используется при выборе в /avia/ticket_exchange) |
forExchange | Money | Общая стоимость обмена (сумма к доплате) |
fare | Money | Стоимость тарифа |
taxes | Money | Сумма такс и сборов |
exchangeDetails | Dictionary<string, PassengerPricing> | Детали обмена по типам пассажиров |
timeLimit | string (datetime) | Срок действия расчета (ISO 8601) |
additionalData | AdditionalData | Дополнительные данные |
officeGuid | guid | Идентификатор офиса (формат UUID) |
Структура PassengerPricing#
Детали обмена для конкретного типа пассажира:
| Поле | Тип | Описание |
|---|
fare | Money | Стоимость тарифа для данного типа пассажира |
faresInfo | FareInfo[] | Информация о тарифах по сегментам |
price | Money | Полная стоимость (тариф + таксы) |
taxes | Tax[] | Массив такс и сборов |
Структура FareInfo#
| Поле | Тип | Описание |
|---|
fareBasis | string | Код тарифа |
baggageAllowance | BaggageAllowance | Норма багажа |
segmentKeys | string[] | Массив ключей сегментов, к которым применяется тариф |
cabinType | string | Класс обслуживания (economy, business, first) |
class | string | Буква класса бронирования |
fareFamilyKey | string | Ключ тарифного семейства |
seatsAvailable | integer | Количество доступных мест |
externalId | string | Внешний идентификатор |
Структура BaggageAllowance#
| Поле | Тип | Описание |
|---|
type | string | Тип багажа (carryOn, checked) |
pieceAllowance | PieceAllowance | Норма по количеству мест |
weightAllowance | WeightAllowance | Норма по весу (опционально) |
Структура PieceAllowance#
| Поле | Тип | Описание |
|---|
totalPieces | integer | Общее количество мест багажа |
Структура Tax#
| Поле | Тип | Описание |
|---|
code | string | Код таксы (YR, YQ, и т.д.) |
amount | Money | Сумма таксы |
Структура Flight (словарь)#
Детальная информация о рейсах:
| Поле | Тип | Описание |
|---|
marketingCarrier | Carrier | Маркетинговый перевозчик |
origin | FlightPoint | Пункт отправления |
destination | FlightPoint | Пункт назначения |
duration | string | Продолжительность полета (формат: HH:MM:SS) |
equipment | string | Тип воздушного судна (IATA код) |
type | string | Тип рейса (scheduled, charter) |
Структура Carrier#
| Поле | Тип | Описание |
|---|
carrierCode | string | IATA код авиакомпании |
flightNumber | string | Номер рейса |
Структура FlightPoint#
| Поле | Тип | Описание |
|---|
location | Location | Информация о локации |
dateTime | string (datetime) | Дата и время (ISO 8601) |
Структура Location#
| Поле | Тип | Описание |
|---|
code | string | IATA код аэропорта/города |
codeType | string | Тип кода (iata) |
type | string | Тип локации (airport, city) |
Структура FareFamily (словарь)#
Информация о тарифных семействах:
| Поле | Тип | Описание |
|---|
carrier | string | IATA код авиакомпании |
name | string | Название тарифного семейства |
description | string | Описание условий тарифа |
Структура Money#
| Поле | Тип | Описание |
|---|
currencyCode | string | Код валюты (ISO 4217, например: RUB, USD) |
value | decimal | Сумма |
Примеры ответов#
Успешный расчет#
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 | Неверный маршрут | Проверьте коды аэропортов и дату |
Связанные операции#