Rentu External API v2 (1.0)

Download OpenAPI specification:Download

Внешнее API Rentu для интеграций торговых центров: выручка, чеки, посещаемость, аномалии, состояние касс.

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

Базовый URL

Среда URL
Production https://api.rentu.ru/api/external/v2
Stage https://stage-api.rentu.ru/api/external/v2

Авторизация

POST /auth/token меняет пару client_id + client_secret на JWT. Токен живёт час и передаётся заголовком Authorization: Bearer <token>. Токены v1 и v2 несовместимы в обе стороны.

Ключ принадлежит сотруднику торгового центра: доступные центры определяются его ролями и проверяются на каждом запросе. Сняли роль — центр пропадает из выдачи, отдельно отзывать ключ не нужно.

Конверт ответа

Успех — {"success": true, "data": ..., "meta": ...}, ошибка — {"success": false, "error": {"code": ..., "message": ..., "details": ...}}.

Ветвитесь по error.code, а не по HTTP-статусу: одному статусу соответствует несколько кодов. Повторять имеет смысл только token_expired (после обновления токена), rate_limited (после Retry-After), rights_unavailable, traffic_unavailable и internal_error.

Тарифы

Тариф — свойство торгового центра, а не ключа: один ключ может покрывать несколько центров на разных тарифах.

Basic PRO
Период в одном запросе, подневные данные 31 день 366 дней
Период в одном запросе, месячные итоги 12 месяцев 36 месяцев
Самая свежая дата вчера сегодня
Чеки и аномалии да
Посещаемость по часам, по зоне и по точке да
Расчётный товарооборот (turnover) да
Начисленная аренда (rent) и OCR да
Средний чек, выручка на м² да
Частота 60/мин, 5 000/сутки 300/мин, 50 000/сутки

Форматы

Денежные суммы — целые копейки. Даты в параметрах — YYYY-MM-DD. Моменты времени в ответах — ISO 8601 со смещением таймзоны центра; сама зона приходит в meta.time_zone. Границы суток считаются в таймзоне центра, а не в UTC.

Лимиты частоты

Считаются по торговому центру, а не по ключу: сотрудники одного центра делят общий бюджет запросов. Заводить дополнительные ключи ради скорости бесполезно. На успешных ответах приходят X-RateLimit-Limit, X-RateLimit-Remaining и X-RateLimit-Reset для минутного окна; на 429 — ещё и Retry-After.

Anomalies v2

Anomalies of the shopping centre

Аномалии продаж, найденные системой: те же, что видит менеджер ТЦ. Только тариф PRO. Период задаётся start_date/end_date (до 366 дней), границы суток считаются в таймзоне ТЦ. Фильтры: shop_id, status (new, completed, archived), level (high, medium, low). Сортировка — от свежих к старым. Пагинация page/per_page (по умолчанию 100, максимум 500).

path Parameters
sc_id
string
Example: 6a7ed456e8b9e1300e7ecff1
header Parameters
Accept
any
Example: application/json

Responses

Response samples

Content type
application/json; charset=utf-8
{
  • "success": true,
  • "data": [
    ],
  • "meta": {
    }
}

Attendance submission v2

Submit daily attendance

Приём посещаемости за сутки от собственных счётчиков ТЦ. Доступно на любом тарифе.

Обязательны date и visitors. scope задаёт адресата тем же словарём, что и чтение посещаемости: sc — периметр всего центра (по умолчанию), zone — отдельная зона, и тогда обязателен zone_id из справочника зон. При scope=sc передавать zone_id нельзя.

Дата в будущем отклоняется, граница считается в таймзоне ТЦ. Повторный вызов за те же сутки перезаписывает значение.

В API v1 это были два отдельных метода — по ТЦ и по зоне; здесь они сведены в один.

path Parameters
sc_id
string
Example: 6a7ed457e8b9e1300e7ed007
header Parameters
Accept
any
Example: application/json
Content-Type
any
Example: application/x-www-form-urlencoded
Request Body schema: application/x-www-form-urlencoded
Schema not provided

Responses

Request samples

Content type
application/x-www-form-urlencoded
date=2026-08-13&visitors=5000

Response samples

Content type
application/json; charset=utf-8
{
  • "success": true,
  • "data": {
    }
}

Attendance v2

Attendance of the shopping centre

Посещаемость по данным системы подсчёта. Период — start_date/end_date по тарифу.

granularity: day (по умолчанию), week, month — Basic; hour — только PRO, и период для него не больше 31 дня. scope: sc (по умолчанию) — Basic; zonezone_id из справочника зон) и shopshop_id) — только PRO. Неподходящее тарифу значение — 403 plan_required.

Метки периода: дата для day/week/month, время со смещением ТЦ для hour. Если ТЦ или точка не покрыты зонами подсчёта, data пустой — это не ошибка. Если система подсчёта в ТЦ не настроена вовсе — 404 traffic_not_configured; если подсистема подсчёта не ответила — 503 traffic_unavailable, запрос можно повторить.

path Parameters
sc_id
string
Example: 6a7ed457e8b9e1300e7ed00d
header Parameters
Accept
any
Example: application/json

Responses

Response samples

Content type
application/json; charset=utf-8
Example
{
  • "success": true,
  • "data": [
    ],
  • "meta": {
    }
}

Auth v2

Issue access token

Выдача токена по client_credentials (client_id + client_secret выдаются командой Rentu). Токен живёт 1 час, передаётся в заголовке Authorization: Bearer <token>. Токены v2 не работают в v1 и наоборот.

Ключ принадлежит сотруднику ТЦ, и доступ к данным определяется его ролями: отобрали роль — ТЦ пропадает из выдачи, отдельный отзыв ключа не нужен.

Глубина данных зависит от тарифа торгового центра, а не ключа: один ключ может покрывать несколько ТЦ на разных тарифах. Частота запросов тоже считается по ТЦ — сотрудники одного ТЦ делят общий лимит.

header Parameters
Accept
any
Example: application/json
Content-Type
any
Example: application/json
Request Body schema: application/json
Schema not provided

Responses

Request samples

Content type
application/json
{
  • "client_id": "0a3ee6c2-9f72-4d49-b73c-3cb970d75531",
  • "client_secret": "v2-client-secret-000000000000000000000000000000"
}

Response samples

Content type
application/json; charset=utf-8
{
  • "success": true,
  • "access_token": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiIwYTNlZTZjMi05ZjcyLTRkNDktYjczYy0zY2I5NzBkNzU1MzEiLCJhdWQiOiJleHRlcm5hbC12MiIsImp0aSI6IjZmZTA5YzY2LWZkMjEtNDA5Ni04NmNiLWU0NDMyM2RkM2VlNSIsImlhdCI6MTc4NjY5Njc5MSwiZXhwIjoxNzg2NzAwMzkxfQ.KbTn_uUpXrCgCAGxatyJ4H5iHABaHuen5ixS7rKm3OwU30CjHWNQg5RgLHBfc9H9f1m4dIfUvWbgdivr1hhasg",
  • "token_type": "Bearer",
  • "expires_in": 3600
}

Events v2

Register an event of the shopping centre

Приём событий ТЦ — акций, распродаж, ремонтов. Доступно на любом тарифе: за передачу данных нам мы денег не берём.

Обязательны name, description, event_type, start_date, end_date. event_typecalendar, marketing или other; служебные типы платформы снаружи не принимаются. shop_ids — точки, к которым относится событие, проверяются по этому ТЦ. color — HEX вида #RRGGBB, по умолчанию серый; другие записи цвета (rgb(...), имена) не принимаются.

Метод создаёт новое событие. Полный дубль — совпали название, тип и обе даты в рамках ТЦ — отклоняется с 409 already_exists_in_sc. Существующее событие при этом не меняется: чтобы поправить описание или цвет, редактируйте событие в интерфейсе ТЦ.

path Parameters
sc_id
string
Example: 6a7ed458e8b9e1300e7ed01e
header Parameters
Accept
any
Example: application/json
Content-Type
any
Example: application/x-www-form-urlencoded
Request Body schema: application/x-www-form-urlencoded
Schema not provided

Responses

Request samples

Content type
application/x-www-form-urlencoded
name=%D0%A7%D1%91%D1%80%D0%BD%D0%B0%D1%8F+%D0%BF%D1%8F%D1%82%D0%BD%D0%B8%D1%86%D0%B0&description=%D0%A1%D0%BA%D0%B8%D0%B4%D0%BA%D0%B8+%D0%B2%D0%BE+%D0%B2%D1%81%D1%91%D0%BC+%D0%A2%D0%A6&event_type=marketing&start_date=2026-08-14&end_date=2026-08-17&shop_ids[]=6a7ed458e8b9e1300e7ed020

Response samples

Content type
application/json; charset=utf-8
{
  • "success": true,
  • "data": {
    }
}

Kkts v2

Cash registers of the shop

Кассы торговой точки и признаки их состояния: статус подключения, когда пришёл последний чек, открыта ли смена, когда заканчивается ФН. Даты — ISO 8601 в таймзоне ТЦ, сама зона в meta.time_zone. Пагинации нет — касс у точки единицы. Архивные кассы по умолчанию не отдаются. Чтобы получить их вдобавок к действующим, передайте archived=true; отличать их можно по полю is_archived.

path Parameters
sc_id
string
Example: 6a7ed458e8b9e1300e7ed035
shop_id
string
Example: 6a7ed458e8b9e1300e7ed037
header Parameters
Accept
any
Example: application/json

Responses

Response samples

Content type
application/json; charset=utf-8
{
  • "success": true,
  • "data": [
    ],
  • "meta": {
    }
}

Receipts v2

Shop receipts

Почековая выгрузка (только тариф PRO). Все суммы — в копейках, даты-время — ISO 8601 с явным смещением таймзоны ТЦ. Требуется полная пара дат: created (start_created_date+end_created_date) и/или received (start_received_date+end_received_date); каждая пара — не больше 30 дней. Пагинация page/per_page (по умолчанию 500, максимум 1000), метаданные в meta.pagination.

document_types — какие типы фискальных документов выгружать, через запятую. По умолчанию только продажи: receipt, delivery, form_of_strict_accountability. Полный список значений — в описании поля document_type; неизвестное значение даёт 422.

path Parameters
sc_id
string
Example: 6a7ed458e8b9e1300e7ed04a
shop_id
string
Example: 6a7ed458e8b9e1300e7ed04c
header Parameters
Accept
any
Example: application/json

Responses

Response samples

Content type
application/json; charset=utf-8
Example
{
  • "success": true,
  • "data": [
    ],
  • "meta": {
    }
}

Reports v2

Shop info by days

Дневные агрегаты торговой точки. Все суммы — в копейках. Пагинация page/per_page (по умолчанию 100, максимум 366), метаданные в meta. Тариф Basic: данные до вчера (D+1), период до 92 дней. Тариф PRO: включая сегодня, период до 366 дней.

path Parameters
sc_id
string
Example: 6a7ed459e8b9e1300e7ed085
shop_id
string
Example: 6a7ed459e8b9e1300e7ed087
header Parameters
Accept
any
Example: application/json

Responses

Response samples

Content type
application/json; charset=utf-8
{
  • "success": true,
  • "data": [
    ],
  • "meta": {
    }
}

Shop info by months

Месячные итоги торговой точки: то же, что показывает отчёт ТЦ. Все суммы — в копейках. Границы периода задаются датами start_date/end_date и расширяются до целых месяцев. Пагинации нет: строк не больше, чем месяцев в разрешённом периоде. Тариф Basic: период до 92 дней, данные до вчера (D+1). Тариф PRO: до 366 дней, включая сегодня, и дополнительно поля average_check_sum, revenue_per_area, ocr. Детализация по типам оплат и ставкам НДС — в by_days.

path Parameters
sc_id
string
Example: 6a7ed459e8b9e1300e7ed0c8
shop_id
string
Example: 6a7ed459e8b9e1300e7ed0ca
header Parameters
Accept
any
Example: application/json

Responses

Response samples

Content type
application/json; charset=utf-8
Example
{
  • "success": true,
  • "data": [
    ]
}

Sensor traffic v2

Submit hourly traffic from a counter

Почасовая выгрузка со стороннего счётчика посещаемости. Доступно на любом тарифе.

Счётчик адресуется своим external_id — тем, под которым он заведён при подключении. Отдельного справочника счётчиков в API нет: идентификатор принадлежит стороне, которая передаёт данные.

data — до 1000 записей за вызов, каждая с datetime (начало часа, ISO 8601), in и out. Повторная присылка того же часа перезаписывает значения.

path Parameters
sc_id
string
Example: 6a7ed45ae8b9e1300e7ed0ef
external_id
string
Example: gate-1
header Parameters
Accept
any
Example: application/json
Content-Type
any
Example: application/x-www-form-urlencoded
Request Body schema: application/x-www-form-urlencoded
Schema not provided

Responses

Request samples

Content type
application/x-www-form-urlencoded
data[][datetime]=2026-08-13T12%3A00%3A00&data[][in]=120&data[][out]=90&data[][datetime]=2026-08-13T13%3A00%3A00&data[][in]=200&data[][out]=180

Response samples

Content type
application/json; charset=utf-8
{
  • "success": true,
  • "data": {
    }
}

Shopping centers v2

Shopping centres available to the key owner

Точка входа: ТЦ, в которых у владельца ключа есть роль. Отсюда берутся sc_id для всех остальных запросов. Пагинации нет — список ограничен ролями сотрудника. ТЦ, заблокированный по оплате, в списке остаётся, но данные по нему отдают 402. Роли сняли — ТЦ пропадает из списка сам, отдельного отзыва ключа не нужно. Сервис прав недоступен — 503 rights_unavailable, а не пустой список.

header Parameters
Accept
any
Example: application/json

Responses

Response samples

Content type
application/json; charset=utf-8
{
  • "success": true,
  • "data": [
    ]
}

Shops v2

Shops of the shopping centre

Список торговых точек ТЦ. Отсюда берутся shop_id для отчётов и выгрузки чеков. Пагинация page/per_page (по умолчанию 100, максимум 500), метаданные в meta.pagination. Архивные точки по умолчанию не отдаются. Чтобы получить их вдобавок к действующим, передайте archived=true; отличать их можно по полю is_archived.

path Parameters
sc_id
string
Example: 6a7ed45ae8b9e1300e7ed101
header Parameters
Accept
any
Example: application/json

Responses

Response samples

Content type
application/json; charset=utf-8
{
  • "success": true,
  • "data": [
    ],
  • "meta": {
    }
}

Traffic areas v2

Traffic counting areas of the shopping centre

Зоны подсчёта посещаемости ТЦ. Отсюда берётся zone_id для attendance. В shop_ids — торговые точки, попадающие в зону. Пагинации нет — зон у ТЦ единицы. Служебные зоны офисов арендаторов не отдаются. Если в ТЦ система подсчёта не настроена, ответ — 404 traffic_not_configured.

path Parameters
sc_id
string
Example: 6a7ed45ae8b9e1300e7ed12d
header Parameters
Accept
any
Example: application/json

Responses

Response samples

Content type
application/json; charset=utf-8
{
  • "success": true,
  • "data": [
    ]
}

Turnover config v2

Turnover settings applied to the shop

Настройки, по которым посчитан turnover в отчётах: какие типы операций входят в товарооборот и какая доля возвратов из него вычитается. Настройка берётся у точки, если она задана, иначе у ТЦ — источник в поле source (shop, shopping_center или default, если не задана нигде).

path Parameters
sc_id
string
Example: 6a7ed45be8b9e1300e7ed140
shop_id
string
Example: 6a7ed45be8b9e1300e7ed143
header Parameters
Accept
any
Example: application/json

Responses

Response samples

Content type
application/json; charset=utf-8
{
  • "success": true,
  • "data": {
    }
}

Turnover submission v2

Submit declared turnover for a month

Приём задекларированного товарооборота точки за месяц. Для арендаторов без подключённой кассы или с данными, которые не доходят через ОФД. Доступно на любом тарифе.

Обязательны month и turnover. month — любая дата внутри месяца, месяц берётся целиком. receipts_count и visitors_count необязательны.

Суммы в копейках. Одноимённый метод API v1 принимал рубли, поэтому при переносе интеграции значение нужно умножить на 100.

Метод идемпотентен по паре «точка + месяц»: повторный вызов за тот же месяц перезаписывает значения, а не добавляет вторую запись. Месяц заводится автоматически, если его ещё нет. Будущий месяц отклоняется, граница считается в таймзоне торговой точки.

Записанное значение возвращается в by_months полем manual_turnover и участвует в расчёте OCR.

path Parameters
sc_id
string
Example: 6a7ed45be8b9e1300e7ed153
shop_id
string
Example: 6a7ed45be8b9e1300e7ed155
header Parameters
Accept
any
Example: application/json
Content-Type
any
Example: application/x-www-form-urlencoded
Request Body schema: application/x-www-form-urlencoded
Schema not provided

Responses

Request samples

Content type
application/x-www-form-urlencoded
month=2026-07-01&turnover=12345600&receipts_count=42&visitors_count=500

Response samples

Content type
application/json; charset=utf-8
{
  • "success": true,
  • "data": {
    }
}