Главная страница / Бронирование

Бронирование

Конечная точка:

POST /api/v1/offers/{id}/booking

Параметры строки запроса:

  1. idstring, обязательный. Идентификатор оффера, полученный при поиске.

Параметры тела запроса:

  1. payer_namestring, обязательный. ФИО плательщика.
  2. payer_emailstring, обязательный. Email плательщика.
  3. payer_telstring, обязательный. Номер телефона плательщика, в международном формате +XXXXXXXXXXXX
  4. passengers[*]first_namestring, обязательный. Имя пассажира.
  5. passengers[*]last_namestring, обязательный. Фамилия пассажира.
  6. passengers[*]middle_namestring, опциональный. Отчество пассажира. Если пассажир не указал отчество, поле нужно исключить из запроса.
  7. passengers[*]agestring, обязательный. Возрастная группа пассажира. Допустимые значения указаны в справочнике.
  8. passengers[*]birthdatestring, обязательный. Дата рождения пассажира, в формате YYYY-MM-DD.
  9. passengers[*]genderstring, обязательный. Пол пассажира. Допустимые значения указаны в справочнике.
  10. passengers[*]citizenshipstring, обязательный. Гражданство пассажира, код страны по стандарту ISO 3166-1 alpha-2.
  11. passengers[*]telstring, обязательный. Номера телефона пассажира, в международном формате.
  12. passengers[*]doc_typestring, обязательный. Документ для оформления бронирования. Допустимые значения указаны в справочнике.
  13. passengers[*]doc_numberstring, обязательный. Номер документа для оформления бронирования.
  14. passengers[*]doc_expirestring, обязательный. Срок действия документа для оформления бронирования, в формате YYYY-MM-DD.

Важно!

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

/api/v1/offers/AExtfokS0hOv3wFdbiSuACSenrXNeWy1/booking

{
    "payer_name":"Viktor Petrov",
    "payer_email":"developer@bookhara.com",
    "payer_tel":"+380652147502",
    "passengers":[
        {
            "first_name":"Alla",
            "last_name":"Petrova",
            "middle_name":" ",
            "age":"adt",
            "birthdate":"1983-01-06",
            "gender":"F",
            "citizenship":"UZ",
            "tel":"+980652147502",
            "doc_type":"A",
            "doc_number":"AS76123646",
            "doc_expire":"2023-05-14"
        },
        ...
    ]
}

Пример ответа:

{
    "request_id":"gLLEfxGC3Rd8M3xeALmlF8LIOIau92ylzLPh2hvM",
    "created_at":"2021-04-12 15:15",
    "message":"The request was completed successfully.",
    "data":{
        "id":"A5kucCKZjhN9iZyKE117307Cqqz2jOEw", // Идентификатор бронирования. Используется при запросе информации по бронированию, запросе правил тарифа, оплате.
        "type": "AV", // Тип оффера.
        "status":"booked", // Статус бронирования.
        "created":"2021-04-12 15:15:41", // Дата и время создания, UTC.
        "expire":"2021-04-15 15:05:00", // Дата и время автоотмены, UTC.
        "refund_availability": true, // Флаг наличия возврата.
        "is_charter": false, // Является ли оффер чартерным перелетом.
        "flight_type": "regular", // Тип оффера. Возможные варианты указаны в справочнике.
        "price":{
            "has_changed":false, // Будет true, если стоимость бронирования изменилась.
            "prev_amount":null, // Стоимость до последнего изменения.
            "amount":3248609, // Общая стоимость бронирования.
            "currency":"UZS" // Валюта, в которой указана общая стоимость, а также стоимость для каждого пассажира в блоке passengers.
        },
        "payer":{
            "name":"Viktor Petrov", // Имя плательщика.
            "email":"developer@bookhara.com", // Email плательщика.
            "tel":"+380652147502" // Номера телефона плательщика.
        },
        "passengers":[ // Данные пассажиров.
            {
                "key":"48304083", // Идентификатор пассажира.
                "first_name":"Alla", // Имя пассажира.
                "last_name":"Petrova", // Фамилия пассажира.
                "middle_name":null, // Отчество пассажира.
                "email":"developer@bookhara.com", // Email пассажира.
                "tel":"+998565004522", // Номера телефона пассажира.
                "gender":"F", // Пол пассажира.
                "birthdate":"1983-01-06", // Дата рождения пассажира, в формате YYYY-MM-DD.
                "citizenship":"UZ", // Гражданство пассажира.
                "age":"adt", // Возрастная группа пассажира.
                "document":{ // Данные документа для оформления бронирования
                    "type":"A", // Тип документа.
                    "number":"AS76123646", // Номер документа.
                    "expire":"2026-05-14" // Срок действия документа, в формате YYYY-MM-DD.
                },
                "price":3248609,
                "extended_price":{
                    "has_changed":false, // Будет true, если стоимость бронирования изменилась.
                    "prev_amount":null, // Стоимость до последнего изменения.
                    "amount":3248609, // Стоимость для пассажира.
                },
                "tickets":[ // Билеты пассажира.
                    {
                        "pnr":"0MSBMG", // PNR.
                        "airline_locators":[ // Локатор авиакомпании, используется для регистрации на рейс.
                            "TK\/UNESYV"
                        ],
                        "ticket_number":null, // Номер билета. Будет назначен после оплаты.
                        "carrier":{
                            "code":"HY",
                            "title":"Uzbekistan Airways"
                        },
                        "provider":"TUA"
                    },
                    ...
                ]
            },
            ...
        ],
        "directions":[ // Направления перелетов.
            {
                "departure":{
                    "datetime":"2021-09-03 08:50:00", // Дата и время вылета. Время местное.
                    "airport":{
                        "code":"TAS", // IATA код аэропорта.
                        "title":"Ислам Каримов", // Название аэропорта.
                        "title_intl":{
                            "uz":null,
                            "en":"Islom Karimov",
                            "ru":"Ислам Каримов"
                        },
                        "city":"Ташкент", // Город.
                        "city_intl":{
                            "uz":"Toshkent",
                            "en":"Tashkent",
                             "ru":"Ташкент"
                        },
                        "country":{ // Страна.
                            "code":"UZ",
                            "title":"Узбекистан",
                            "title_intl":{
                                "uz":null,
                                "en":"Uzbekistan",
                                "ru":"Узбекистан"
                            }
                        }
                    }
                },
                "arrival":{
                    "datetime":"2021-09-03 12:05:00",
                    "airport":{
                        "code":"IST",
                        "title":"Новый",
                        "title_intl":{
                            "uz":null,
                            "en":"Istanbul",
                            "ru":"Новый"
                        },
                        "city":"Стамбул",
                        "city_intl":{
                            "uz":"Istanbul",
                            "en":"Istanbul",
                            "ru":"Стамбул"
                        },
                        "country":{
                            "code":"TR",
                            "title":"Турция",
                            "title_intl":{
                                "uz":null,
                                "en":"Turkey",
                                "ru":"Турция"
                            }
                        }
                    }
                },
                "travel_time":315, // Время в пути, в минутах.
                "transfer_time":null, // Время ожидания пересадки, в минутах.
                "route_duration":315,
                "segments":[ // Информация о рейсах оффера.
                    {
                        "departure":{
                            "datetime":"2021-09-03 08:50:00", // Дата и время вылета. Время местное.
                            "airport":{
                                "code":"TAS", // IATA код аэропорта.
                                "title":"Ислам Каримов", // Название аэропорта.
                                "title_intl":{
                                    "uz":null,
                                    "en":"Islom Karimov",
                                    "ru":"Ислам Каримов"
                                },
                                "terminal":"2", // Название или код терминала.
                                "city":"Ташкент", // Город.
                                "city_intl":{
                                    "uz":"Toshkent",
                                    "en":"Tashkent",
                                    "ru":"Ташкент"
                                },
                                "country":{ // Страна.
                                    "code":"UZ",
                                    "title":"Узбекистан",
                                    "title_intl":{
                                        "uz":null,
                                        "en":"Uzbekistan",
                                        "ru":"Узбекистан"
                                    }
                                }
                            }
                        },
                        "arrival":{
                            "datetime":"2021-09-03 12:05:00", // Дата и время прибытия. Время местное.
                            "airport":{
                                "code":"IST",
                                "title":"Новый",
                                "title_intl":{
                                    "uz":null,
                                    "en":"Istanbul",
                                    "ru":"Новый"
                                },
                                "terminal":null,
                                "city":"Стамбул",
                                "city_intl":{
                                    "uz":"Istanbul",
                                    "en":"Istanbul",
                                    "ru":"Стамбул"
                                },
                                "country":{
                                    "code":"TR",
                                    "title":"Турция",
                                    "title_intl":{
                                        "uz":null,
                                        "en":"Turkey",
                                        "ru":"Турция"
                                    }
                                }
                            }
                        },
                        "airline":{
                            "code":"TK", // IATA код авиакомпании-перевозчика.
                            "title":"Turkish Airlines" // Название авиакомпании-перевозчика.
                        },
                        "service_class":"E", // Класс обслуживания.
                        "flight_number":"369", // Номер рейса.
                        "travel_time":315, // Время в пути, в минутах.
                        "transfer_time":null, // Время ожидания пересадки, в минутах.
                        "aircraft":"Airbus A320-100/200", // Название самолёта, выполняющего рейс.
                        "refund":true, // Возможность возврата.
                        "change":true, // Возможность обмена.
                        "handbags":{ // Информация о ручной клади.
                            "piece":1, // Количество мест.
                            "weight":8 // Максимальный вес.
                        },
                        "baggage":{ // Информация по багажу.
                            "piece":1,
                            "weight":35
                        },
                        "comment":"",
                        "technical_stops":[ // Технические остановки.
                            {
                                "airport":{
                                    "code":"SFO",
                                    "title":"San Francisco",
                                    "city":"Сан-Франциско",
                                    "country":"Соединенные Штаты"
                                },
                                "arrival_datetime":"2021-08-07 09:20:00",
                                "departure_datetime":"2021-08-07 09:50:00",
                                "duration":30 // Длительность остановки, в минутах.
                            }
                        ],
                        "information_for_clients":[ // Информация для клиентов.
                            {
                                "uz":"Diqqat, loukoster!\nChipta toʼloʼvdan soʼng 4 soat ichida yoziladi.\nChipta umuman yozilmasligi ...",
                                "en":"Attention, low-cost airline!\nThe ticket will be issued within 4 hours after payment.\nThere is a risk ...",
                                "ru":"Внимание, лоукостер!\nБилет будет выписан в течение 4-х часов после оплаты.\nЕсть риск ..."
                            }
                        ]
                    },
                    ...
                ]
            },
            ...
        ],
        "information_for_clients":[ // Информация для клиентов.
            {
                "uz":"Diqqat, loukoster!\nChipta toʼloʼvdan soʼng 4 soat ichida yoziladi.\nChipta umuman yozilmasligi ...",
                "en":"Attention, low-cost airline!\nThe ticket will be issued within 4 hours after payment.\nThere is a risk ...",
                "ru":"Внимание, лоукостер!\nБилет будет выписан в течение 4-х часов после оплаты.\nЕсть риск ..."
            }
        ]
    }
}

Если в ответе приходит ошибка с error_code 100500, 1030, 1031, это означает, что стоимость оффера изменилась, и надо сделать повторный запрос к /api/v1/offers/{id} чтобы получить актуальную стоимость.

Дублирование бронирований запрещено

Авиакомпании запрещают дублирование бронирований. Для того, чтобы избежать штрафов и автоматических аннулирований всех заказов пассажира, в системе производится проверка на уникальность запрашиваемого бронирования. В случае, если проверка выявит дубль, вернется ошибка с id бронирования, дублем которого является текущий запрос.

{
    "request_id":"ErTiap8gh0Ss7cztQHGXKPfnybH25qvkyoEDr6n9",
    "created_at":"2023-05-19 09:56",
    "error_code":5231, // 5231 — код неоплаченного бронирования, 5232 — код оплаченного или выписанного заказа
    "message":"Duplicate booking",
    "data":{
        "existing_booking_id":"75e8c1ca-aa5a-45c5-bfe4-1d3923605ff1" // id бронирования, дублем которого является текущий запрос
    }
}

Внимание!