Сообщения

API для работы с сообщениями в каналах типа CHAT. Для каналов типа CHANNEL и FORUM используются Посты.

MessageResponse

{ "id": "message-uuid", "channelId": "channel-uuid", "authorId": "user-uuid", "authorFederation": "https://auth.example.com", "content": "Привет!", "parentMessageId": null, "replyCount": 3, "createdAt": "2025-01-15T10:30:00Z", "editedAt": null }

Поле

Тип

Описание

parentMessageId

string?

ID родительского сообщения (для тредов)

replyCount

long

Количество ответов в треде (0 для ответов)

Получение сообщений

GET /channels/{channelId}/messages

Требуется членство в канале и право READ_MESSAGES. Канал должен быть типа CHAT.

Параметр

Тип

Описание

limit

int

Количество (1-100, по умолчанию 50)

before

UUID

Пагинация: сообщения до указанного ID

rootOnly

boolean

Только корневые сообщения, без ответов в тредах (по умолчанию false)

Ответ (200): массив MessageResponse.

Режим тредов

В каналах с chatMode: THREAD сообщения могут быть корневыми или ответами в треде:

  • rootOnly=true — возвращает только корневые сообщения (у которых parentMessageId = null)

  • rootOnly=false (по умолчанию) — все сообщения в хронологическом порядке

Получение ответов в треде

GET /messages/{messageId}/replies

Возвращает ответы на конкретное сообщение. Требуется членство в канале.

Параметр

Тип

Описание

limit

int

Количество (1-100, по умолчанию 50)

before

UUID

Пагинация

Ответ (200): массив MessageResponse, отсортированный по дате (ASC).

Отправка сообщения

POST /channels/{channelId}/messages

Требуется членство в канале и право SEND_MESSAGES. Канал должен быть типа CHAT.

Тело запроса:

{ "content": "Привет!", "parentMessageId": "parent-message-uuid" }

Поле

Тип

Обязательное

Описание

content

string

да

Текст сообщения (не пустой)

parentMessageId

string

нет

ID сообщения для ответа в треде

Ответ (201): MessageResponse.

Рассылается WebSocket-событие message.new.

Правила тредов

  • parentMessageId принимается только в каналах с chatMode: THREAD

  • Родительское сообщение должно быть в том же канале

  • Вложенные треды не поддерживаются (нельзя ответить на ответ)

Ошибки:

Код

Описание

NOT_FOUND

Канал или родительское сообщение не найдено

FORBIDDEN

Не участник / нет прав

VALIDATION_ERROR

Пустое содержимое / треды не поддерживаются / вложенный тред

MESSAGE_TOO_LONG

Превышена максимальная длина

Редактирование сообщения

PUT /channels/{channelId}/messages/{messageId}

Только автор. Тело: {"content": "Новый текст"}.

Ответ (200): обновлённый MessageResponse. Событие message.edited.

Удаление сообщения

DELETE /channels/{channelId}/messages/{messageId}

Автор или пользователь с правом MANAGE_MESSAGES.

Ответ (200): SuccessResponse. Событие message.deleted.