123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364 |
- // Copyright 2021 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 = "proto2";
- package nearby.fastpair;
- import "context_fence.proto";
- import "enums.proto";
- import "message_set.proto";
- // Information about Fast Pair. This will either contain an account key and
- // discovery item bytes or an opt in status.
- message FastPairInfo {
- // Footprints stores data contained in the message set, see
- // https://g3doc.corp.google.com/personalization/footprints/g3doc/client-docs/index.md#data-format-and-storage
- extend proto2.bridge.MessageSet {
- optional FastPairInfo message_set_extension = 190536965;
- }
- oneof info {
- OptInStatus opt_in_status = 1;
- FastPairDevice device = 2;
- }
- }
- // A device that has been Fast Paired with.
- message FastPairDevice {
- // The account key which was written to the device after pairing completed.
- optional bytes account_key = 1;
- // The stored discovery item which represents the notification that should be
- // associated with the device. Note, this is stored as a raw byte array
- // instead of StoredDiscoveryItem because icing only supports proto lite and
- // StoredDiscoveryItem is handed around as a nano proto in implementation,
- // which are not compatible with each other.
- optional bytes discovery_item_bytes = 3;
- // SHA256 of "account key + headset's public address", this is used to
- // identify the paired headset. Because of adding account key to generate the
- // hash value, it makes the information anonymous, even for the same headset,
- // different accounts have different values.
- optional bytes sha256_account_key_public_address = 4;
- // Deprecated fields.
- reserved 2;
- }
- // Additional images for True Wireless Fast Pair devices.
- message TrueWirelessHeadsetImages {
- // Image URL for the left bud.
- optional string left_bud_url = 1;
- // Image URL for the right bud.
- optional string right_bud_url = 2;
- // Image URL for the case.
- optional string case_url = 3;
- }
- message CompanionAppDetails {
- // Companion app slice provider's authority.
- optional string authority = 1;
- // Companion app certificate value.
- optional string certificate_hash = 2;
- // Deprecated fields.
- reserved 3;
- }
- // Relevance indicates how relevant the item is to the user.
- message Relevance {
- // REQUIRED
- // Whether the item is good, ok, poor, etc. Corresponds to levels found in
- // the Discoverer Notification Policy Worksheet:
- // https://docs.google.com/a/google.com/spreadsheets/d/1atc1-RNLb7fAGvGdWXlh86Qy2IY9T_dj2v4gFUhdPF0/edit?usp=sharing
- optional Evaluation evaluation = 1;
- // To get this relevance, the item can be at most this far away.
- // Note: Supported in v11+.
- // TODO(jfarfel): Replace with Targeting.
- optional double max_distance = 2;
- // To get this relevance, the item must pass this targeting rule (if set).
- // Note: Supported in v11+. Prior to v11, clients expected targeting to be
- // set via field 12 on the NearbyItem.
- // See go/discoverer-notification-targeting
- // TODO(jfarfel): Replace with Targeting.
- optional personalization.context.ContextFence targeting_fence = 3;
- }
- message StoredRelevance {
- optional Relevance relevance = 1;
- // The last time that this relevance passed targeting. A relevance with no
- // targeting always passes. Null if it failed, or we haven't checked yet.
- optional int64 targeting_true_millis = 2;
- }
- // Additional information relevant only for Fast Pair devices.
- message FastPairInformation {
- // When true, Fast Pair will only create a bond with the device and not
- // attempt to connect any profiles (for example, A2DP or HFP).
- // TODO(b/128545971): Transition this to a feature.
- optional bool data_only_connection = 1;
- // The type of the manufacturer (first party, third party, etc).
- optional ManufacturerType manufacturer_type = 2;
- // Additional images that are attached specifically for true wireless Fast
- // Pair devices.
- optional TrueWirelessHeadsetImages true_wireless_images = 3;
- // When true, this device can support assistant function.
- // TODO(b/128545971): Transition this to a feature.
- optional bool assistant_supported = 4;
- // Features supported by the Fast Pair device.
- repeated FastPairFeature features = 5;
- // Optional, the name of the company producing this Fast Pair device.
- optional string company_name = 6;
- // Optional, the type of device.
- optional DeviceType device_type = 7;
- }
- message FastPairStrings {
- // Required for initial pairing, used when there is a Google account on the
- // device
- optional string tap_to_pair_with_account = 1;
- // Required for initial pairing, used when there is no Google account on the
- // device
- optional string tap_to_pair_without_account = 2;
- // Description for initial pairing
- optional string initial_pairing_description = 3;
- // Description after successfully paired the device with companion app
- // installed
- optional string pairing_finished_companion_app_installed = 4;
- // Description after successfully paired the device with companion app not
- // installed
- optional string pairing_finished_companion_app_not_installed = 5;
- // Description when phone found the device that associates with user's account
- // before remind user to pair with new device.
- optional string subsequent_pairing_description = 6;
- // Description when fast pair finds the user paired with device manually
- // reminds user to opt the device into cloud.
- optional string retroactive_pairing_description = 7;
- // Description when user click setup device while device is still pairing
- optional string wait_app_launch_description = 8;
- // Description when user fail to pair with device
- optional string pairing_fail_description = 9;
- // Title to ask the user to confirm the pin code.
- optional string confirm_pin_title = 10;
- // Description to ask the user to confirm the pin code.
- optional string confirm_pin_description = 11;
- // The title of the UI to ask the user to confirm to sync contacts.
- optional string sync_contacts_title = 12;
- // The description of the UI to ask the user to confirm to sync contacts.
- optional string sync_contacts_description = 13;
- // The title of the UI to ask the user to confirm to sync SMS.
- optional string sync_sms_title = 14;
- // The description of the UI to ask the user to confirm to sync SMS.
- optional string sync_sms_description = 15;
- // The description for half sheet to ask user to setup google assistant.
- optional string assistant_half_sheet_description = 16;
- // The description for notification to ask user to setup google assistant.
- optional string assistant_notification_description = 17;
- }
- // Data for a DiscoveryItem created from server response and client scan result.
- // Only caching original data from scan result, server response, timestamps
- // and user actions. Do not save generated data in this object.
- message StoredDiscoveryItem {
- enum State {
- // Default unknown state.
- STATE_UNKNOWN = 0;
- // The item is normal.
- STATE_ENABLED = 1;
- // The item has been muted by user.
- STATE_MUTED = 2;
- // The item has been disabled by us (likely temporarily).
- STATE_DISABLED_BY_SYSTEM = 3;
- }
- // The status of the item.
- enum DebugMessageCategory {
- // Default unknown state.
- STATUS_UNKNOWN = 0;
- // The item is valid and visible in notification.
- STATUS_VALID_NOTIFICATION = 1;
- // The item made it to list but not to notification.
- STATUS_VALID_LIST_VIEW = 2;
- // The item is filtered out on client. Never made it to list view.
- STATUS_DISABLED_BY_CLIENT = 3;
- // The item is filtered out by server. Never made it to client.
- STATUS_DISABLED_BY_SERVER = 4;
- }
- enum ExperienceType {
- EXPERIENCE_UNKNOWN = 0;
- EXPERIENCE_GOOD = 1;
- EXPERIENCE_BAD = 2;
- }
- // REQUIRED
- // Offline item: unique ID generated on client.
- // Online item: unique ID generated on server.
- optional string id = 1;
- // REQUIRED
- optional NearbyType type = 2;
- // REQUIRED
- // The most recent all upper case mac associated with this item.
- // (Mac-to-DiscoveryItem is a many-to-many relationship)
- optional string mac_address = 4;
- // REQUIRED
- optional string action_url = 5;
- // The bluetooth device name from advertisment
- optional string device_name = 6;
- // REQUIRED
- // Item's title
- optional string title = 7;
- // Item's description.
- optional string description = 8;
- // The URL for display
- optional string display_url = 9;
- // REQUIRED
- // Client timestamp when the beacon was last observed in BLE scan.
- optional int64 last_observation_timestamp_millis = 10;
- // REQUIRED
- // Client timestamp when the beacon was first observed in BLE scan.
- optional int64 first_observation_timestamp_millis = 11;
- // REQUIRED
- // Item's current state. e.g. if the item is blocked.
- optional State state = 17;
- // The resolved url type for the action_url.
- optional ResolvedUrlType action_url_type = 19;
- // The timestamp when the user is redirected to Play Store after clicking on
- // the item.
- optional int64 pending_app_install_timestamp_millis = 20;
- // Beacon's RSSI value
- optional int32 rssi = 22;
- // Beacon's tx power
- optional int32 tx_power = 23;
- // Human readable name of the app designated to open the uri
- // Used in the second line of the notification, "Open in {} app"
- optional string app_name = 25;
- // ID used for associating several DiscoveryItems. These items may be
- // visually displayed together.
- optional string group_id = 26;
- // The timestamp when the attachment was created on PBS server. In case there
- // are duplicate
- // items with the same scanId/groupID, only show the one with the latest
- // timestamp.
- optional int64 attachment_creation_sec = 28;
- // Whether the attachment is created in debug namespace
- optional DiscoveryAttachmentType attachment_type = 29;
- // Package name of the App that owns this item.
- optional string package_name = 30;
- // The average star rating of the app.
- optional float star_rating = 31;
- // The "feature" graphic image url used for large sized list view entries.
- optional string feature_graphic_url = 32;
- // TriggerId identifies the trigger/beacon that is attached with a message.
- // It's generated from server for online messages to synchronize formatting
- // across client versions.
- // Example:
- // * BLE_UID: 3||deadbeef
- // * BLE_URL: http://trigger.id
- // See go/discovery-store-message-and-trigger-id for more details.
- optional string trigger_id = 34;
- // Bytes of item icon in PNG format displayed in Discovery item list.
- optional bytes icon_png = 36;
- // Message written to bugreport for 3P developers.(No sensitive info)
- // null if the item is valid
- optional string debug_message = 37;
- // Weather the item is filtered out on server.
- optional DebugMessageCategory debug_category = 38;
- // How relevant the message is to the user. May be used by the client to
- // determine how to display the NearbyItem. >1 relevance makes sense only if
- // each has targeting (e.g., a maximum distance threshold). In that case, the
- // item's relevance is the maximum one where the targeting is satisfied.
- repeated StoredRelevance stored_relevances = 40;
- // Client timestamp when the trigger (e.g. beacon) was last lost (e.g. when
- // Messages told us the beacon's no longer nearby).
- optional int64 lost_millis = 41;
- // The kind of expereince the user last had with this (e.g. if they dismissed
- // the notification, that's bad; but if they tapped it, that's good).
- optional ExperienceType last_user_experience = 42;
- // The most recent BLE advertisement related to this item.
- optional bytes ble_record_bytes = 43;
- // An ID generated on the server to uniquely identify content.
- optional string entity_id = 44;
- // See equivalent field in NearbyItem.
- optional bytes authentication_public_key_secp256r1 = 45;
- // See equivalent field in NearbyItem.
- optional FastPairInformation fast_pair_information = 46;
- // Companion app detail.
- optional CompanionAppDetails companion_detail = 47;
- // Fast pair strings
- optional FastPairStrings fast_pair_strings = 48;
- // Deprecated fields.
- reserved 3, 12, 13, 14, 15, 16, 18, 21, 24, 27, 33, 35, 39;
- }
|