API リファレンス

Pairing

このデバイスを発見された peer とペアリングし、LAN / Wi-Fi Aware 経由で暗号化されたチャットメッセージとファイルを交換できるようにします。ペアリングは両側で確認する必要があります——ここで pairDevice を呼び出し、その後リモートデバイスに respondToPairing を呼び出させます。

型定義

bash
input PairingDeviceInput {
  id: String!                 # remote device id (from discovery)
  name: String!               # remote display name
  ips: [String!]              # known IP addresses
  port: Int!                  # remote HTTP port
  deviceType: DeviceType!     # PHONE | TABLET | DESKTOP | WEB | ...
  version: String!
  platform: String!
  lastSeen: String!           # ISO 8601
  discoveryMethods: [String!] # LAN | AWARE | BLE | ...
}

input PairingRequestInput {
  fromId: String!
  fromName: String!
  port: Int!
  deviceType: DeviceType!
  ecdhPublicKey: String!      # base64 ECDH public key for key exchange
  signaturePublicKey: String! # base64 Ed25519 signing key
  timestamp: Long!            # request creation time (millis)
  ips: [String!]
  signature: String           # signature over the request body
  fromIp: String
  isQrInitiated: Boolean      # true when triggered by QR scan
  awareSupported: Boolean     # remote supports Wi-Fi Aware
}

enum DeviceType { PHONE TABLET DESKTOP WEB OTHER }

操作

mutation

pairDevice

発見された LAN デバイスとのペアリングを開始します。リモートデバイスにペアリングリクエストを送信します。セキュアチャネルが確立される前に、リモートデバイスが respondToPairing で承諾する必要があります。

bash
mutation PairDevice($input: PairingDeviceInput!) {
  pairDevice(input: $input)
}
mutation

cancelPairing

このデバイスによって開始された進行中のペアリングをキャンセルします。発見スキャンから返されたリモート deviceId を渡します。

bash
mutation CancelPairing($deviceId: String!) {
  cancelPairing(deviceId: $deviceId)
}
mutation

respondToPairing

着信ペアリングリクエストに応答します——承諾 (true) または拒否 (false)。承諾すると、デバイスは共有 ECDH 鍵を導出し、暗号化チャット用に peer を登録します。

bash
mutation RespondToPairing($input: PairingRequestInput!, $accepted: Boolean!) {
  respondToPairing(input: $input, accepted: $accepted)
}