blob: a88f58f525275ebd316277ec1518a702ff32af36 [file] [log] [blame]
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +01001// 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
5syntax = "proto2";
6
7option optimize_for = LITE_RUNTIME;
8
9package enterprise_management;
10
11message DevicePolicyRefreshRateProto {
12 // In milliseconds.
13 optional int64 device_policy_refresh_rate = 1;
14}
15
16message UserWhitelistProto {
17 // If a UserWhitelistProto is included in the ChromeDeviceSettingsProto but
18 // the user_whitelist field is empty then no user can sign-in.
19 repeated string user_whitelist = 1;
20}
21
22message AllowNewUsersProto {
23 // Determines whether we allow arbitrary users to log into the device.
24 // This interacts with the UserWhitelistProto as follows:
25 // allow_new_users | user_whitelist | anyone can log in
26 //-----------------+--------------------+------------------
27 // present, true | not present | Yes
28 //-----------------+--------------------+------------------
29 // present, true | present | Yes
30 //-----------------+--------------------+------------------
31 // present, false | not present | (Broken) Yes
32 //-----------------+--------------------+------------------
33 // present, false | present | No, W/L enforced
34 //-----------------+--------------------+------------------
35 // not present | not present | Yes
36 //-----------------+--------------------+------------------
37 // not present | present, empty | Yes
38 //-----------------+--------------------+------------------
39 // not present | present, non-empty | No, W/L enforced
40 //-----------------+--------------------+------------------
41 optional bool allow_new_users = 1 [default = true];
42}
43
44message GuestModeEnabledProto {
45 // Determines if guests are allowed to log in to the device.
46 optional bool guest_mode_enabled = 1 [default = true];
47}
48
49message ShowUserNamesOnSigninProto {
50 // Determines if we show pods for existing users on the sign in screen.
51 optional bool show_user_names = 1 [default = true];
52}
53
54message DataRoamingEnabledProto {
55 // Determines if cellular data roaming is enabled.
56 optional bool data_roaming_enabled = 1 [default = false];
57}
58
59message DeviceProxySettingsProto {
60 // One of "direct", "auto_detect", "pac_script", "fixed_servers", "system"
61 optional string proxy_mode = 1;
62 optional string proxy_server = 2;
63 optional string proxy_pac_url = 3;
64 optional string proxy_bypass_list = 4;
65}
66
67message CameraEnabledProto {
68 optional bool camera_enabled = 1;
69}
70
71message MetricsEnabledProto {
72 optional bool metrics_enabled = 1;
73}
74
75message ReleaseChannelProto {
76 // One of "stable-channel", "beta-channel", or "dev-channel"
77 optional string release_channel = 1;
78
79 // If |release_channel_delegated| is set to true and the |release_channel|
80 // field is not set or left empty, the user can select the channel. If the
81 // |release_channel| is specified it will always override users choice!
82 optional bool release_channel_delegated = 2;
83}
84
85message DeviceOpenNetworkConfigurationProto {
86 // The network configuration blob. This is a JSON string as specified by ONC.
87 optional string open_network_configuration = 1;
88}
89
90// Policies to turn on portions of the device status reports.
91message DeviceReportingProto {
92 optional bool report_version_info = 1;
93 optional bool report_activity_times = 2;
94 optional bool report_boot_mode = 3;
95 optional bool report_location = 4;
Ben Murdoch7dbb3d52013-07-17 14:55:54 +010096 optional bool report_network_interfaces = 5;
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +010097}
98
99message EphemeralUsersEnabledProto {
100 // Determines whether users should be treated as ephemeral. In ephemeral users
101 // mode, no cryptohome is created for the user, but a tmpfs mount is used
102 // instead such that upon logout all user state is discarded.
103 optional bool ephemeral_users_enabled = 1;
104}
105
106// Details of an extension to install as part of the AppPack.
107message AppPackEntryProto {
108 optional string extension_id = 1;
109 optional string update_url = 2;
110 optional bool online_only = 3;
111}
112
113message AppPackProto {
114 // List of extensions to install as part of the AppPack.
115 repeated AppPackEntryProto app_pack = 1;
116}
117
118// This is a special policy for kiosk/retail mode that specifies what apps
119// should be pinned to the launcher. For regular accounts, pinned apps are
120// controlled through user policy.
121message PinnedAppsProto {
122 // App IDs for the apps to pin.
123 repeated string app_id = 1;
124}
125
126message ForcedLogoutTimeoutsProto {
127 // All timeouts are specified in milliseconds.
128
129 // Specifies the timeout before an idle user session is terminated.
130 // If this field is omitted or set to 0, no logout on idle will be performed.
131 optional int64 idle_logout_timeout = 1;
132
133 // Specifies the duration of a warning countdown before the user is logged out
134 // because of idleness as specified by the |idle_logout_timeout| value.
135 // This field is only used if |idle_logout_timeout| != 0 is specified.
136 optional int64 idle_logout_warning_duration = 2;
137}
138
139message ScreenSaverProto {
140 // Specifies the extension ID which is to be used as a screen saver on the
141 // login screen if no user activity is present. Only respected if the device
142 // is in RETAIL mode.
143 optional string screen_saver_extension_id = 1;
144
145 // Specifies the timeout before the screen saver is activated. If this field
146 // is omitted or set to 0, no screen-saver will be started.
147 // Measured in milliseconds.
148 optional int64 screen_saver_timeout = 2;
149}
150
151// Enterprise controls for auto-update behavior of Chrome OS.
152message AutoUpdateSettingsProto {
153 // True if we don't want the device to auto-update (target_version_prefix is
154 // ignored in this case).
155 optional bool update_disabled = 1;
156
157 // Specifies the prefix of the target version we want the device to
158 // update to, if it's on a older version. If the device is already on
159 // a version with the given prefix, then there's no effect. If the device is
160 // on a higher version, it will remain on the higher version as we
161 // don't support rollback yet. The format of this version can be one
162 // of the following:
163 // ---------------------------------------------------------------------
164 // "" (or not set at all): update to latest version available.
165 // 1412.: update to any minor version of 1412 (e.g. 1412.24.34 or 1412.60.2)
166 // 1412.2.: update to any minor version of 1412.2 (e.g. 1412.2.34 or 1412.2.2)
167 // 1412.24.34: update to this specific version only
168 // ---------------------------------------------------------------------
169 optional string target_version_prefix = 2;
170
171 // The Chrome browser version (e.g. "17.*") corresponding to the
172 // target_version_prefix above. The target_version_prefix is the internal OS
173 // version that external users normally are not aware of. This display_name
174 // can be used by the devices to display a message to end-users about the auto
175 // update setting.
176 optional string target_version_display_name = 3;
177
178 // Specifies the number of seconds up to which a device may randomly
179 // delay its download of an update from the time the update was first pushed
180 // out to the server. The device may wait a portion of this time in terms
181 // of wall-clock-time and the remaining portion in terms of the number of
182 // update checks. In any case, the scatter is upper bounded by a constant
183 // amount of time so that a device does not ever get stuck waiting to download
184 // an update forever.
185 optional int64 scatter_factor_in_seconds = 4;
186
187 // Enumerates network connection types.
188 enum ConnectionType {
189 CONNECTION_TYPE_ETHERNET = 0;
190 CONNECTION_TYPE_WIFI = 1;
191 CONNECTION_TYPE_WIMAX = 2;
192 CONNECTION_TYPE_BLUETOOTH = 3;
193 CONNECTION_TYPE_CELLULAR = 4;
194 }
195
196 // The types of connections that are OK to use for OS updates. OS updates
197 // potentially put heavy strain on the connection due to their size and may
198 // incur additional cost. Therefore, they are by default not enabled for
199 // connection types that are considered expensive, which include WiMax,
200 // Bluetooth and Cellular at the moment.
201 repeated ConnectionType allowed_connection_types = 5;
202
Torne (Richard Coles)868fa2f2013-06-11 10:57:03 +0100203 // This has been replaced by |reboot_after_update| below.
204 optional bool OBSOLETE_reboot_after_update = 6 [deprecated = true];
Torne (Richard Coles)a93a17c2013-05-15 11:34:50 +0100205
206 // True if AU payloads can be downloaded via HTTP. False otherwise.
207 optional bool http_downloads_enabled = 7 [default = false];
Torne (Richard Coles)868fa2f2013-06-11 10:57:03 +0100208
209 // True if the device should reboot automatically when an update has been
210 // applied and a reboot is required to complete the update process.
211 //
212 // Note: Currently, automatic reboots are only enabled while the login screen
213 // is being shown or a kiosk app session is in progress. This will change in
214 // the future and the policy will always apply, regardless of whether a
215 // session of any particular type is in progress or not.
216 optional bool reboot_after_update = 8;
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +0100217}
218
219message StartUpUrlsProto {
220 // Specifies the URLs to be loaded on login to the anonymous account used if
221 // the device is in RETAIL mode.
222 repeated string start_up_urls = 1;
223}
224
225message SystemTimezoneProto {
226 // Specifies an owner-determined timezone that applies to the login screen and
227 // all users. Valid values are listed in "timezone_settings.cc". Additionally,
228 // timezones from the "IANA Time Zone Database" (e.g. listed on wikipedia)
229 // that are equivalent to one of the timezones in "timezone_settings.cc" are
230 // valid. In case of an invalid value, the setting is still activated with a
231 // fallback timezone (currently "GMT"). In case of an empty string or if no
232 // value is provided, the timezone device setting is inactive. In that case,
233 // the currently active timezone will remain in use however users can change
234 // the timezone and the change is persistent. Thus a change by one user
235 // affects the login-screen and all other users.
236 optional string timezone = 1;
237}
238
Ben Murdochbb1529c2013-08-08 10:24:53 +0100239message SystemUse24HourClockProto {
240 // Specifies an owner-determined clock format that applies to the login
241 // screen and all users.
242 optional bool use_24hour_clock = 1;
243}
244
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +0100245// Parameters for Kiosk App device-local accounts.
246message KioskAppInfoProto {
247 // Indicates the Kiosk App for the corresponding device-local account. The
248 // string value should be a valid 32-character Chrome App identifier and
249 // specifies the Kiosk App to download and run.
250 optional string app_id = 1;
251
252 // Optional extension update URL to download the Kiosk App package from. If
253 // not specified, the app will be downloaded from the standard Chrome Web
254 // Store update URL.
255 optional string update_url = 2;
256}
257
258// Describes a single device-local account.
259message DeviceLocalAccountInfoProto {
260 // Deprecated: Account identifier for a public session device-local account.
261 // Old code didn't have the |type| field, so it can't handle new types of
262 // device-local accounts gracefully (i.e. ignoring unsupported types). New
263 // code should instead set type to ACCOUNT_TYPE_PUBLIC_SESSION and write the
264 // identifier to the |account_id| field below. If the |type| field is present,
265 // |deprecated_public_session_id| will be ignored.
Torne (Richard Coles)b2df76e2013-05-13 16:52:09 +0100266 optional string deprecated_public_session_id = 1;
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +0100267
268 // Identifier for the device-local account. This is an opaque identifier that
269 // is used to distinguish different device-local accounts configured. All
270 // configured accounts on a device must have unique identifiers.
271 optional string account_id = 2;
272
273 // Indicates the type of device-local account.
274 enum AccountType {
275 // A login-less, policy-configured browsing session.
276 ACCOUNT_TYPE_PUBLIC_SESSION = 0;
277 // An account that serves as a container for a single full-screen app.
278 ACCOUNT_TYPE_KIOSK_APP = 1;
279 };
280
281 // The account type.
282 optional AccountType type = 3;
283
284 // Kiosk App parameters, relevant if |type| is ACCOUNT_TYPE_KIOSK_APP.
285 optional KioskAppInfoProto kiosk_app = 4;
286}
287
288message DeviceLocalAccountsProto {
289 // The list of device-local accounts (i.e. accounts without an associated
290 // cloud-backed profile) that are available on the device.
291 repeated DeviceLocalAccountInfoProto account = 1;
292
293 // The identifier of the device-local account to which the device
294 // should be logged in automatically. Should be equal to one of the
295 // ids in DeviceLocalAccountInfoProto.
296 optional string auto_login_id = 2;
297
298 // The amount of time, in milliseconds, that should elapse at the signin
299 // screen without user interaction before automatically logging in.
300 optional int64 auto_login_delay = 3;
301
302 // Whether the keyboard shortcut to prevent zero-delay auto-login should be
303 // enabled or not. If this keyboard shortcut is engaged, the auto-login will
304 // be delayed by 3 minutes so administrators can log in or make configuration
305 // changes.
306 optional bool enable_auto_login_bailout = 4 [default = true];
307}
308
309message AllowRedeemChromeOsRegistrationOffersProto {
310 // Chrome OS Registration service provides way for chromeos device users
311 // to redeem electronic offers provided by service provider.
312 // This value determines if users are allowed to redeem offers through
313 // Chrome OS Registration service.
314 optional bool allow_redeem_offers = 1 [default = true];
315}
316
317message StartUpFlagsProto {
318 // The list of flags to be applied to chrome on start-up (back up store for
319 // owner set flags in about:flags).
320 repeated string flags = 1;
321}
322
323message UptimeLimitProto {
Torne (Richard Coles)868fa2f2013-06-11 10:57:03 +0100324 // This has been replaced by |uptime_limit| below.
325 optional int64 OBSOLETE_uptime_limit = 1 [deprecated = true];
326
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +0100327 // Sets the length of device uptime after which an automatic reboot is
328 // scheduled. An automatic reboot is scheduled at the selected time but may be
329 // delayed on the device by up to 24 hours, e.g. if a user is currently using
330 // the device or an app/extension has requested reboots to be inhibited
331 // temporarily. The policy value should be specified in seconds.
Torne (Richard Coles)868fa2f2013-06-11 10:57:03 +0100332 //
333 // Note: Currently, automatic reboots are only enabled while the login screen
334 // is being shown or a kiosk app session is in progress. This will change in
335 // the future and the policy will always apply, regardless of whether a
336 // session of any particular type is in progress or not.
337 optional int64 uptime_limit = 2;
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +0100338}
339
340message VariationsParameterProto {
341 // The string for the restrict parameter to be appended to the Variations URL
342 // when pinging the Variations server.
343 optional string parameter = 1;
344}
345
346message AttestationSettingsProto {
347 // Attestation involves proving that a cryptographic key is protected by a
348 // legitimate Chrome OS TPM and reporting the operating mode of the platform.
349 // This setting enables attestation features at a device level. If this is
350 // enabled a machine key will be generated and certified by the Chrome OS
351 // CA. If this setting is disabled, the device will not communicate with the
352 // Chrome OS CA under any circumstances. Even users with attestation settings
353 // enabled will not be able to use those features on the device.
354 optional bool attestation_enabled = 1;
355}
356
Ben Murdocheb525c52013-07-10 11:40:50 +0100357message AccessibilitySettingsProto {
358 // Sets the default state of the large cursor accessibility feature on the
359 // login screen. If this policy is set to true, the large cursor will be
360 // enabled when the login screen is shown. If this policy is set to false, the
361 // large cursor will be disabled when the login screen is shown. Users can
362 // temporarily override this setting by enabling or disabling the large
363 // cursor. However, the user's choice is not persistent and the default is
364 // restored whenever the login screen is shown anew or the user remains idle
365 // on the login screen for a minute. If this policy is left unset, the large
366 // cursor is disabled when the login screen is first shown. Users can enable
367 // or disable the large cursor anytime and its status on the login screen is
368 // persisted between users.
369 optional bool login_screen_default_large_cursor_enabled = 1;
370
371 // Sets the default state of the spoken feedback accessibility feature on the
372 // login screen. If this policy is set to true, spoken feedback will be
373 // enabled when the login screen is shown. If this policy is set to false,
374 // spoken feedback will be disabled when the login screen is shown. Users can
375 // temporarily override this setting by enabling or disabling spoken feedback.
376 // However, the user's choice is not persistent and the default is restored
377 // whenever the login screen is shown anew or the user remains idle on the
378 // login screen for a minute. If this policy is left unset, spoken feedback is
379 // disabled when the login screen is first shown. Users can enable or disable
380 // spoken feedback anytime and its status on the login screen is persisted
381 // between users.
382 optional bool login_screen_default_spoken_feedback_enabled = 2;
383
384 // Sets the default state of the high contrast mode accessibility feature on
385 // the login screen. If this policy is set to true, high contrast mode will be
386 // enabled when the login screen is shown. If this policy is set to false,
387 // high contrast mode will be disabled when the login screen is shown. Users
388 // can temporarily override this setting by enabling or disabling high
389 // contrast mode. However, the user's choice is not persistent and the default
390 // is restored whenever the login screen is shown anew or the user remains
391 // idle on the login screen for a minute. If this policy is left unset, high
392 // contrast mode is disabled when the login screen is first shown. Users can
393 // enable or disable high contrast mode anytime and its status on the login
394 // screen is persisted between users.
395 optional bool login_screen_default_high_contrast_enabled = 3;
396
397 // Enumerates the screen magnifier types.
398 enum ScreenMagnifierType {
399 // Screen magnifier disabled.
400 SCREEN_MAGNIFIER_TYPE_NONE = 0;
401 // Full-screen magnifier enabled.
402 SCREEN_MAGNIFIER_TYPE_FULL = 1;
403 };
404
405 // Sets the default type of screen magnifier that is enabled on the login
406 // screen. If this policy is set, it controls the type of screen magnifier
407 // that is enabled when the login screen is shown. Users can temporarily
408 // override this setting by enabling or disabling the screen magnifier.
409 // However, the user's choice is not persistent and the default is restored
410 // whenever the login screen is shown anew or the user remains idle on the
411 // login screen for a minute. If this policy is left unset, the screen
412 // magnifier is disabled when the login screen is first shown. Users can
413 // enable or disable the screen magnifier anytime and its status on the login
414 // screen is persisted between users.
415 optional ScreenMagnifierType login_screen_default_screen_magnifier_type = 4;
416}
417
418message SupervisedUsersSettingsProto {
419 // Defines whether supervised users can be created on the device.
420 optional bool supervised_users_enabled = 1;
421}
422
Ben Murdoch9ab55632013-07-18 11:57:30 +0100423message LoginScreenPowerManagementProto {
424 // Configures power management on the login screen. The policy should be
425 // specified as a string that expresses the individual settings in JSON
426 // format, conforming to the following schema:
427 // {
428 // "type": "object",
429 // "properties": {
430 // "AC": {
431 // "description": "Power management settings applicable only when
432 // running on AC power",
433 // "type": "object",
434 // "properties": {
435 // "Delays": {
436 // "type": "object",
437 // "properties": {
438 // "ScreenDim": {
439 // "description": "The length of time without user input after
440 // which the screen is dimmed, in milliseconds",
441 // "type": "integer",
442 // "minimum": 0
443 // },
444 // "ScreenOff": {
445 // "description": "The length of time without user input after
446 // which the screen is turned off, in
447 // milliseconds",
448 // "type": "integer",
449 // "minimum": 0
450 // },
451 // "Idle": {
452 // "description": "The length of time without user input after
453 // which the idle action is taken, in
454 // milliseconds",
455 // "type": "integer",
456 // "minimum": 0
457 // }
458 // }
459 // },
460 // "IdleAction": {
461 // "description": "Action to take when the idle delay is reached",
462 // "enum": [ "Suspend", "Shutdown", "DoNothing" ]
463 // }
464 // }
465 // },
466 // "Battery": {
467 // "description": "Power management settings applicable only when
468 // running on battery power",
469 // "type": "object",
470 // "properties": {
471 // "Delays": {
472 // "type": "object",
473 // "properties": {
474 // "ScreenDim": {
475 // "description": "The length of time without user input after
476 // which the screen is dimmed, in milliseconds",
477 // "type": "integer",
478 // "minimum": 0
479 // },
480 // "ScreenOff": {
481 // "description": "The length of time without user input after
482 // which the screen is turned off, in
483 // milliseconds",
484 // "type": "integer",
485 // "minimum": 0
486 // },
487 // "Idle": {
488 // "description": "The length of time without user input after
489 // which the idle action is taken, in
490 // milliseconds",
491 // "type": "integer",
492 // "minimum": 0
493 // }
494 // }
495 // },
496 // "IdleAction": {
497 // "description": "Action to take when the idle delay is reached",
498 // "enum": [ "Suspend", "Shutdown", "DoNothing" ]
499 // }
500 // }
501 // },
502 // "LidCloseAction": {
503 // "description": "Action to take when the lid is closed",
504 // "enum": [ "Suspend", "Shutdown", "DoNothing" ]
505 // },
506 // "UserActivityScreenDimDelayScale": {
507 // "description": "Percentage by which the screen dim delay is scaled
508 // when user activity is observed while the screen is
509 // dimmed or soon after the screen has been turned off",
510 // "type": "integer",
511 // "minimum": 0
512 // }
513 // }
514 // }
515 optional string login_screen_power_management = 1;
516}
517
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +0100518message ChromeDeviceSettingsProto {
519 optional DevicePolicyRefreshRateProto device_policy_refresh_rate = 1;
520 optional UserWhitelistProto user_whitelist = 2;
521 optional GuestModeEnabledProto guest_mode_enabled = 3;
522 optional DeviceProxySettingsProto device_proxy_settings = 4;
523 optional CameraEnabledProto camera_enabled = 5;
524 optional ShowUserNamesOnSigninProto show_user_names = 6;
525 optional DataRoamingEnabledProto data_roaming_enabled = 7;
526 optional AllowNewUsersProto allow_new_users = 8;
527 optional MetricsEnabledProto metrics_enabled = 9;
528 optional ReleaseChannelProto release_channel = 10;
529 optional DeviceOpenNetworkConfigurationProto open_network_configuration = 11;
530 optional DeviceReportingProto device_reporting = 12;
531 optional EphemeralUsersEnabledProto ephemeral_users_enabled = 13;
532 optional AppPackProto app_pack = 14;
533 optional ForcedLogoutTimeoutsProto forced_logout_timeouts = 15;
534 optional ScreenSaverProto login_screen_saver = 16;
535 optional AutoUpdateSettingsProto auto_update_settings = 17;
536 optional StartUpUrlsProto start_up_urls = 18;
537 optional PinnedAppsProto pinned_apps = 19;
538 optional SystemTimezoneProto system_timezone = 20;
539 optional DeviceLocalAccountsProto device_local_accounts = 21;
540 optional AllowRedeemChromeOsRegistrationOffersProto allow_redeem_offers = 22;
541 optional StartUpFlagsProto start_up_flags = 23;
542 optional UptimeLimitProto uptime_limit = 24;
543 optional VariationsParameterProto variations_parameter = 25;
544 optional AttestationSettingsProto attestation_settings = 26;
Ben Murdocheb525c52013-07-10 11:40:50 +0100545 optional AccessibilitySettingsProto accessibility_settings = 27;
546 optional SupervisedUsersSettingsProto supervised_users_settings = 28;
Ben Murdoch9ab55632013-07-18 11:57:30 +0100547 optional LoginScreenPowerManagementProto login_screen_power_management = 29;
Ben Murdochbb1529c2013-08-08 10:24:53 +0100548 optional SystemUse24HourClockProto use_24hour_clock = 30;
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +0100549}