Set Conversation Pinned
Mutation · setConversationPinned
setConversationPinned(conversationId: ID!, pinned: Boolean!): ConversationView!
Ghim hoặc bỏ ghim một DM hay kênh cho riêng người gọi. Ghim lần đầu lưu thời điểm vào pinnedAt; gọi lại với true giữ nguyên thời điểm đó, còn false xóa nó. Thành viên khác không bị ảnh hưởng. Query conversations vẫn sắp theo thời điểm tạo conversation; client có thể dùng pinnedAt để trình bày các mục đã ghim.
Gửi mutation qua HTTP POST /graphql với Authorization: Bearer <accessToken>. Cần đăng nhập và là thành viên của conversation; GUEST có thể ghim conversation mà họ đã được thêm vào.
Input
| Đối số | Kiểu GraphQL | Bắt buộc | Quy tắc và ý nghĩa |
|---|---|---|---|
conversationId | ID! | Có | UUID của DM hoặc kênh; không có giá trị mặc định. |
pinned | Boolean! | Có | true để ghim, false để bỏ ghim. Không nhận null; không có giá trị mặc định. |
Output
Trả về ConversationView!, không null; pinnedAt là thời điểm ghim của người gọi hoặc null khi bỏ ghim.
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 SetConversationPinned($conversationId: ID!, $pinned: Boolean!) {
setConversationPinned(conversationId: $conversationId, pinned: $pinned) {
id
workspaceId
type
visibility
isDefault
title
description
createdAt
updatedAt
pinnedAt
muted
lastMessageSequence
members {
userId
username
displayName
avatarUrl
role
lastReadSequence
}
}
}
Biến:
{
"conversationId": "33333333-3333-4333-8333-333333333333",
"pinned": true
}
Phản hồi minh họa:
{
"data": {
"setConversationPinned": {
"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": "2026-09-26T11:00:00.000Z",
"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. ID sai định dạng trả BAD_USER_INPUT; người không phải thành viên conversation nhận FORBIDDEN. Gọi với pinned: false khi chưa ghim vẫn trả pinnedAt: null.
Chữ ký operation được tạo từ GraphQL schema.