22.06.2026 18:59

GetUnreadCounts

[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 }
  ]
}