Структура ответа#
Детальное описание структуры ответа от /avia/search.
Основная структура#
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
error | Error | Нет | Информация об ошибке (при наличии) |
searchId | string | Да | Идентификатор поиска для последующих операций |
offers | Offer[] | Нет | Список доступных предложений |
flights | map<string, FlightInfo> | Нет | Словарь с деталями рейсов (ключ — flightId) |
fareFamilies | map<string, FareFamily> | Нет | Словарь тарифных семейств (ключ — fareFamilyRefId) |
Структура Offer#
Каждое предложение в массиве offers:
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
offerId | string | Да | Идентификатор предложения |
legs | Leg[] | Да | Сегменты маршрута |
offerItems | OfferItem[] | Да | Варианты цен для разных тарифов |
validatingCarrier | string | Да | Код авиакомпании-валидатора (IATA) |
ticketingRequirements | TicketingRequirements | Да | Требования к выписке билета |
Структура Leg#
Каждый сегмент маршрута в legs:
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
segments | LegSegment[] | Да | Список сегментов (рейсов) |
totalDuration | duration | Нет | Общее время в пути (ISO 8601 duration) |
Структура LegSegment#
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
segmentId | string | Да | Идентификатор сегмента |
flightId | string | Да | Ссылка на рейс из словаря flights |
stops | StopPoint[] | Нет | Технические остановки во время рейса |
stopQuantity | integer | Да | Количество остановок (0 для прямого рейса) |
Структура StopPoint#
Техническая остановка во время рейса:
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
location | Location | Да | Аэропорт или город остановки |
arrivalAt | datetime | Нет | Время прибытия в точку остановки (ISO 8601) |
departureAt | datetime | Нет | Время отправления из точки остановки (ISO 8601) |
stopDuration | duration | Нет | Длительность остановки (ISO 8601 duration) |
Структура OfferItem#
Каждый вариант цены в offerItems:
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
offerItemId | string | Да | Идентификатор для создания бронирования |
totalAmount | MonetaryAmount | Да | Общая стоимость |
fareAmount | MonetaryAmount | Да | Базовый тариф |
taxAmount | MonetaryAmount | Нет | Сумма такс и сборов |
details | map<PassengerType, PassengerPriceDetail> | Да | Детали по типам пассажиров |
miniRules | MiniRule[] | Нет | Правила изменения, отмены и возврата билетов |
timeLimit | datetime | Нет | Срок выписки билета (ISO 8601) |
offerExpiration | datetime | Нет | Срок действия предложения (ISO 8601) |
supplier | Supplier | Нет | Код поставщика |
ticketingFee | TicketingFee | Нет | Сбор за оформление билета, рассчитанный пресетом Revenue Manager |
Структура TicketingFee#
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
amount | MonetaryAmount | Да | Общая сумма сбора (baseFee × множитель allocation) |
allocation | FeeAllocationType | Да | Режим распределения сбора |
breakdownPerPtc | map<string, MonetaryAmount> | Нет | Разбивка сбора по типам пассажиров (только при allocation = perTicket) |
presetId | uuid | Да | Идентификатор пресета, по которому рассчитан сбор |
FeeAllocationType — возможные значения:
perTicket— Сбор за каждый билетperSegment— Сбор за каждый сегмент
Структура MiniRule#
Правила для изменения, отмены и возврата билетов:
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
permitted | boolean | Нет | Разрешена ли операция (true) или запрещена (false) |
ruleCategory | RuleCategoryType | Да | Категория правила (см. ниже) |
penaltyAmount | MonetaryAmount | Нет | Штраф в денежном выражении |
penaltyPercent | decimal | Нет | Штраф в процентах |
RuleCategoryType — категории правил:
changesVoluntary— Добровольное изменение билетаrefundsVoluntary— Добровольный возврат билета
Структура PassengerPriceDetail#
Детали по типу пассажира (adt, chd, inf):
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
fareAmount | MonetaryAmount | Да | Базовый тариф для пассажира |
fareComponents | FareComponent[] | Да | Компоненты тарифа |
totalAmount | MonetaryAmount | Да | Общая стоимость для пассажира |
taxes | Taxes | Нет | Разбивка такс |
Структура FareComponent#
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
fareBasisCode | string | Да | Код тарифа |
tariffType | TariffType | Да | Тип тарифа |
ticketDesignator | string | Нет | Дескриптор билета для специальных типов тарифов |
accountCode | string | Нет | Код аккаунта для корпоративных/контрактных тарифов |
baggageAllowances | BaggageAllowance[] | Нет | Нормы багажа |
segmentIds | string[] | Да | Ссылки на сегменты |
cabinType | CabinType | Да | Класс обслуживания |
rbd | string | Да | Booking Class Code |
fareFamilyRefId | string | Нет | Ссылка на тарифное семейство |
availableSeatCount | integer | Нет | Количество доступных мест |
brand | BrandInfo | Нет | Информация о брендированном тарифе |
Структура BrandInfo#
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
brandCode | string | Да | Код бренда |
brandName | string | Нет | Название бренда |
Структура FlightInfo#
Детали рейса в словаре flights (ключ — flightId):
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
marketingCarrier | FlightDesignator | Да | Маркетинговый перевозчик |
operatingCarrier | FlightDesignator | Нет | Фактический перевозчик |
departure | FlightPoint | Да | Информация о вылете |
arrival | FlightPoint | Да | Информация о прилете |
flightDuration | duration | Нет | Время в пути (ISO 8601 duration) |
equipmentCode | string | Нет | Код типа воздушного судна |
type | FlightType | Да | Тип рейса |
Структура FlightPoint#
Информация о точке вылета/прилета:
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
location | Location | Да | Аэропорт |
dateTime | datetime | Да | Дата и время (ISO 8601) |
terminal | string | Нет | Терминал |
Структура FareFamily#
Тарифное семейство в словаре fareFamilies (ключ — fareFamilyRefId):
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
code | string | Нет | Код тарифного семейства (например, “ECONOMY”, “PREMIUM”) |
carrierCode | string | Да | Код авиакомпании (IATA) |
name | string | Да | Название тарифного семейства |
description | string | Нет | Описание условий и услуг |
Структура TicketingRequirements#
Требования к выписке билета:
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
ticketQuantity | integer | Да | Количество билетов для выписки |
details | TicketingDetail[] | Нет | Детали по сегментам |
Структура TicketingDetail#
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
segmentIds | string[] | Да | Ссылки на сегменты |
validatingCarrier | string | Да | Код авиакомпании-валидатора (IATA) |
Примеры ответов#
Успешный ответ#
Развернуть пример
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 }
108 ],
109 "ticketingRequirements": {
110 "ticketQuantity": 1,
111 "details": [
112 {
113 "segmentIds": [
114 "FA83FB7DC5CADD80D073608CA35333B2"
115 ],
116 "validatingCarrier": "UT"
117 }
118 ]
119 },
120 "validatingCarrier": "UT"
121 }
122 ],
123 "flights": {
124 "UT1105SVX-UFA301220252225": {
125 "marketingCarrier": {
126 "carrierCode": "UT",
127 "flightNumber": "1105"
128 },
129 "operatingCarrier": {
130 "carrierCode": "UT",
131 "flightNumber": "1105"
132 },
133 "departure": {
134 "location": {
135 "code": "SVX",
136 "codeType": "iata",
137 "type": "airport"
138 },
139 "dateTime": "2025-12-30T22:25:00"
140 },
141 "arrival": {
142 "location": {
143 "code": "UFA",
144 "codeType": "iata",
145 "type": "airport"
146 },
147 "dateTime": "2025-12-31T00:20:00",
148 "terminal": "1"
149 },
150 "flightDuration": "01:55:00",
151 "equipmentCode": "AT7",
152 "type": "scheduled"
153 }
154 },
155 "fareFamilies": {
156 "UT_МИНИМУМ": {
157 "carrierCode": "UT",
158 "name": "МИНИМУМ",
159 "description": "РУЧНАЯ КЛАДЬ ДО 5КГ 40Х30Х20СM"
160 }
161 }
162}Ответ с ошибкой#
1{
2 "error": {
3 "code": "NO_AVAILABILITY",
4 "message": "Нет доступных рейсов",
5 "description": "Для заданных параметров поиска не найдено доступных предложений",
6 "errorId": "018c5f2e-9b3a-7f4d-8e2c-1a2b3c4d5e6f"
7 }
8}