Базовые представления о получении статистики через stat.uni
Универсальная статистика позволяет получить информацию про переходы, открытия писем, тиражи выпусков и результаты доставки выпусков рассылок. Все представленные ниже примеры вы можете проверить самостоятельно в API-консоли, при необходимости изменив под ваши конкретные нужды.
Статистика по выпуску
Статистика по выпуску, которую вы видите в веб-интерфейсе Sendsay, получена из кэшированных данных — поэтому вы получаете эти сведения моментально.
Рассмотрим получение данных со всей базовой информацией по отправленным email-выпускам — например, за декабрь 2022 года:
{
	"action": "stat.uni",
	"result": "response",
	"select": ["issue.id", "issue.name", "issue.subject", "issue.dt:Ys", "issue.group.gid", "issue.group.name", "issue.members", "issue.deliv_ok", "issue.deliv_bad", "issue.readed", "issue.u_readed", "issue.clicked", "issue.u_clicked", "issue.unsubed"],
	"filter": [{
		"a": "issue.dt:Ys",
		"op": ">=",
		"v": "2022-12-01 00:00:00"
	}, {
		"a": "issue.dt:Ys",
		"op": "<=",
		"v": "2022-04-31 23:59:59"
	}, {
		"a": "issue.format",
		"op": "==",
		"v": "e"
	}],
	"order": ["-issue.dt:Ys"]
}
Статистика по выпускам заранее посчитана — и при необходимости вы можете запросить данные по всем отправленным выпускам за весь срок жизни ваш его аккаунта.
А чтобы, например, узнать количество отправленных писем с PDF-вложениями за конкретный период, можно получить количество отправленных писем с разбивкой по значению поля issue.features:
{
    "action": "stat.uni",
    "select": [
        "issue.features",
        "sum(issue.members)"
    ],
    "filter": [
        {
            "a": "issue.dt:YM",
            "op": "==",
            "v": "2022-12"
        },
        {
            "a": "issue.format",
            "op": "==",
            "v": "e"
        }
    ]
}
С помощью этого запроса вы получите количество отправленных email-выпусков за декабрь 2022 года. Полный набор и описание полей, описывающих выпуск рассылки issue.*, есть в документации.
Статистика для конкретного получателя
В отличие от статистики по выпуску, данные по конкретному получателю рассылок собираются и отдаются «на лету» — в момент выполнения запроса.
Данные о каждом типе событий хранятся каждая в своей области:
Нельзя в одном запросе добавить в select параметры, описывающие разные события.
Далее приведём примеры.
Все выпуски, отправленные за сегодня для конкретного емейла
{
    "action": "stat.uni",
    "result": "response",
    "select": [
        "deliv.member.email",
        "deliv.issue.id",
        "deliv.issue.name",
        "deliv.issue.dt",
        "deliv.status"
    ],
    "filter": [
        {
            "a": "deliv.member.email",
            "op": "==",
            "v": "my@secret.email"
        },
        {
            "a": "deliv.issue.dt:YD",
            "op": "==",
            "v": "CURRENT"
        }
    ]
}
Количество кликов по каждой ссылке за сегодня для конкретного емейла
{
    "action": "stat.uni",
    "result": "response",
    "select": [
        "click.member.email",
        "click.issue.id",
        "click.link.url",
        "count(*)"
    ],
    "filter": [
        {
            "a": "click.member.email",
            "op": "==",
            "v": "my@secret.email"
        },
        {
            "a": "click.issue.dt:YD",
            "op": "==",
            "v": "CURRENT"
        }
    ]
}
Если убрать из массива filter запроса объект, ограничивающий результаты конкретным емейлом, то в результате будут выведены все адреса, попадающие под оставшиеся условия запроса.
Общее количество строк в результате выполнения запроса не лимитируется, однако отправляемые запросы должны соответствовать базовым лимитам.
Вывод результата запроса
Результат запроса к stat.uni вы можете получить синхронно — в ответе на сам запрос, а также ассинхронно, — сохранив результат в файле.
Выбранный способ вывода зависит от предполагаемого времени выполнения запроса и количества строк в результате. В целом, ничего не мешает вывести в браузере сотню тысяч строк результата, но результат будет зависеть только от мощности вашего компьютера.
За результат выполнения запроса отвечает параметр result. В примерах выше ожидается синхронный ответ, и при выполнении запроса в API-консоли вы у видите результат на экране.
Если же вы трезво оцениваете сложность запроса и решили сохранить результат в файле, то вам стоит воспользоваться возможностями настройки параметра result API-запроса.
Сохранить в Файлы -> Отчеты -> stat.uni
"result": "save"
Сохранить результат запроса на внешний FTP в utf8
"result": [{
	"to": "ftp://login:password@ftp.yourserver/path/",
	"filename": "Clients",
	"format": "csv",
	"type": "url_file",
	"utf8": "1"
}]
Последовательность работы запроса stat.uni
- Сервер находит все строки, подходящие под условия, указанные в filter.
- Если указан order, то найденные строки сортируются по указанному правилу. Если порядок не указан, то данные выведутся без сортировки, каждый раз по-разному.
- Если указан skip, то из вывода исключается указанное количество найденных строк.
- Если указан first, то выводится указанное количество строк; если не указан — выводятся все найденные строки.