Api v5
Для реализации синхронизации расписания Вам нужно предоставить адрес, на который будет отправляться post-запросы. Список параметров различен для разных заданий и будет подробно описан ниже. В ответ ожидается ответ в формате json (структура также будет описана ниже).
Есть 3 основных параметра, которые передаются всегда. Это
- — task - задание для выполнения, одно из перечесленных (showDays, showDay, showHour, bookingHour, cancelHour, requestHour).
- — room - идентификатор квеста на сайте questroom.com.ua. Это последний сегмент в адресе квеста на портале. Например, https://questroom.com.ua/ua/296/chumnoy-doktor-odessa. Здесь идентификатор chumnoy-doktor-odessa.
- - signature - подпись, позволяющая проверить истинность запрос.
Для проверки подлинности запросов следует проверять подпись (параметр signature)
Алгоритм формирования подписи на PHP представлен ниже:
$signature = base64_encode($token . sha1(base64_encode($jsonData), true) . $token);
Здесь:
- - $jsonData - параметры запроса, который вы получили как POST-параметры за исключением signature. Данные нужно преобрадовать в формат JSON. Обратите внимание, что значения должны быть в текстовом формате.
Пример - {"task":"showHour","room":"room-i","date":"2023-03-06","time":"11:00","time_close":"0"} - - $token - ключ, предоставляемый администатором questroom.com.ua
Перед описанием заданий, доступых в этой версии апи, предоставляю формат и список ошибочных ответов. Вы можете расширить этот список при реализации апи.
- {"error":1, "error_code":100, "error_message":"Not detect base params"}
- {"error":1, "error_code":101, "error_message":"Bed token"}
- {"error":1, "error_code":102, "error_message":"Bed task"}
- {"error":1, "error_code":103, "error_message":"Not all parameters"}
- {"error":1, "error_code":104, "error_message":"Bed name room"}
- {"error":1, "error_code":105, "error_message":"Not valid email"}
- {"error":1, "error_code":106, "error_message":"Not valid phone"}
- {"error":1, "error_code":107, "error_message":"Slot is not free"}
- {"error":1, "error_code":108, "error_message":"Bed request booking"}
- {"error":1, "error_code":109, "error_message":"Slot is not defined"}
- {"error":1, "error_code":110, "error_message":"Empty shedule"}
Ниже предоставлены возможные задания и удачные ответы на них.
Задание для получения расписания за 10 или указанное количество дней.
Параметры:
- — task - showDays.
- — room - идентификатор квеста на сайте questroom.com.ua.
- — days_view - количество дней, необязательный параметр, по умолчанию запрос на 10 дней.
- — 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 (цена за дополнительного игрока на этом таймслоте) также необязательно. Укажите его если хотите использовать цену за дополнительно игрока, отличную от цены, указанной в настройках квеста.
Задание для получения расписания за указанный день.
Параметры:
- — task - showDay.
- — room - идентификатор квеста на сайте questroom.com.ua.
- — date - Дата в формате Y-m-d (например, 2018-12-28).
- — 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 (цена за дополнительного игрока на этом таймслоте) также необязательно. Укажите его если хотите использовать цену за дополнительно игрока, отличную от цены, указанной в настройках квеста.
Задание для проверки таймслота.
Параметры:
- — task - showHour.
- — room - идентификатор квеста на сайте questroom.com.ua.
- — date - Дата в формате Y-m-d (например, 2018-12-28).
- — time - Дата в формате H:i (например, 08:00).
- — time_close - количество минут до закрытия брони, необязательный параметр, по умолчанию 60 мин.
Пример удачного ответа:
{
"2018-12-25":
{
"17:00":
{
"price":499,
"free":true,
"closeNumb":3,
"allNumb":5,
"pricePl":250,
}
}
}
Обращаю внимание на данные о слоте. Обязательные поля - price, free. Что касается полей closeNumb (количество занятых мест), allNumb (максимальное количество мест) - эти поля необязательны. Укажите их, если Вы используете бронирование по местам и хотите отобразить загруженность слота. Поле pricePl (цена за дополнительного игрока на этом таймслоте) также необязательно. Укажите его если хотите использовать цену за дополнительно игрока, отличную от цены, указанной в настройках квеста.
Бронирование таймслота.
Параметры:
- — task - bookingHour.
- — room - идентификатор квеста на сайте questroom.com.ua.
- — date - Дата в формате Y-m-d (например, 2018-12-28).
- — time - Дата в формате H:i (например, 08:00).
- — name - Имя клиента.
- — email - Почта клиента.
- — phone - Телефон клиента (только цифры, например, 380932555657).
- — count - количество игроков, необязательный параметр.
- — price - цена игры, необязательный параметр.
- — sale - скидка, необязательный параметр.
- — message - дополнительная информация, необязательный параметр.
Пример удачного ответа:
{"success":true}
Отмена бронирования таймслота.
Параметры:
- — task - cancelHour.
- — room - идентификатор квеста на сайте questroom.com.ua.
- — date - Дата в формате Y-m-d (например, 2018-12-28).
- — time - Дата в формате H:i (например, 08:00).
- — name - Имя клиента.
- — email - Почта клиента.
- — phone - Телефон клиента (только цифры, например, 380932555657).
Пример удачного ответа:
{"success":true}
Запрос бронирования таймслота. Если Вы хотите получать запросы бронирования на таймслоты, не указанные в расписании, нужно реализовать эту функцию. Если вы не хотите получать запросы - просто верните удачный результат.
Параметры:
- — task - requestHour.
- — room - идентификатор квеста на сайте questroom.com.ua.
- — date - Дата в формате Y-m-d (например, 2018-12-28).
- — time - Дата в формате H:i (например, 08:00).
- — name - Имя клиента.
- — email - Почта клиента.
- — phone - Телефон клиента (только цифры, например, 380932555657).
Пример удачного ответа:
{"success":true}
Если у Вас остались вопросы или Вы нашли неточности в описании, напишите, пожалуйста, на почту api@questroom.com.ua.