| // Copyright 2022 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| // |
| // Sync protocol datatype extension for segmentations. |
| |
| // If you change or add any fields in this file, update proto_visitors.h and |
| // potentially proto_enum_conversions.{h, cc}. |
| |
| syntax = "proto2"; |
| |
| option java_multiple_files = true; |
| option java_package = "org.chromium.components.sync.protocol"; |
| |
| option optimize_for = LITE_RUNTIME; |
| |
| package sync_pb; |
| |
| // Sync data proto for storing segmentation data. Keyed by the combination of |
| // cache_guid (a Sync client id) and segmentation key. |
| // |
| // The segmentation platform is a platform that uses intelligence and machine |
| // learning to guide developers for building purpose-built user experience for |
| // specific segments of users. See go/chrome-segmentation for more details. |
| message SegmentationSpecifics { |
| // The selected segment by the segmentation scheme. |
| message SegmentSelectionResult { |
| // The string ID that refers to the segment the user was assigned to, e.g., |
| // 'highly_engaged_user'. |
| optional string selected_segment = 1; |
| |
| // Expiry time of selection result. Represents time from windows epoch in |
| // seconds. Expired results are ignored by clients. |
| optional int64 expiry_time_windows_epoch_seconds = 2; |
| |
| // Time when the segmentation data is updated. Used to weigh results by |
| // recency. Represents time from windows epoch in seconds. |
| optional int64 last_updated_time_windows_epoch_seconds = 3; |
| } |
| |
| // Metadata about the client device as used by the segmentation platform. |
| message DeviceMetadata { |
| // The cache_guid created to identify a sync client on this device. |
| // Reuses the same Sync guid. |
| optional string cache_guid = 1; |
| |
| enum PlatformType { |
| PLATFORM_TYPE_UNSPECIFIED = 0; |
| PLATFORM_WINDOWS = 1; |
| PLATFORM_MAC = 2; |
| PLATFORM_LINUX = 3; |
| PLATFORM_CHROMEOS_ASH = 4; |
| PLATFORM_ANDROID = 5; |
| PLATFORM_IOS = 6; |
| PLATFORM_CHROMEOS_LACROS = 7; |
| } |
| |
| // The OS platform of the device. |
| optional PlatformType platform_type = 2; |
| } |
| |
| // Model execution data including segment scores and related metadata, e.g., |
| // model version. |
| message ModelExecutionData { |
| // Output of model. |
| message ModelOutput { |
| // When outputting multiple scores from a single model, this is the |
| // segment label for each output. |
| optional string label = 1; |
| |
| // Raw segment scores provided by the ML model or the heuristic model. |
| // The score is derived based on a combination of UMA histograms, |
| // user actions or UKM and URLs visited. The score can be treated as a |
| // probability of the user liking a feature, like feed, or NTP. |
| optional float score = 2; |
| |
| // A rank defined by the segmentation scheme. |
| optional int32 rank = 3; |
| } |
| |
| // A string ID that identifies a model. |
| optional string model_id = 1; |
| |
| // A model may output one or multiple scores, one score for each segment |
| // label. |
| repeated ModelOutput model_outputs = 2; |
| |
| // Timestamp when the ML model was executed. |
| // Represents time from windows epoch in seconds. |
| optional int64 execution_time_windows_epoch_seconds = 3; |
| |
| // Expiry timestamp for the model scores. |
| // Represents time from windows epoch in seconds. |
| optional int64 score_expiry_time_windows_epoch_seconds = 4; |
| |
| // The version of the ML model that was run. |
| optional int32 model_version = 5; |
| } |
| |
| // The key used to identify the type of segmentation associated with a |
| // feature, e.g. 'user_engagement'. |
| optional string segmentation_key = 1; |
| |
| optional SegmentSelectionResult segment_selection_result = 2; |
| |
| optional DeviceMetadata device_metadata = 3; |
| |
| // One or more model execution data associated with each segment for the |
| // segmentation key. |
| repeated ModelExecutionData model_execution_data = 4; |
| } |