Giter VIP home page Giter VIP logo

flysoft's Introduction

Авиаконнектор

Авиаконнектор - это API-сервис для поиска, бронирования и выписки авиабилетов, с которым взаимодействуют остальные сервисы посредством HTTP-запросов. Сервис Авиаконнектор, в свою очередь, отправляет запросы далее на GDS авиабилетов согласно конфигурации, используя соответствующие протоколы и технологии в зависимости от типа конфигурации.

Требования к сервису

• Единый входной формат запроса: Входной формат запроса должен быть в формате JSON с типом содержимого application/json.

• Единый выходной формат ответа: Выходной формат ответа должен быть в формате JSON с типом содержимого application/json.

• Язык реализации: Сервис должен быть реализован на языке программирования Go (GoLang).

• Маппинг ответов: Сервис должен приводить ответы от GDS авиабилетов на структуру сервиса, приведенную в этой документации.

Задачи для реализации с GDS:

  • Реализация Поиска рекомендаций Search
  • Реализация BrandFares
  • Запрос на получение условий тарифа FareRules
  • Реализация Prebook
  • Реализация Book
  • Реализация CancelBook
  • Реализация CheckPrice
  • Реализация Pay
  • Реализация Ticket

Реализация Поиска рекомендаций

Пример запроса
{
  "session_id": "628d7ca583af2935e00096d881d4f70d",
  "search_params": {
    "flight_type": "OW",
    "routes": [
      {
        "index": 0,
        "from": "DYU",
        "to": "MOW",
        "date": "22.07.2024"
      }
    ],
    "passengers": {
      "adt": "1",
      "chd": "0",
      "inf": "0",
      "ins": "0"
    },
    "language": "ru",
    "cabin": "economy"
  },
  "config": {
    "connector": "batik",
    "config": {
      "connection_value": {
        "url": "https:batik.cc.xly.com",
        "login": "test",
        "password": "password"
      },
      "configuration_value": {}
    }
  },
}
Параметры запроса
Элемент Формат Обяз. Пример Описание
flight_type С Да OW Тип перелета, возможные значения: OW - one way/перелет в одну сторону, RT - round trip/ перелет туда и обратно, CF - complicated flight/сложный перелет
passengers[adt] N Да 1 количество взрослых
passengers[chd] N Да 0 количество детей с местом от 2 до 12 лет. Для поиска перелетов только на ребенка, вы можете отправить в запросе необходимое количество CHD, при этом ADT=0
passengers[inf] N Да 0 количество младенцев без места от 0 до 2 лет
passengers[ins] N Да 0 количество младенцев с местом от 0 до 2 лет
cabin C Да economy класс обслуживания (economy – эконом класс, business – бизнес класс, first – первый класс)
routes[*]from C Да DYU сегменты путешествия: пункт отправления
routes[*]to C Да IST сегменты путешествия: пункт прибытия
routes[*]date D Да 22.07.2024 сегменты путешествия: дата отправления
language C Нет ru язык интерфейса, по дефолту равен ru
filter_airlines[*] A Нет S7 авиа компании для фильтрации. Каждая АК должна передаваться отдельным элементом filter_airlines[*] массива. Фильтрация происходит по валидирующему перевозчику. В ответе будут рекомендации с а/к указанными в фильтре
is_direct_only N Нет 1 показывать только прямые рейсы
gds_white_list[*] A Нет ["TUA", "HTC"] Список GDS для фильтрации. Каждый GDS должен передаваться отдельным элементом gds_white_list[*] массива
gds_black_list[*] A Нет ["HTC"] Список GDS для исключения из выдачи. Каждый GDS должен передаваться отдельным элементом gds_black_list[*] массива
airline_list[*] A Нет ["АВ", "TK", "U6"] Список авиакомпаний для фильтрации. Каждая авиакомпания должна передаваться отдельным элементом airline_list[*] массива
airline_black_list[*] A Нет ["LH",] Список авиакомпаний для исключения из выдачи. Каждая авиакомпания должна передаваться отдельным элементом airline_black_list[*] массива
count N Нет 20 лимит рекомендаций

Рекомендуется использовать одновременно только один из параметров gds_white_list или gds_black_list. При одновременном использовании обоих по приоритету должен быть использван gds_white_list, а gds_black_list - проигнорирован. Рекомендуется использовать одновременно только один из параметров airline_list или airline_black_list. При одновременном использовании обоих по приоритету должен быть использван airline_list, а airline_black_list - проигнорирован.

Пример ответа
{
    "success": true,
    "code": 0,
    "message": "",
    "session_id": "628d7ca583af2935e00096d881d4f70d",
    "search_params": {
        "flight_type": "OW",
        "routes": [
            {
                "index": 0,
                "from": "DYU",
                "to": "MOW",
                "date": "22.07.2024"
            }
        ],
        "passengers": {
            "adt": "1",
            "chd": "0",
            "inf": "0",
            "ins": "0"
        },
        "language": "ru",
        "cabin": "economy"
    },
    "flights": [
        {
            "rec_id": "API2EASYOWE2110000090DYUIST20240722_RU-TUA.TK.0.320.F10872500S10752411.OENCUDM0MTI0MzM=..-17.TK.255.DYU.202407220310.IST.202407220630.333.QY2PXOW.320.0.TUA.0.1P30K.1P8K..1.1..0",
            "total_price": 11029, // стоимость билета, включает в себя fare + taxes + fee
            "fare": 10520, // тариф
            "tax": 507, // сумма такс
            "fee": 2, // сбор 
            "taxes": [ // список такс по видам
              {
                  "code": "RI", // вид таксы
                  "amount": 307 //сумма таксы
              },
              {
                 "code": "YR", // вид таксы
                  "amount": 200 //сумма таксы
              }
            ],
            "currency": "RUB", // валюта
            "provider": "TUA", // наименование поставщика услуги
            "supplier": { // валидирующий перевозчик 
                "code": "TK",
                "title": "Turkish Airlines"
            },
            "ticketing_time_limit": 1707549258, // доступное время на бронирование в unix-формате
            "has_branded_tariffs": true, // флаг доступности семейства тарифов.
            "duration": 320, // общая продолжительность перелета всех роутов в минутах
            "routes_count": 1, // число роутов в перелете
            "routes": [
                {
                    "index": 0, // направление, тк рейс с 1 маршрутом - то направление тут всегда будет 0. если рейс туда и обратно то будут сегменты со значением 0 туда и 1 обратно и более
                    "duration": 320, // продолжительность перелета сегментов в минутах
                    "segments": [
                        {
                            "index": 0, // порядковый индекс сегмента
                            "arrival": {
                                "date": "22.07.2024", // дата прилета
                                "time": "06:30", // время прилета
                                "datetime": "22.07.2024 06:30:00",
                                "ts": 1721619000,
                                // дата и вермя прилета в unix-формате
                                "terminal": "A", // терминал прилета
                                "airport": { // данные об аэропорте прилета
                                    "title": "Аэропорт Стамбула", // название аэропорта
                                    "code": "IST" // IATA код аэропорта
                                },
                                "city": { // данные о городе прилета
                                    "code": "IST", // IATA код города
                                    "title": "Стамбул" // название города
                                },
                                "country": { // данные о стране прилета
                                    "code": "TR", // IATA код страны
                                    "title": "Турция" //название страны
                                }
                            },
                            "departure": {  // данные о вылете (значения полей аналогичны данным о прилете) 
                                "date": "22.07.2024",
                                "time": "03:10",
                                "datetime": "22.07.2024 03:10:00",
                                "ts": 1721607000,
                                "terminal": "",
                                "airport": {
                                    "title": "Душанбе",
                                    "code": "DYU"
                                },
                                "city": {
                                    "code": "DYU",
                                    "title": "Душанбе"
                                },
                                "country": {
                                    "code": "TJ",
                                    "title": "Таджикистан"
                                }
                            },
                            "is_baggage": true, // признак наличия багажа
                            "baggage": { // данные о багаже
                                "piece": 2, // количество мест
                                "weight": 30 // вес
                            },
                            "comment": "", // комментарий если есть, уточняющий в текстовой форме особенности провоза багажа.
                            "cbaggage": { // данные о ручной клади
                                "piece": 1, // количество мест
                                "weight": 7, // вес
                                "dimensions": { // допустимые размеры
                                    "width": 40,
                                    "length": 55,
                                    "height": 23
                                },
                                "weight_unit": "KG" // единица измерения 
                            },
                            "free_seats": 9, // количество доступных мест
                            "flight_number": "255", // номер рейса (carrier_number)
                            "fare_code": "QY2PXOW", // название тарифа
                            "duration": 320, // продолжительность перелета
                            "carrier": { // данные об оперирующем перевозчике (operation_supplier)
                                "code": "TK",
                                "title": "Turkish Airlines"
                            },
                            "aircraft": { // данные о самолете
                                "code": "333",
                                "title": "Airbus A330-300"
                            },
                            "service_class": { // данные о классе
                                "name": "economy", // класс обслуживания(first business economy)
                                "code": "M" // сервис (первая буква тарифа)
                            },
                            "tech_stops": [  // данные о технических остановках
                            {
                                "duration": 360 // продолжительность технической остановки в минутах,
                                "arrival": "22.01.2022 13:10:00", // дата и время прилета
                                "departure": "22.01.2022 15:40:00", // дата и время вылета
                                "airport": {
                                    "code": "MXP",
                                    "title": "Малпенза" 
                                },
                                "city": {
                                    "code": "MIL",
                                    "title": "Милан" 
                                },
                                "country": {
                                    "code": "IT",
                                    "title": "Италия" 
                                }
                            }
                        ],
                            "provider": "TUA", // наименование поставщика услуги
                            "supplier": { // валидирующий перевозчик 
                                "code": "TK",
                                "title": "Turkish Airlines"
                            },
                            "type": "regular", // тип перелета. Могут быть регулярные рейсы "regular", чартерные "charter" и рейсы лоукост-перевозчиков "lowcost".
                            "is_charter": false, // чартерный ли это рейс
                            "is_refund": true, // возможен ли возврат
                            "is_change": true, // возможен ли обмен
                            "extra_baggage": [] // данные о дополнительном багаже, доступен у лоукостов
                     }
                    ]
                }
            ]
        }
    ]
}
Пример данных о дополнительном багаже на лоукостах. (lowcost)
 "extra_baggage":{ 
        "list":[
            {
             "count":1, //количество мест багажа
             "price":{ //стоимость указанного количества мест
             "RUB":{
               "amount":3639
             }
            }
          }
        ],
     "limit":{ //габариты одного места багажа
          "hand_width":40,
          "hand_length":55,
          "hold_weight":20,
          "hand_height":20,
          "hand_weight":8
         }
}

Запрос на получение семейств тарифов (BrandFares)

Получение семейства тарифов для определенной рекомендации.

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

POST /fares

{
  "rec_id": "API2EASYOWE2110000090DYUIST20240722_RU-TUA.TK.0.320.F10872500S10752411.OENCUDM0MTI0MzM=..-17.TK.255.DYU.202407220310.IST.202407220630.333.QY2PXOW.320.0.TUA.0.1P30K.1P8K..1.1..0",
  "session_id": "628d7ca583af2935e00096d881d4f70d",
  "language": "ru",
  "config": {
    "connector": "batik",
    "config": {
      "connection_value": {
        "url": "https:batik.cc.xly.com",
        "login": "test",
        "password": "password"
      },
      "configuration_value": {}
    }
  }
}
Параметры запроса
  • rec_id - идентификатор рекомендации(полученный при поиске)
  • session_id - идентификатор сессии которую надо вернуть обратно в теле ответа
  • config настройки подключения к GDS
Пример ответа
{
    "success": true,
    "code": 0,
    "message": "",
    "session_id": "628d7ca583af2935e00096d881d4f70d",
    "flights": [
        {
            "rec_id": "API2EASYOWE2110000090DYUIST20240722_RU-TUA.TK.0.320.F10872500S10752411.OENCUDM0MTI0MzM=..-17.TK.255.DYU.202407220310.IST.202407220630.333.QY2PXOW.320.0.TUA.0.1P30K.1P8K..1.1..0",
            "total_price": 11029, // стоимость билета, включает в себя fare + taxes + fee
            "fare": 10520, // тариф
            "taxes": 507, // сумма такс
            "fee": 2, // сбор 
            "currency": "RUB", // валюта
            "provider": "TUA", // наименование поставщика услуги
            "supplier": { // валидирующий перевозчик 
                "code": "TK",
                "title": "Turkish Airlines"
            },
            "ticketing_time_limit": 1707549258, // отведенное время для выписки билета, дата и вермя в unix-формате 
            "has_branded_tariffs": true, // флаг доступности семейства тарифов.
            "duration": 320, // общая продолжительность перелета всех роутов в минутах
            "routes_count": 1, // число роутов в перелете
            "routes": [
                {
                    "index": 0, // направление, тк рейс с 1 маршрутом - то направление тут всегда будет 0. если рейс туда и обратно то будут сегменты со значением 0 туда и 1 обратно и более
                    "duration": 320, // продолжительность перелета сегментов в минутах
                    "segments": [
                        {
                            "index": 0, // порядковый индекс сегмента
                            "arrival": {
                                "date": "22.07.2024", // дата прилета
                                "time": "06:30", // время прилета
                                "datetime": "22.07.2024 06:30:00",
                                "ts": 1721619000,
                                // дата и вермя прилета в unix-формате
                                "terminal": "A", // терминал прилета
                                "airport": { // данные об аэропорте прилета
                                    "title": "Аэропорт Стамбула", // название аэропорта
                                    "code": "IST" // IATA код аэропорта
                                },
                                "city": { // данные о городе прилета
                                    "code": "IST", // IATA код города
                                    "title": "Стамбул" // название города
                                },
                                "country": { // данные о стране прилета
                                    "code": "TR", // IATA код страны
                                    "title": "Турция" //название страны
                                }
                            },
                            "departure": {  // данные о вылете (значения полей аналогичны данным о прилете) 
                                "date": "22.07.2024",
                                "time": "03:10",
                                "datetime": "22.07.2024 03:10:00",
                                "ts": 1721607000,
                                "terminal": "",
                                "airport": {
                                    "title": "Душанбе",
                                    "code": "DYU"
                                },
                                "city": {
                                    "code": "DYU",
                                    "title": "Душанбе"
                                },
                                "country": {
                                    "code": "TJ",
                                    "title": "Таджикистан"
                                }
                            },
                            "is_baggage": true, // признак наличия багажа
                            "baggage": { // данные о багаже
                                "piece": 2, // количество мест
                                "weight": 30 // вес
                            },
                            "comment": "", // комментарий если есть, уточняющий в текстовой форме особенности провоза багажа.
                            "cbaggage": { // данные о ручной клади
                                "piece": 1, // количество мест
                                "weight": 7, // вес
                                "dimensions": { // допустимые размеры
                                    "width": 40,
                                    "length": 55,
                                    "height": 23
                                },
                                "weight_unit": "KG" // единица измерения 
                            },
                            "free_seats": 9, // количество доступных мест
                            "flight_number": "255", // номер рейса (carrier_number)
                            "fare_code": "QY2PXOW", // название тарифа
                            "duration": 320, // продолжительность перелета
                            "carrier": { // данные об оперирующем перевозчике (operation_supplier)
                                "code": "TK",
                                "title": "Turkish Airlines"
                            },
                            "aircraft": { // данные о самолете
                                "code": "333",
                                "title": "Airbus A330-300"
                            },
                            "service_class": { // данные о классе
                                "name": "economy", // класс обслуживания(first business economy)
                                "code": "M" // сервис (первая буква тарифа)
                            },
                            "tech_stops": [  // данные о технических остановках
                            {
                                "duration": 360 // продолжительность технической остановки в минутах,
                                "arrival": "22.01.2022 13:10:00", // дата и время прилета
                                "departure": "22.01.2022 15:40:00", // дата и время вылета
                                "airport": {
                                    "code": "MXP",
                                    "title": "Малпенза" 
                                },
                                "city": {
                                    "code": "MIL",
                                    "title": "Милан" 
                                },
                                "country": {
                                    "code": "IT",
                                    "title": "Италия" 
                                }
                            }
                        ],
                            "provider": "TUA", // наименование поставщика услуги
                            "supplier": { // валидирующий перевозчик 
                                "code": "TK",
                                "title": "Turkish Airlines"
                            },
                            "type": "regular", // тип перелета. Могут быть регулярные рейсы "regular", чартерные "charter" и рейсы лоукост-перевозчиков "lowcost".
                            "is_charter": false, // чартерный ли это рейс
                            "is_refund": true, // возможен ли возврат
                            "is_change": true // возможен ли обмен 
                        }
                    ]
                }
            ]
        }
    ]
}

Запрос на получение условий тарифа

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

POST /rules

{
    "session_id": "628d7ca583af2935e00096d881d4f70d",
    "rec_id": "API2EASYOWE2110000090DYUIST20240722_RU-TUA.TK.0.320.F10872500S10752411.OENCUDM0MTI0MzM=..-17.TK.255.DYU.202407220310.IST.202407220630.333.QY2PXOW.320.0.TUA.0.1P30K.1P8K..1.1..0",
    "language": "ru",
    "config": {
    "connector": "batik",
    "config": {
      "connection_value": {
        "url": "https:batik.cc.xly.com",
        "login": "test",
        "password": "password"
      },
      "configuration_value": {}
    }
  }
}
Пример ответа
{
    "success": true,
    "code": 0,
    "message": "",
    "session_id": "628d7ca583af2935e00096d881d4f70d",
    "rules": {
            "API2EASYOWE2110000090DYUIST20240722_RU-TUA.TK.0.320.F10872500S10752411.OENCUDM0MTI0MzM=..-17.TK.255.DYU.202407220310.IST.202407220630.333.QY2PXOW.320.0.TUA.0.1P30K.1P8K..1.1..0": [
                {
                    "departure": {
                        "name": "Dushanbe",
                        "iata": "DYU",
                        "country": {
                            "name": "Таджикистан",
                            "iata": "TJ" 
                        }
                    },
                    "arrival": {
                        "name": "Истанбул",
                        "iata": "IST",
                        "country": {
                            "name": "Турция",
                            "iata": "TR" 
                        }
                    },
                    "fare_code": "QY2PXOW",
                    "text": "Норма бесплатного провоза багажа: не предоставляется\nСкидки для детей до 2-х лет без предоставления отдельного места: 90%, при внутренних перевозках по РФ – бесплатно\nСкидки для детей до 2-х лет и детей от 2 до 12 лет с предоставлением отдельного места: без сопровождения взрослым скидка не предоставляется, с сопровождением взрослым в том же классе обслуживания – 25%\nВозврат провозной платы при уведомлении об отказе от перевозки до окончания установленного времени регистрации пассажиров на указанный в билете рейс: не разрешено\nБонусные мили – 75%\nИзменения не позднее 30 минут после времени отправки рейса, указанного в оформленном билете (при условии наличия мест по оплаченному тарифу): разрешено с доплатой\nБолее подробные правила на сайте перевозчика: https://www.aeroflot.ru//ru-ru/information/purchase/rate/fare_rules" 
                }
            ]
        }
}

PreBook

Запрос для проверки наличия мест, а также цены на выбранную рекомендацию. Вызов запроса инициируется при выборе клиентом одной рекомендации, из предложенного множества рекомендаций поискового ответ

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

POST /prebook

{
  "rec_id": "API2EASYOWE2110000090DYUIST20240722_RU-TUA.TK.0.320.F10872500S10752411.OENCUDM0MTI0MzM=..-17.TK.255.DYU.202407220310.IST.202407220630.333.QY2PXOW.320.0.TUA.0.1P30K.1P8K..1.1..0",
  "session_id": "628d7ca583af2935e00096d881d4f70d",
  "language": "ru",
  "config": {
    "connector": "batik",
    "config": {
      "connection_value": {
        "url": "https:batik.cc.xly.com",
        "login": "test",
        "password": "password"
      },
      "configuration_value": {}
    }
  }
}
Параметры запроса
  • rec_id - идентификатор рекомендации(полученный при поиске)
  • session_id - идентификатор сессии которую надо вернуть обратно в теле ответа
  • config настройки подключения к GDS
Пример ответа
{
    "success": true,
    "code": 0,
    "message": "",
    "session_id": "628d7ca583af2935e00096d881d4f70d",
    "flights": [
        {
            "rec_id": "API2EASYOWE2110000090DYUIST20240722_RU-TUA.TK.0.320.F10872500S10752411.OENCUDM0MTI0MzM=..-17.TK.255.DYU.202407220310.IST.202407220630.333.QY2PXOW.320.0.TUA.0.1P30K.1P8K..1.1..0",
            "total_price": 11029, // стоимость билета, включает в себя fare + taxes + fee
            "fare": 10520, // тариф
            "taxes": 507, // сумма такс
            "fee": 2, // сбор 
            "currency": "RUB", // валюта
            "provider": "TUA", // наименование поставщика услуги
            "supplier": { // валидирующий перевозчик 
                "code": "TK",
                "title": "Turkish Airlines"
            },
            "ticketing_time_limit": 1707549258, // отведенное время для выписки билета, дата и вермя в unix-формате 
            "has_branded_tariffs": true, // флаг доступности семейства тарифов.
            "duration": 320, // общая продолжительность перелета всех роутов в минутах
            "routes_count": 1, // число роутов в перелете
            "routes": [
                {
                    "index": 0, // направление, тк рейс с 1 маршрутом - то направление тут всегда будет 0. если рейс туда и обратно то будут сегменты со значением 0 туда и 1 обратно и более
                    "duration": 320, // продолжительность перелета сегментов в минутах
                    "segments": [
                        {
                            "index": 0, // порядковый индекс сегмента
                            "arrival": {
                                "date": "22.07.2024", // дата прилета
                                "time": "06:30", // время прилета
                                "datetime": "22.07.2024 06:30:00",
                                "ts": 1721619000,
                                // дата и вермя прилета в unix-формате
                                "terminal": "A", // терминал прилета
                                "airport": { // данные об аэропорте прилета
                                    "title": "Аэропорт Стамбула", // название аэропорта
                                    "code": "IST" // IATA код аэропорта
                                },
                                "city": { // данные о городе прилета
                                    "code": "IST", // IATA код города
                                    "title": "Стамбул" // название города
                                },
                                "country": { // данные о стране прилета
                                    "code": "TR", // IATA код страны
                                    "title": "Турция" //название страны
                                }
                            },
                            "departure": {  // данные о вылете (значения полей аналогичны данным о прилете) 
                                "date": "22.07.2024",
                                "time": "03:10",
                                "datetime": "22.07.2024 03:10:00",
                                "ts": 1721607000,
                                "terminal": "",
                                "airport": {
                                    "title": "Душанбе",
                                    "code": "DYU"
                                },
                                "city": {
                                    "code": "DYU",
                                    "title": "Душанбе"
                                },
                                "country": {
                                    "code": "TJ",
                                    "title": "Таджикистан"
                                }
                            },
                            "is_baggage": true, // признак наличия багажа
                            "baggage": { // данные о багаже
                                "piece": 2, // количество мест
                                "weight": 30 // вес
                            },
                            "comment": "", // комментарий если есть, уточняющий в текстовой форме особенности провоза багажа.
                            "cbaggage": { // данные о ручной клади
                                "piece": 1, // количество мест
                                "weight": 7, // вес
                                "dimensions": { // допустимые размеры
                                    "width": 40,
                                    "length": 55,
                                    "height": 23
                                },
                                "weight_unit": "KG" // единица измерения 
                            },
                            "free_seats": 9, // количество доступных мест
                            "flight_number": "255", // номер рейса (carrier_number)
                            "fare_code": "QY2PXOW", // название тарифа
                            "duration": 320, // продолжительность перелета
                            "carrier": { // данные об оперирующем перевозчике (operation_supplier)
                                "code": "TK",
                                "title": "Turkish Airlines"
                            },
                            "aircraft": { // данные о самолете
                                "code": "333",
                                "title": "Airbus A330-300"
                            },
                            "service_class": { // данные о классе
                                "name": "economy", // класс обслуживания(first business economy)
                                "code": "M" // сервис (первая буква тарифа)
                            },
                            "tech_stops": [  // данные о технических остановках
                            {
                                "duration": 360 // продолжительность технической остановки в минутах,
                                "arrival": "22.01.2022 13:10:00", // дата и время прилета
                                "departure": "22.01.2022 15:40:00", // дата и время вылета
                                "airport": {
                                    "code": "MXP",
                                    "title": "Малпенза" 
                                },
                                "city": {
                                    "code": "MIL",
                                    "title": "Милан" 
                                },
                                "country": {
                                    "code": "IT",
                                    "title": "Италия" 
                                }
                            }
                        ],
                            "provider": "TUA", // наименование поставщика услуги
                            "supplier": { // валидирующий перевозчик 
                                "code": "TK",
                                "title": "Turkish Airlines"
                            },
                            "type": "regular", // тип перелета. Могут быть регулярные рейсы "regular", чартерные "charter" и рейсы лоукост-перевозчиков "lowcost".
                            "is_charter": false, // чартерный ли это рейс
                            "is_refund": true, // возможен ли возврат
                            "is_change": true // возможен ли обмен 
                        }
                    ]
                }
            ]
        }
    ]
}

Реализация Book

Запрос на создание брони.

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

POST /booking

{
    "session_id": "628d7ca583af2935e00096d881d4f70d",
    "rec_id": "MY01EASYOWA1000010090MOWLED20231106-TUA.SU.0.95.F322717S374200.OENCTkRDX1NV..-31.SU.6.SVO.202311060655.LED.202311060830.32A.RNOR.95.0.TUA.0.0PC",
    "language": "ru",
    "currency": "RUB",
    "passengers": [
        {
            "index": 0,
            "name": "DALER",
            "surname": "PULATOV",
            "middle_name": ""
            "citizenship": "TJ",
            "gender": "M",
            "type": "adt",
            "email": "[email protected]",
            "phone": "+992917039843",
            "date_of_birth": "22-02-1994",
            "document": {
                "type": "NP",
                "number": "2014454343",
                "expire": "2044-05-28"
            }
        }
    ],
    "payer": {
        "name": "zohir",
        "email": "[email protected]",
        "phone": "+9999844444366"
    },
    "config": {
        "connector": "batik",
        "config": {
            "connection_value": {
                "url": "https:batik.cc.xly.com",
                "login": "test",
                "password": "password"
            },
            "configuration_value": {}
        }
    }
}
Пример ответа
{
    "success": true,
    "code": 0,
    "message": "",
    "session_id": "628d7ca583af2935e00096d881d4f70d",
    "billing_number": "1253665116", // номер заказа
    "order_id": "5e380c87676c62dbc55f90a0836dbb8786a7d55b", // идентификатор заказа на стороне GDS если присутсвует 
    "booking_number": "CBKZVT", //локатор GDS
    "airline_booking_number": ["FDFFRZ"], //локатор авиакомпании, используется для регистрации на рейс
    "timelimit": "24.07.2024 15:58:00", // время автоануляции. Данные указаны в тайм-зоне UTC 0
    "expire": 1522,  // секунд до автоануляции
    "created": "24.07.2024 15:32:34", // дата создания заказа. Данные указаны в тайм-зоне UTC 0
    "status": { // статус заказа
      "sign": "Booked",  // если не удалось забронировать Cancelled (Отменен)
      "title": "Забронировано" 
    },
    "flights": {
        "rec_id": "API2EASYOWE2110000090DYUIST20240722_RU-TUA.TK.0.320.F10872500S10752411.OENCUDM0MTI0MzM=..-17.TK.255.DYU.202407220310.IST.202407220630.333.QY2PXOW.320.0.TUA.0.1P30K.1P8K..1.1..0",
        "total_price": 11029, // стоимость билета, включает в себя fare + taxes + fee
        "fare": 10520, // тариф
        "taxes": 507, // сумма такс
        "fee": 2, // сбор 
        "currency": "RUB", // валюта
        "provider": "TUA", // наименование поставщика услуги
        "supplier": { // валидирующий перевозчик 
            "code": "TK",
            "title": "Turkish Airlines"
        },
        "ticketing_time_limit": 1707549258, // отведенное время для выписки билета, дата и вермя в unix-формате 
        "has_branded_tariffs": true, // флаг доступности семейства тарифов.
        "duration": 320, // общая продолжительность перелета всех роутов в минутах
        "routes_count": 1, // число роутов в перелете
        "routes": [
            {
                "index": 0, // направление, тк рейс с 1 маршрутом - то направление тут всегда будет 0. если рейс туда и обратно то будут сегменты со значением 0 туда и 1 обратно и более
                "duration": 320, // продолжительность перелета сегментов в минутах
                "segments": [
                    {
                        "index": 0, // порядковый индекс сегмента
                        "arrival": {
                            "date": "22.07.2024", // дата прилета
                            "time": "06:30", // время прилета
                            "datetime": "22.07.2024 06:30:00",
                            "ts": 1721619000,
                            // дата и вермя прилета в unix-формате
                            "terminal": "A", // терминал прилета
                            "airport": { // данные об аэропорте прилета
                                "title": "Аэропорт Стамбула", // название аэропорта
                                "code": "IST" // IATA код аэропорта
                            },
                            "city": { // данные о городе прилета
                                "code": "IST", // IATA код города
                                "title": "Стамбул" // название города
                            },
                            "country": { // данные о стране прилета
                                "code": "TR", // IATA код страны
                                "title": "Турция" //название страны
                            }
                        },
                        "departure": { // данные о вылете (значения полей аналогичны данным о прилете) 
                            "date": "22.07.2024",
                            "time": "03:10",
                            "datetime": "22.07.2024 03:10:00",
                            "ts": 1721607000,
                            "terminal": "",
                            "airport": {
                                "title": "Душанбе",
                                "code": "DYU"
                            },
                            "city": {
                                "code": "DYU",
                                "title": "Душанбе"
                            },
                            "country": {
                                "code": "TJ",
                                "title": "Таджикистан"
                            }
                        },
                        "is_baggage": true, // признак наличия багажа
                        "baggage": { // данные о багаже
                            "piece": 2, // количество мест
                            "weight": 30 // вес
                        },
                        "comment": "", // комментарий если есть, уточняющий в текстовой форме особенности провоза багажа.
                        "cbaggage": { // данные о ручной клади
                            "piece": 1, // количество мест
                            "weight": 7, // вес
                            "dimensions": { // допустимые размеры
                                "width": 40,
                                "length": 55,
                                "height": 23
                            },
                            "weight_unit": "KG" // единица измерения 
                        },
                        "free_seats": 9, // количество доступных мест
                        "flight_number": "255", // номер рейса (carrier_number)
                        "fare_code": "QY2PXOW", // название тарифа
                        "duration": 320, // продолжительность перелета
                        "carrier": { // данные об оперирующем перевозчике (operation_supplier)
                            "code": "TK",
                            "title": "Turkish Airlines"
                        },
                        "aircraft": { // данные о самолете
                            "code": "333",
                            "title": "Airbus A330-300"
                        },
                        "service_class": { // данные о классе
                            "name": "economy", // класс обслуживания(first business economy)
                            "code": "M" // сервис (первая буква тарифа)
                        },
                        "tech_stops": [ // данные о технических остановках
                            {
                                "duration": 360 // продолжительность технической остановки в минутах,
                                "arrival": "22.01.2022 13:10:00", // дата и время прилета
                                "departure": "22.01.2022 15:40:00", // дата и время вылета
                                "airport": {
                                    "code": "MXP",
                                    "title": "Малпенза"
                                },
                                "city": {
                                    "code": "MIL",
                                    "title": "Милан"
                                },
                                "country": {
                                    "code": "IT",
                                    "title": "Италия"
                                }
                            }
                        ],
                        "provider": "TUA", // наименование поставщика услуги
                        "supplier": { // валидирующий перевозчик 
                            "code": "TK",
                            "title": "Turkish Airlines"
                        },
                        "type": "regular", // тип перелета. Могут быть регулярные рейсы "regular", чартерные "charter" и рейсы лоукост-перевозчиков "lowcost".
                        "is_charter": false, // чартерный ли это рейс
                        "is_refund": true, // возможен ли возврат
                        "is_change": true // возможен ли обмен 
                    }
                ]
            }
        ]
    },
    "passengers": [
        {
            "index": 0,
            "name": "DALER",
            "surname": "PULATOV",
            "middle_name": "",
            "citizenship": "TJ",
            "gender": "M",
            "type": "adt",
            "email": "[email protected]",
            "phone": "+992917039843",
            "date_of_birth": "22-02-1994",
            "document": {
                "type": "NP",
                "number": "2014454343",
                "expire": "2044-05-28"
            },
            "amounts": {
                "total_price": 11226,
                "fare": 1587.3,
                "taxes": 0,
                "fees": 0,
                "currency": "RUB"
            }
        }
    ],
    "fare_rules": [
        {
            "fare_code": "QY2PXOW",
            "penalties": "RU.RULE APPLICATION\nKC BASIC FARE BRAND\n APPLICATION\n CLASS OF SERVICE\n THE"
        }
    ]
}

Реализация CancelBook

Запрос инициирующий отмену бронирования Отменять можно только заказы в статусе Забронирован.

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

GET /booking-cancel

{
  "session_id": "628d7ca583af2935e00096d881d4f70d",
  "booking_number": "125354686465",
  "language": "ru",
  "config": {
    "connector": "batik",
    "config": {
      "connection_value": {
        "url": "https:batik.cc.xly.com",
        "login": "test",
        "password": "password"
      },
      "configuration_value": {}
    }
  }
}
Пример ответа
{
    "success": true,
    "code": 0,
    "message": "",
    "session_id": "628d7ca583af2935e00096d881d4f70d",
    "billing_number": "125354686465",
    "booking_status": "Cancelled"
}

Если есть ошибка при обработке поле code должно содержать код ошибки и message текст ошибки и booking_status должен быть равен CancelError

Реализация Pay

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

POST /pay

Оплата бронирования

{
  "session_id": "628d7ca583af2935e00096d881d4f70d",
  "total_price" : 11226,
  "currency": "RUB",
  "configs": {
    "connector": "batik",
    "config": {
      "connection_value": {
        "url": "https:batik.cc.xly.com",
        "login": "test",
        "password": "password"
      },
      "configuration_value": {}
    }
  }
}
Пример ответа
{
    "success": true,
    "code": 0,
    "message": "",
    "session_id": "628d7ca583af2935e00096d881d4f70d",
    "billing_number": "125354686465",
    "booking_status": "Paid" // статус заказа после успешной оплаты может принимает значение Paid или PayFail если оплата не пуспешна
}

Реализация Ticket

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

POST /ticket

{
  "session_id": "628d7ca583af2935e00096d881d4f70d",
  "billing_number": "125354686465",
  "language": "ru",
  "configs": {
    "connector": "batik",
    "config": {
      "connection_value": {
        "url": "https:batik.cc.xly.com",
        "login": "test",
        "password": "password"
      },
      "configuration_value": {}
    }
  }
}
Пример ответа
{
    "success": true,
    "code": 0,
    "message": "",
    "session_id": "628d7ca583af2935e00096d881d4f70d",
    "order_id": "5e380c87676c62dbc55f90a0836dbb8786a7d55b", // Номер заказа GDS если присутсвует
    "billing_number": 125354686465,
    "created": "28.05.2024 17:02:06",
    "status": {
        "sign": "Ticketed",
        "title": "Закрыт"
    },
    "total_price": 11029, // стоимость билета, включает в себя fare + tax + fee
    "fare": 10520, // тариф
    "fee": 2, // сбор 
    "tax": 507, // сумма такс
    "taxes": [
        {
            "code": "RI", // вид таксы
            "amount": 507 //сумма таксы
        }
    ],
    "currency": "RUB",
    "tickets": [
        {
            "booking_number": "CBKZVT", //локатор GDS
            "airline_booking_number": [
                "FDFFRZ"
            ], //локатор авиакомпании, используется для регистрации на рейс
            "currency": "RUB", // код валюты заказа по классификации ISO 4217  https://www.iso.org/ru/iso-4217-currency-codes.html
            "receipt_text": "", //настраиваемый в личном кабинете текст в Маршрутной квитанции
            "booking_provider": "TUA", // название провайдера
            "carrier": {
                "code": "TK", //IATA код оперирующего перевозчика
                "title": "Turkish Arilines" //название оперирующего перевозчика
            },
            "duration": 300, // продолжительность полета в минутах,
            "passengers": [
                {
                    "name": "DALER",
                    "surname": "PULATOV",
                    "middle_name": "",
                    "citizenship": "TJ",
                    "gender": "M",
                    "type": "adt",
                    "email": "[email protected]",
                    "phone": "+992917039843",
                    "date_of_birth": "22-02-1994",
                    "document": {
                        "type": "NP",
                        "number": "2014454343",
                        "expire": "2044-05-28"
                    },
                    "amounts": {
                        "total_price": 11029, // стоимость билета, включает в себя fare + tax + fee
                        "fare": 10520, // тариф
                        "fee": 2, // сбор 
                        "tax": 507, // сумма такс
                        "taxes": [
                            {
                                "code": "RI", // вид таксы
                                "amount": 507 //сумма таксы
                            }
                        ],
                        "currency": "RUB"
                    },
                    "ticketData": {
                        "number": "5552327744382", // номер билета 
                        "refunded": false
                    },
                    "accompanying_adults": []
                }
            ]
        }
    ],
    "flight": {
        "rec_id": "API2EASYOWE2110000090DYUIST20240722_RU-TUA.TK.0.320.F10872500S10752411.OENCUDM0MTI0MzM=..-17.TK.255.DYU.202407220310.IST.202407220630.333.QY2PXOW.320.0.TUA.0.1P30K.1P8K..1.1..0",
        "total_price": 11029, // стоимость билета, включает в себя fare + taxes + fee
        "fare": 10520, // тариф
        "tax": 507, // общая сумма такс
        "fee": 2, // сбор 
        "taxes": [ // список такс по видам
            {
                "code": "RI", // вид таксы
                "amount": 507 //сумма таксы
            }
        ],
        "currency": "RUB", // валюта
        "provider": "TUA", // наименование поставщика услуги
        "supplier": { // валидирующий перевозчик 
            "code": "TK",
            "title": "Turkish Airlines"
        },
        "ticketing_time_limit": 0,
        "has_branded_tariffs": true, // флаг доступности семейства тарифов.
        "duration": 320, // общая продолжительность перелета всех роутов в минутах
        "routes_count": 1, // число роутов в перелете
        "routes": [
            {
                "index": 0, // направление, тк рейс с 1 маршрутом - то направление тут всегда будет 0. если рейс туда и обратно то будут сегменты со значением 0 туда и 1 обратно и более
                "duration": 320, // продолжительность перелета сегментов в минутах
                "segments": [
                    {
                        "index": 0, // порядковый индекс сегмента
                        "arrival": {
                            "date": "22.07.2024", // дата прилета
                            "time": "06:30", // время прилета
                            "datetime": "22.07.2024 06:30:00",
                            "ts": 1721619000,
                            // дата и вермя прилета в unix-формате
                            "terminal": "A", // терминал прилета
                            "airport": { // данные об аэропорте прилета
                                "title": "Аэропорт Стамбула", // название аэропорта
                                "code": "IST" // IATA код аэропорта
                            },
                            "city": { // данные о городе прилета
                                "code": "IST", // IATA код города
                                "title": "Стамбул" // название города
                            },
                            "country": { // данные о стране прилета
                                "code": "TR", // IATA код страны
                                "title": "Турция" //название страны
                            }
                        },
                        "departure": { // данные о вылете (значения полей аналогичны данным о прилете) 
                            "date": "22.07.2024",
                            "time": "03:10",
                            "datetime": "22.07.2024 03:10:00",
                            "ts": 1721607000,
                            "terminal": "",
                            "airport": {
                                "title": "Душанбе",
                                "code": "DYU"
                            },
                            "city": {
                                "code": "DYU",
                                "title": "Душанбе"
                            },
                            "country": {
                                "code": "TJ",
                                "title": "Таджикистан"
                            }
                        },
                        "is_baggage": true, // признак наличия багажа
                        "baggage": { // данные о багаже
                            "piece": 2, // количество мест
                            "weight": 30 // вес
                        },
                        "comment": "", // комментарий если есть, уточняющий в текстовой форме особенности провоза багажа.
                        "cbaggage": { // данные о ручной клади
                            "piece": 1, // количество мест
                            "weight": 7, // вес
                            "dimensions": { // допустимые размеры
                                "width": 40,
                                "length": 55,
                                "height": 23
                            },
                            "weight_unit": "KG" // единица измерения 
                        },
                        "free_seats": 9, // количество доступных мест
                        "flight_number": "255", // номер рейса (carrier_number)
                        "fare_code": "QY2PXOW", // название тарифа
                        "duration": 320, // продолжительность перелета
                        "carrier": { // данные об оперирующем перевозчике (operation_supplier)
                            "code": "TK",
                            "title": "Turkish Airlines"
                        },
                        "aircraft": { // данные о самолете
                            "code": "333",
                            "title": "Airbus A330-300"
                        },
                        "service_class": { // данные о классе
                            "name": "economy", // класс обслуживания(first business economy)
                            "code": "M" // сервис (первая буква тарифа)
                        },
                        "tech_stops": [ // данные о технических остановках
                            {
                                "duration": 360 // продолжительность технической остановки в минутах,
                                "arrival": "22.01.2022 13:10:00", // дата и время прилета
                                "departure": "22.01.2022 15:40:00", // дата и время вылета
                                "airport": {
                                    "code": "MXP",
                                    "title": "Малпенза"
                                },
                                "city": {
                                    "code": "MIL",
                                    "title": "Милан"
                                },
                                "country": {
                                    "code": "IT",
                                    "title": "Италия"
                                }
                            }
                        ],
                        "provider": "TUA", // наименование поставщика услуги
                        "supplier": { // валидирующий перевозчик 
                            "code": "TK",
                            "title": "Turkish Airlines"
                        },
                        "type": "regular", // тип перелета. Могут быть регулярные рейсы "regular", чартерные "charter" и рейсы лоукост-перевозчиков "lowcost".
                        "is_charter": false, // чартерный ли это рейс
                        "is_refund": true, // возможен ли возврат
                        "is_change": true // возможен ли обмен 
                    }
                ]
            }
        ]
    }
}

Реализация CheckPrice

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

POST /check-price

{
  "session_id": "628d7ca583af2935e00096d881d4f70d",
  "billing_number": "125355187996",
  "total_price" : 11226,
  "currency": "RUB"
}
Пример ответа
{
    "success": true,
    "code": 0,
    "message": "",
    "session_id": "628d7ca583af2935e00096d881d4f70d",
    "billing_number": "125355187996",
    "new_price": 11000,
    "is_price_changed": true
}

flysoft's People

Contributors

zeecher avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.