[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).chat_manage_all (688) может читать чат без участия; в этом режиме unread_count = 0.Lead/Deal/Ticket/Task, доступ наследуется от сущности: право Select у сущности заменяет chat_select.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
}