Tham chiếu API

Chat

Quản lý tin nhắn chat cục bộ, kênh và peers đã ghép nối. Tất cả thao tác GraphQL được gửi đến POST /graphql.

Định nghĩa kiểu

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!
}

Thao tác

query

chatItems

Lấy tất cả tin nhắn trong một cuộc trò chuyện. Thêm tiền tố "channel:" hoặc "peer:" vào id.

bash
query GetChatItems($id: String!) {
  chatItems(id: $id) {
    id fromId toId channelId
    content createdAt updatedAt status statusData
  }
}
query

latestChatItems

Lấy tin nhắn mới nhất từ mỗi cuộc trò chuyện (kênh + peers). Hữu ích cho việc xây dựng xem trước danh sách cuộc trò chuyện.

bash
query GetLatestChatItems {
  latestChatItems {
    id fromId toId channelId content createdAt updatedAt status
  }
}
query

chatChannels

Liệt kê tất cả kênh chat do thiết bị sở hữu hoặc đã tham gia.

bash
query GetChatChannels {
  chatChannels {
    id name owner version status createdAt updatedAt
    members { id status }
  }
}
query

peers

Liệt kê tất cả peers đã biết đã ghép nối với thiết bị này.

bash
query GetPeers {
  peers { id name ip status port deviceType createdAt updatedAt }
}
mutation

deletePeer

Xóa một bản ghi peer khỏi thiết bị này. Không hủy ghép nối ở phía từ xa; sử dụng unpairPeer để hủy ghép nối hai chiều sạch.

bash
mutation DeletePeer($id: ID!) {
  deletePeer(id: $id)
}
mutation

unpairPeer

Hủy ghép nối một thiết bị peer. Xóa trạng thái ghép nối trên thiết bị này và báo hiệu peer từ xa khi có thể truy cập.

bash
mutation UnpairPeer($id: ID!) {
  unpairPeer(id: $id)
}
query

appFiles

Danh sách phân trang các tệp được chia sẻ qua chat.

bash
query GetAppFiles($offset: Int!, $limit: Int!) {
  appFiles(offset: $offset, limit: $limit) {
    id size mimeType realPath fileName createdAt updatedAt
  }
}
query

appFileCount

Tổng số tệp được chia sẻ qua chat.

bash
query GetAppFileCount {
  appFileCount
}
mutation

sendChatItem

Gửi tin nhắn đến một kênh hoặc peer. Định dạng toId: "channel:<id>" hoặc "peer:<id>".

bash
mutation SendChatItem($toId: String!, $content: String!) {
  sendChatItem(toId: $toId, content: $content) {
    id fromId toId channelId content createdAt updatedAt status
  }
}
mutation

deleteChatItem

Xóa tin nhắn chat theo ID.

bash
mutation DeleteChatItem($id: ID!) {
  deleteChatItem(id: $id)
}
mutation

deleteChatItems

Xóa hàng loạt tin nhắn chat khớp với một query (ví dụ "id:msg_x,id:msg_y").

bash
mutation DeleteChatItems($query: String!) {
  deleteChatItems(query: $query)
}
mutation

retryChatItem

Thử gửi lại tin nhắn đã thất bại.

bash
mutation RetryChatItem($id: ID!) {
  retryChatItem(id: $id) { id status }
}
mutation

createChatChannel

Tạo một kênh mã hóa mới do thiết bị này sở hữu.

bash
mutation CreateChatChannel($name: String!) {
  createChatChannel(name: $name) {
    id name owner version status createdAt
  }
}
mutation

updateChatChannel

Đổi tên kênh chat.

bash
mutation UpdateChatChannel($id: ID!, $name: String!) {
  updateChatChannel(id: $id, name: $name) { id name version updatedAt }
}
mutation

deleteChatChannel

Xóa một kênh và tất cả tin nhắn của nó.

bash
mutation DeleteChatChannel($id: ID!) {
  deleteChatChannel(id: $id)
}
mutation

leaveChatChannel

Rời khỏi một kênh bạn không sở hữu.

bash
mutation LeaveChatChannel($id: ID!) {
  leaveChatChannel(id: $id)
}
mutation

addChatChannelMember

Mời một peer vào kênh bạn sở hữu.

bash
mutation AddMember($id: ID!, $peerId: String!) {
  addChatChannelMember(id: $id, peerId: $peerId) {
    id members { id status }
  }
}
mutation

removeChatChannelMember

Xóa một thành viên khỏi kênh bạn sở hữu.

bash
mutation RemoveMember($id: ID!, $peerId: String!) {
  removeChatChannelMember(id: $id, peerId: $peerId) {
    id members { id status }
  }
}
mutation

acceptChatChannelInvite

Chấp nhận lời mời tham gia kênh mà bạn được mời.

bash
mutation AcceptChatChannelInvite($id: ID!) {
  acceptChatChannelInvite(id: $id)
}
mutation

declineChatChannelInvite

Từ chối lời mời kênh đang chờ.

bash
mutation DeclineChatChannelInvite($id: ID!) {
  declineChatChannelInvite(id: $id)
}