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 GraphQLBắt buộcÝ nghĩa
inputUpdateConversationInput!CóID kênh và trường cần sửa; không có giá trị mặc định.

UpdateConversationInput

TrườngKiểu GraphQLBắt buộcQuy tắc và ý nghĩa
idID!CóUUID của kênh cần sửa.
titleStringKhông1–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.
descriptionStringKhôngTố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ườngKiểu GraphQLÝ nghĩa
idID!ID conversation.
workspaceIdID!Workspace chứa conversation.
typeConversationType!CHANNEL là kênh; DIRECT là DM hai người.
visibilityConversationVisibility!PUBLIC hoặc PRIVATE; DM là PRIVATE.
isDefaultBoolean!true với kênh mặc định #general.
titleStringTên kênh; DM thường là null.
descriptionStringMô tả kênh hoặc null.
createdAtDateTime!Thời điểm tạo conversation.
updatedAtDateTime!Thời điểm cập nhật được lưu của conversation.
pinnedAtDateTimeThời điểm người gọi ghim conversation, hoặc null.
mutedBoolean!Lựa chọn tắt thông báo @mention của người gọi.
lastMessageSequenceIntMố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ườngKiểu GraphQLÝ nghĩa
userIdID!ID người dùng.
usernameString!Username.
displayNameString!Tên hiển thị.
avatarUrlStringURL ảnh đại diện hoặc null.
roleMemberRole!Vai trò trong conversation: OWNER, ADMIN hoặc MEMBER.
lastReadSequenceInt!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.