Edit Message
Mutation · editMessage
editMessage(content: String!, id: ID!): MessageView!
Sửa nội dung văn bản của một tin nhắn đã gửi. Người gửi phải còn là thành viên conversation; người khác không thể sửa tin. Nội dung mới có ít nhất một ký tự không phải khoảng trắng và dài tối đa 10.000 ký tự, kể cả khi tin có tệp đính kèm. Không thể sửa tin đã xóa mềm. Mutation giữ nguyên ID, sequence, người gửi, câu trả lời và tệp đính kèm; updatedAt phản ánh lần cập nhật. Server phát messageUpdated sau khi lưu để các client đang kết nối cập nhật bản tin.
Gửi mutation qua HTTP POST /graphql với Authorization: Bearer <accessToken>. Subscription là thông báo realtime; client có thể dùng messages hoặc messagesSince để đọc lại trạng thái đã lưu khi cần.
Input
| Đối số | Kiểu GraphQL | Bắt buộc | Quy tắc và ý nghĩa |
|---|---|---|---|
id | ID! | Có | UUID của tin nhắn cần sửa; không có giá trị mặc định. |
content | String! | Có | Văn bản mới, tối đa 10.000 ký tự và không chỉ gồm khoảng trắng. Không nhận null; không có giá trị mặc định. |
Output
Trả về MessageView!, không null, với nội dung và updatedAt mới. Các trường danh sách bên dưới không chứa phần tử null.
MessageView
| Trường | Kiểu GraphQL | Ý nghĩa |
|---|---|---|
id | ID! | ID tin nhắn trên server. |
clientMessageId | String! | ID client đã gửi. |
conversationId | ID! | Conversation chứa tin nhắn. |
senderId | ID! | Người gửi. |
sequence | Int! | Thứ tự tăng trong conversation. |
type | MessageType! | TEXT là tin do người dùng gửi; enum cũng có SYSTEM. |
content | String | Nội dung; có thể rỗng với tin chỉ có tệp, hoặc null khi tin đã xóa mềm. |
replyToMessageId | ID | ID tin được trả lời hoặc null. |
replyTo | MessageSummary | Tóm tắt tin được trả lời hoặc null; xem MessageSummary. |
createdAt | DateTime! | Thời điểm tạo. |
updatedAt | DateTime! | Thời điểm cập nhật. |
deletedAt | DateTime | Thời điểm xóa mềm hoặc null. |
attachments | [MessageAttachmentView!]! | Tệp đính kèm; danh sách và phần tử không null. Xem MessageAttachmentView. |
reactions | [ReactionSummary!]! | Phản ứng nhóm theo emoji; danh sách và phần tử không null. Xem ReactionSummary. |
MessageSummary
| Trường | Kiểu GraphQL | Ý nghĩa |
|---|---|---|
id | ID! | ID tin được trả lời. |
senderId | ID! | Người gửi tin đó. |
content | String | Nội dung hoặc null nếu đã xóa. |
deletedAt | DateTime | Thời điểm xóa mềm hoặc null. |
MessageAttachmentView
| Trường | Kiểu GraphQL | Ý nghĩa |
|---|---|---|
id | ID! | ID tệp đính kèm để lấy URL tải hoặc xem trước. |
fileName | String! | Tên tệp sau khi server xử lý. |
contentType | String! | MIME type đã lưu. |
size | Int! | Kích thước byte do client báo. |
ReactionSummary
| Trường | Kiểu GraphQL | Ý nghĩa |
|---|---|---|
emoji | String! | Emoji phản ứng. |
userIds | [ID!]! | ID người đã dùng emoji này; danh sách và phần tử không null. |
Ví dụ
mutation EditMessage($id: ID!, $content: String!) {
editMessage(id: $id, content: $content) {
id
clientMessageId
conversationId
senderId
sequence
type
content
replyToMessageId
replyTo { id senderId content deletedAt }
createdAt
updatedAt
deletedAt
attachments { id fileName contentType size }
reactions { emoji userIds }
}
}
Biến:
{
"id": "55555555-5555-4555-8555-555555555555",
"content": "Chào cả nhóm"
}
Phản hồi minh họa:
{
"data": {
"editMessage": {
"id": "55555555-5555-4555-8555-555555555555",
"clientMessageId": "send-005",
"conversationId": "33333333-3333-4333-8333-333333333333",
"senderId": "11111111-1111-4111-8111-111111111111",
"sequence": 5,
"type": "TEXT",
"content": "Chào cả nhóm",
"replyToMessageId": null,
"replyTo": null,
"createdAt": "2026-09-26T09:01:00.000Z",
"updatedAt": "2026-09-26T09:05:00.000Z",
"deletedAt": null,
"attachments": [],
"reactions": []
}
}
}
Thiếu hoặc sai access token trả UNAUTHENTICATED. ID sai định dạng, nội dung rỗng/toàn khoảng trắng hoặc quá dài, hay sửa tin đã xóa trả BAD_USER_INPUT; ID không tồn tại trả NOT_FOUND. Không còn là thành viên conversation hoặc không phải người gửi trả FORBIDDEN.
Chữ ký operation được tạo từ GraphQL schema.