Roll src/third_party/WebKit e0eac24:489c548 (svn 193311:193320)
[chromium-blink-merge.git] / google_apis / gcm / protocol / checkin.proto
blob10ad628f7338c7004a57eb39b6b222b07e812366
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.
7 syntax = "proto2";
9 option optimize_for = LITE_RUNTIME;
10 option retain_unknown_fields = true;
12 package checkin_proto;
14 import "android_checkin.proto";
16 // A concrete name/value pair sent to the device's Gservices database.
17 message GservicesSetting {
18   required bytes name = 1;
19   required bytes value = 2;
22 // Devices send this every few hours to tell us how they're doing.
23 message 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.
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.
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.
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;
41   // Serial number (a manufacturer-defined unique hardware
42   // identifier).  Alphanumeric, case-insensitive.
43   optional string serial_number = 16;
45   // Older CDMA networks use an ESN (8 hex digits) instead of an MEID.
46   optional string esn = 17;       // ESN, reported but not logged
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;
54   // DEPRECATED, see AndroidCheckinProto.requested_group
55   optional string desired_build = 5;
57   // Blob of data from the Market app to be passed to Market API server
58   optional string market_checkin = 8;
60   // SID cookies of any google accounts stored on the phone.  Not logged.
61   repeated string account_cookie = 11;
63   // Time zone.  Not currently logged.
64   optional string time_zone = 12;
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;
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;
92   // OTA certs accepted by device (base-64 SHA-1 of cert files).  Not
93   // logged.
94   repeated string ota_cert = 15;
96   // Honeycomb and newer devices send configuration data with their checkin.
97   // optional DeviceConfigurationProto device_configuration = 18;
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;
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;
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;
120   // NEXT TAG: 23
123 // The response to the device.
124 message 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;
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;
149   optional bool market_ok = 6;   // If Market got the market_checkin data OK.
151   optional fixed64 android_id = 7;      // From the request, or newly assigned
152   optional fixed64 security_token = 8;  // The associated security token
154   optional string version_info = 11;
155   // NEXT TAG: 12