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