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

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

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

ПолеТипОбязательноОписание
errorErrorНетИнформация об ошибке (при наличии)
searchIdstringДаИдентификатор поиска для последующих операций
offersOffer[]НетСписок доступных предложений
flightsmap<string, FlightInfo>НетСловарь с деталями рейсов (ключ — flightId)
fareFamiliesmap<string, FareFamily>НетСловарь тарифных семейств (ключ — fareFamilyRefId)

Структура Offer#

Каждое предложение в массиве offers:

ПолеТипОбязательноОписание
offerIdstringДаИдентификатор предложения
legsLeg[]ДаСегменты маршрута
offerItemsOfferItem[]ДаВарианты цен для разных тарифов
validatingCarrierstringДаКод авиакомпании-валидатора (IATA)
ticketingRequirementsTicketingRequirementsДаТребования к выписке билета

Структура Leg#

Каждый сегмент маршрута в legs:

ПолеТипОбязательноОписание
segmentsLegSegment[]ДаСписок сегментов (рейсов)
totalDurationdurationНетОбщее время в пути (ISO 8601 duration)

Структура LegSegment#

ПолеТипОбязательноОписание
segmentIdstringДаИдентификатор сегмента
flightIdstringДаСсылка на рейс из словаря flights
stopsStopPoint[]НетТехнические остановки во время рейса
stopQuantityintegerДаКоличество остановок (0 для прямого рейса)

Структура StopPoint#

Техническая остановка во время рейса:

ПолеТипОбязательноОписание
locationLocationДаАэропорт или город остановки
arrivalAtdatetimeНетВремя прибытия в точку остановки (ISO 8601)
departureAtdatetimeНетВремя отправления из точки остановки (ISO 8601)
stopDurationdurationНетДлительность остановки (ISO 8601 duration)

Структура OfferItem#

Каждый вариант цены в offerItems:

ПолеТипОбязательноОписание
offerItemIdstringДаИдентификатор для создания бронирования
totalAmountMonetaryAmountДаОбщая стоимость
fareAmountMonetaryAmountДаБазовый тариф
taxAmountMonetaryAmountНетСумма такс и сборов
detailsmap<PassengerType, PassengerPriceDetail>ДаДетали по типам пассажиров
miniRulesMiniRule[]НетПравила изменения, отмены и возврата билетов
timeLimitdatetimeНетСрок выписки билета (ISO 8601)
offerExpirationdatetimeНетСрок действия предложения (ISO 8601)
supplierSupplierДаКод поставщика
officestringДаКод офиса поставщика, для которого сформировано предложение
ticketingFeeTicketingFeeНетСбор за оформление билета, рассчитанный пресетом Revenue Manager
contractFeeContractFeeНетСервисный сбор и субагентское вознаграждение по контрактному пресету
bonusDiscountBonusDiscountНетБонусная скидка, рассчитанная пресетом Revenue Manager

Структура TicketingFee#

ПолеТипОбязательноОписание
amountMonetaryAmountДаОбщая сумма сбора (baseFee × множитель allocation)
allocationFeeAllocationTypeДаРежим распределения сбора
breakdownPerPtcmap<string, MonetaryAmount>НетРазбивка сбора по типам пассажиров (только при allocation = perTicket)
presetInfoPresetInfoДаПресет, по которому рассчитан сбор

FeeAllocationType — возможные значения:

  • perTicket — Сбор за каждый билет
  • perSegment — Сбор за каждый сегмент

Структура ContractFee#

Результат работы контрактного пресета: сервисный сбор, взимаемый с клиента-шарера, и независимое от него субагентское вознаграждение.

Поле присутствует только для предложений, полученных через общий офис, по которому подобран активный контрактный пресет. В остальных случаях — null. Если подобранный пресет даёт только доступ к офису, без группы сборов и без вознаграждения, объект возвращается, но оба вложенных поля в нём null.

ПолеТипОбязательноОписание
presetIduuidДаИдентификатор сработавшего контрактного пресета
serviceFeeContractServiceFeeНетСервисный сбор. null, если в пресете не настроена группа сборов
subagentCommissionContractSubagentCommissionНетСубагентское вознаграждение. null, если в пресете оно не настроено

Структура ContractServiceFee#

ПолеТипОбязательноОписание
formulaFeeFormulaTypeДаФормула расчёта сбора
valuenumberДаИсходное значение из пресета: фиксированная сумма в рублях либо процент — в зависимости от formula
allocationFeeAllocationTypeДаРежим распределения сбора
minAmountMonetaryAmountНетНижняя граница сбора за единицу распределения. null при formula = fixedAmount — ограничение не применяется
maxAmountMonetaryAmountНетВерхняя граница сбора за единицу распределения. null при formula = fixedAmount
amountMonetaryAmountДаИтоговая рассчитанная сумма сбора, RUB
breakdownPerPtcmap<string, MonetaryAmount>НетРазбивка сбора по типам пассажиров. Заполняется только при allocation = perTicket

FeeFormulaType — возможные значения:

  • fixedAmount — фиксированная сумма
  • percentOfFare — процент от тарифа
  • percentOfTotal — процент от общей стоимости

Структура ContractSubagentCommission#

ПолеТипОбязательноОписание
percentnumberДаПроцент вознаграждения (0–100) от априорной бонусной выплаты авиакомпании
amountMonetaryAmountДаИтоговая рассчитанная сумма вознаграждения, RUB

Структура PresetInfo#

ПолеТипОбязательноОписание
presetIduuidДаИдентификатор пресета
presetNamestringДаНазвание пресета

Структура BonusDiscount#

Бонусная скидка, рассчитанная движком ценовых пресетов по результатам сработавших бонусных правил: сумма, возвращаемая клиенту из стандартной комиссии агентства и/или априорной бонусной выплаты авиакомпании.

ПолеТипОбязательноОписание
amountMonetaryAmountДаОбщая сумма скидки по всему offerItem
presetInfoPresetInfoДаПресет, по которому рассчитана скидка

Структура MiniRule#

Правила для изменения, отмены и возврата билетов:

ПолеТипОбязательноОписание
permittedbooleanНетРазрешена ли операция (true) или запрещена (false)
ruleCategoryRuleCategoryTypeДаКатегория правила (см. ниже)
penaltyAmountMonetaryAmountНетШтраф в денежном выражении
penaltyPercentdecimalНетШтраф в процентах

RuleCategoryType — категории правил:

  • changesVoluntary — Добровольное изменение билета
  • refundsVoluntary — Добровольный возврат билета

Структура PassengerPriceDetail#

Детали по типу пассажира (adt, chd, inf):

ПолеТипОбязательноОписание
fareAmountMonetaryAmountДаБазовый тариф для пассажира
fareComponentsFareComponent[]ДаКомпоненты тарифа
totalAmountMonetaryAmountДаОбщая стоимость для пассажира
taxesTaxesНетРазбивка такс

Структура FareComponent#

ПолеТипОбязательноОписание
fareBasisCodestringДаКод тарифа
tariffTypeTariffTypeДаТип тарифа
ticketDesignatorstringНетДескриптор билета для специальных типов тарифов
accountCodestringНетКод аккаунта для корпоративных/контрактных тарифов
baggageAllowancesBaggageAllowance[]НетНормы багажа
segmentIdsstring[]ДаСсылки на сегменты
cabinTypeCabinTypeДаКласс обслуживания
rbdstringДаBooking Class Code
fareFamilyRefIdstringНетСсылка на тарифное семейство
availableSeatCountintegerНетКоличество доступных мест
brandBrandInfoНетИнформация о брендированном тарифе

Структура BrandInfo#

ПолеТипОбязательноОписание
brandCodestringДаКод бренда
brandNamestringНетНазвание бренда

Структура FlightInfo#

Детали рейса в словаре flights (ключ — flightId):

ПолеТипОбязательноОписание
marketingCarrierFlightDesignatorДаМаркетинговый перевозчик
operatingCarrierFlightDesignatorНетФактический перевозчик
departureFlightPointДаИнформация о вылете
arrivalFlightPointДаИнформация о прилете
flightDurationdurationНетВремя в пути (ISO 8601 duration)
equipmentCodestringНетКод типа воздушного судна
typeFlightTypeДаТип рейса

Структура FlightPoint#

Информация о точке вылета/прилета:

ПолеТипОбязательноОписание
locationLocationДаАэропорт
dateTimedatetimeДаДата и время (ISO 8601)
terminalstringНетТерминал

Структура FareFamily#

Тарифное семейство в словаре fareFamilies (ключ — fareFamilyRefId):

ПолеТипОбязательноОписание
codestringНетКод тарифного семейства (например, “ECONOMY”, “PREMIUM”)
carrierCodestringДаКод авиакомпании (IATA)
namestringДаНазвание тарифного семейства
descriptionstringНетОписание условий и услуг

Структура TicketingRequirements#

Требования к выписке билета:

ПолеТипОбязательноОписание
ticketQuantityintegerДаКоличество билетов для выписки
detailsTicketingDetail[]НетДетали по сегментам

Структура TicketingDetail#

ПолеТипОбязательноОписание
segmentIdsstring[]ДаСсылки на сегменты
validatingCarrierstringДаКод авиакомпании-валидатора (IATA)
fareAmountMonetaryAmountНетБазовый тариф для этого билета. null, если постатейное (per-ticket) ценообразование недоступно
taxAmountMonetaryAmountНетСумма такс для этого билета. null, если постатейное (per-ticket) ценообразование недоступно
totalAmountMonetaryAmountНетИтоговая сумма (тариф + таксы) для этого билета. null, если постатейное (per-ticket) ценообразование недоступно
taxesTaxesНетРазбивка такс для этого билета. null, если детализация такс недоступна

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

📥 Скачать пример ответа

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

Развернуть пример
  1{
  2  "searchId": "6FBC2E65528BFD16CAD20472AF493554",
  3  "offers": [
  4    {
  5      "offerId": "52BE8B4712617B39F8B7ED22A03AE145",
  6      "legs": [
  7        {
  8          "segments": [
  9            {
 10              "segmentId": "FA83FB7DC5CADD80D073608CA35333B2",
 11              "flightId": "UT1105SVX-UFA301220252225",
 12              "stopQuantity": 0
 13            }
 14          ],
 15          "totalDuration": "01:55:00"
 16        }
 17      ],
 18      "offerItems": [
 19        {
 20          "offerItemId": "2D16A846EBCF9944E5E4CF61608E031C",
 21          "totalAmount": {
 22            "currencyCode": "RUB",
 23            "value": 8400
 24          },
 25          "fareAmount": {
 26            "currencyCode": "RUB",
 27            "value": 7100
 28          },
 29          "taxAmount": {
 30            "currencyCode": "RUB",
 31            "value": 1300
 32          },
 33          "details": {
 34            "adt": {
 35              "fareAmount": {
 36                "currencyCode": "RUB",
 37                "value": 7100
 38              },
 39              "fareComponents": [
 40                {
 41                  "fareBasisCode": "XLTOW",
 42                  "tariffType": "public",
 43                  "baggageAllowances": [
 44                    {
 45                      "type": "checked",
 46                      "pieceAllowance": {
 47                        "totalPieces": 0
 48                      }
 49                    },
 50                    {
 51                      "type": "carryOn",
 52                      "pieceAllowance": {
 53                        "totalPieces": 1,
 54                        "weightPerPiece": {
 55                          "value": 5,
 56                          "unit": "kg"
 57                        },
 58                        "dimensions": {
 59                          "length": 40,
 60                          "width": 30,
 61                          "height": 20,
 62                          "unit": "cm"
 63                        }
 64                      }
 65                    }
 66                  ],
 67                  "segmentIds": [
 68                    "FA83FB7DC5CADD80D073608CA35333B2"
 69                  ],
 70                  "cabinType": "economy",
 71                  "rbd": "X",
 72                  "fareFamilyRefId": "UT_МИНИМУМ",
 73                  "availableSeatCount": 3
 74                }
 75              ],
 76              "totalAmount": {
 77                "currencyCode": "RUB",
 78                "value": 8400
 79              },
 80              "taxes": {
 81                "total": {
 82                  "currencyCode": "RUB",
 83                  "value": 1300
 84                },
 85                "breakdown": [
 86                  {
 87                    "code": "YQ",
 88                    "amount": {
 89                      "currencyCode": "RUB",
 90                      "value": 1000
 91                    }
 92                  },
 93                  {
 94                    "code": "YR",
 95                    "amount": {
 96                      "currencyCode": "RUB",
 97                      "value": 300
 98                    }
 99                  }
100                ]
101              }
102            }
103          },
104          "timeLimit": "2025-12-29T12:00:00+00:00",
105          "offerExpiration": "2025-12-29T15:00:00+00:00",
106          "supplier": "mixvel",
107          "office": "MOW01"
108        }
109      ],
110      "ticketingRequirements": {
111        "ticketQuantity": 1,
112        "details": [
113          {
114            "segmentIds": [
115              "FA83FB7DC5CADD80D073608CA35333B2"
116            ],
117            "validatingCarrier": "UT"
118          }
119        ]
120      },
121      "validatingCarrier": "UT"
122    }
123  ],
124  "flights": {
125    "UT1105SVX-UFA301220252225": {
126      "marketingCarrier": {
127        "carrierCode": "UT",
128        "flightNumber": "1105"
129      },
130      "operatingCarrier": {
131        "carrierCode": "UT",
132        "flightNumber": "1105"
133      },
134      "departure": {
135        "location": {
136          "code": "SVX",
137          "codeType": "iata",
138          "type": "airport"
139        },
140        "dateTime": "2025-12-30T22:25:00"
141      },
142      "arrival": {
143        "location": {
144          "code": "UFA",
145          "codeType": "iata",
146          "type": "airport"
147        },
148        "dateTime": "2025-12-31T00:20:00",
149        "terminal": "1"
150      },
151      "flightDuration": "01:55:00",
152      "equipmentCode": "AT7",
153      "type": "scheduled"
154    }
155  },
156  "fareFamilies": {
157    "UT_МИНИМУМ": {
158      "carrierCode": "UT",
159      "name": "МИНИМУМ",
160      "description": "РУЧНАЯ КЛАДЬ ДО 5КГ 40Х30Х20СM"
161    }
162  }
163}

Ответ с ошибкой#

1{
2  "error": {
3    "code": "SUPPLIER_ERROR",
4    "message": "NO ITINERARY FOUND FOR REQUESTED SEGMENT",
5    "description": null,
6    "errorId": "018c5f2e-9b3a-7f4d-8e2c-1a2b3c4d5e6f"
7  }
8}