Использование API сервиса Rubitime


Чтобы подключить сервисы без участия программиста смотрите данную инструкцию. Для стандартного подключения Bitrix24, amoCRM или Google Календаря и передачи данных в одностороннем порядке от Rubitime к указанным системам воспользуйтесь этим руководством.

На данный момент через API доступно:

- создание, обновление и удаление записи;
- получение дат и времени для записи;
- отправка вебхука о создании, обновлении и удалении записи.

Для использования API необходимо сгенерировать ключ доступа на 5 шаге настроек, в блоке "Получение и сохранение данных при помощи API". Для генерации ключа нужно нажать кнопку "Сгенерировать ключ", для перегенерации "Перегенерировать ключ", для удаления "Удалить ключ".

Чтобы отправлять вебхуки о событиях (создание, обновление, удаление) - нужно дополнительно указать URL адрес в поле "Вебхук URL".

Создание, обновление и удаление записи

Для получения/передачи данных необходимо вызвать метод https://rubitime.ru/api2/{method} (где {method} - название метода из таблицы ниже), передать в массиве ключ "rk" со значением API ключа и дополнительные параметры POST запросом в формате JSON:

МетодПараметрыОписание
get-record'id' => 1 // id записи
'rk' => 'xxx' // API ключ
Ответ (data):
'id' => '50 ', // id записи
'whom' => '0 ', // кем создана запись: 0 - клиентом, иное значение администратором
'created_at' => '2018-08-13 21:09:56 ', // дата создания записи
'record' => '2021-12-07 09:30:00 ', // дата записи
'name' => 'Иванов Иван Иванович ', // ФИО клиента
'price' => '1500 ', // цена
'phone' => '+77999999998 ', // телефон
'email' => 'test@test.ru ', // Email
'comment' => 'Нужно подровнять кончики ', // комментарий клиента
'status' => '0 ', // статус записи
'status_title' => 'Записан ', // текстовое значение статуса
'cooperator_id' => '4 ', // id сотрудника
'cooperator_title' => 'Ксения ', // имя сотрудника
'branch_id' => '2 ', // id филиала
'branch_title' => 'На Красном проспекте ', // название филиала
'service_id' => '9 ', // id услуги
'service_title' => 'Стрижка женская ', // название услуги
'url' => 'https://rubitime.ru/card/xxx ', // ссылка на картоку записи
'coupon' => 'DSA123456 ', // номер промокода
'coupon_discount' => '100 ', // сумма промокода
'source' => 'https://site.ru ', // источник записи
'duration' => '60 ', // длительноть записи
'prepayment' => '100 ', // предоплата
'prepayment_date' => '2021-01-01 10:00:00 ', // дата выполненной предоплаты
'prepayment_url' => 'https://rubitime.ru/api/prp?pay=xxx ', // ссылка на предоплату
'reminder' => '2021-01-01 10:00:00 ', // напоминание для клиента
'custom_field1' => 'Кастомное значение ', // дополнительное поле (от 1 до 10)
'parent_record' => '5867 или null ' // id родительской/первой записи при включенной опции "Мультизапись"
Показать пример ответа
Получить данные о записи номер X, где X - # записи.
create-record
и update-record
'id' => 79379, // только для update-record
'branch_id' => '1013', // id филиала
'cooperator_id' => '1702', // id сотрудника
'service_id' => '3925', // id услуги
'record' => '2020-01-18 20:00', // дата и время, на которое записан клиент
'name' => 'Иванов Иван Иванович', // ФИО клиента
'email' => 'test@test.ru', // email клиента
'phone' => '+70000000000', // телефон клиента
'comment' => 'Комментарий', // комментарий клиента к записи
'price' => 100.00, // стоимость услуги
'duration' => 60, // длительность услуги в минутах
'prepayment' => 50.00, // сумма предоплаты
'prepayment_date' => 2021-01-01 10:00:00, // дата выполнения оплаты
'prepayment_url' => https://rubitime.ru/api/prp?pay=xxx, // ссылка на предоплату
'reminder' => '2020-01-18 19:00', // время по МСК для отправки напоминания
'custom_field1' => 'Дополнительное поле 1', // данные для дополнительных полей: custom_field1, custom_field2, ..., custom_field10
'status' => 0, // статус записи: 0 => 'Записан', 1 => 'На обслуживании', 2 => 'Завершен', 3 => 'Ожидание предоплаты', 4 => 'Отменен', 5 => 'Ожидает подтверждения', 6 => 'Добавлено в корзину', 7 => 'Перенос записи'
'whom' => 'whom', // кем создана запись: 0 - клиентом, иное значение администратором
'source' => 'my_source', // источник, по-умолчанию устанавливается значение 'api'
'rk' => 'xxx', // API ключ
Показать все параметры
Создание новой записи и редактирование существующей записи. Обязательные для заполнения параметры при создании новой записи: branch_id, cooperator_id, service_id, status, record, rk. При обновлении: rk.
remove-record'id' => 79379,
'rk' => 'xxx' // API ключ
Удалить запись по id.

В ответе возвращается массив, содержащий 3 ключа:

status - может быть ok или error;
message - текст сообщения;
data - результат выполнения запроса (массив с данными).

Отправлять запросы можно не чаще одного раза в 5 секунд.

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

$action = 'create-record'; // указываем действие (метод)
$rk = 'xxx'; // указываем ключ

// получаем запись if ($action == 'get-record') { $queryData = ['id' => 50]; // создаем запись } elseif ($action == 'create-record') { $queryData = [ 'branch_id' => 1, 'cooperator_id' => 2, 'service_id' => 4, 'status' => 0, 'record' => '2021-12-08 13:30:03', 'name' => 'Test name', 'price' => 50.25, 'phone' => '+77999999998', 'email' => 'test@test.ru', 'comment' => 'Test comment', 'reminder' => '2021-12-12 00:00:00', 'reminder_minutes' => 60, ]; // обновляем запись (например: делаем ее оплаченной и переводим в статус "Записан") } elseif ($action == 'update-record') { $queryData = [ 'id' => 50, 'prepayment' => 100, 'prepayment_date' => '2021-12-01 10:00:00', 'status' => 0, ]; // удаляем запись } elseif ($action == 'remove-record') { $queryData = ['id' => 50]; } $queryData['rk'] = $rk; $queryUrl = 'https://rubitime.ru/api2/'.$action; $curl = curl_init(); curl_setopt_array($curl, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_URL => $queryUrl, CURLOPT_POSTFIELDS => json_encode($queryData), ]); $result = curl_exec($curl); curl_close($curl); $result = json_decode($result, true); if ($result) { if ($result['status'] == 'ok') { echo "Success: {$result['message']}"; // сообщение о успешном запросе var_dump($result['data']); // полученные данные } else { echo "Error: {$result['message']}"; // // сообщение об ошибке при выполнении запроса } } else { echo "Empty response"; // запрос не вернул никакого результата }

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

{
    "status": "ok",
    "message": "Success",
    "data": {
        "id": 123, // id созданной записи
        "url": "https://rubitime.ru/card/xxx" // url созданной записи
    }
}

Получение дат и времени для записи

Для получения дат и времени необходимо отправить POST-запрос на URL https://rubitime.ru/api2/get-schedule и передать в массиве ключ "rk" со значением API ключа, а так же обязательные параметры: branch_id, cooperator_id, service_id.

В качестве дополнительного параметра в запросе можно использовать: only_available. Значение 1 отобразит только даты и время доступные для записи, значение 0 отобразит только занятые даты, отстутсвие параметра отобразит все даты.

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

$url = 'https://rubitime.ru/api2/get-schedule'; // URL-запроса
$params = [
    'rk' => 'xxx', // указываем ключ
    'branch_id' => 1, // ID филиала
    'cooperator_id' => 3, // ID сотрудника
    'service_id' => 2, // ID услуги
    //'only_available' => 1, // выведет только даты и время доступное для записи
];

$curl = curl_init();
curl_setopt_array($curl, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_URL => $url,
    CURLOPT_POSTFIELDS => json_encode($params),
]);

$result = curl_exec($curl);
curl_close($curl);

$result = json_decode($result, true);
if ($result) {
    if ($result['status'] == 'ok') {
        var_dump($result['data']); // полученные данные
    } else {
        echo "Error: {$result['message']}"; // // сообщение об ошибке при выполнении запроса
    }
} else {
    echo "Empty response"; // запрос не вернул никакого результата
}

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

{
    "status":"ok",
    "message":"Success",
    "data": {
        "2024-04-19": {
            "11:00": {
                "available": false
            },
            "12:00": {
                "available": true
            },
            "13:00": {
                "available": false
            },
        },
        "2024-04-20": {
            "11:00": {
                "available": true
            },
            "12:00": {
                "available": false
            },
            "13:00": {
                "available": false
            },
        },
        ...
    }
}

Отправка вебхука о создании, обновлении и удалении записи

Вебхуки отправляются при создании/редактировании/удалении записей на указанный в настройках URL (Настройки -> API -> Получение и сохранение данных при помощи API -> Вебхук URL).

Обратите внимание: вебхук отправляется как в случае изменений созданных пользователем, так и самим API. Для разграничения инициатора действия в вебхуке есть ключ "from", значение которого может быть "user" - действие совершено пользователем или "api" - действие совершено через API.

Формат передачи данных:

// event-create-record - создана новая запись;
// event-update-record - обновлена запись;
// event-remove-record - удалена запись.

{ "from": "user", "event": "event-create-record", "data": { "id": 123, // id созданной записи "record" "2021-12-07 09:30:00", // дата записи "name": "Иванов Иван Иванович", // url созданной записи "price": "300", // цена ... // все ключи можно посмотреть в методе get-record } }