File: fresnel_service.proto

package info (click to toggle)
chromium 138.0.7204.183-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 6,071,908 kB
  • sloc: cpp: 34,937,088; ansic: 7,176,967; javascript: 4,110,704; python: 1,419,953; asm: 946,768; xml: 739,971; pascal: 187,324; sh: 89,623; perl: 88,663; objc: 79,944; sql: 50,304; cs: 41,786; fortran: 24,137; makefile: 21,806; php: 13,980; tcl: 13,166; yacc: 8,925; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (223 lines) | stat: -rw-r--r-- 8,940 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

syntax = "proto2";

package ash.report;

import "private_membership_rlwe.proto";

option optimize_for = LITE_RUNTIME;

// This proto represents the data transmitted over network
// requests while reporting Device Actives to Fresnel server.

// The possible channels for ChromeOS installations.
// See details in //components/version_info/channel.h
enum Channel {
  CHANNEL_UNKNOWN = 0;
  CHANNEL_CANARY = 1;
  CHANNEL_DEV = 2;
  CHANNEL_BETA = 3;
  CHANNEL_STABLE = 4;
}

enum MarketSegment {
  // Default segment, should not be in this state.
  MARKET_SEGMENT_UNSPECIFIED = 0;
  // Device is not yet enrolled, owned or have market segment available.
  MARKET_SEGMENT_UNKNOWN = 1;
  // Device is locally owned as a consumer device.
  MARKET_SEGMENT_CONSUMER = 2;
  // Device is enterprise enrolled but does not have enterprise market segment.
  MARKET_SEGMENT_ENTERPRISE_ENROLLED_BUT_UNKNOWN = 3;
  // Device is enterprise enrolled and has enterprise market segment.
  // Does not count demo devices. Demo devices are only counted in
  // MARKET_SEGMENT_ENTERPRISE_DEMO.
  MARKET_SEGMENT_ENTERPRISE = 4;
  // Device is enterprise enrolled and has education market segment.
  MARKET_SEGMENT_EDUCATION = 5;
  // Device is enterprise enrolled as a demo device.
  MARKET_SEGMENT_ENTERPRISE_DEMO = 6;
};

// The Chrome OS device metadata which is sent in PSM import requests.
// Each new field to this message requires privacy approval.
// Next ID: 6
message DeviceMetadata {
  // Chrome OS Hardware IDs (HWIDs) are strings that uniquely identify the
  // hardware configuration of a Chrome OS device.
  // See: go/gvc-g3/logs/chromeos-metrics.md
  optional string hardware_id = 1;

  // Represent the Chrome major milestone of the ChromeOS device.
  // See chrome://version -> Google Chrome:
  // i.e. 96.0.4664.55 (Official Build) (x86_64) would set field as "96".
  optional string chrome_milestone = 2;

  // Country code is represented by a 2-letter string (aka ISO 3166-1).
  // i.e. US for United States of America, CA for Canada.
  optional string country_code = 3;

  // Device market segment is one of the northstar breakout dimensions for
  // active device counting.
  optional MarketSegment market_segment = 4;

  // ChromeOS channel is used to determine the breakdown of devices that are
  // coming from canary, dev, beta, stable, or unknown channels.
  // This can be used with the chrome milestone in order to determine
  // questions like, what percentage of devices are in the M100 stable channel.
  optional Channel chromeos_channel = 5;
}

// The metadata which is related to Churn Cohort request.
message ChurnCohortMetadata {
  // This 28 bits value represents the device monthly cohort active statuses for
  // the past 18 months. The left 10 bits represent the number of months since
  // Jan. 2000, and the right 18 bits represent the device's monthly cohort
  // active statuses for the past 18 months, with a value of 1 indicating that
  // the device was active and a value of 0 indicating that the device was not
  // active in that month.
  //
  // If the device is active when the time switches to a new month (e.g., from
  // 1/31 to 2/1), the number of months will increase by 1 and the first 10 bits
  // will be updated. Also, use the number of months modulo 18 to get the index
  // in the right 18 bits and set that index bit to 1.
  //
  // If the device was not active for a couple of months, after the device
  // becomes active again and reports the cohort request successfully, it needs
  // to set the bits of the inactive months to 0 before updating the number of
  // months for the left 10 bits and the current month bit.
  optional int32 active_status_value = 1;

  // Compare the first active weeks obtained from the VPD to determine if the
  // device is new during the cohort month.
  optional bool is_first_active_in_cohort = 2;

  // Device ActivateDate, read from VPD. In YYYY-WW ISO8601 format.
  // Value exists after first OOBE completion and device restart.
  // Statistics provider loads VPD file in the chrome browser preloop,
  // before ActivateDate may be first written.
  // Field is only set if ActivateDate is <= 5 weeks old.
  optional string first_active_week = 4;
}

// The metadata which is related to Churn Observation request.
message ChurnObservationMetadata {
  // The device's first active status in different cohort month.
  enum FirstActiveDuringCohort {
    // The device is either an existing device that was activated before the
    // cohort month, or it is a new device that has not yet been activated
    // during the cohort month.
    EXISTED_OR_NOT_ACTIVE_YET = 0;
    // The device was first activated during the corresponding monthly cohort
    // period.
    FIRST_ACTIVE_IN_MONTHLY_COHORT = 1;
    // The device was first activated during the corresponding yearly cohort
    // period.
    FIRST_ACTIVE_IN_YEARLY_COHORT = 2;
  }

  // Whether the device was `active` during monthly cohort period.
  optional bool monthly_active_status = 1;

  // Whether the device was `active` during yearly cohort period.
  optional bool yearly_active_status = 2;

  // Whether the device was `first active` during the corresponding cohort
  // period.
  optional FirstActiveDuringCohort first_active_during_cohort = 3;

  // Device ActivateDate, read from VPD. In YYYY-WW ISO8601 format.
  // Value exists after first OOBE completion and device restart.
  // Statistics provider loads VPD file in the chrome browser preloop,
  // before ActivateDate may be first written.
  // Field is only set if ActivateDate is <= 4 months old.
  optional string first_active_week = 4;

  // Device last powerwash week. Formatted YYYY-WW in ISO8601 format.
  // Field is only set if ActivateDate is <= 4 months old.
  optional string last_powerwash_week = 5;
}

// This message is part of the import request. For some use cases, such as
// N-Day use case, they may need to batch import the requests to Fresnel.
// We make a general import data message for all use cases.
message FresnelImportData {
  // The Device active window identifier, generated by client side.
  // For example, for Daily active pings, the active window identifier could be
  // '07012021'; for 28DA, it could be the start date when device was active.
  optional string window_identifier = 1;

  // The device derived id: hash(device_stable_identifier, use_case, date)
  optional string plaintext_id = 2;

  // The plaintext identifiers - value pair to be imported.
  // For example, this can be the cohort active status history byte for Churn
  // use case.
  optional bytes value = 3;

  // Boolean used to indicate whether client is sending UTC (false) or PT
  // (true) timezone for the window_identifier.
  optional bool is_pt_window_identifier = 4;

  // The metadata related to Churn Cohort check-in request.
  optional ChurnCohortMetadata churn_cohort_metadata = 5;

  // The metadata related to Churn Observation check-in request.
  optional ChurnObservationMetadata churn_observation_metadata = 6;
}

// This proto will represent the data sent to Fresnel used to generate a PSM
// import request on the server side.
// Next ID: 5
message FresnelImportDataRequest {
  // This field will be deprecated.
  optional string window_identifier = 1 [deprecated = true];

  // Device active metadata sent along with active pings for counting purposes.
  optional DeviceMetadata device_metadata = 2;

  // The name of the use case associated with the plaintext_id.
  optional private_membership.rlwe.RlweUseCase use_case = 3;

  // This field will be deprecated.
  optional string plaintext_identifier = 4 [deprecated = true];

  // This field will be deprecated.
  optional bytes value = 5 [deprecated = true];

  // The imported data which is related to use case.
  repeated FresnelImportData import_data = 6;
}

// The request of PsmRlweOprf sent by the client for checking PSM membership.
// Next ID: 2
message FresnelPsmRlweOprfRequest {
  optional private_membership.rlwe.PrivateMembershipRlweOprfRequest
      rlwe_oprf_request = 1;
}

// The response of PsmRlweOprf sent by the Fresnel Service for checking
// PSM membership.
// Next ID: 2
message FresnelPsmRlweOprfResponse {
  optional private_membership.rlwe.PrivateMembershipRlweOprfResponse
      rlwe_oprf_response = 1;
}

// The request of PsmRlweQuery sent by the client for checking PSM membership.
// Next ID: 2
message FresnelPsmRlweQueryRequest {
  optional private_membership.rlwe.PrivateMembershipRlweQueryRequest
      rlwe_query_request = 1;
}

// The response of PsmRlweQuery sent by the Fresnel Service for checking
// PSM membership.
// Next ID: 2
message FresnelPsmRlweQueryResponse {
  optional private_membership.rlwe.PrivateMembershipRlweQueryResponse
      rlwe_query_response = 1;
}