[POST] .../v1/chat/getunreadcounts
Возвращает несколько агрегированных счетчиков непрочитанных сообщений текущего пользователя за один запрос.
Входные параметры
| Название | Тип данных | Обязательность | Описание |
|---|---|---|---|
| participant_entity_type | Enum | Необязательный | Общий тип участника для всех фильтров (User, Client, ChatBot) |
| participant_entity_id | Int64 | Необязательный | Общий ID участника для всех фильтров |
| filters | Array of Object | Обязательный | Список именованных фильтров для расчета счетчиков |
| filters[].key | String | Обязательный | Ключ счетчика, который возвращается в ответе без изменения |
| filters[].ids | Array of String | Необязательный | Массив UUID чатов |
| filters[].external_id | String | Необязательный | Внешний идентификатор чата для точной фильтрации |
| filters[].chat_type | Enum | Необязательный | Тип чата: Group, Individual или Channel |
| filters[].participant_entity_type | Enum | Необязательный | Тип участника для фильтра (User, Client, ChatBot) |
| filters[].participant_entity_id | Int64 | Необязательный | ID участника для фильтра |
| filters[].entity_type | Enum | Необязательный | Тип связанной бизнес-сущности чата (Task, Lead, Deal, Ticket) |
| filters[].entity_bound | Boolean | Необязательный | Фильтр по признаку связи чата с бизнес-сущностью |
| filters[].search | String | Необязательный | Поиск по названию чата |
| filters[].closed | Boolean | Необязательный | Фильтр по признаку закрытия чата |
| filters[].archived | Boolean | Необязательный | Фильтр по признаку архивации чата текущим пользователем |
| filters[].pinned | Boolean | Необязательный | Фильтр по признаку закрепления чата текущим пользователем |
Ограничения и проверки
filters[] возвращается отдельным элементом результата с тем же key.filters[] ограничено серверными настройками.result соответствует порядку элементов в filters.unread_count = 0 остаются в ответе.participant_entity_type и participant_entity_id применяются ко всем фильтрам, если в конкретном filters[] не передано собственное значение.participant_entity_id допустимы только значения больше 0.Chat/Get: archived и pinned учитывают персональное состояние текущего пользователя, entity_bound разделяет чаты со связанной бизнес-сущностью и без неё.Chat/Get.Пример запроса
{
"participant_entity_id": 123,
"filters": [
{ "key": "chat", "archived": false, "entity_bound": false },
{ "key": "ticket", "archived": false, "entity_bound": true, "entity_type": "Ticket" },
{ "key": "lead", "archived": false, "entity_bound": true, "entity_type": "Lead" },
{ "key": "deal", "archived": false, "entity_bound": true, "entity_type": "Deal" },
{ "key": "task", "archived": false, "entity_bound": true, "entity_type": "Task" },
{ "key": "archived", "archived": true },
{ "key": "all", "archived": false }
]
}
Выходные параметры
| Название | Тип данных | Описание |
|---|---|---|
| result | Array of Object | Массив счетчиков непрочитанных сообщений |
| result[].key | String | Ключ счетчика из запроса |
| result[].unread_count | Int64 | Количество непрочитанных сообщений по фильтру |
Пример ответа
{
"ok": true,
"result": [
{ "key": "chat", "unread_count": 3 },
{ "key": "ticket", "unread_count": 8 },
{ "key": "lead", "unread_count": 0 },
{ "key": "deal", "unread_count": 0 },
{ "key": "task", "unread_count": 1 },
{ "key": "archived", "unread_count": 0 },
{ "key": "all", "unread_count": 12 }
]
}