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, portal_unavailable, query_timeout и internal_error.

Тарифы

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

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

Заявки и пропуска портала — исключение: они доступны на любом тарифе, и пределы периода и свежести к ним не применяются, период может быть любым. Объём одного ответа там ограничивает per_page, а не тариф. Лимиты частоты действуют наравне с остальными методами.

Форматы

Денежные суммы — целые копейки. Даты в параметрах — 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: 6abcc5b5ece0d1732eefcc63
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: 6abcc5b6ece0d1732eefcc79
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-09-29&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; zone (с zone_id из справочника зон) и shop (с shop_id) — только PRO. Неподходящее тарифу значение — 403 plan_required.

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

path Parameters
sc_id
string
Example: 6abcc5b6ece0d1732eefcc7f
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": "7cec0f36-a328-4cfb-8bf2-7ab7ed01cada",
  • "client_secret": "v2-client-secret-000000000000000000000000000000"
}

Response samples

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

Events v2

Register an event of the shopping centre

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

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

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

path Parameters
sc_id
string
Example: 6abcc5b7ece0d1732eefcc90
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-09-30&end_date=2026-10-03&shop_ids[]=6abcc5b7ece0d1732eefcc92

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: 6abcc5b8ece0d1732eefcca8
shop_id
string
Example: 6abcc5b8ece0d1732eefccaa
header Parameters
Accept
any
Example: application/json

Responses

Response samples

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

Portal passes v2

Portal passes registry

Пропуска арендаторов для реестра ЧОПа. Доступны на любом тарифе. Передаётся не больше одной полной пары периода: start_created_date/end_created_date или start_active_date/end_active_date. Active-период выбирает пропуска, срок действия которых пересекается с запрошенным периодом — пропуск, оформленный заранее, по дате создания в смену не попадёт. Пара обязательна, кроме выборки по ticket_uids (до 500 номеров, можно сочетать с периодом). Опциональный фильтр statuses[]. Без фильтра возвращаются все статусы и архивные записи. Номер пропуска — id пропуска в портале арендаторов. author — автор связанной заявки, а для пропуска без заявки — создатель пропуска. Идентификатор автора строковый и совпадает с его id в main. Номера из ticket_uids, которых нет в этом ТЦ, игнорируются: в ответ попадают пропуска только по найденным заявкам. Результат отсортирован от новых пропусков к старым.

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

Responses

Response samples

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

Portal tickets v2

Portal tickets registry

Заявки арендаторов для реестра ЧОПа. Доступны на любом тарифе. Выборка задаётся либо ровно одной полной парой периода (start_created_date/end_created_date или start_active_date/end_active_date), либо списком ticket_uids[] (до 100 номеров). Active-период выбирает заявки, интервалы действия которых пересекаются с запрошенным периодом. Длина периода не ограничена. Неизвестные номера в ticket_uids[] игнорируются — в ответ попадают только найденные заявки. Опциональный фильтр statuses[]. Без фильтра возвращаются все статусы, включая архивные записи. Каждый элемент содержит бизнес-тип заявки (ticket_type с вложенным children либо null), параметры с выбранными значениями, торговую точку, арендатора, автора, дополнительные поля и условия согласования — отдельного запроса за деталями заявки нет. parameters — параметры и их значения; значение, которое пользователь не выбирал, в ответ не попадает, у такого параметра values пустой. custom_fields не содержат файлов и ссылок на них: у файловых полей value всегда null. У option-полей ответ лежит в selected_options. agreement_comments — условия согласования объектами {id, body, created_at}; условия ставят разные отделы, поэтому возвращаются все, а не последнее. Пагинация: page (1), per_page (50, максимум 100). Результат отсортирован от новых заявок к старым.

path Parameters
sc_id
string
Example: 6abcc5b9ece0d1732eefcccb
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: 6abcc5b9ece0d1732eefccd1
shop_id
string
Example: 6abcc5b9ece0d1732eefccd3
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: 6abcc5baece0d1732eefcd0c
shop_id
string
Example: 6abcc5baece0d1732eefcd0e
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: 6abcc5bbece0d1732eefcd4f
shop_id
string
Example: 6abcc5bbece0d1732eefcd51
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: 6abcc5bbece0d1732eefcd76
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-09-29T12%3A00%3A00&data[][in]=120&data[][out]=90&data[][datetime]=2026-09-29T13%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 для отчётов и выгрузки чеков. У каждой точки — объект renter с данными арендатора: id, legal_name, inn, kpp и признаком подрядчика is_contractor. Если арендатора нет — renter равен null. Пагинация page/per_page (по умолчанию 100, максимум 500), метаданные в meta.pagination. Архивные точки по умолчанию не отдаются. Чтобы получить их вдобавок к действующим, передайте archived=true; отличать их можно по полю is_archived.

path Parameters
sc_id
string
Example: 6abcc5bcece0d1732eefcd88
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: 6abcc5bdece0d1732eefcdb4
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: 6abcc5bdece0d1732eefcdc7
shop_id
string
Example: 6abcc5bdece0d1732eefcdca
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: 6abcc5bdece0d1732eefcdda
shop_id
string
Example: 6abcc5bdece0d1732eefcddc
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-08-01&turnover=12345600&receipts_count=42&visitors_count=500

Response samples

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