Расчет обмена билета#
Предварительный расчет стоимости и вариантов обмена билета на новый маршрут или даты.
Описание#
Эндпоинт: POST /api/avia/ticket_exchange_calculation
Операция расчета обмена позволяет получить доступные варианты обмена билета с полным расчетом стоимости до выполнения фактического обмена. Это позволяет пользователю увидеть все варианты, доплату и условия до принятия окончательного решения.
Использование#
Используйте этот запрос для получения вариантов обмена билета перед фактическим обменом через /api/avia/ticket_exchange.
Основной сценарий#
sequenceDiagram
participant Client
participant API
Client->>API: POST /api/avia/ticket_exchange_calculation<br/>{bookingId, ticketNumber, legs}
API-->>Client: exchangeId + offers[]<br/>(варианты с расчетом стоимости)
Note over Client: Выбор варианта<br/>(получение offerItemId)
Client->>API: POST /api/avia/ticket_exchange<br/>{exchangeId, offerItemId, ...}
API-->>Client: tickets[]<br/>(новые билеты)
Базовый пример#
Минимальный запрос для расчета обмена билета:
1{
2 "bookingId": "019a0be6-dbe9-7108-bb7b-fbd181c3fbf6",
3 "ticketNumber": "425-6170037037",
4 "legs": [
5 {
6 "segments": [
7 {
8 "flight": {
9 "carrierCode": "DP",
10 "flightNumber": "6841"
11 },
12 "origin": {
13 "code": "SVO",
14 "codeType": "iata",
15 "type": "airport"
16 },
17 "destination": {
18 "code": "KZN",
19 "codeType": "iata",
20 "type": "airport"
21 },
22 "departureAt": "2025-11-29T07:40:00",
23 "arrivalAt": "2025-11-29T09:20:00",
24 "fareBasis": "P",
25 "originalSegmentId": "79eeae5c-5ba4-4660-9d80-6ceba1023aa3"
26 }
27 ]
28 }
29 ]
30}Успешный ответ с вариантами обмена:
1{
2 "exchangeId": "019a0ce6-2633-787f-a6bc-5dbddc02cc1f",
3 "offers": [
4 {
5 "legs": [
6 {
7 "segments": [
8 {
9 "key": "NLc0EJEsw0GJer9QRFb4Sg",
10 "flightKey": "DP6841SVO-KZN291120250740",
11 "technicalStopsDetails": [],
12 "technicalStops": 0
13 }
14 ],
15 "duration": "01:40:00"
16 }
17 ],
18 "offerItems": [
19 {
20 "offerItemId": "offer-item-1",
21 "forExchange": {
22 "currencyCode": "RUB",
23 "value": 5000
24 },
25 "fare": {
26 "currencyCode": "RUB",
27 "value": 0
28 },
29 "taxes": {
30 "currencyCode": "RUB",
31 "value": 100
32 },
33 "exchangeDetails": {
34 "adt": {
35 "fare": {
36 "currencyCode": "RUB",
37 "value": 0
38 },
39 "faresInfo": [
40 {
41 "fareBasis": "PAD",
42 "segmentKeys": ["NLc0EJEsw0GJer9QRFb4Sg"],
43 "cabinType": "economy",
44 "class": "P",
45 "fareFamilyKey": "DP_ВЫГОДНЫЙ",
46 "seatsAvailable": 5
47 }
48 ],
49 "price": {
50 "currencyCode": "RUB",
51 "value": 5100
52 },
53 "taxes": [
54 {
55 "code": "YR",
56 "amount": {
57 "currencyCode": "RUB",
58 "value": 100
59 }
60 }
61 ]
62 }
63 },
64 "timeLimit": "2025-10-22T13:16:37.7360318Z",
65 "officeGuid": "019a0ce7-b2b1-7670-9bb0-0823c0853344"
66 }
67 ],
68 "validatingCarrier": ""
69 }
70 ],
71 "flights": {
72 "DP6841SVO-KZN291120250740": {
73 "marketingCarrier": {
74 "carrierCode": "DP",
75 "flightNumber": "6841"
76 },
77 "origin": {
78 "airport": "SVO",
79 "dateTime": "2025-11-29T07:40:00"
80 },
81 "destination": {
82 "airport": "KZN",
83 "dateTime": "2025-11-29T09:20:00"
84 },
85 "duration": "01:40:00",
86 "equipment": "73H",
87 "type": "scheduled"
88 }
89 },
90 "fareFamilies": {
91 "DP_ВЫГОДНЫЙ": {
92 "carrier": "DP",
93 "name": "ВЫГОДНЫЙ",
94 "description": "НОРМА РУЧНОЙ КЛАДИ ДО 10КГ 203СМ"
95 }
96 },
97 "passenger": "adt"
98}Детальная документация#
- Параметры запроса — описание параметров запроса
- Структура ответа — детальное описание структуры ответа
Когда использовать#
Изменение маршрута#
Пассажир хочет лететь в другой город:
1{
2 "bookingId": "019a0be6-dbe9-7108-bb7b-fbd181c3fbf6",
3 "ticketNumber": "425-6170037037",
4 "legs": [
5 {
6 "segments": [
7 {
8 "flight": {
9 "carrierCode": "DP",
10 "flightNumber": "6841"
11 },
12 "origin": {
13 "code": "SVO",
14 "codeType": "iata",
15 "type": "airport"
16 },
17 "destination": {
18 "code": "KZN",
19 "codeType": "iata",
20 "type": "airport"
21 },
22 "departureAt": "2025-11-29T07:40:00",
23 "arrivalAt": "2025-11-29T09:20:00",
24 "fareBasis": "P",
25 "originalSegmentId": "79eeae5c-5ba4-4660-9d80-6ceba1023aa3"
26 }
27 ]
28 }
29 ]
30}Изменение дат полета#
Пассажир хочет перенести рейс на другую дату.
Смена класса обслуживания#
Пассажир хочет улучшить класс обслуживания (upgrade).
Типичные ошибки#
| Код ошибки | Причина | Решение |
|---|---|---|
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— его формат зависит от поставщика и не фиксирован.
Связанные операции#
- Обмен билета - фактический обмен билета
- Информация о билете - проверка статуса билета
- Правила тарифа - просмотр условий обмена
- Получение PNR - проверка бронирования