OLD | NEW |
| (Empty) |
1 // Copyright (c) 2012 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 // Sync protocol datatype extension for push notifications.. | |
6 | |
7 // Update proto_value_conversions{.h,.cc,_unittest.cc} if you change | |
8 // any fields in this file. | |
9 | |
10 syntax = "proto2"; | |
11 | |
12 option optimize_for = LITE_RUNTIME; | |
13 option retain_unknown_fields = true; | |
14 | |
15 package sync_pb; | |
16 | |
17 import "synced_notification_render.proto"; | |
18 | |
19 // This message allows clients to identify a notification they have created. | |
20 message SyncedNotificationIdentifier { | |
21 // The application that the notification is a part of. | |
22 optional string app_id = 1; | |
23 | |
24 // Notifications with the same coalescing key (isolated to the same app_id) | |
25 // will be grouped together when fetched. | |
26 optional string coalescing_key = 2; | |
27 } | |
28 | |
29 message SyncedNotificationCreator { | |
30 // The gaia id of the creator. If a notification does not have a clear | |
31 // creator, skip this and follow the directions below to use a system creator. | |
32 optional int64 gaia_id = 1; | |
33 | |
34 // Indicates that the creator is a "system" creator. Example of these are | |
35 // notifications sent to the user where the addressee is "Google", such as the | |
36 // "You have violated our TOS, and have 3 days to fix it or you'll lose your | |
37 // account" notifications. If is_system is set, gaia_id must not be set and | |
38 // instead the app_id field must be set. | |
39 optional bool is_system = 2; | |
40 | |
41 // Only set this in the system-creator case. | |
42 optional string app_id = 3; | |
43 } | |
44 | |
45 message SyncedNotificationRecipients { | |
46 repeated int64 gaia_id = 1; | |
47 | |
48 // For now, only support gaia id recipients. Add more recipient types via | |
49 // 'repeated Type other_type = X' when necessary. | |
50 } | |
51 | |
52 message SyncedNotification { | |
53 // A secondary type that is isolated within the same app_id. | |
54 // | |
55 // NOTE: For ASBE support purposes this must be in the format [A-Za-z_]+. | |
56 optional string type = 1; | |
57 | |
58 // Whatever string the client entered during creation. If no external_id is | |
59 // specified, the notification can no longer be identified individually for | |
60 // fetching/deleting, etc... | |
61 optional string external_id = 2; | |
62 | |
63 // The creator of the notification. | |
64 optional SyncedNotificationCreator creator = 3; | |
65 | |
66 // Client specific data. | |
67 optional MapData client_data = 4; | |
68 } | |
69 | |
70 message CoalescedSyncedNotification { | |
71 // An opaque string key used to identify individual coalesced notifications. | |
72 optional string key = 1; | |
73 | |
74 optional string app_id = 2; | |
75 | |
76 // All the notifications that are grouped together. | |
77 repeated SyncedNotification notification = 3; | |
78 | |
79 // Data that is used directly by endpoints to render notifications in the case | |
80 // where no "native" app can handle the notification. | |
81 optional SyncedNotificationRenderInfo render_info = 4; | |
82 | |
83 // Read state will be per coalesced notification. | |
84 enum ReadState { | |
85 UNREAD = 1; | |
86 READ = 2; | |
87 DISMISSED = 3; | |
88 SEEN = 4; | |
89 } | |
90 optional ReadState read_state = 5; | |
91 | |
92 // The time when the LATEST notification of the coalesced notification is | |
93 // created (in milliseconds since the linux epoch). | |
94 // This is called updated_version in the server side protobuf. | |
95 optional uint64 creation_time_msec = 6; | |
96 | |
97 enum Priority { | |
98 INVISIBLE = 1; | |
99 LOW = 2; | |
100 HIGH = 3; | |
101 // We will most likely add at least one more priority in the near future. | |
102 }; | |
103 optional Priority priority = 7; | |
104 | |
105 // Security token that is to be used when making a PerformUserAction request | |
106 // when any user action within this coalesced notification is triggered. | |
107 optional string user_action_token = 8; | |
108 | |
109 // This field corresponds to catchup_version in entity, which represents the | |
110 // version entity was last modified. Note that the | |
111 // Entity.last_modified_version will be actually the last creation version. | |
112 // See comments in updated_version. | |
113 optional uint64 last_modified_version = 9; | |
114 | |
115 // Clients should use this field to order the notifications. Currently this is | |
116 // calculated from (priority, updated_version) pair. | |
117 optional uint64 sort_version = 10; | |
118 } | |
119 | |
120 message SyncedNotificationList { | |
121 repeated CoalescedSyncedNotification coalesced_notification = 1; | |
122 } | |
123 | |
124 // MapData, Data, and ListData are used to sending aribitrary payloads | |
125 // between instances of applications using Synced Notifications. The | |
126 // schema atop MapData will be defined by the client application. | |
127 message MapData { | |
128 message Entry { | |
129 optional string key = 1; | |
130 optional Data value = 2; | |
131 }; | |
132 repeated Entry entry = 1; | |
133 }; | |
134 | |
135 message Data { | |
136 optional bool boolean_value = 1; | |
137 optional int32 int_value = 2; | |
138 optional double float_value = 3; | |
139 optional string string_value = 4; | |
140 optional ListData list_value = 5; | |
141 optional MapData map_value = 6; | |
142 }; | |
143 | |
144 message ListData { | |
145 repeated Data value = 1; | |
146 }; | |
147 | |
148 // The RenderContext encapsulates data about the device that is displaying the | |
149 // notification. In the future, RenderContext might include data like the | |
150 // location of the user. | |
151 message RenderContext { | |
152 // The type of the device. This will be used to decide the resolution as well | |
153 // as the size of the image returned with the response. | |
154 // The server will try to find the closest matching resource to use. | |
155 // The android densities are from | |
156 // http://developer.android.com/guide/practices/screens_support.html | |
157 enum DeviceType { | |
158 UNKNOWN = 0; | |
159 IOS_NON_RETINA = 1; | |
160 IOS_RETINA = 2; | |
161 ANDROID_MDPI = 3; | |
162 ANDROID_HDPI = 4; | |
163 ANDROID_XHDPI = 5; | |
164 ANDROID_TVDPI = 6; | |
165 DESKTOP_NON_RETINA = 7; | |
166 DESKTOP_RETINA = 8; | |
167 ANDROID_XXHDPI = 9; | |
168 CHROME_1X = 10; | |
169 CHROME_2X = 11; | |
170 } | |
171 | |
172 optional DeviceType device_type = 1; | |
173 | |
174 // The locale to render the notifications in. | |
175 optional string language_code = 2; | |
176 }; | |
177 | |
178 // List of AppIds and whether to treat the list as a Whitelist or Blacklist. | |
179 message AppList { | |
180 enum Type { | |
181 // Specified app_ids are supported. | |
182 WHITELIST = 1; | |
183 // Specified app_ids are not supported. | |
184 BLACKLIST = 2; | |
185 } | |
186 | |
187 // Whether to treat the app_id list as a Whitelist or Blacklist. | |
188 optional Type type = 1 [default = WHITELIST]; | |
189 | |
190 // List of AppIds. | |
191 repeated string app_id = 2; | |
192 }; | |
193 | |
194 message ServerContext { | |
195 // render_context encapsulates data about the device that is displaying the | |
196 // notifications. | |
197 optional RenderContext render_context = 1; | |
198 | |
199 // List of AppIds and whether it is a blacklist or whitelist. | |
200 // This field needs to be set only when the set of apps enabled on a client | |
201 // changes. In the server response, this field will get cleared. | |
202 optional AppList app_list = 2; | |
203 | |
204 // The view that the device has registered with. It is obtained from guns | |
205 // based on the app_list specified above. | |
206 optional string view_id = 3; | |
207 }; | |
OLD | NEW |