• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4//
5// Request and reply to the "checkin server" devices poll every few hours.
6
7syntax = "proto2";
8
9option optimize_for = LITE_RUNTIME;
10option retain_unknown_fields = true;
11
12package checkin_proto;
13
14import "android_checkin.proto";
15
16// A concrete name/value pair sent to the device's Gservices database.
17message GservicesSetting {
18  required bytes name = 1;
19  required bytes value = 2;
20}
21
22// Devices send this every few hours to tell us how they're doing.
23message AndroidCheckinRequest {
24  // IMEI (used by GSM phones) is sent and stored as 15 decimal
25  // digits; the 15th is a check digit.
26  optional string imei = 1;       // IMEI, reported but not logged.
27
28  // MEID (used by CDMA phones) is sent and stored as 14 hexadecimal
29  // digits (no check digit).
30  optional string meid = 10;      // MEID, reported but not logged.
31
32  // MAC address (used by non-phone devices).  12 hexadecimal digits;
33  // no separators (eg "0016E6513AC2", not "00:16:E6:51:3A:C2").
34  repeated string mac_addr = 9;   // MAC address, reported but not logged.
35
36  // An array parallel to mac_addr, describing the type of interface.
37  // Currently accepted values: "wifi", "ethernet", "bluetooth".  If
38  // not present, "wifi" is assumed.
39  repeated string mac_addr_type = 19;
40
41  // Serial number (a manufacturer-defined unique hardware
42  // identifier).  Alphanumeric, case-insensitive.
43  optional string serial_number = 16;
44
45  // Older CDMA networks use an ESN (8 hex digits) instead of an MEID.
46  optional string esn = 17;       // ESN, reported but not logged
47
48  optional int64 id = 2;          // Android device ID, not logged
49  optional int64 logging_id = 7;  // Pseudonymous logging ID for Sawmill
50  optional string digest = 3;     // Digest of device provisioning, not logged.
51  optional string locale = 6;     // Current locale in standard (xx_XX) format
52  required AndroidCheckinProto checkin = 4;
53
54  // DEPRECATED, see AndroidCheckinProto.requested_group
55  optional string desired_build = 5;
56
57  // Blob of data from the Market app to be passed to Market API server
58  optional string market_checkin = 8;
59
60  // SID cookies of any google accounts stored on the phone.  Not logged.
61  repeated string account_cookie = 11;
62
63  // Time zone.  Not currently logged.
64  optional string time_zone = 12;
65
66  // Security token used to validate the checkin request.
67  // Required for android IDs issued to Froyo+ devices, not for legacy IDs.
68  optional fixed64 security_token = 13;
69
70  // Version of checkin protocol.
71  //
72  // There are currently two versions:
73  //
74  // - version field missing: android IDs are assigned based on
75  //   hardware identifiers.  unsecured in the sense that you can
76  //   "unregister" someone's phone by sending a registration request
77  //   with their IMEI/MEID/MAC.
78  //
79  // - version=2: android IDs are assigned randomly.  The device is
80  //   sent a security token that must be included in all future
81  //   checkins for that android id.
82  //
83  // - version=3: same as version 2, but the 'fragment' field is
84  //   provided, and the device understands incremental updates to the
85  //   gservices table (ie, only returning the keys whose values have
86  //   changed.)
87  //
88  // (version=1 was skipped to avoid confusion with the "missing"
89  // version field that is effectively version 1.)
90  optional int32 version = 14;
91
92  // OTA certs accepted by device (base-64 SHA-1 of cert files).  Not
93  // logged.
94  repeated string ota_cert = 15;
95
96  // Honeycomb and newer devices send configuration data with their checkin.
97  // optional DeviceConfigurationProto device_configuration = 18;
98
99  // A single CheckinTask on the device may lead to multiple checkin
100  // requests if there is too much log data to upload in a single
101  // request.  For version 3 and up, this field will be filled in with
102  // the number of the request, starting with 0.
103  optional int32 fragment = 20;
104
105  // For devices supporting multiple users, the name of the current
106  // profile (they all check in independently, just as if they were
107  // multiple physical devices).  This may not be set, even if the
108  // device is using multiuser.  (checkin.user_number should be set to
109  // the ordinal of the user.)
110  optional string user_name = 21;
111
112  // For devices supporting multiple user profiles, the serial number
113  // for the user checking in.  Not logged.  May not be set, even if
114  // the device supportes multiuser.  checkin.user_number is the
115  // ordinal of the user (0, 1, 2, ...), which may be reused if users
116  // are deleted and re-created.  user_serial_number is never reused
117  // (unless the device is wiped).
118  optional int32 user_serial_number = 22;
119
120  // NEXT TAG: 23
121}
122
123// The response to the device.
124message AndroidCheckinResponse {
125  required bool stats_ok = 1;    // Whether statistics were recorded properly.
126  optional int64 time_msec = 3;  // Time of day from server (Java epoch).
127  // repeated AndroidIntentProto intent = 2;
128
129  // Provisioning is sent if the request included an obsolete digest.
130  //
131  // For version <= 2, 'digest' contains the digest that should be
132  // sent back to the server on the next checkin, and 'setting'
133  // contains the entire gservices table (which replaces the entire
134  // current table on the device).
135  //
136  // for version >= 3, 'digest' will be absent.  If 'settings_diff'
137  // is false, then 'setting' contains the entire table, as in version
138  // 2.  If 'settings_diff' is true, then 'delete_setting' contains
139  // the keys to delete, and 'setting' contains only keys to be added
140  // or for which the value has changed.  All other keys in the
141  // current table should be left untouched.  If 'settings_diff' is
142  // absent, don't touch the existing gservices table.
143  //
144  optional string digest = 4;
145  optional bool settings_diff = 9;
146  repeated string delete_setting = 10;
147  repeated GservicesSetting setting = 5;
148
149  optional bool market_ok = 6;   // If Market got the market_checkin data OK.
150
151  optional fixed64 android_id = 7;      // From the request, or newly assigned
152  optional fixed64 security_token = 8;  // The associated security token
153
154  optional string version_info = 11;
155  // NEXT TAG: 12
156}
157