Как получить токен API и настроить вебхуки
Токен компании открывает внешним программам доступ к данным филиала через API RentProg. Вебхуки работают в обратную сторону: RentProg сам сообщает вашей программе, что бронирование, клиент или транспортное средство создано, изменено или удалено.
Обе настройки — в профиле компании, вкладка «Интеграции», панели «Токен для доступа к API» и Webhooks.
Кому доступно
| Что | Условие |
|---|---|
| Панель «Токен для доступа к API» | Доступ к API: услуга API в тарифе и доступ не отключён администрацией RentProg |
| Скопировать и обновить токен | Менеджер и выше; партнёрам и гостям поле не показывается |
Панель Webhooks | Доступ к API, отдельно включённый доступ к вебхукам и услуга вебхуков в тарифе |
| Добавлять, менять и удалять ссылки для вебхуков | Сотрудники компании |
| Видеть секрет подписи вебхука | Сотрудники компании; партнёрам и гостям не показывается |
Как скопировать токен
- Откройте профиль компании, вкладка «Интеграции», панель «Токен для доступа к API».
- Нажмите поле «API Токен» или значок копирования в нём — токен попадёт в буфер обмена.
Токен свой у каждого филиала. Тот же токен нужен внешним сервисам, например форме бронирования на сайте.
Как обновить токен
- Нажмите «Обновить токен» в панели «Токен для доступа к API».
- Подтвердите обновление.
- Скопируйте новый токен и замените его во всех внешних сервисах.
Важно
При обновлении токена все внешние сервисы, использующие старый токен, перестанут работать. Старый токен восстановить нельзя.
Как программа входит в API
Программа меняет токен компании на временный ключ доступа, а затем передаёт его в заголовке Authorization каждого запроса:
GET /api/v1/public/get_token?company_token=<токен компании>Временный ключ действует 4 часа. Ограничения частоты запросов:
- обычное чтение — 120 запросов в минуту, отдельно на компанию и на IP-адрес; оба ограничения действуют одновременно;
- запись — 60 запросов в минуту, отдельно на компанию и на IP-адрес; оба ограничения действуют одновременно;
free_cars_with_price,search_clients,search_bookings,search_cars,icalendar_eventиactive_bookings_icalendar— общий отдельный лимит 30 запросов в минуту на IP-адрес;- получение временного ключа через
get_token— 60 запросов в минуту на IP-адрес.
Важно
Если доступ к API отключён, сервер отвечает отказом и просит обратиться в поддержку. Если подписка компании отключена за неоплату, API тоже отвечает отказом до пополнения баланса компании.
Поправки цены на даты в ответах о машинах
Поправка на даты — процентная надбавка или скидка к цене суток на диапазон дат. Цены в таблицах prices она не меняет: ответы API отдают поправки отдельным полем date_adjustments, а программа применяет их сама. Поле добавлено к прежним, ни одно прежнее поле не изменилось.
Поле есть у машины в ответах трёх методов:
| Метод | Где поле |
|---|---|
GET /api/v1/public/all_cars_full | у каждой машины в массиве |
GET /api/v1/public/car_data_with_bookings | в объекте машины |
GET /api/v1/public/search_cars | у каждой машины в массиве |
Пример поля у машины:
"date_adjustments": [
{"starts_on": "2026-12-30", "ends_on": "2027-01-02", "percent": 15.0},
{"starts_on": "2027-01-03", "ends_on": "2027-01-03", "percent": -5.0}
]| Поле | Что в нём |
|---|---|
starts_on | Первый день интервала, формат YYYY-MM-DD |
ends_on | Последний день интервала, включительно |
percent | Число: положительное — надбавка, отрицательное — скидка; 15.0 значит «плюс 15 %» |
Что гарантирует ответ:
- Интервалы уже разрешены: они не пересекаются и идут по возрастанию дат. Если на один день действуют несколько поправок, в ответ попадает последняя созданная.
- Соседние интервалы с одинаковым процентом слиты в один.
- Отменённые поправки не отдаются.
- Интервалы, закончившиеся раньше вчерашнего дня, не отдаются. Вчерашний день взят с запасом на часовой пояс филиала; интервал, захватывающий вчера, приходит целиком, с настоящей датой начала.
- У машины без поправок поле равно
[]. - Поправка действует на машину, пока та в филиале, где поправку создали: после перевода машины в другой филиал она из ответов пропадает.
Ответы all_cars_full и car_data_with_bookings кешируются до 30 секунд. Создание поправки, её отмена и перевод машины в другой филиал сбрасывают кеш, поэтому следующий запрос уже возвращает новые интервалы. search_cars не кешируется.
Цену, которую RentProg считает сам (selected_price в free_cars_with_price и car_data), поправки уже учитывают. Поправки получает суточная и почасовая аренда; недельная, месячная аренда и периодические платежи их не получают, для них date_adjustments применять не нужно.
Как посчитать цену дня с поправкой
- Возьмите цену дня из таблицы
pricesтак, как вы это делаете без поправок, — с учётом сезона и ступени длительности. - Если день попадает в интервал
date_adjustments, умножьте цену на1 + percent / 100. - Округлите результат по правилу ниже.
- Дни вне интервалов не округляйте и не меняйте: их цена остаётся такой, как в таблице.
Округление идёт от новой, ещё не округлённой цены: от неё выбирается шаг, затем значение округляется до шага, а половина шага — вверх.
| Цена после умножения | Шаг округления |
|---|---|
| 1000 и больше | 10 |
| от 10 до 999,99 | 1 |
| меньше 10 | 0,1 |
Примеры:
| Цена после умножения | Результат | Пояснение |
|---|---|---|
| 999,6 | 1000 | шаг 1, округление вверх |
| 42,5 | 43 | шаг 1, половина вверх |
| 969 | 969 | 1020 с поправкой −5 %: уже кратно шагу, не меняется |
| 9,95 | 10,0 | шаг 0,1, половина вверх |
Округление не сохраняет окончаний вроде «…90»: цена после поправки может оканчиваться любой цифрой в пределах шага.
Как добавить ссылку для вебхуков
- Раскройте панель
Webhooksи нажмите «Добавить ссылку для вебхуков». - Впишите адрес вашей программы в поле «URL для вебхуков».
- Выберите события в поле «Подписки на события» — хотя бы одно.
- Включите «Только созданные через API» или «Только обновленные через API», если нужны только записи, пришедшие через API.
- Нажмите значок сохранения с подсказкой «Сохранить ссылку для вебхуков».
Без адреса или без событий ссылка не сохранится. Адрес проверяется на формат.
События для подписки: «Бронирование создано», «Бронирование обновлено», «Бронирование удалено», «Клиент создан», «Клиент обновлен», «Клиент удален», а также создание, изменение и удаление транспортного средства.
Ссылка принадлежит филиалу, в котором её создали: события приходят по записям этого филиала.
Как проверить подпись доставки
После сохранения у ссылки появляется поле секрета подписи. Секрет создаётся один раз при создании ссылки и не меняется при её правке. Скопируйте его значком копирования и храните на стороне вашей программы.
Каждая доставка — это запрос POST с телом в формате JSON:
{"event": "booking_create", "payload": "<данные записи в виде строки JSON>"}Заголовки доставки:
| Заголовок | Что в нём |
|---|---|
X-Webhook-Signature | sha256= и подпись тела запроса по алгоритму HMAC-SHA256 секретом ссылки |
X-Webhook-Event-Id | ID события |
Idempotency-Key | Тот же ID события — одинаковый у всех повторов и переотправок |
Подпись считается по точным байтам тела запроса. Неподписанных доставок RentProg не отправляет.
Когда доставка считается неудачной
| Ответ вашей программы | Что делает RentProg |
|---|---|
| 200, 201 или 204 | Доставка успешна |
| 408, 429, обрыв соединения или нет ответа за 10 секунд | Повторяет доставку с растущей паузой, всего до 8 попыток; после последней — ошибка |
| 404 | Отмечает ошибку и деактивирует ссылку |
| Ошибка защищённого соединения | Отмечает ошибку без повторов |
| Любой другой код | Отмечает ошибку без повторов |
Важно
Ответ 404 выключает ссылку целиком: дальше события на неё не отправляются, пока вы её не активируете.
Как переотправить ошибочные доставки
- Раскройте панель
Webhooksи найдите блок «Последние ошибки вебхуков». - Проверьте у события адрес и код ответа, при необходимости исправьте вашу программу.
- Нажмите «Переотправить» у события.
В блоке показываются ошибочные доставки всей группы компаний, кнопка «Показать ещё» загружает более ранние. Переотправить можно только событие в статусе ошибки и только на активную ссылку: если ссылка деактивирована, сначала активируйте её.
Как управлять ссылкой
У сохранённой ссылки есть значки:
- «Обновить ссылку для вебхуков» — сохранить изменённый адрес, события или переключатели;
- «Деактивировать ссылку для вебхуков» — временно перестать отправлять события;
- «Активировать ссылку для вебхуков» — снова включить отправку;
- «Удалить ссылку для вебхуков» — удалить ссылку вместе с историей её событий, после подтверждения.