Параметры запроса#

Детальное описание параметров для запроса /avia/ticket_exchange_calculation.

Обязательные параметры#

ПараметрТипОписание
bookingIdguidИдентификатор бронирования (формат UUID)
ticketNumberstringНомер билета для обмена (может включать префикс vendor)
legsLeg[]Массив новых маршрутов с сегментами

Структура Leg (маршрут)#

ПараметрТипОбязательноОписание
segmentsSegment[]ДаМассив сегментов маршрута

Структура Segment (сегмент перелета)#

ПараметрТипОбязательноОписание
flightFlightDesignatorДаИнформация о рейсе (код авиакомпании и номер рейса)
originLocationДаПункт отправления
destinationLocationДаПункт назначения
departureAtdatetimeДаДата и время вылета (ISO 8601)
arrivalAtdatetimeДаДата и время прилета (ISO 8601)
fareBasisstringДаКод тарифа
originalSegmentIdstringДаСсылка на оригинальный сегмент

Структура FlightDesignator#

ПараметрТипОбязательноОписание
carrierCodestringДаIATA код авиакомпании (2 символа)
flightNumberstringДаНомер рейса

Структура Location#

ПараметрТипОбязательноОписание
codestringДаIATA код аэропорта или города (3 символа)
codeTypeintegerДаТип кода (0 = IATA)
typeintegerДаТип локации (0 = Airport, 1 = City)

Пример запроса#

 1curl -X POST https://test.travel-api.ru/avia/ticket_exchange_calculation \
 2  -H "Authorization: Bearer YOUR_TOKEN" \
 3  -H "Content-Type: application/json" \
 4  -d '{
 5    "bookingId": "019a0ce7-b2b1-7670-9bb0-0823c0853344",
 6    "ticketNumber": "425-6170037301",
 7    "legs": [
 8      {
 9        "segments": [
10          {
11            "flight": {
12              "carrierCode": "DP",
13              "flightNumber": "6841"
14            },
15            "origin": {
16              "code": "SVO",
17              "codeType": 0,
18              "type": 0
19            },
20            "destination": {
21              "code": "KZN",
22              "codeType": 0,
23              "type": 0
24            },
25            "departureAt": "2025-11-29T07:40:00",
26            "arrivalAt": "2025-11-29T09:20:00"
27          }
28        ]
29      }
30    ]
31  }'
 1var request = new
 2{
 3    bookingId = "019a0ce7-b2b1-7670-9bb0-0823c0853344",
 4    ticketNumber = "425-6170037301",
 5    legs = new[]
 6    {
 7        new
 8        {
 9            segments = new[]
10            {
11                new
12                {
13                    flight = new
14                    {
15                        carrierCode = "DP",
16                        flightNumber = "6841"
17                    },
18                    origin = new
19                    {
20                        code = "SVO",
21                        codeType = 0,
22                        type = 0
23                    },
24                    destination = new
25                    {
26                        code = "KZN",
27                        codeType = 0,
28                        type = 0
29                    },
30                    departureAt = "2025-11-29T07:40:00",
31                    arrivalAt = "2025-11-29T09:20:00"
32                }
33            }
34        }
35    }
36};
37
38var response = await httpClient.PostAsJsonAsync(
39    "https://test.travel-api.ru/avia/ticket_exchange_calculation",
40    request
41);
42
43if (response.IsSuccessStatusCode)
44{
45    var result = await response.Content.ReadFromJsonAsync<ExchangeCalculationResponse>();
46
47    if (result?.Error == null && result.Offers?.Length > 0)
48    {
49        Console.WriteLine($"Найдено вариантов: {result.Offers.Length}");
50        var cheapest = result.Offers.MinBy(o => o.OfferItems[0].ForExchange.Value);
51        Console.WriteLine($"Минимальная доплата: {cheapest.OfferItems[0].ForExchange.Value} RUB");
52    }
53}

Обработка ошибок#

При расчете обмена могут возникнуть следующие ошибки:

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

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