Api v5

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

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

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

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

Для проверки подлинности запросов на ваш сайт Вам нужно будет отправить post-запрос на адрес https://questroom.com.ua/check-md5. Список параметров:

  1. task - задание для выполнения, одно из перечесленных (showDays, showDay, showHour, bookingHour, cancelHour, requestHour).
  2. room - идентификатор квеста на сайте questroom.com.ua.
  3. md5 - md5 склеенной строки, состоящей из задания, идентификатора и токена авторизации, предоставляемого администратором портала. При удачной проверке в ответ будет передан json {"sucess": true}, если проверка неудачная, то {"sucess": false}.
Пример реализации проверки на php:

    $url = https://questroom.com.ua/check-md5;
    $task = 'showDays';
    $room = 'chumnoy-doktor-odessa';
    $token = 'sfkl3lkefml';
    $data = ['task' => $task, 'room' => $room, 'md5' => md5($task.$room.$token)];
    $options = ['http' =>
                    ['header' => "Content-type: application/x-www-form-urlencoded\r\n",
                        'method' => 'POST',
                        'content' => http_build_query($data)
                    ]
                ];
    $context = stream_context_create($options);
    $input = file_get_contents($url, false, $context);
    $res = json_decode($input, true);
    if ($res['success'] == true)
        return true;
                            

Вы можете пропустить эту проверку, если не хотите проверять подлинность запросов.

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

  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
            },
            "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
            }


        }
                                    
                            
showDay

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

Параметры:

  1. task - showDays.
  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
            },
            "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
            }
        }
                                
                            
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
            }
        }
    }
                                
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.