GET /api/external/v2/sc/{sc_id}/attendance BASIC +PRO разрезы
Параметры#
| Имя | Тип | Обяз. | По умолчанию | Значения |
|---|---|---|---|---|
sc_id | string, в пути | да | — | Идентификатор центра |
start_date | date | да | — | YYYY-MM-DD |
end_date | date | да | — | YYYY-MM-DD, не раньше start_date |
granularity | string | нет | day | day, week, month, hour |
scope | string | нет | sc | sc, zone, shop |
zone_id | integer | при scope=zone | — | Идентификатор из зон подсчёта |
shop_id | string | при scope=shop | — | Идентификатор точки этого центра |
Что закрыто тарифом#
| Значение | Тариф |
|---|---|
granularity = day, week, month | Basic |
granularity = hour | PRO |
scope = sc | Basic |
scope = zone или shop | PRO |
Гейт стоит на значении параметра, а не на маршруте: иначе Basic остался бы вовсе без посещаемости.
Ограничения периода#
Тарифное окно такое же, как везде: Basic 31 день и данные до вчера, PRO 366 дней и
сегодня. Сверх этого для granularity=hour действует собственное окно в 31 день
независимо от тарифа: час за год это около девяти тысяч строк в одном ответе.
Ответ#
| Поле | Тип | Описание |
|---|---|---|
date | string | Метка периода. YYYY-MM-DD для дня, недели и месяца; ISO 8601 со смещением зоны центра для часа |
visitors_in | integer | Вошедших |
visitors_out | integer | Вышедших. Для данных, введённых вручную, всегда 0 |
{
"success": true,
"data": [
{
"date": "2026-07-30T12:00:00+03:00",
"visitors_in": 431,
"visitors_out": 388
},
{
"date": "2026-07-30T13:00:00+03:00",
"visitors_in": 502,
"visitors_out": 461
}
],
"meta": {
"granularity": "hour",
"scope": "sc",
"time_zone": "Europe/Moscow"
}
}meta возвращает применённые granularity и scope, по ним удобно проверить, что
параметры дошли так, как задумано.
Пустой ответ не означает ошибку#
{"success": true, "data": []} при 200 означает, что запрошенный объект не покрыт
зоной подсчёта: у центра нет зоны типа shopping_center, либо точка не попадает ни
в одну зону типа sell_location. Это отличается от traffic_unavailable намеренно:
там сбой, здесь оборудования просто нет.
Про часы#
Час в ответе это местный час торгового центра. Полдень в данных остаётся полднем в центре и получает его смещение, а не пересчитывается из UTC.
Ошибки#
| Код | HTTP | Когда |
|---|---|---|
plan_required | 403 | granularity=hour или scope = zone/shop на Basic |
traffic_not_configured | 404 | В центре не настроена система подсчёта |
not_found | 404 | Зона или точка не принадлежит этому центру |
too_long_date | 422 | Почасовой разрез шире 31 дня |
period_too_long | 422 | Период больше тарифного окна |
fresh_data_requires_pro | 422 | На Basic запрошен сегодняшний день |
traffic_unavailable | 503 | Сбой подсистемы подсчёта. Повторить с задержкой |