Посты и комментарии
API для работы с постами в каналах типа CHANNEL и FORUM. Для каналов типа CHAT используются Сообщения.
PostResponse
{ "id": "post-uuid", "channelId": "channel-uuid", "authorId": "user-uuid", "authorFederation": "https://auth.example.com", "title": "Заголовок поста", "content": "Текст поста", "formData": null, "status": "OPEN", "tags": ["bug", "urgent"], "commentCount": 5, "createdAt": "2025-01-15T10:30:00Z", "editedAt": null }
Получение постов
GET /channels/{channelId}/posts
Требуется членство и право READ_MESSAGES.
Ответ (200): массив PostResponse.
Создание поста
POST /channels/{channelId}/posts
Права:
В каналах
CHANNEL: требуетсяMANAGE_CHANNELS(только админы публикуют)В каналах
FORUM: требуетсяSEND_MESSAGES(все участники)
Тело запроса:
{ "title": "Баг в авторизации", "content": "При входе через email возникает ошибка 500", "formData": "{\"bug_type\": \"Backend\", \"priority\": \"High\"}", "tags": ["bug", "auth"] }
Ответ (201): PostResponse. Рассылается событие post.new.
Валидация формы (FORUM)
Если у канала задан formTemplate, при создании поста валидируются обязательные поля. formData — JSON-объект {fieldName: value}.
Ошибки: NOT_FOUND, FORBIDDEN, VALIDATION_ERROR.
Получение поста
GET /channels/{channelId}/posts/{postId}
Ответ (200): PostResponse с commentCount.
Удаление поста
DELETE /channels/{channelId}/posts/{postId}
Автор или пользователь с правом MANAGE_MESSAGES.
Ответ (200): SuccessResponse. Событие post.deleted.
Комментарии
CommentResponse
{ "id": "comment-uuid", "postId": "post-uuid", "authorId": "user-uuid", "authorFederation": "https://auth.example.com", "content": "Текст комментария", "createdAt": "2025-01-15T11:00:00Z", "editedAt": null }
Список комментариев
GET /posts/{postId}/comments
Требуется членство и право READ_MESSAGES.
Ответ (200): массив CommentResponse, отсортированный по дате (ASC).
Создание комментария
POST /posts/{postId}/comments
Требуется право SEND_MESSAGES. Комментарии должны быть включены у канала (commentsEnabled: true).
Тело: {"content": "Мой комментарий"}
Ответ (201): CommentResponse. Событие comment.new.
Ошибки: NOT_FOUND, FORBIDDEN, VALIDATION_ERROR (пустой текст / комментарии отключены).
Редактирование комментария
PUT /posts/{postId}/comments/{commentId}
Только автор. Тело: {"content": "Обновлённый текст"}.
Ответ (200): CommentResponse.
Удаление комментария
DELETE /posts/{postId}/comments/{commentId}
Автор или пользователь с правом MANAGE_MESSAGES.
Ответ (200): SuccessResponse.