Update Conversation
Mutation · updateConversation
updateConversation(input: UpdateConversationInput!): ConversationView!
Sửa tên hoặc mô tả của kênh PUBLIC hay PRIVATE. Mutation không dùng để sửa DM. Chỉ vai trò OWNER hoặc ADMIN trong kênh được sửa; quyền quản trị workspace không tự cấp quyền sửa kênh chưa tham gia. Sửa thông tin giữ nguyên updatedAt; query conversations vẫn sắp theo createdAt.
Gửi mutation qua HTTP POST /graphql với Authorization: Bearer <accessToken>. Cần đăng nhập và có vai trò kênh OWNER hoặc ADMIN.
Input
| Đối số | Kiểu GraphQL | Bắt buộc | Ý nghĩa |
|---|---|---|---|
input | UpdateConversationInput! | Có | ID kênh và trường cần sửa; không có giá trị mặc định. |
UpdateConversationInput
| Trường | Kiểu GraphQL | Bắt buộc | Quy tắc và ý nghĩa |
|---|---|---|---|
id | ID! | Có | UUID của kênh cần sửa. |
title | String | Không | 1–100 ký tự theo validation; server cắt khoảng trắng hai đầu, từ chối tên chỉ có khoảng trắng. Bỏ qua hoặc gửi null để giữ nguyên. Tên phải duy nhất trong workspace; không thể đổi tên kênh mặc định #general. |
description | String | Không | Tối đa 500 ký tự theo validation; server cắt khoảng trắng hai đầu. Bỏ qua để giữ nguyên; gửi null, "" hoặc chuỗi chỉ có khoảng trắng để xóa mô tả. |
Output
Trả về ConversationView! của kênh sau khi sửa, không null. updatedAt vẫn là giá trị trước mutation này.
ConversationView
| Trường | Kiểu GraphQL | Ý nghĩa |
|---|---|---|
id | ID! | ID conversation. |
workspaceId | ID! | Workspace chứa conversation. |
type | ConversationType! | CHANNEL là kênh; DIRECT là DM hai người. |
visibility | ConversationVisibility! | PUBLIC hoặc PRIVATE; DM là PRIVATE. |
isDefault | Boolean! | true với kênh mặc định #general. |
title | String | Tên kênh; DM thường là null. |
description | String | Mô tả kênh hoặc null. |
createdAt | DateTime! | Thời điểm tạo conversation. |
updatedAt | DateTime! | Thời điểm cập nhật được lưu của conversation. |
pinnedAt | DateTime | Thời điểm người gọi ghim conversation, hoặc null. |
muted | Boolean! | Lựa chọn tắt thông báo @mention của người gọi. |
lastMessageSequence | Int | Mốc sequence tin nhắn gần nhất, hoặc null nếu chưa có tin nhắn. |
members | [ConversationMemberView!]! | Thành viên conversation; danh sách và phần tử không null. Xem ConversationMemberView. |
ConversationMemberView
| Trường | Kiểu GraphQL | Ý nghĩa |
|---|---|---|
userId | ID! | ID người dùng. |
username | String! | Username. |
displayName | String! | Tên hiển thị. |
avatarUrl | String | URL ảnh đại diện hoặc null. |
role | MemberRole! | Vai trò trong conversation: OWNER, ADMIN hoặc MEMBER. |
lastReadSequence | Int! | Mốc sequence đã đọc của thành viên. |
Ví dụ
mutation UpdateConversation($input: UpdateConversationInput!) {
updateConversation(input: $input) {
id
workspaceId
type
visibility
isDefault
title
description
createdAt
updatedAt
pinnedAt
muted
lastMessageSequence
members {
userId
username
displayName
avatarUrl
role
lastReadSequence
}
}
}
Biến:
{
"input": {
"id": "33333333-3333-4333-8333-333333333333",
"title": " Thiết kế ",
"description": " Bản thiết kế và phản hồi "
}
}
Phản hồi minh họa:
{
"data": {
"updateConversation": {
"id": "33333333-3333-4333-8333-333333333333",
"workspaceId": "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa",
"type": "CHANNEL",
"visibility": "PRIVATE",
"isDefault": false,
"title": "Thiết kế",
"description": "Bản thiết kế và phản hồi",
"createdAt": "2026-09-20T09:00:00.000Z",
"updatedAt": "2026-09-24T10:00:00.000Z",
"pinnedAt": null,
"muted": false,
"lastMessageSequence": 4,
"members": [
{
"userId": "11111111-1111-4111-8111-111111111111",
"username": "an",
"displayName": "An",
"avatarUrl": null,
"role": "OWNER",
"lastReadSequence": 4
},
{
"userId": "22222222-2222-4222-8222-222222222222",
"username": "binh",
"displayName": "Bình",
"avatarUrl": null,
"role": "MEMBER",
"lastReadSequence": 2
}
]
}
}
}
Thiếu hoặc sai access token trả UNAUTHENTICATED. Người không phải owner/admin của kênh nhận FORBIDDEN; DM không hỗ trợ sửa. ID hoặc tên sai định dạng, tên rỗng sau khi cắt khoảng trắng hay đổi tên #general trả BAD_USER_INPUT. Tên kênh đã được dùng trong workspace trả CONFLICT với lỗi trường title.
Chữ ký operation được tạo từ GraphQL schema.