chromium/chrome/browser/nearby_sharing/instantmessaging/proto/instantmessaging.proto

// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Brought at CL 316140872

syntax = "proto3";

package chrome_browser_nearby_sharing_instantmessaging;

// Required in Chrome.
option optimize_for = LITE_RUNTIME;

message InboxMessage {
  string message_id = 1;

  enum MessageType {
    UNKNOWN = 0;
    BASIC = 4;
  }
  MessageType message_type = 2;

  bytes message = 12;

  enum MessageClass {
    USER = 0;
    EPHEMERAL = 2;
  }
  MessageClass message_class = 5;
}

message IdType {
  enum Type {
    UNSET = 0;
    NEARBY_ID = 27;
  }
}

// TODO(crbug.com/40154496): Replace with LocationStandard message from
// //third_party/nearby/src/proto/connections/offline_wire_formats.proto if
// possible.
message LocationStandard {
  enum Format {
    UNKNOWN = 0;
    // E164 country codes:
    // https://en.wikipedia.org/wiki/List_of_country_calling_codes
    // e.g. +1 for USA
    E164_CALLING = 1;

    // ISO 3166-1 alpha-2 country codes:
    // https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
    ISO_3166_1_ALPHA_2 = 2;
  }
}

// LocationHint is used to specify a location as well as format.
// TODO(crbug.com/40154496): Replace with LocationHint message from
// //third_party/nearby/src/proto/connections/offline_wire_formats.proto if
// possible.
message LocationHint {
  // Location is the location, provided in the format specified by format.
  string location = 1;

  // the format of location.
  LocationStandard.Format format = 2;
}

message Id {
  IdType.Type type = 1;
  string id = 2;
  string app = 3;
  string country_code = 4 [deprecated = true];
  LocationHint location_hint = 5;
}

message ApiVersion {
  enum Value {
    UNKNOWN = 0;
    V4 = 4;
  }
}

message Platform {
  enum Type {
    UNKNOWN = 0;
    DESKTOP = 6;
  }
}

message ClientInfo {
  int32 version_major = 3;
  int32 version_minor = 4;
  int32 version_point = 5;
  ApiVersion.Value api_version = 7;
  Platform.Type platform_type = 9;
}

message RequestHeader {
  string request_id = 1;
  string app = 3;
  ClientInfo client_info = 7;
  Id requester_id = 10;
}

message SendMessageExpressRequest {
  RequestHeader header = 1;
  Id dest_id = 3;
  InboxMessage message = 4;
}

message ReceiveMessagesExpressRequest {
  RequestHeader header = 1;
}

message ReceiveMessagesResponse {
  message Header {}
  Header header = 1;
  message FastPathReady {}

  oneof body {
    InboxMessage inbox_message = 2;
    FastPathReady fast_path_ready = 7;
  }
}

// Matches StreamBody definition from the server:
// google3/google/rpc/stream_body.proto
message StreamBody {
  repeated bytes messages = 1;
  repeated bytes noop = 15;
}