Api v5

Api v5
Основные положения

Для реализации синхронизации расписания Вам нужно предоставить адрес, на который будет отправляться post-запросы. Список параметров различен для разных заданий и будет подробно описан ниже. В ответ ожидается ответ в формате json (структура также будет описана ниже).

Есть 3 основных параметра, которые передаются всегда. Это

  1. task - задание для выполнения, одно из перечесленных (showDays, showDay, showHour, bookingHour, cancelHour, requestHour).
  2. room - идентификатор квеста на сайте questroom.com.ua. Это последний сегмент в адресе квеста на портале. Например, https://questroom.com.ua/en/296/chumnoy-doktor-odessa. Здесь идентификатор chumnoy-doktor-odessa.
  3. - signature - подпись, позволяющая проверить истинность запрос.

Для проверки подлинности запросов следует проверять подпись (параметр signature)

Алгоритм формирования подписи на PHP представлен ниже:

                                
$signature = base64_encode($token . sha1(base64_encode($jsonData), true) . $token);
                                
                            

Здесь:

  1. - $jsonData - параметры запроса, который вы получили как POST-параметры за исключением signature. Данные нужно преобрадовать в формат JSON. Обратите внимание, что значения должны быть в текстовом формате.
    Пример - {"task":"showHour","room":"room-i","date":"2023-03-06","time":"11:00","time_close":"0"}
  2. - $token - ключ, предоставляемый администатором questroom.com.ua

Перед описанием заданий, доступых в этой версии апи, предоставляю формат и список ошибочных ответов. Вы можете расширить этот список при реализации апи.

  1. {"error":1, "error_code":100, "error_message":"Not detect base params"}
  2. {"error":1, "error_code":101, "error_message":"Bed token"}
  3. {"error":1, "error_code":102, "error_message":"Bed task"}
  4. {"error":1, "error_code":103, "error_message":"Not all parameters"}
  5. {"error":1, "error_code":104, "error_message":"Bed name room"}
  6. {"error":1, "error_code":105, "error_message":"Not valid email"}
  7. {"error":1, "error_code":106, "error_message":"Not valid phone"}
  8. {"error":1, "error_code":107, "error_message":"Slot is not free"}
  9. {"error":1, "error_code":108, "error_message":"Bed request booking"}
  10. {"error":1, "error_code":109, "error_message":"Slot is not defined"}
  11. {"error":1, "error_code":110, "error_message":"Empty shedule"}

Ниже предоставлены возможные задания и удачные ответы на них.

showDays

Задание для получения расписания за 10 или указанное количество дней.

Параметры:

  1. task - showDays.
  2. room - идентификатор квеста на сайте questroom.com.ua.
  3. days_view - количество дней, необязательный параметр, по умолчанию запрос на 10 дней.
  4. time_close - количество минут до закрытия брони, необязательный параметр, по умолчанию 60 мин.

Пример удачного ответа:

                                
    {
        "2018-12-25":
        {
            "09:00":
            {
                "price":499,
                "free":false,
                "closeNumb":2,
                "allNumb":5,
                "pricePl":250,
            },
            "10:30":
            {
                "price":499,
                "free":false
            },
            "12:00":
            {
                "price":499,
                "free":false
            },
            "14:00":
            {
                "price":499,
                "free":false
            },
            "15:30":
            {
                "price":499,
                "free":false
            },

            "20:00":
            {
                "price":499,
                "free":true
            }
        },
                                    ...
        "2018-12-05":
        {
            "09:00":
            {
                "price":499,
                "free":true
            },
            "10:30":
            {
                "price":499,
                "free":true
            },
            "12:00":
            {
                "price":499,
                "free":true
            },
            "14:00":
            {
                "price":499,
                "free":true
            },
            "15:30":
            {
                "price":499,
                "free":false
            },

            "20:00":
            {
                "price":499,
                "free":true
            }


        }
                                    
                            

Обращаю внимание на данные о слоте. Обязательные поля - price, free. Что касается полей closeNumb (количество занятых мест), allNumb (максимальное количество мест) - эти поля необязательны. Укажите их, если Вы используете бронирование по местам и хотите отобразить загруженность слота. Поле pricePl (цена за дополнительного игрока на этом таймслоте) также необязательно. Укажите его если хотите использовать цену за дополнительно игрока, отличную от цены, указанной в настройках квеста.

showDay

Задание для получения расписания за указанный день.

Параметры:

  1. task - showDay.
  2. room - идентификатор квеста на сайте questroom.com.ua.
  3. date - Дата в формате Y-m-d (например, 2018-12-28).
  4. time_close - количество минут до закрытия брони, необязательный параметр, по умолчанию 60 мин.

Пример удачного ответа:

                                
    {
        "2018-12-25":
        {
            "09:00":
            {
                "price":499,
                "free":false,
                "closeNumb":2,
                "allNumb":5,
                "pricePl":250,
            },
            "10:30":
            {
                "price":499,
                "free":false
            },
            "12:00":
            {
                "price":499,
                "free":false
            },
            "14:00":
            {
                "price":499,
                "free":false
            },
            "15:30":
            {
                "price":499,
                "free":false
            },

            "20:00":
            {
                "price":499,
                "free":true
            }
        }
    }
                                
                            

Обращаю внимание на данные о слоте. Обязательные поля - price, free. Что касается полей closeNumb (количество занятых мест), allNumb (максимальное количество мест) - эти поля необязательны. Укажите их, если Вы используете бронирование по местам и хотите отобразить загруженность слота. Поле pricePl (цена за дополнительного игрока на этом таймслоте) также необязательно. Укажите его если хотите использовать цену за дополнительно игрока, отличную от цены, указанной в настройках квеста.

showHour

Задание для проверки таймслота.

Параметры:

  1. task - showHour.
  2. room - идентификатор квеста на сайте questroom.com.ua.
  3. date - Дата в формате Y-m-d (например, 2018-12-28).
  4. time - Дата в формате H:i (например, 08:00).
  5. time_close - количество минут до закрытия брони, необязательный параметр, по умолчанию 60 мин.

Пример удачного ответа:

                                
    {
        "2018-12-25":
        {
            "17:00":
            {
                "price":499,
                "free":true,
                "closeNumb":3,
                "allNumb":5,
                "pricePl":250,
            }
        }
    }
                                

Обращаю внимание на данные о слоте. Обязательные поля - price, free. Что касается полей closeNumb (количество занятых мест), allNumb (максимальное количество мест) - эти поля необязательны. Укажите их, если Вы используете бронирование по местам и хотите отобразить загруженность слота. Поле pricePl (цена за дополнительного игрока на этом таймслоте) также необязательно. Укажите его если хотите использовать цену за дополнительно игрока, отличную от цены, указанной в настройках квеста.

bookingHour

Бронирование таймслота.

Параметры:

  1. task - bookingHour.
  2. room - идентификатор квеста на сайте questroom.com.ua.
  3. date - Дата в формате Y-m-d (например, 2018-12-28).
  4. time - Дата в формате H:i (например, 08:00).
  5. name - Имя клиента.
  6. email - Почта клиента.
  7. phone - Телефон клиента (только цифры, например, 380932555657).
  8. count - количество игроков, необязательный параметр.
  9. price - цена игры, необязательный параметр.
  10. sale - скидка, необязательный параметр.
  11. message - дополнительная информация, необязательный параметр.

Пример удачного ответа:

{"success":true}

cancelHour

Отмена бронирования таймслота.

Параметры:

  1. task - cancelHour.
  2. room - идентификатор квеста на сайте questroom.com.ua.
  3. date - Дата в формате Y-m-d (например, 2018-12-28).
  4. time - Дата в формате H:i (например, 08:00).
  5. name - Имя клиента.
  6. email - Почта клиента.
  7. phone - Телефон клиента (только цифры, например, 380932555657).

Пример удачного ответа:

{"success":true}

requestHour

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

Параметры:

  1. task - requestHour.
  2. room - идентификатор квеста на сайте questroom.com.ua.
  3. date - Дата в формате Y-m-d (например, 2018-12-28).
  4. time - Дата в формате H:i (например, 08:00).
  5. name - Имя клиента.
  6. email - Почта клиента.
  7. phone - Телефон клиента (только цифры, например, 380932555657).

Пример удачного ответа:

{"success":true}

Если у Вас остались вопросы или Вы нашли неточности в описании, напишите, пожалуйста, на почту api@questroom.com.ua.


Source