mirror of
https://github.com/mautrix/signal.git
synced 2026-09-17 08:12:05 -04:00
138 lines
4.3 KiB
Protocol Buffer
138 lines
4.3 KiB
Protocol Buffer
/*
|
|
* Copyright 2023 Signal Messenger, LLC
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
*/
|
|
|
|
syntax = "proto3";
|
|
|
|
option java_multiple_files = true;
|
|
|
|
package org.signal.chat.device;
|
|
|
|
import "google/protobuf/empty.proto";
|
|
|
|
import "org/signal/chat/common.proto";
|
|
import "org/signal/chat/errors.proto";
|
|
import "org/signal/chat/require.proto";
|
|
import "org/signal/chat/tag.proto";
|
|
|
|
// Provides methods for working with devices attached to a Signal account.
|
|
service Devices {
|
|
option (require.auth) = AUTH_ONLY_AUTHENTICATED;
|
|
|
|
// Returns a list of devices associated with the caller's account.
|
|
rpc GetDevices(GetDevicesRequest) returns (GetDevicesResponse) {}
|
|
|
|
// Removes a linked device from the caller's account.
|
|
//
|
|
// Linked devices may only remove themselves. Primary devices may remove
|
|
// any device other than themselves.
|
|
rpc RemoveDevice(RemoveDeviceRequest) returns (RemoveDeviceResponse) {}
|
|
|
|
// Sets the encrypted human-readable name for a specific devices. Primary
|
|
// devices may change the name of any device associated with their account,
|
|
// but linked devices may only change their own name. The response will
|
|
// indicate if the target device was not found.
|
|
rpc SetDeviceName(SetDeviceNameRequest) returns (SetDeviceNameResponse) {}
|
|
|
|
// Sets the token(s) the server should use to send new message notifications
|
|
// to the authenticated device.
|
|
rpc SetPushToken(SetPushTokenRequest) returns (SetPushTokenResponse) {}
|
|
|
|
// Removes any push tokens associated with the authenticated device. After
|
|
// calling this method, the server will assume that the authenticated device
|
|
// will periodically poll for new messages.
|
|
rpc ClearPushToken(ClearPushTokenRequest) returns (ClearPushTokenResponse) {}
|
|
|
|
// Declares that the authenticated device supports certain features.
|
|
rpc SetCapabilities(SetCapabilitiesRequest) returns (SetCapabilitiesResponse) {}
|
|
}
|
|
|
|
message GetDevicesRequest {}
|
|
|
|
message GetDevicesResponse {
|
|
message LinkedDevice {
|
|
// The identifier for the device within an account.
|
|
uint32 id = 1;
|
|
|
|
// A sequence of bytes that encodes an encrypted human-readable name for
|
|
// this device.
|
|
bytes name = 2;
|
|
|
|
// The approximate time, in milliseconds since the epoch, at which this
|
|
// device last connected to the server.
|
|
uint64 last_seen = 3;
|
|
|
|
// The registration ID of the given device.
|
|
uint32 registration_id = 4 [(require.range).max = 0x3fff];
|
|
|
|
// A sequence of bytes that encodes the time,
|
|
// in milliseconds since the epoch, at which this device was
|
|
// attached to its parent account.
|
|
bytes created_at_ciphertext = 5;
|
|
}
|
|
|
|
// A list of devices linked to the authenticated account.
|
|
repeated LinkedDevice devices = 1;
|
|
}
|
|
|
|
message RemoveDeviceRequest {
|
|
// The identifier for the device to remove from the authenticated account. The
|
|
// identifier must not be for the primary device.
|
|
uint32 id = 1;
|
|
}
|
|
|
|
message SetDeviceNameRequest {
|
|
// A sequence of bytes that encodes an encrypted human-readable name for this
|
|
// device.
|
|
bytes name = 1 [(require.size) = {min: 1, max: 225}];
|
|
|
|
// The identifier for the device for which to set a name.
|
|
uint32 id = 2;
|
|
}
|
|
|
|
message SetDeviceNameResponse {
|
|
oneof response {
|
|
// The device name was successfully set
|
|
google.protobuf.Empty success = 1;
|
|
|
|
// No device with the provided identifier was found on the account
|
|
errors.NotFound target_device_not_found = 2 [(tag.reason) = "not_found"];
|
|
}
|
|
}
|
|
|
|
message RemoveDeviceResponse {}
|
|
|
|
message SetPushTokenRequest {
|
|
message ApnsTokenRequest {
|
|
// A "standard" APNs device token.
|
|
string apns_token = 1 [(require.nonEmpty) = true];
|
|
}
|
|
|
|
message FcmTokenRequest {
|
|
// An FCM push token.
|
|
string fcm_token = 1 [(require.nonEmpty) = true];
|
|
}
|
|
|
|
oneof token_request {
|
|
// If present, specifies the APNs device token(s) the server will use to
|
|
// send new message notifications to the authenticated device.
|
|
ApnsTokenRequest apns_token_request = 1;
|
|
|
|
// If present, specifies the FCM push token the server will use to send new
|
|
// message notifications to the authenticated device.
|
|
FcmTokenRequest fcm_token_request = 2;
|
|
}
|
|
}
|
|
|
|
message SetPushTokenResponse {}
|
|
|
|
message ClearPushTokenRequest {}
|
|
|
|
message ClearPushTokenResponse {}
|
|
|
|
message SetCapabilitiesRequest {
|
|
repeated common.DeviceCapability capabilities = 1;
|
|
}
|
|
|
|
message SetCapabilitiesResponse {}
|