blob: ea2c4dfe2934ba83598b86833ed8ca4ec2f0ba1a [file] [log] [blame]
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
syntax = "proto3";
option optimize_for = LITE_RUNTIME;
package remoting.ftl;
// Enums
// This is exactly google.protobuf.Duration. The Chromium proto_library
// template has trouble importing protobuf outside the current directory.
message Duration {
int64 seconds = 1;
int32 nanos = 2;
}
message ApiVersion {
enum Value {
UNKNOWN = 0;
V4 = 4;
}
}
message Platform {
// Added the FTL_ prefix because OS names are polluted by Chromium macros.
enum Type {
UNKNOWN = 0;
FTL_ANDROID = 1;
FTL_IOS = 2;
FTL_TEST = 4;
FTL_DESKTOP = 6;
FTL_WEB = 7;
}
}
message IdType {
enum Type {
UNKNOWN = 0;
SYSTEM = 7;
EMAIL = 16;
}
}
message DeviceIdType {
enum Type {
UNKNOWN = 0;
WEB_UUID = 3;
CHROMOTING_HOST_ID = 6;
CLIENT_UUID = 7;
}
}
message SignInGaiaMode {
enum Value {
DEFAULT_CREATE_ACCOUNT = 0;
LOOKUP = 1;
LOOKUP_AND_SIGN_IN = 2;
}
}
message ChromotingCapability {
enum Feature {
UNKNOWN = 0;
SERIALIZED_XMPP_SIGNALING = 256;
WEBRTC_SIGNALING = 257;
}
}
message FtlCapability {
enum Feature {
UNKNOWN = 0;
RECEIVE_CALLS_FROM_GAIA = 86;
GAIA_REACHABLE = 87;
}
}
// Messages
message ClientInfo {
// Renamed from major, minor, point because they are defined in glibc macros.
int32 version_major = 3;
int32 version_minor = 4;
int32 version_point = 5;
ApiVersion.Value api_version = 7;
Platform.Type platform_type = 9;
}
message Id {
IdType.Type type = 1;
string id = 2;
string app = 3;
}
message RequestHeader {
string request_id = 1;
string app = 3;
bytes auth_token_payload = 6;
ClientInfo client_info = 7;
Id requester_id = 10;
}
message ResponseHeader {
uint64 rpc_global_id = 2;
int64 txn_timestamp_usec = 4;
}
message ICEServerList {
repeated string urls = 1;
string username = 2;
string credential = 3;
string hostname = 5;
int64 max_rate_kbps = 10;
}
message ICEConfiguration {
Duration lifetime_duration = 1;
repeated ICEServerList ice_servers = 2;
string ice_transport_policy = 6;
}
message DeviceId {
DeviceIdType.Type type = 1;
string id = 2;
}
message RegisterData {
DeviceId device_id = 1;
string locale = 8;
repeated int32 caps = 9;
}
message AuthToken {
bytes payload = 1;
int64 expires_in = 2;
}
message InboxMessage {
enum MessageType {
UNKNOWN = 0;
CHROMOTING_MESSAGE = 29;
}
enum MessageClass { USER = 0; }
string message_id = 1;
MessageType message_type = 2;
MessageClass message_class = 5;
Id sender_id = 8;
bytes sender_registration_id = 17;
Id receiver_id = 9;
bytes message = 12;
}
message ReceiverMessage {
string message_id = 1;
Id receiver_id = 2;
}
// Requests and responses
message GetICEServerRequest {
RequestHeader header = 1;
bool unblock_me = 2;
string ice_config_preference = 3;
}
message GetICEServerResponse {
ResponseHeader header = 1;
ICEConfiguration ice_config = 4;
}
message SignInGaiaRequest {
RequestHeader header = 1;
RegisterData register_data = 2;
SignInGaiaMode.Value mode = 3;
string app = 4;
}
message SignInGaiaResponse {
ResponseHeader header = 1;
bytes registration_id = 2;
AuthToken auth_token = 4;
}
message PullMessagesRequest {
RequestHeader header = 1;
}
message PullMessagesResponse {
ResponseHeader header = 1;
repeated InboxMessage messages = 2;
bool pulled_all = 3;
}
message AckMessagesRequest {
RequestHeader header = 1;
repeated ReceiverMessage messages = 4;
}
message AckMessagesResponse {
ResponseHeader header = 1;
}
message ReceiveMessagesRequest {
RequestHeader header = 1;
}
message ReceiveMessagesResponse {
message Pong {}
message StartOfBatch { int32 count = 1; }
message EndOfBatch {}
message RefreshResult {}
oneof body {
InboxMessage inbox_message = 2;
Pong pong = 3;
StartOfBatch start_of_batch = 4;
EndOfBatch end_of_batch = 5;
RefreshResult refresh_result = 6;
}
}
message InboxSendRequest {
Id dest_id = 1;
repeated bytes dest_registration_ids = 9;
InboxMessage message = 2;
RequestHeader header = 3;
int64 time_to_live = 5;
}
message InboxSendResponse {
ResponseHeader header = 1;
int64 timestamp = 2;
}