06.04.2026 22:55

Get

[POST] .../v1/chat/get

Возвращает список чатов с возможностью фильтрации и пагинации.

Входные параметры

Название Тип данных Обязательность Описание
ids Array of String Необязательный Массив UUID чатов
participant_entity_type Enum Необязательный Тип участника для фильтра (User, Client, ChatBot)
entity_type Enum Необязательный Тип связанной бизнес-сущности чата (Task, Lead, Deal, Ticket)
participant_entity_id Int64 Необязательный ID участника для фильтра
search String Необязательный Поиск по названию чата
closed Boolean Необязательный Фильтр по признаку закрытия чата
sort_orders Array of Object Необязательный Массив сортировок { column, direction }
limit Int32 Необязательный Лимит элементов выборки
offset Int32 Необязательный Смещение выборки

Ограничения и проверки

  • Фильтры participant_entity_type и participant_entity_id работают независимо и могут передаваться по отдельности.
  • Для participant_entity_id допустимы только значения больше 0.
  • При передаче closed выполняется фильтрация по признаку закрытия чата.
  • Фильтрация по participant_entity_type выполняется по таблице участников чата (ctlg_cht_participants_ref).
  • Фильтрация по participant_entity_type выполняется по таблице участников чата (ctlg_cht_participants_ref).
  • Фильтрация по entity_type выполняется по полю ctlg_cht_chats_ref.chtc_entity_type (чаты, связанные с бизнес-сущностями).
  • Если передан только participant_entity_id (без participant_entity_type), фильтрация выполняется только по таблице участников чата.
  • Параметр limit ограничивается серверным максимумом; при слишком большом значении используется допустимый предел.
  • Отрицательное значение offset автоматически приводится к 0.
  • Поиск по search применяется только если строка соответствует минимальной длине, заданной на сервере.
  • Сортировка применяется только если передан массив sort_orders.
  • Если sort_orders не передан или в нем нет валидных элементов, ORDER BY не добавляется.
  • Допустимые значения sort_orders[].column: name, last_message_date, last_update, created_user_id, id.
  • Допустимые значения sort_orders[].direction: ASC, DESC.
  • Возвращаются только чаты, к которым у текущего пользователя есть доступ.
  • В выборку не попадают удаленные чаты (chtc_deleted = 0).
  • Для обычных (не entity-bound) чатов пользователь с правом chat_manage_all (688) может читать чат без участия; в этом режиме unread_count = 0.
  • Для чатов, связанных с Lead/Deal/Ticket/Task, доступ наследуется от сущности: право Select у сущности заменяет chat_select.
  • Для entity-чатов право Edit у сущности дает полный доступ к сообщениям (включая staff/private).
  • Поле last_message_text заполняется текстом последнего видимого сообщения: для staff-only сообщений (Private, System + StaffNoticeAdded) не-Staff получает текст ближайшего доступного сообщения либо null.

Пример запроса

{
  "participant_entity_type": "User",
  "participant_entity_id": 15,
  "search": "поддержка",
  "sort_orders": [
    { "column": "last_message_date", "direction": "DESC" },
    { "column": "name", "direction": "ASC" }
  ],
  "limit": 20,
  "offset": 0
}

Выходные параметры

Название Тип данных Описание
result Array of Chat Массив чатов
next_offset Int32 Смещение для следующей страницы
total Int64 Общее количество элементов

Пример ответа

{
  "ok": true,
  "result": [
    {
      "id": "6f6fdb2f-7d0b-4c34-b6fd-1fbcf40d37ef",
      "name": "Чат клиентской поддержки",
      "logo_url": "https://example.com/chat/logo.png",
      "last_message_id": "9beec41f-6ef5-4e87-b4ea-05895cff2c54",
      "last_message_date": 1762011120,
      "last_message_text": "Здравствуйте, подскажите по заказу #501",
      "created_user_id": 15,
      "last_update": 1762011120,
      "closed": false,
      "closed_date": null,
      "entity_type": "Task",
      "entity_id": 501,
      "unread_count": 3,
      "participants": []
    }
  ],
  "next_offset": 20,
  "total": 1
}