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

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

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

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

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

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

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

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

Структура FlightDesignator#

ПараметрТипОбязательноОписание
carrierCodestringДаКод авиакомпании, не более 3 символов
flightNumberstringДаНомер рейса, не более 10 символов

Структура Location#

ПараметрТипОбязательноОписание
codestringДаIATA код аэропорта или города (3 символа)
codeTypestringДаТип кода: iata | tch
typestringДаТип локации: airport | city

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

 1curl -X POST https://test.travelplatform.ru/api/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": "iata",
18              "type": "airport"
19            },
20            "destination": {
21              "code": "KZN",
22              "codeType": "iata",
23              "type": "airport"
24            },
25            "departureAt": "2025-11-29T07:40:00",
26            "arrivalAt": "2025-11-29T09:20:00",
27            "fareBasis": "P",
28            "originalSegmentId": "79eeae5c-5ba4-4660-9d80-6ceba1023aa3"
29          }
30        ]
31      }
32    ]
33  }'
 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 = "iata",
22                        type = "airport"
23                    },
24                    destination = new
25                    {
26                        code = "KZN",
27                        codeType = "iata",
28                        type = "airport"
29                    },
30                    departureAt = "2025-11-29T07:40:00",
31                    arrivalAt = "2025-11-29T09:20:00",
32                    fareBasis = "P",
33                    originalSegmentId = "79eeae5c-5ba4-4660-9d80-6ceba1023aa3"
34                }
35            }
36        }
37    }
38};
39
40var response = await httpClient.PostAsJsonAsync(
41    "https://test.travelplatform.ru/api/avia/ticket_exchange_calculation",
42    request
43);
44
45if (response.IsSuccessStatusCode)
46{
47    var result = await response.Content.ReadFromJsonAsync<TicketExchangeCalculationResponse>();
48
49    if (result?.Error == null && result.Offers?.Length > 0)
50    {
51        Console.WriteLine($"Найдено вариантов: {result.Offers.Length}");
52        var cheapest = result.Offers.MinBy(o => o.OfferItems[0].ForExchange.Value);
53        Console.WriteLine($"Минимальная доплата: {cheapest.OfferItems[0].ForExchange.Value} RUB");
54    }
55}

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

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

Код ошибкиПричинаРешение
BOOKING_NOT_FOUNDБронирование не найдено или не принадлежит клиентуПроверьте bookingId
CURRENCY_RATE_NOT_AVAILABLEНет курса для конвертации сумм в валюту отображенияПовторите запрос позже
VALIDATION_ERRORОшибка валидации запроса (HTTP 400)Проверьте обязательные поля и форматы значений
NO_TARGETSПод запрос не нашлось ни одного поставщика: ни один не настроен либо все отсеяны на этапе подготовки запросаПроверьте настройки офисов и пресетов в личном кабинете; при сохранении ошибки обратитесь в поддержку
SUPPLIER_ERRORПоставщик вернул ошибку. Причина — текстом поставщика в поле messageРазберите message; при необходимости повторите запрос позже
SYSTEM_ERRORВнутренняя ошибка Travel APIПовторите запрос позже; при повторении обратитесь в поддержку с errorId

Ошибки, пришедшие от GDS/NDC-поставщика, возвращаются под кодом SUPPLIER_ERROR: отдельного кода на каждую причину отказа Travel API не формирует, причина передаётся текстом поставщика в поле message. Не завязывайте логику на разбор message — его формат зависит от поставщика и не фиксирован.


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