Получение статистики через Sendsay API
Универсальная статистика stat.uni — основной инструмент для получения статистических данных из CDP Sendsay через API: переходы, открытия, тиражи выпусков, результаты доставки, стоп-листы, формы и другое.
Вызов stat.uni предназначен для выборок статистики по многим объектам, а не для отслеживания отдельных писем в реальном времени.
Структура запроса
{
"apikey": "ваш-api-ключ",
"action": "stat.uni",
"select": ["поле1", "поле2", "функция(поле3)"],
"filter": [{ "a": "поле", "op": "оператор", "v": "значение" }],
"order": ["по ле1", "-поле2"],
"skip": 0,
"first": 100
}
Основные параметры
| Параметр | Описание |
|---|---|
select | Обязательно. Список полей и/или функций агрегирования |
filter | Условия фильтрации. Все элементы объединяются через AND |
have | Дополнительный фильтр после агрегирования (синтаксис как у filter) |
order | Сортировка. Префикс - — по убыванию, + или без префикса — по возрастанию |
skip | Пропустить N строк от начала (по умолчанию 0) |
first | Количество строк после пропуска (по умолчанию все) |
caption | Массив заголовков столбцов (для CSV/XLSX) |
result | Способ возврата результата |
Поля и функции в select
Простые поля
"select": ["issue.id", "issue.subject", "issue.dt", "issue.members"]
Поля дат с точностью
Поля с датами поддерживают указание точности в формате dt:HL, где H — старший компонент, L — младший (из набора Y, M, D, h, m, s):
"select": ["issue.dt:YM", "issue.dt:YD"]
Примеры:
dt:YM— год и месяц,dt:Yh— от года до часа,dt:YY— только год.
Специальные производные от даты:
dt:DOW(день недели, 1–7),dt:DOY(день года),dt:WOY(неделя года, форматYYYY-Ww),dt:CW1D(первый день недели).
Функции агрегирования
"select": ["deliv.issue.id", "count(*)", "max(deliv.letter.dt)"]
Доступные функции:
count(*),count(unique поле),max(),min(),avg(),sum(),range(),stdev(),variance().
Перед именем поля в функциях можно использовать префикс unique.
Поле не может одновременно быть в списке выборки и использоваться в функциях агрегирования. Функция sum() для полей, хранящих уникальные счётчики (например, issue.u_readed), вернёт "NaN".