API 參考
Chat
管理本地聊天訊息、頻道和已配對的 peers。所有 GraphQL 操作均傳送至 POST /graphql。
型別定義
bash
type ChatItem {
id: ID!
fromId: String! # "me" | peerId
toId: String! # peerId (direct) | "" (channel)
channelId: String! # "" for direct messages
content: String! # JSON-encoded message payload
createdAt: String! # ISO 8601
updatedAt: String!
status: String! # "sent" | "pending" | "failed"
statusData: String! # extra info on failure
}
type ChatChannel {
id: String!
name: String!
owner: String! # "me" | peerId
members: [ChatChannelMember!]!
version: Int!
status: String! # "active" | "left"
createdAt: String!
updatedAt: String!
}
type ChatChannelMember {
id: String!
status: String! # "active" | "pending"
}
type Peer {
id: String!
name: String!
ip: String!
status: String! # "online" | "offline"
port: Int!
deviceType: String! # "phone" | "tablet" | "pc"
createdAt: String!
updatedAt: String!
}
type AppFile {
id: ID!
size: Int! # bytes
mimeType: String!
realPath: String!
fileName: String!
createdAt: String!
updatedAt: String!
}操作
query
chatItems
取得某個對話中的所有訊息。請在 id 前加上 "channel:" 或 "peer:" 前綴。
bash
query GetChatItems($id: String!) {
chatItems(id: $id) {
id fromId toId channelId
content createdAt updatedAt status statusData
}
}query
latestChatItems
取得每個對話(頻道 + peers)的最新訊息。適用於構建對話清單預覽。
bash
query GetLatestChatItems {
latestChatItems {
id fromId toId channelId content createdAt updatedAt status
}
}query
chatChannels
列出該裝置擁有或加入的所有聊天頻道。
bash
query GetChatChannels {
chatChannels {
id name owner version status createdAt updatedAt
members { id status }
}
}query
peers
列出所有已與該裝置配對的已知 peers。
bash
query GetPeers {
peers { id name ip status port deviceType createdAt updatedAt }
}mutation
deletePeer
從該裝置刪除 peer 記錄。不會在遠端取消配對;如需乾淨的雙向取消配對請使用 unpairPeer。
bash
mutation DeletePeer($id: ID!) {
deletePeer(id: $id)
}mutation
unpairPeer
取消配對 peer 裝置。清除本裝置的配對狀態,並在可達時通知遠端 peer。
bash
mutation UnpairPeer($id: ID!) {
unpairPeer(id: $id)
}query
appFiles
透過聊天共享的檔案的分頁清單。
bash
query GetAppFiles($offset: Int!, $limit: Int!) {
appFiles(offset: $offset, limit: $limit) {
id size mimeType realPath fileName createdAt updatedAt
}
}query
appFileCount
透過聊天共享的檔案總數。
bash
query GetAppFileCount {
appFileCount
}mutation
sendChatItem
向某個頻道或 peer 傳送訊息。toId 格式:"channel:<id>" 或 "peer:<id>"。
bash
mutation SendChatItem($toId: String!, $content: String!) {
sendChatItem(toId: $toId, content: $content) {
id fromId toId channelId content createdAt updatedAt status
}
}mutation
deleteChatItem
依 ID 刪除聊天訊息。
bash
mutation DeleteChatItem($id: ID!) {
deleteChatItem(id: $id)
}mutation
deleteChatItems
批次刪除符合查詢的聊天訊息(例如 "id:msg_x,id:msg_y")。
bash
mutation DeleteChatItems($query: String!) {
deleteChatItems(query: $query)
}mutation
retryChatItem
重新傳送失敗的訊息。
bash
mutation RetryChatItem($id: ID!) {
retryChatItem(id: $id) { id status }
}mutation
createChatChannel
建立由該裝置擁有的新加密頻道。
bash
mutation CreateChatChannel($name: String!) {
createChatChannel(name: $name) {
id name owner version status createdAt
}
}mutation
updateChatChannel
重新命名聊天頻道。
bash
mutation UpdateChatChannel($id: ID!, $name: String!) {
updateChatChannel(id: $id, name: $name) { id name version updatedAt }
}mutation
deleteChatChannel
刪除頻道及其所有訊息。
bash
mutation DeleteChatChannel($id: ID!) {
deleteChatChannel(id: $id)
}mutation
leaveChatChannel
退出你非擁有者的頻道。
bash
mutation LeaveChatChannel($id: ID!) {
leaveChatChannel(id: $id)
}mutation
addChatChannelMember
邀請 peer 加入你擁有的頻道。
bash
mutation AddMember($id: ID!, $peerId: String!) {
addChatChannelMember(id: $id, peerId: $peerId) {
id members { id status }
}
}mutation
removeChatChannelMember
從你擁有的頻道中移除成員。
bash
mutation RemoveMember($id: ID!, $peerId: String!) {
removeChatChannelMember(id: $id, peerId: $peerId) {
id members { id status }
}
}mutation
acceptChatChannelInvite
接受加入你被邀請的頻道的邀請。
bash
mutation AcceptChatChannelInvite($id: ID!) {
acceptChatChannelInvite(id: $id)
}mutation
declineChatChannelInvite
拒絕待處理的頻道邀請。
bash
mutation DeclineChatChannelInvite($id: ID!) {
declineChatChannelInvite(id: $id)
}