AISARAISAR
REST API

Диалоги

Диалог (conversation) — карточка общения с одним контактом, объединяющая один или несколько тредов (переписок в конкретных каналах: WhatsApp, Telegram, Instagram и т.д.). Через эти эндпоинты вы ведёте жизненный цикл диалога — открываете и закрываете его, назначаете участников (операторов) через participants, добавляете внутренние заметки и метки, читаете единую хронологию событий (events) и тред-структуру. Большинство операций мутируют лог событий диалога, доступный через `GET /conversations/{id}/events`.

Эндпоинты

МетодПуть
GET/v1/conversations/counters

Счётчики диалогов по статусам (all/awaiting/unread/assigned/unassigned/archived).

GET/v1/conversations

Список диалогов компании с пагинацией и фильтрами.

POST/v1/conversations

Создать новый диалог для контакта.

GET/v1/conversations/{conversation}

Получить диалог по id (с контактом, тредами, участниками).

PATCH/v1/conversations/{conversation}

Обновить поля диалога (тема, статус жизненного цикла, архивация).

DELETE/v1/conversations/{conversation}

Удалить диалог (мягкое удаление).

POST/v1/conversations/{conversation}/close

Закрыть диалог с обязательным комментарием.

POST/v1/conversations/{conversation}/open

Открыть (переоткрыть) закрытый диалог.

POST/v1/conversations/{conversation}/archive

Архивировать диалог.

POST/v1/conversations/{conversation}/unarchive

Разархивировать диалог.

GET/v1/conversations/{conversation}/participants

Список участников диалога (операторы, команды, боты).

POST/v1/conversations/{conversation}/participants

Добавить участника — например назначить оператора ответственным (is_primary).

DELETE/v1/conversations/{conversation}/participants/{participant}

Удалить участника из диалога (снять назначение).

GET/v1/conversations/{conversation}/tags

Список меток диалога.

POST/v1/conversations/{conversation}/tags

Добавить метку к диалогу.

DELETE/v1/conversations/{conversation}/tags/{tag}

Снять метку с диалога.

GET/v1/conversations/{conversation}/notes

Список внутренних заметок по диалогу.

POST/v1/conversations/{conversation}/notes

Добавить внутреннюю заметку (не видна контакту).

PATCH/v1/conversations/{conversation}/notes/{note}

Изменить текст заметки.

DELETE/v1/conversations/{conversation}/notes/{note}

Удалить заметку.

GET/v1/conversations/{conversation}/events

Хронология событий диалога (создание, комментарии, смена статуса, назначения).

POST/v1/conversations/{conversation}/events

Записать событие в хронологию диалога (например комментарий оператора).

GET/v1/conversations/{conversation}/threads

Список тредов (переписок по каналам) внутри диалога.

POST/v1/conversations/{conversation}/threads

Создать новый тред в существующем диалоге для дополнительного канала.

POST/v1/conversations/mark-read

Пометить все (или указанные) диалоги компании прочитанными.

POST/v1/conversations/{conversation}/mark-read

Пометить конкретный диалог (или тред в нём) прочитанным.

Примеры

Список неназначенных диалогов

Запрос

bash
curl -X GET "https://api.aisar.app/v1/conversations?thread_filter=unassigned&perPage=20" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"

Ответ

json
{
  "data": {
    "items": [
      {
        "id": 15,
        "company_id": 1,
        "contact_id": 45,
        "subject": null,
        "lifecycle_status": "active",
        "is_closed": false,
        "is_archived": false,
        "last_message_id": 1001,
        "last_message_at": "2026-02-09T18:00:00Z",
        "last_message": { "id": 1001, "message_content": { "text": "Здравствуйте, подскажите по заказу" }, "direction": "inbound" },
        "unread_count_for_current_user": 1,
        "closed_at": null,
        "archived_at": null,
        "created_at": "2026-02-09T17:00:00Z",
        "updated_at": "2026-02-09T18:00:00Z",
        "contact": { "id": 45, "displayName": "John Doe", "phones": [{ "phone": "+77001234567", "type": "mobile" }] },
        "threads": [{ "id": 33, "channel_id": 3, "is_group": false }]
      }
    ],
    "pagination": { "page": 1, "perPage": 20, "total": 1, "lastPage": 1 },
    "counters": { "all": 120, "awaiting": 21, "unread": 14, "assigned": 47, "unassigned": 73, "archived": 9 }
  }
}

Закрытие диалога

Запрос

bash
curl -X POST "https://api.aisar.app/v1/conversations/15/close" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "comment": "Вопрос клиента решён, заказ подтверждён."
  }'

Ответ

json
{
  "data": {
    "message": "Conversation closed.",
    "conversation": {
      "id": 15,
      "lifecycle_status": "closed",
      "is_closed": true,
      "closed_at": "2026-02-09T18:20:00Z"
    }
  }
}