Параметры запроса#
Детальное описание параметров для запроса /api/avia/ticket_exchange_calculation.
Обязательные параметры#
| Параметр | Тип | Описание |
|---|---|---|
bookingId | guid | Идентификатор бронирования (формат UUID) |
ticketNumber | string | Номер билета для обмена, не более 14 символов (может включать префикс vendor) |
legs | Leg[] | Массив новых маршрутов с сегментами |
Структура Leg (маршрут)#
| Параметр | Тип | Обязательно | Описание |
|---|---|---|---|
segments | Segment[] | Да | Массив сегментов маршрута |
Структура Segment (сегмент перелета)#
| Параметр | Тип | Обязательно | Описание |
|---|---|---|---|
flight | FlightDesignator | Да | Информация о рейсе (код авиакомпании и номер рейса) |
origin | Location | Да | Пункт отправления |
destination | Location | Да | Пункт назначения |
departureAt | datetime | Да | Дата и время вылета (ISO 8601); должна быть строго в будущем |
arrivalAt | datetime | Да | Дата и время прилета (ISO 8601); должна быть строго в будущем |
fareBasis | string | Да | Код класса бронирования (RBD); не более 1 символа |
originalSegmentId | string | Да | Ссылка на оригинальный сегмент; не более 50 символов |
Структура FlightDesignator#
| Параметр | Тип | Обязательно | Описание |
|---|---|---|---|
carrierCode | string | Да | Код авиакомпании, не более 3 символов |
flightNumber | string | Да | Номер рейса, не более 10 символов |
Структура Location#
| Параметр | Тип | Обязательно | Описание |
|---|---|---|---|
code | string | Да | IATA код аэропорта или города (3 символа) |
codeType | string | Да | Тип кода: iata | tch |
type | string | Да | Тип локации: 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— его формат зависит от поставщика и не фиксирован.
Связанные операции#
- Обмен билета - фактическое оформление обмена
- Информация о билете - проверка статуса билета
- Расчёт возврата - альтернатива обмену