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

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

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

Ответ содержит актуальную информацию о запрошенном предложении.

ПолеТипОписание
errorErrorИнформация об ошибке (при наличии)
searchIdstringНовый идентификатор поиска
offersarrayМассив с одним предложением
flightsobjectСловарь с информацией о рейсах
fareFamiliesobjectСловарь с информацией о тарифных семействах

Структура Offer#

ПолеТипОписание
offerIdstringИдентификатор предложения
legsarrayМаршрутные плечи
offerItemsarrayВарианты тарифа для предложения
ticketingRequirementsobjectТребования к выписке билетов
validatingCarrierstringВалидирующий перевозчик

Структура Leg#

ПолеТипОписание
segmentsarrayСегменты маршрута

Структура Segment#

ПолеТипОписание
segmentIdstringИдентификатор сегмента
flightIdstringСсылка на рейс в словаре flights

Структура OfferItem#

ПолеТипОписание
offerItemIdstringИдентификатор варианта тарифа
totalAmountobjectПолная стоимость
fareAmountobjectСтоимость тарифа
taxAmountobjectСумма такс и сборов
detailsobjectДетали по типам пассажиров
miniRulesMiniRule[]Правила изменения, отмены и возврата билетов (см. MiniRule)
timeLimitstringСрок оплаты (ISO 8601)
offerExpirationstringСрок действия предложения (ISO 8601)
supplierSupplierКод поставщика
ticketingFeeTicketingFeeСбор за оформление билета (см. TicketingFee)

Структура Details#

Объект с ключами по типам пассажиров (adt, chd, inf):

ПолеТипОписание
fareAmountobjectСтоимость тарифа для пассажира
fareComponentsarrayКомпоненты тарифа
totalAmountobjectПолная стоимость для пассажира
taxesobjectДетализация такс

Структура FareComponent#

ПолеТипОписание
fareBasisCodestringКод базового тарифа
tariffTypestringТип тарифа (public, private, etc.)
ticketDesignatorstringДескриптор билета для специальных типов тарифов
accountCodestringКод аккаунта для корпоративных/контрактных тарифов
baggageAllowancesarrayНормы багажа
segmentIdsarrayСсылки на сегменты
cabinTypestringКласс обслуживания
rbdstringКод бронирования (booking class)
fareFamilyRefIdstringСсылка на тарифное семейство
availableSeatCountnumberКоличество доступных мест
brandBrandInfoИнформация о брендированном тарифе (см. BrandInfo)

Структура BaggageAllowance#

ПолеТипОписание
typestringТип багажа (carryOn, checked)
pieceAllowanceobjectНорма по количеству мест
weightAllowanceobjectНорма по весу
dimensionsobjectОграничения по размерам

Структура Flight#

Словарь с ключом в формате {carrier}{flightNumber}{origin}-{destination}{date}{time}:

ПолеТипОписание
marketingCarrierobjectМаркетинговый перевозчик
operatingCarrierobjectОперирующий перевозчик
departureobjectИнформация об отправлении
arrivalobjectИнформация о прибытии
flightDurationdurationВремя в пути (ISO 8601 duration)
equipmentCodestringКод типа воздушного судна (например, 320, 737)
typestringТип рейса (scheduled, charter)

Структура FareFamily#

Словарь с ключом в формате {carrier}_{familyName}:

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

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

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

Развернуть полный пример
  1{
  2  "searchId": "699C55215661822C2EC828B0F661A304",
  3  "offers": [
  4    {
  5      "offerId": "3F4CF01BC668FA5F51BC21B1142B26F9",
  6      "legs": [
  7        {
  8          "segments": [
  9            {
 10              "segmentId": "88D994BF3A7C6CE05E54D8BBE5A3E4BD",
 11              "flightId": "DP6841SVO-KZN211120250740"
 12            }
 13          ]
 14        }
 15      ],
 16      "offerItems": [
 17        {
 18          "offerItemId": "1691A9FCFD85DC8DB9D6093D7E75C5C0",
 19          "totalAmount": {
 20            "currencyCode": "RUB",
 21            "value": 1499
 22          },
 23          "fareAmount": {
 24            "currencyCode": "RUB",
 25            "value": 1399
 26          },
 27          "taxAmount": {
 28            "currencyCode": "RUB",
 29            "value": 100
 30          },
 31          "details": {
 32            "adt": {
 33              "fareAmount": {
 34                "currencyCode": "RUB",
 35                "value": 1399
 36              },
 37              "fareComponents": [
 38                {
 39                  "fareBasisCode": "PROMOALL",
 40                  "tariffType": "public",
 41                  "baggageAllowances": [
 42                    {
 43                      "type": "carryOn",
 44                      "pieceAllowance": {
 45                        "totalPieces": 0
 46                      }
 47                    }
 48                  ],
 49                  "segmentIds": ["88D994BF3A7C6CE05E54D8BBE5A3E4BD"],
 50                  "cabinType": "economy",
 51                  "rbd": "P",
 52                  "fareFamilyRefId": "DP_БАЗОВЫЙ",
 53                  "availableSeatCount": 1
 54                }
 55              ],
 56              "totalAmount": {
 57                "currencyCode": "RUB",
 58                "value": 1499
 59              },
 60              "taxes": {
 61                "total": {
 62                  "currencyCode": "RUB",
 63                  "value": 100
 64                },
 65                "breakdown": [
 66                  {
 67                    "code": "YR",
 68                    "amount": {
 69                      "currencyCode": "RUB",
 70                      "value": 100
 71                    }
 72                  }
 73                ]
 74              }
 75            }
 76          },
 77          "timeLimit": "2025-10-22T19:05:47",
 78          "offerExpiration": "2025-10-22T19:05:47"
 79        }
 80      ],
 81      "ticketingRequirements": {
 82        "ticketQuantity": 1,
 83        "details": [
 84          {
 85            "segmentIds": ["88D994BF3A7C6CE05E54D8BBE5A3E4BD"],
 86            "validatingCarrier": "DP"
 87          }
 88        ]
 89      },
 90      "validatingCarrier": "DP"
 91    }
 92  ],
 93  "flights": {
 94    "DP6841SVO-KZN211120250740": {
 95      "marketingCarrier": {
 96        "carrierCode": "DP",
 97        "flightNumber": "6841"
 98      },
 99      "operatingCarrier": {
100        "carrierCode": "DP",
101        "flightNumber": "6841"
102      },
103      "departure": {
104        "location": {
105          "code": "SVO",
106          "codeType": "iata",
107          "type": "airport"
108        },
109        "dateTime": "2025-11-21T07:40:00",
110        "terminal": "D"
111      },
112      "arrival": {
113        "location": {
114          "code": "KZN",
115          "codeType": "iata",
116          "type": "airport"
117        },
118        "dateTime": "2025-11-21T09:20:00",
119        "terminal": "1"
120      },
121      "type": "scheduled"
122    }
123  },
124  "fareFamilies": {
125    "DP_БАЗОВЫЙ": {
126      "carrierCode": "DP",
127      "name": "БАЗОВЫЙ",
128      "description": "НОРМА РУЧНОЙ КЛАДИ"
129    }
130  }
131}

Ответ с несколькими вариантами тарифа#

Если для предложения доступны несколько тарифных семейств:

 1{
 2  "searchId": "699C55215661822C2EC828B0F661A304",
 3  "offers": [
 4    {
 5      "offerItems": [
 6        {
 7          "offerItemId": "1691A9FCFD85DC8DB9D6093D7E75C5C0",
 8          "totalAmount": { "currencyCode": "RUB", "value": 1499 },
 9          "fareFamilyRefId": "DP_БАЗОВЫЙ"
10        },
11        {
12          "offerItemId": "DAB32144B940FCC65CC85E9BCE682346",
13          "totalAmount": { "currencyCode": "RUB", "value": 2949 },
14          "fareFamilyRefId": "DP_ВЫГОДНЫЙ"
15        },
16        {
17          "offerItemId": "4E435B2299838F5C9E819BDB13FCD9AA",
18          "totalAmount": { "currencyCode": "RUB", "value": 5599 },
19          "fareFamilyRefId": "DP_МАКСИМУМ"
20        }
21      ]
22    }
23  ]
24}

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

1{
2  "error": {
3    "code": "OFFER_NOT_AVAILABLE",
4    "message": "Предложение недоступно",
5    "description": "Выбранное предложение больше не доступно",
6    "errorId": "018c5f2e-9b3a-7f4d-8e2c-1a2b3c4d5e6f"
7  }
8}

Использование данных#

Проверка изменения цены#

1var originalPrice = 1499m;
2var actualPrice = response.Offers[0].OfferItems[0].TotalAmount.Value;
3
4if (actualPrice != originalPrice)
5{
6    var difference = actualPrice - originalPrice;
7    Console.WriteLine($"Цена изменилась на {difference:+#;-#;0} ₽");
8}

Проверка доступности мест#

1var fareComponent = response.Offers[0]
2    .OfferItems[0]
3    .Details["adt"]
4    .FareComponents[0];
5
6if (fareComponent.AvailableSeatCount < requiredSeats)
7{
8    Console.WriteLine("Недостаточно мест");
9}

Проверка срока действия#

1var offerExpiration = DateTime.Parse(
2    response.Offers[0].OfferItems[0].OfferExpiration
3);
4
5if (offerExpiration < DateTime.Now)
6{
7    Console.WriteLine("Предложение истекло");
8}

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

Код ошибкиПричинаРешение
SEARCH_EXPIREDПоиск устарелВыполните новый поиск
OFFER_NOT_AVAILABLEПредложение недоступноПредложите альтернативы
INVALID_OFFER_ITEMНекорректный offerItemIdПроверьте ID
PRICE_CHANGEDЦена измениласьПоказана в ответе

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