Коллекция Postman#
Файл импортируется через Import → File. Дальше по шагам:
- Открыть переменные коллекции, вписать
client_idиclient_secret. - Выполнить Авторизация → Получить токен. Скрипт во вкладке Tests сам положит
токен в переменную
access_token, остальные запросы возьмут её автоматически. - Выполнить Справочники → Торговые центры, скопировать
idнужного центра в переменнуюsc_id. - Выполнить Справочники → Торговые точки, скопировать
idточки вshop_id.
Необязательные параметры в запросах выключены галочкой: включить стоит те, что нужны. У каждого метода в описании подписаны ограничения и ссылка на страницу документации.
Python#
Один файл без зависимостей кроме requests. Копируется в проект целиком.
import datetime as dt
from rentu_api import Rentu, RentuError
api = Rentu("YOUR_CLIENT_ID", "YOUR_CLIENT_SECRET")
for sc in api.shopping_centers():
end = api.today(sc) - dt.timedelta(days=1) # «вчера» в зоне центра
start = end - dt.timedelta(days=6)
for shop in api.shops(sc["id"]):
for day in api.by_days(sc["id"], shop["id"], start, end):
print(sc["title"], shop["name"], day["date"], api.rubles(day["turnover"]))Что клиент берёт на себя:
- обновляет токен за минуту до истечения, повторных запросов к
/auth/tokenне делает; - повторяет при
429поRetry-Afterи при503с нарастающей паузой, остальные коды поднимает какRentuErrorс полямиcode,message,detailsиretryable; - обходит постраничные методы, отдавая строки, а не страницы;
- режет длинные периоды чеков на окна по 31 дню, потому что API их иначе не отдаст;
- считает «сегодня» в таймзоне центра и переводит копейки в рубли.
Чеки за полтора месяца одним вызовом, окна режутся внутри:
receipts = api.receipts(sc_id, shop_id, start, end, by="created")
total = sum(r["total_sum"] for r in receipts if r["operation_type"] == 1)Повторное создание события не считается ошибкой:
event = api.create_event(sc_id, name="Чёрная пятница", description="Скидки",
event_type="marketing",
start_date="2026-11-27", end_date="2026-11-30")
if event is None:
print("такое событие уже есть")1С:Предприятие 8.3#
Общий модуль с флагом «Сервер»: у клиентского контекста нет доступа к внешним
ресурсам. Учётные данные стоит положить в константы РентуClientId
и РентуClientSecret, а для токена завести параметры сеанса РентуТокен
и РентуТокенДействуетДо.
ТорговыеЦентры = РентуAPI.ТорговыеЦентры();
Для Каждого ТЦ Из ТорговыеЦентры Цикл
Точки = РентуAPI.ТорговыеТочки(ТЦ["id"]);
Для Каждого Точка Из Точки Цикл
Продажи = РентуAPI.ПродажиПоДням(
ТЦ["id"], Точка["id"], НачалоПериода, КонецПериода);
Для Каждого День Из Продажи Цикл
Сообщить(Точка["name"] + " " + День["date"] + " "
+ Формат(РентуAPI.Рубли(День["turnover"]), "ЧДЦ=2"));
КонецЦикла;
КонецЦикла;
КонецЦикла;Модуль обходит страницы сам, обновляет протухший токен и повторяет запрос один раз,
а при 429 ждёт столько, сколько попросил сервер. Остальные ошибки поднимаются
исключением с машинным кодом в тексте.
Даты в 1С нужно форматировать как Формат(Дата, "ДФ=yyyy-MM-dd"). Строковое представление по умолчанию зависит от региональных настроек, и API его не разберёт.
Про таймзону: «вчера» надо считать по зоне центра, она приходит в поле time_zone.
Если центры в разных часовых поясах, единая дата для всех даст расхождение на день.
Подробнее в разделе Частые ошибки.
Что дальше#
Клиенты закрывают транспорт, но не бизнес-логику. Прежде чем строить витрину, стоит заглянуть в Частые ошибки интеграции: там собрано, где именно расходятся цифры.