Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1290)

Unified Diff: generated/googleapis/lib/androidmanagement/v1.dart

Issue 2987103002: Api-Roll 52: 2017-07-31 (Closed)
Patch Set: Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « generated/googleapis/lib/androidenterprise/v1.dart ('k') | generated/googleapis/lib/appengine/v1.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: generated/googleapis/lib/androidmanagement/v1.dart
diff --git a/generated/googleapis/lib/androidmanagement/v1.dart b/generated/googleapis/lib/androidmanagement/v1.dart
new file mode 100644
index 0000000000000000000000000000000000000000..1d8eb8a2f8f010806ca4d2b892125e3be5dbc967
--- /dev/null
+++ b/generated/googleapis/lib/androidmanagement/v1.dart
@@ -0,0 +1,4065 @@
+// This is a generated file (see the discoveryapis_generator project).
+
+library googleapis.androidmanagement.v1;
+
+import 'dart:core' as core;
+import 'dart:async' as async;
+import 'dart:convert' as convert;
+
+import 'package:_discoveryapis_commons/_discoveryapis_commons.dart' as commons;
+import 'package:http/http.dart' as http;
+
+export 'package:_discoveryapis_commons/_discoveryapis_commons.dart' show
+ ApiRequestError, DetailedApiRequestError;
+
+const core.String USER_AGENT = 'dart-api-client androidmanagement/v1';
+
+/**
+ * The Android Management API provides remote enterprise management of Android
+ * devices and apps.
+ */
+class AndroidmanagementApi {
+
+ final commons.ApiRequester _requester;
+
+ EnterprisesResourceApi get enterprises => new EnterprisesResourceApi(_requester);
+ SignupUrlsResourceApi get signupUrls => new SignupUrlsResourceApi(_requester);
+
+ AndroidmanagementApi(http.Client client, {core.String rootUrl: "https://androidmanagement.googleapis.com/", core.String servicePath: ""}) :
+ _requester = new commons.ApiRequester(client, rootUrl, servicePath, USER_AGENT);
+}
+
+
+class EnterprisesResourceApi {
+ final commons.ApiRequester _requester;
+
+ EnterprisesApplicationsResourceApi get applications => new EnterprisesApplicationsResourceApi(_requester);
+ EnterprisesDevicesResourceApi get devices => new EnterprisesDevicesResourceApi(_requester);
+ EnterprisesEnrollmentTokensResourceApi get enrollmentTokens => new EnterprisesEnrollmentTokensResourceApi(_requester);
+ EnterprisesPoliciesResourceApi get policies => new EnterprisesPoliciesResourceApi(_requester);
+ EnterprisesWebTokensResourceApi get webTokens => new EnterprisesWebTokensResourceApi(_requester);
+
+ EnterprisesResourceApi(commons.ApiRequester client) :
+ _requester = client;
+
+ /**
+ * Creates an enterprise by completing the enterprise signup flow.
+ *
+ * [request] - The metadata request object.
+ *
+ * Request parameters:
+ *
+ * [signupUrlName] - The name of the
+ * [`SignupUrl`](/android/management/reference/rest/v1/signupUrls#SignupUrl)
+ * used to sign up for the enterprise.
+ *
+ * [enterpriseToken] - The enterprise token appended to the callback URL.
+ *
+ * [projectId] - The id of the Google Cloud Platform project which will own
+ * the enterprise.
+ *
+ * Completes with a [Enterprise].
+ *
+ * Completes with a [commons.ApiRequestError] if the API endpoint returned an
+ * error.
+ *
+ * If the used [http.Client] completes with an error when making a REST call,
+ * this method will complete with the same error.
+ */
+ async.Future<Enterprise> create(Enterprise request, {core.String signupUrlName, core.String enterpriseToken, core.String projectId}) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
+
+ if (request != null) {
+ _body = convert.JSON.encode((request).toJson());
+ }
+ if (signupUrlName != null) {
+ _queryParams["signupUrlName"] = [signupUrlName];
+ }
+ if (enterpriseToken != null) {
+ _queryParams["enterpriseToken"] = [enterpriseToken];
+ }
+ if (projectId != null) {
+ _queryParams["projectId"] = [projectId];
+ }
+
+ _url = 'v1/enterprises';
+
+ var _response = _requester.request(_url,
+ "POST",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new Enterprise.fromJson(data));
+ }
+
+ /**
+ * Gets an enterprise.
+ *
+ * Request parameters:
+ *
+ * [name] - The name of the enterprise in the form
+ * `enterprises/{enterpriseId}`
+ * Value must have pattern "^enterprises/[^/]+$".
+ *
+ * Completes with a [Enterprise].
+ *
+ * Completes with a [commons.ApiRequestError] if the API endpoint returned an
+ * error.
+ *
+ * If the used [http.Client] completes with an error when making a REST call,
+ * this method will complete with the same error.
+ */
+ async.Future<Enterprise> get(core.String name) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
+
+ if (name == null) {
+ throw new core.ArgumentError("Parameter name is required.");
+ }
+
+ _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
+
+ var _response = _requester.request(_url,
+ "GET",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new Enterprise.fromJson(data));
+ }
+
+ /**
+ * Updates an enterprise.
+ *
+ * [request] - The metadata request object.
+ *
+ * Request parameters:
+ *
+ * [name] - The name of the enterprise in the form
+ * `enterprises/{enterpriseId}`
+ * Value must have pattern "^enterprises/[^/]+$".
+ *
+ * [updateMask] - The field mask indicating the fields to update.
+ * If not set, all modifiable fields will be modified.
+ *
+ * Completes with a [Enterprise].
+ *
+ * Completes with a [commons.ApiRequestError] if the API endpoint returned an
+ * error.
+ *
+ * If the used [http.Client] completes with an error when making a REST call,
+ * this method will complete with the same error.
+ */
+ async.Future<Enterprise> patch(Enterprise request, core.String name, {core.String updateMask}) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
+
+ if (request != null) {
+ _body = convert.JSON.encode((request).toJson());
+ }
+ if (name == null) {
+ throw new core.ArgumentError("Parameter name is required.");
+ }
+ if (updateMask != null) {
+ _queryParams["updateMask"] = [updateMask];
+ }
+
+ _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
+
+ var _response = _requester.request(_url,
+ "PATCH",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new Enterprise.fromJson(data));
+ }
+
+}
+
+
+class EnterprisesApplicationsResourceApi {
+ final commons.ApiRequester _requester;
+
+ EnterprisesApplicationsResourceApi(commons.ApiRequester client) :
+ _requester = client;
+
+ /**
+ * Gets info about an application.
+ *
+ * Request parameters:
+ *
+ * [name] - The name of the application in the form
+ * `enterprises/{enterpriseId}/applications/{package_name}`
+ * Value must have pattern "^enterprises/[^/]+/applications/[^/]+$".
+ *
+ * [languageCode] - The preferred language for localized application info, as
+ * a BCP47 tag
+ * (e.g. "en-US", "de"). If not specified the default language of the
+ * application will be used.
+ *
+ * Completes with a [Application].
+ *
+ * Completes with a [commons.ApiRequestError] if the API endpoint returned an
+ * error.
+ *
+ * If the used [http.Client] completes with an error when making a REST call,
+ * this method will complete with the same error.
+ */
+ async.Future<Application> get(core.String name, {core.String languageCode}) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
+
+ if (name == null) {
+ throw new core.ArgumentError("Parameter name is required.");
+ }
+ if (languageCode != null) {
+ _queryParams["languageCode"] = [languageCode];
+ }
+
+ _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
+
+ var _response = _requester.request(_url,
+ "GET",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new Application.fromJson(data));
+ }
+
+}
+
+
+class EnterprisesDevicesResourceApi {
+ final commons.ApiRequester _requester;
+
+ EnterprisesDevicesOperationsResourceApi get operations => new EnterprisesDevicesOperationsResourceApi(_requester);
+
+ EnterprisesDevicesResourceApi(commons.ApiRequester client) :
+ _requester = client;
+
+ /**
+ * Deletes a device, which causes the device to be wiped.
+ *
+ * Request parameters:
+ *
+ * [name] - The name of the device in the form
+ * `enterprises/{enterpriseId}/devices/{deviceId}`
+ * Value must have pattern "^enterprises/[^/]+/devices/[^/]+$".
+ *
+ * Completes with a [Empty].
+ *
+ * Completes with a [commons.ApiRequestError] if the API endpoint returned an
+ * error.
+ *
+ * If the used [http.Client] completes with an error when making a REST call,
+ * this method will complete with the same error.
+ */
+ async.Future<Empty> delete(core.String name) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
+
+ if (name == null) {
+ throw new core.ArgumentError("Parameter name is required.");
+ }
+
+ _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
+
+ var _response = _requester.request(_url,
+ "DELETE",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new Empty.fromJson(data));
+ }
+
+ /**
+ * Gets a device.
+ *
+ * Request parameters:
+ *
+ * [name] - The name of the device in the form
+ * `enterprises/{enterpriseId}/devices/{deviceId}`
+ * Value must have pattern "^enterprises/[^/]+/devices/[^/]+$".
+ *
+ * Completes with a [Device].
+ *
+ * Completes with a [commons.ApiRequestError] if the API endpoint returned an
+ * error.
+ *
+ * If the used [http.Client] completes with an error when making a REST call,
+ * this method will complete with the same error.
+ */
+ async.Future<Device> get(core.String name) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
+
+ if (name == null) {
+ throw new core.ArgumentError("Parameter name is required.");
+ }
+
+ _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
+
+ var _response = _requester.request(_url,
+ "GET",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new Device.fromJson(data));
+ }
+
+ /**
+ * Issues a command to a device. The
+ * [`Operation`](/android/management/reference/rest/v1/enterprises.devices.operations#Operation)
+ * resource returned contains a
+ * [`Command`](/android/management/reference/rest/v1/enterprises.devices/issueCommand#Command)
+ * in its `metadata` field.
+ * Use the
+ * [get operation
+ * method](/android/management/reference/rest/v1/enterprises.devices.operations/get)
+ * to get the status of the command.
+ *
+ * [request] - The metadata request object.
+ *
+ * Request parameters:
+ *
+ * [name] - The name of the device in the form
+ * `enterprises/{enterpriseId}/devices/{deviceId}`
+ * Value must have pattern "^enterprises/[^/]+/devices/[^/]+$".
+ *
+ * Completes with a [Operation].
+ *
+ * Completes with a [commons.ApiRequestError] if the API endpoint returned an
+ * error.
+ *
+ * If the used [http.Client] completes with an error when making a REST call,
+ * this method will complete with the same error.
+ */
+ async.Future<Operation> issueCommand(Command request, core.String name) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
+
+ if (request != null) {
+ _body = convert.JSON.encode((request).toJson());
+ }
+ if (name == null) {
+ throw new core.ArgumentError("Parameter name is required.");
+ }
+
+ _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name') + ':issueCommand';
+
+ var _response = _requester.request(_url,
+ "POST",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new Operation.fromJson(data));
+ }
+
+ /**
+ * Lists devices for a given enterprise.
+ *
+ * Request parameters:
+ *
+ * [parent] - The name of the enterprise in the form
+ * `enterprises/{enterpriseId}`
+ * Value must have pattern "^enterprises/[^/]+$".
+ *
+ * [pageSize] - The requested page size. The actual page size may be fixed to
+ * a min or max
+ * value.
+ *
+ * [pageToken] - A token identifying a page of results the server should
+ * return.
+ *
+ * Completes with a [ListDevicesResponse].
+ *
+ * Completes with a [commons.ApiRequestError] if the API endpoint returned an
+ * error.
+ *
+ * If the used [http.Client] completes with an error when making a REST call,
+ * this method will complete with the same error.
+ */
+ async.Future<ListDevicesResponse> list(core.String parent, {core.int pageSize, core.String pageToken}) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
+
+ if (parent == null) {
+ throw new core.ArgumentError("Parameter parent is required.");
+ }
+ if (pageSize != null) {
+ _queryParams["pageSize"] = ["${pageSize}"];
+ }
+ if (pageToken != null) {
+ _queryParams["pageToken"] = [pageToken];
+ }
+
+ _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$parent') + '/devices';
+
+ var _response = _requester.request(_url,
+ "GET",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new ListDevicesResponse.fromJson(data));
+ }
+
+ /**
+ * Updates a device.
+ *
+ * [request] - The metadata request object.
+ *
+ * Request parameters:
+ *
+ * [name] - The name of the device in the form
+ * `enterprises/{enterpriseId}/devices/{deviceId}`
+ * Value must have pattern "^enterprises/[^/]+/devices/[^/]+$".
+ *
+ * [updateMask] - The field mask indicating the fields to update.
+ * If not set, all modifiable fields will be modified.
+ *
+ * Completes with a [Device].
+ *
+ * Completes with a [commons.ApiRequestError] if the API endpoint returned an
+ * error.
+ *
+ * If the used [http.Client] completes with an error when making a REST call,
+ * this method will complete with the same error.
+ */
+ async.Future<Device> patch(Device request, core.String name, {core.String updateMask}) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
+
+ if (request != null) {
+ _body = convert.JSON.encode((request).toJson());
+ }
+ if (name == null) {
+ throw new core.ArgumentError("Parameter name is required.");
+ }
+ if (updateMask != null) {
+ _queryParams["updateMask"] = [updateMask];
+ }
+
+ _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
+
+ var _response = _requester.request(_url,
+ "PATCH",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new Device.fromJson(data));
+ }
+
+}
+
+
+class EnterprisesDevicesOperationsResourceApi {
+ final commons.ApiRequester _requester;
+
+ EnterprisesDevicesOperationsResourceApi(commons.ApiRequester client) :
+ _requester = client;
+
+ /**
+ * Starts asynchronous cancellation on a long-running operation. The server
+ * makes a best effort to cancel the operation, but success is not
+ * guaranteed. If the server doesn't support this method, it returns
+ * `google.rpc.Code.UNIMPLEMENTED`. Clients can use
+ * Operations.GetOperation or
+ * other methods to check whether the cancellation succeeded or whether the
+ * operation completed despite cancellation. On successful cancellation,
+ * the operation is not deleted; instead, it becomes an operation with
+ * an Operation.error value with a google.rpc.Status.code of 1,
+ * corresponding to `Code.CANCELLED`.
+ *
+ * Request parameters:
+ *
+ * [name] - The name of the operation resource to be cancelled.
+ * Value must have pattern
+ * "^enterprises/[^/]+/devices/[^/]+/operations/[^/]+$".
+ *
+ * Completes with a [Empty].
+ *
+ * Completes with a [commons.ApiRequestError] if the API endpoint returned an
+ * error.
+ *
+ * If the used [http.Client] completes with an error when making a REST call,
+ * this method will complete with the same error.
+ */
+ async.Future<Empty> cancel(core.String name) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
+
+ if (name == null) {
+ throw new core.ArgumentError("Parameter name is required.");
+ }
+
+ _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name') + ':cancel';
+
+ var _response = _requester.request(_url,
+ "POST",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new Empty.fromJson(data));
+ }
+
+ /**
+ * Deletes a long-running operation. This method indicates that the client is
+ * no longer interested in the operation result. It does not cancel the
+ * operation. If the server doesn't support this method, it returns
+ * `google.rpc.Code.UNIMPLEMENTED`.
+ *
+ * Request parameters:
+ *
+ * [name] - The name of the operation resource to be deleted.
+ * Value must have pattern
+ * "^enterprises/[^/]+/devices/[^/]+/operations/[^/]+$".
+ *
+ * Completes with a [Empty].
+ *
+ * Completes with a [commons.ApiRequestError] if the API endpoint returned an
+ * error.
+ *
+ * If the used [http.Client] completes with an error when making a REST call,
+ * this method will complete with the same error.
+ */
+ async.Future<Empty> delete(core.String name) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
+
+ if (name == null) {
+ throw new core.ArgumentError("Parameter name is required.");
+ }
+
+ _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
+
+ var _response = _requester.request(_url,
+ "DELETE",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new Empty.fromJson(data));
+ }
+
+ /**
+ * Gets the latest state of a long-running operation. Clients can use this
+ * method to poll the operation result at intervals as recommended by the API
+ * service.
+ *
+ * Request parameters:
+ *
+ * [name] - The name of the operation resource.
+ * Value must have pattern
+ * "^enterprises/[^/]+/devices/[^/]+/operations/[^/]+$".
+ *
+ * Completes with a [Operation].
+ *
+ * Completes with a [commons.ApiRequestError] if the API endpoint returned an
+ * error.
+ *
+ * If the used [http.Client] completes with an error when making a REST call,
+ * this method will complete with the same error.
+ */
+ async.Future<Operation> get(core.String name) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
+
+ if (name == null) {
+ throw new core.ArgumentError("Parameter name is required.");
+ }
+
+ _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
+
+ var _response = _requester.request(_url,
+ "GET",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new Operation.fromJson(data));
+ }
+
+ /**
+ * Lists operations that match the specified filter in the request. If the
+ * server doesn't support this method, it returns `UNIMPLEMENTED`.
+ *
+ * NOTE: the `name` binding allows API services to override the binding
+ * to use different resource name schemes, such as `users / * /operations`. To
+ * override the binding, API services can add a binding such as
+ * `"/v1/{name=users / * }/operations"` to their service configuration.
+ * For backwards compatibility, the default name includes the operations
+ * collection id, however overriding users must ensure the name binding
+ * is the parent resource, without the operations collection id.
+ *
+ * Request parameters:
+ *
+ * [name] - The name of the operation's parent resource.
+ * Value must have pattern "^enterprises/[^/]+/devices/[^/]+/operations$".
+ *
+ * [pageSize] - The standard list page size.
+ *
+ * [filter] - The standard list filter.
+ *
+ * [pageToken] - The standard list page token.
+ *
+ * Completes with a [ListOperationsResponse].
+ *
+ * Completes with a [commons.ApiRequestError] if the API endpoint returned an
+ * error.
+ *
+ * If the used [http.Client] completes with an error when making a REST call,
+ * this method will complete with the same error.
+ */
+ async.Future<ListOperationsResponse> list(core.String name, {core.int pageSize, core.String filter, core.String pageToken}) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
+
+ if (name == null) {
+ throw new core.ArgumentError("Parameter name is required.");
+ }
+ if (pageSize != null) {
+ _queryParams["pageSize"] = ["${pageSize}"];
+ }
+ if (filter != null) {
+ _queryParams["filter"] = [filter];
+ }
+ if (pageToken != null) {
+ _queryParams["pageToken"] = [pageToken];
+ }
+
+ _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
+
+ var _response = _requester.request(_url,
+ "GET",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new ListOperationsResponse.fromJson(data));
+ }
+
+}
+
+
+class EnterprisesEnrollmentTokensResourceApi {
+ final commons.ApiRequester _requester;
+
+ EnterprisesEnrollmentTokensResourceApi(commons.ApiRequester client) :
+ _requester = client;
+
+ /**
+ * Creates an enrollment token for a given enterprise.
+ *
+ * [request] - The metadata request object.
+ *
+ * Request parameters:
+ *
+ * [parent] - The name of the enterprise in the form
+ * `enterprises/{enterpriseId}`
+ * Value must have pattern "^enterprises/[^/]+$".
+ *
+ * Completes with a [EnrollmentToken].
+ *
+ * Completes with a [commons.ApiRequestError] if the API endpoint returned an
+ * error.
+ *
+ * If the used [http.Client] completes with an error when making a REST call,
+ * this method will complete with the same error.
+ */
+ async.Future<EnrollmentToken> create(EnrollmentToken request, core.String parent) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
+
+ if (request != null) {
+ _body = convert.JSON.encode((request).toJson());
+ }
+ if (parent == null) {
+ throw new core.ArgumentError("Parameter parent is required.");
+ }
+
+ _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$parent') + '/enrollmentTokens';
+
+ var _response = _requester.request(_url,
+ "POST",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new EnrollmentToken.fromJson(data));
+ }
+
+ /**
+ * Deletes an enrollment token, which prevents future use of the token.
+ *
+ * Request parameters:
+ *
+ * [name] - The name of the enrollment token in the form
+ * `enterprises/{enterpriseId}/enrollmentTokens/{enrollmentTokenId}`
+ * Value must have pattern "^enterprises/[^/]+/enrollmentTokens/[^/]+$".
+ *
+ * Completes with a [Empty].
+ *
+ * Completes with a [commons.ApiRequestError] if the API endpoint returned an
+ * error.
+ *
+ * If the used [http.Client] completes with an error when making a REST call,
+ * this method will complete with the same error.
+ */
+ async.Future<Empty> delete(core.String name) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
+
+ if (name == null) {
+ throw new core.ArgumentError("Parameter name is required.");
+ }
+
+ _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
+
+ var _response = _requester.request(_url,
+ "DELETE",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new Empty.fromJson(data));
+ }
+
+}
+
+
+class EnterprisesPoliciesResourceApi {
+ final commons.ApiRequester _requester;
+
+ EnterprisesPoliciesResourceApi(commons.ApiRequester client) :
+ _requester = client;
+
+ /**
+ * Deletes a policy. This operation is only permitted if no devices are
+ * currently referencing the policy.
+ *
+ * Request parameters:
+ *
+ * [name] - The name of the policy in the form
+ * `enterprises/{enterpriseId}/policies/{policyId}`
+ * Value must have pattern "^enterprises/[^/]+/policies/[^/]+$".
+ *
+ * Completes with a [Empty].
+ *
+ * Completes with a [commons.ApiRequestError] if the API endpoint returned an
+ * error.
+ *
+ * If the used [http.Client] completes with an error when making a REST call,
+ * this method will complete with the same error.
+ */
+ async.Future<Empty> delete(core.String name) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
+
+ if (name == null) {
+ throw new core.ArgumentError("Parameter name is required.");
+ }
+
+ _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
+
+ var _response = _requester.request(_url,
+ "DELETE",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new Empty.fromJson(data));
+ }
+
+ /**
+ * Gets a policy.
+ *
+ * Request parameters:
+ *
+ * [name] - The name of the policy in the form
+ * `enterprises/{enterpriseId}/policies/{policyId}`
+ * Value must have pattern "^enterprises/[^/]+/policies/[^/]+$".
+ *
+ * Completes with a [Policy].
+ *
+ * Completes with a [commons.ApiRequestError] if the API endpoint returned an
+ * error.
+ *
+ * If the used [http.Client] completes with an error when making a REST call,
+ * this method will complete with the same error.
+ */
+ async.Future<Policy> get(core.String name) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
+
+ if (name == null) {
+ throw new core.ArgumentError("Parameter name is required.");
+ }
+
+ _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
+
+ var _response = _requester.request(_url,
+ "GET",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new Policy.fromJson(data));
+ }
+
+ /**
+ * Lists policies for a given enterprise.
+ *
+ * Request parameters:
+ *
+ * [parent] - The name of the enterprise in the form
+ * `enterprises/{enterpriseId}`
+ * Value must have pattern "^enterprises/[^/]+$".
+ *
+ * [pageSize] - The requested page size. The actual page size may be fixed to
+ * a min or max
+ * value.
+ *
+ * [pageToken] - A token identifying a page of results the server should
+ * return.
+ *
+ * Completes with a [ListPoliciesResponse].
+ *
+ * Completes with a [commons.ApiRequestError] if the API endpoint returned an
+ * error.
+ *
+ * If the used [http.Client] completes with an error when making a REST call,
+ * this method will complete with the same error.
+ */
+ async.Future<ListPoliciesResponse> list(core.String parent, {core.int pageSize, core.String pageToken}) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
+
+ if (parent == null) {
+ throw new core.ArgumentError("Parameter parent is required.");
+ }
+ if (pageSize != null) {
+ _queryParams["pageSize"] = ["${pageSize}"];
+ }
+ if (pageToken != null) {
+ _queryParams["pageToken"] = [pageToken];
+ }
+
+ _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$parent') + '/policies';
+
+ var _response = _requester.request(_url,
+ "GET",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new ListPoliciesResponse.fromJson(data));
+ }
+
+ /**
+ * Updates or creates a policy.
+ *
+ * [request] - The metadata request object.
+ *
+ * Request parameters:
+ *
+ * [name] - The name of the policy in the form
+ * `enterprises/{enterpriseId}/policies/{policyId}`
+ * Value must have pattern "^enterprises/[^/]+/policies/[^/]+$".
+ *
+ * [updateMask] - The field mask indicating the fields to update.
+ * If not set, all modifiable fields will be modified.
+ *
+ * Completes with a [Policy].
+ *
+ * Completes with a [commons.ApiRequestError] if the API endpoint returned an
+ * error.
+ *
+ * If the used [http.Client] completes with an error when making a REST call,
+ * this method will complete with the same error.
+ */
+ async.Future<Policy> patch(Policy request, core.String name, {core.String updateMask}) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
+
+ if (request != null) {
+ _body = convert.JSON.encode((request).toJson());
+ }
+ if (name == null) {
+ throw new core.ArgumentError("Parameter name is required.");
+ }
+ if (updateMask != null) {
+ _queryParams["updateMask"] = [updateMask];
+ }
+
+ _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
+
+ var _response = _requester.request(_url,
+ "PATCH",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new Policy.fromJson(data));
+ }
+
+}
+
+
+class EnterprisesWebTokensResourceApi {
+ final commons.ApiRequester _requester;
+
+ EnterprisesWebTokensResourceApi(commons.ApiRequester client) :
+ _requester = client;
+
+ /**
+ * Creates a web token to access an embeddable managed Google Play web UI for
+ * a given enterprise.
+ *
+ * [request] - The metadata request object.
+ *
+ * Request parameters:
+ *
+ * [parent] - The name of the enterprise in the form
+ * `enterprises/{enterpriseId}`
+ * Value must have pattern "^enterprises/[^/]+$".
+ *
+ * Completes with a [WebToken].
+ *
+ * Completes with a [commons.ApiRequestError] if the API endpoint returned an
+ * error.
+ *
+ * If the used [http.Client] completes with an error when making a REST call,
+ * this method will complete with the same error.
+ */
+ async.Future<WebToken> create(WebToken request, core.String parent) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
+
+ if (request != null) {
+ _body = convert.JSON.encode((request).toJson());
+ }
+ if (parent == null) {
+ throw new core.ArgumentError("Parameter parent is required.");
+ }
+
+ _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$parent') + '/webTokens';
+
+ var _response = _requester.request(_url,
+ "POST",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new WebToken.fromJson(data));
+ }
+
+}
+
+
+class SignupUrlsResourceApi {
+ final commons.ApiRequester _requester;
+
+ SignupUrlsResourceApi(commons.ApiRequester client) :
+ _requester = client;
+
+ /**
+ * Creates an enterprise signup URL.
+ *
+ * Request parameters:
+ *
+ * [callbackUrl] - The callback URL to which the admin will be redirected
+ * after successfully
+ * creating an enterprise. Before redirecting there the system will add a
+ * query parameter to this URL named `enterpriseToken` which will
+ * contain an opaque token to be used for the
+ * [create
+ * enterprise](/android/management/reference/rest/v1/enterprises/create)
+ * request. The URL will be parsed then reformatted in order to add the
+ * `enterpriseToken` parameter, so there may be some minor formatting changes.
+ *
+ * [projectId] - The id of the Google Cloud Platform project which will own
+ * the enterprise.
+ *
+ * Completes with a [SignupUrl].
+ *
+ * Completes with a [commons.ApiRequestError] if the API endpoint returned an
+ * error.
+ *
+ * If the used [http.Client] completes with an error when making a REST call,
+ * this method will complete with the same error.
+ */
+ async.Future<SignupUrl> create({core.String callbackUrl, core.String projectId}) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
+
+ if (callbackUrl != null) {
+ _queryParams["callbackUrl"] = [callbackUrl];
+ }
+ if (projectId != null) {
+ _queryParams["projectId"] = [projectId];
+ }
+
+ _url = 'v1/signupUrls';
+
+ var _response = _requester.request(_url,
+ "POST",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new SignupUrl.fromJson(data));
+ }
+
+}
+
+
+
+/**
+ * A compliance rule condition which is satisfied if the Android Framework API
+ * level on the device does not meet a minimum requirement. There can only be
+ * one rule with this type of condition per policy.
+ */
+class ApiLevelCondition {
+ /**
+ * The minimum desired Android Framework API level. If the device does not
+ * meet the minimum requirement, this condition is satisfied. Must be greater
+ * than zero.
+ */
+ core.int minApiLevel;
+
+ ApiLevelCondition();
+
+ ApiLevelCondition.fromJson(core.Map _json) {
+ if (_json.containsKey("minApiLevel")) {
+ minApiLevel = _json["minApiLevel"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (minApiLevel != null) {
+ _json["minApiLevel"] = minApiLevel;
+ }
+ return _json;
+ }
+}
+
+/** Application information. */
+class Application {
+ /**
+ * The set of managed properties available to be pre-configured for the
+ * application.
+ */
+ core.List<ManagedProperty> managedProperties;
+ /**
+ * The name of the application in the form
+ * `enterprises/{enterpriseId}/applications/{package_name}`
+ */
+ core.String name;
+ /** The permissions required by the app. */
+ core.List<ApplicationPermission> permissions;
+ /** The title of the application. Localized. */
+ core.String title;
+
+ Application();
+
+ Application.fromJson(core.Map _json) {
+ if (_json.containsKey("managedProperties")) {
+ managedProperties = _json["managedProperties"].map((value) => new ManagedProperty.fromJson(value)).toList();
+ }
+ if (_json.containsKey("name")) {
+ name = _json["name"];
+ }
+ if (_json.containsKey("permissions")) {
+ permissions = _json["permissions"].map((value) => new ApplicationPermission.fromJson(value)).toList();
+ }
+ if (_json.containsKey("title")) {
+ title = _json["title"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (managedProperties != null) {
+ _json["managedProperties"] = managedProperties.map((value) => (value).toJson()).toList();
+ }
+ if (name != null) {
+ _json["name"] = name;
+ }
+ if (permissions != null) {
+ _json["permissions"] = permissions.map((value) => (value).toJson()).toList();
+ }
+ if (title != null) {
+ _json["title"] = title;
+ }
+ return _json;
+ }
+}
+
+/** Application permission. */
+class ApplicationPermission {
+ /**
+ * A longer description of the permission, giving more details of
+ * what it affects. Localized.
+ */
+ core.String description;
+ /** The name of the permission. Localized. */
+ core.String name;
+ /** An opaque string uniquely identifying the permission. Not localized. */
+ core.String permissionId;
+
+ ApplicationPermission();
+
+ ApplicationPermission.fromJson(core.Map _json) {
+ if (_json.containsKey("description")) {
+ description = _json["description"];
+ }
+ if (_json.containsKey("name")) {
+ name = _json["name"];
+ }
+ if (_json.containsKey("permissionId")) {
+ permissionId = _json["permissionId"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (description != null) {
+ _json["description"] = description;
+ }
+ if (name != null) {
+ _json["name"] = name;
+ }
+ if (permissionId != null) {
+ _json["permissionId"] = permissionId;
+ }
+ return _json;
+ }
+}
+
+/** Policy for an individual app. */
+class ApplicationPolicy {
+ /**
+ * The default policy for all permissions requested by the app. If specified,
+ * this overrides the policy-level `default_permission_policy` which applies
+ * to all apps.
+ * Possible string values are:
+ * - "PERMISSION_POLICY_UNSPECIFIED" : Policy not specified. If no policy is
+ * specified for a permission at any
+ * level, then the `PROMPT` behavior is used by default.
+ * - "PROMPT" : Prompt the user to grant a permission.
+ * - "GRANT" : Automatically grant a permission.
+ * - "DENY" : Automatically deny a permission.
+ */
+ core.String defaultPermissionPolicy;
+ /**
+ * The type of installation to perform.
+ * Possible string values are:
+ * - "INSTALL_TYPE_UNSPECIFIED" : No automatic installation is performed. Any
+ * other app policies will be
+ * applied if the user installs the app.
+ * - "PREINSTALLED" : The application is automatically installed and can be
+ * removed by the
+ * user.
+ * - "FORCE_INSTALLED" : The application is automatically installed and cannot
+ * be removed by the
+ * user.
+ */
+ core.String installType;
+ /** Whether the application is allowed to lock itself in full-screen mode. */
+ core.bool lockTaskAllowed;
+ /**
+ * Managed configuration applied to the app. The format for the configuration
+ * is dictated by the
+ * [`ManagedProperty`](/android/management/reference/rest/v1/enterprises.applications#ManagedProperty)
+ * values supported by the app. Each field name in the managed configuration
+ * must match the `key` field of the `ManagedProperty`. The field value must
+ * be compatible with the `type` of the `ManagedProperty`:
+ * <table>
+ * <tr><td><i>type</i></td><td><i>JSON value</i></td></tr>
+ * <tr><td>`BOOL`</td><td>`true` or `false`</td></tr>
+ * <tr><td>`STRING`</td><td>string</td></tr>
+ * <tr><td>`INTEGER`</td><td>number</td></tr>
+ * <tr><td>`CHOICE`</td><td>string</td></tr>
+ * <tr><td>`MULTISELECT`</td><td>array of strings</td></tr>
+ * <tr><td>`HIDDEN`</td><td>string</td></tr>
+ * <tr><td>`BUNDLE_ARRAY`</td><td>array of objects</td></tr>
+ * </table>
+ *
+ * The values for Object must be JSON objects. It can consist of `num`,
+ * `String`, `bool` and `null` as well as `Map` and `List` values.
+ */
+ core.Map<core.String, core.Object> managedConfiguration;
+ /**
+ * The package name of the app, e.g. `com.google.android.youtube` for the
+ * YouTube app.
+ */
+ core.String packageName;
+ /**
+ * Explicit permission grants or denials for the app. These values override
+ * the `default_permission_policy`.
+ */
+ core.List<PermissionGrant> permissionGrants;
+
+ ApplicationPolicy();
+
+ ApplicationPolicy.fromJson(core.Map _json) {
+ if (_json.containsKey("defaultPermissionPolicy")) {
+ defaultPermissionPolicy = _json["defaultPermissionPolicy"];
+ }
+ if (_json.containsKey("installType")) {
+ installType = _json["installType"];
+ }
+ if (_json.containsKey("lockTaskAllowed")) {
+ lockTaskAllowed = _json["lockTaskAllowed"];
+ }
+ if (_json.containsKey("managedConfiguration")) {
+ managedConfiguration = _json["managedConfiguration"];
+ }
+ if (_json.containsKey("packageName")) {
+ packageName = _json["packageName"];
+ }
+ if (_json.containsKey("permissionGrants")) {
+ permissionGrants = _json["permissionGrants"].map((value) => new PermissionGrant.fromJson(value)).toList();
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (defaultPermissionPolicy != null) {
+ _json["defaultPermissionPolicy"] = defaultPermissionPolicy;
+ }
+ if (installType != null) {
+ _json["installType"] = installType;
+ }
+ if (lockTaskAllowed != null) {
+ _json["lockTaskAllowed"] = lockTaskAllowed;
+ }
+ if (managedConfiguration != null) {
+ _json["managedConfiguration"] = managedConfiguration;
+ }
+ if (packageName != null) {
+ _json["packageName"] = packageName;
+ }
+ if (permissionGrants != null) {
+ _json["permissionGrants"] = permissionGrants.map((value) => (value).toJson()).toList();
+ }
+ return _json;
+ }
+}
+
+/** A command. */
+class Command {
+ /**
+ * The timestamp at which the command was created. The timestamp is
+ * automatically generated by the server.
+ */
+ core.String createTime;
+ /**
+ * The duration for which the command is valid. The command will expire if not
+ * executed by the device during this time. The default duration if
+ * unspecified is ten minutes. There is no maximum duration.
+ */
+ core.String duration;
+ /**
+ * For commands of type `RESET_PASSWORD`, optionally specifies the new
+ * password.
+ */
+ core.String newPassword;
+ /** For commands of type `RESET_PASSWORD`, optionally specifies flags. */
+ core.List<core.String> resetPasswordFlags;
+ /**
+ * The type of the command.
+ * Possible string values are:
+ * - "COMMAND_TYPE_UNSPECIFIED" : This value is disallowed.
+ * - "LOCK" : Lock the device, as if the lock screen timeout had expired.
+ * - "RESET_PASSWORD" : Reset the user's password.
+ * - "REBOOT" : Reboot the device. Only supported on API level 24+.
+ */
+ core.String type;
+
+ Command();
+
+ Command.fromJson(core.Map _json) {
+ if (_json.containsKey("createTime")) {
+ createTime = _json["createTime"];
+ }
+ if (_json.containsKey("duration")) {
+ duration = _json["duration"];
+ }
+ if (_json.containsKey("newPassword")) {
+ newPassword = _json["newPassword"];
+ }
+ if (_json.containsKey("resetPasswordFlags")) {
+ resetPasswordFlags = _json["resetPasswordFlags"];
+ }
+ if (_json.containsKey("type")) {
+ type = _json["type"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (createTime != null) {
+ _json["createTime"] = createTime;
+ }
+ if (duration != null) {
+ _json["duration"] = duration;
+ }
+ if (newPassword != null) {
+ _json["newPassword"] = newPassword;
+ }
+ if (resetPasswordFlags != null) {
+ _json["resetPasswordFlags"] = resetPasswordFlags;
+ }
+ if (type != null) {
+ _json["type"] = type;
+ }
+ return _json;
+ }
+}
+
+/**
+ * A rule declaring which mitigating actions to take when a device is not
+ * compliant with its policy. For every rule, there is always an implicit
+ * mitigating action to set `policy_compliant` to false for the
+ * [`Device`](/android/management/reference/rest/v1/enterprises.devices#Device)
+ * resource, and display a message on the device indicating that the device is
+ * not compliant with its policy. Other mitigating actions may optionally be
+ * taken as well, depending on the field values in the rule.
+ */
+class ComplianceRule {
+ /**
+ * A condition which is satisfied if the Android Framework API level on the
+ * device does not meet a minimum requirement.
+ */
+ ApiLevelCondition apiLevelCondition;
+ /**
+ * If set to true, the rule includes a mitigating action to disable
+ * applications so that the device is effectively disabled, but application
+ * data is preserved. If the device is running an app in locked task mode, the
+ * app will be closed and a UI showing the reason for non-compliance will be
+ * displayed.
+ */
+ core.bool disableApps;
+ /**
+ * A condition which is satisfied if there exists *any* matching
+ * [`NonComplianceDetail`](/android/management/reference/rest/v1/enterprises.devices#NonComplianceDetail)
+ * for the device.
+ */
+ NonComplianceDetailCondition nonComplianceDetailCondition;
+
+ ComplianceRule();
+
+ ComplianceRule.fromJson(core.Map _json) {
+ if (_json.containsKey("apiLevelCondition")) {
+ apiLevelCondition = new ApiLevelCondition.fromJson(_json["apiLevelCondition"]);
+ }
+ if (_json.containsKey("disableApps")) {
+ disableApps = _json["disableApps"];
+ }
+ if (_json.containsKey("nonComplianceDetailCondition")) {
+ nonComplianceDetailCondition = new NonComplianceDetailCondition.fromJson(_json["nonComplianceDetailCondition"]);
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (apiLevelCondition != null) {
+ _json["apiLevelCondition"] = (apiLevelCondition).toJson();
+ }
+ if (disableApps != null) {
+ _json["disableApps"] = disableApps;
+ }
+ if (nonComplianceDetailCondition != null) {
+ _json["nonComplianceDetailCondition"] = (nonComplianceDetailCondition).toJson();
+ }
+ return _json;
+ }
+}
+
+/**
+ * A device owned by an enterprise.
+ * Unless otherwise noted, all fields are read-only and cannot be modified by
+ * an update device request.
+ */
+class Device {
+ /** The API level of the Android platform version running on the device. */
+ core.int apiLevel;
+ /** The name of the policy that is currently applied by the device. */
+ core.String appliedPolicyName;
+ /** The version of the policy that is currently applied by the device. */
+ core.String appliedPolicyVersion;
+ /**
+ * The state that is currently applied by the device.
+ * Possible string values are:
+ * - "DEVICE_STATE_UNSPECIFIED" : This value is disallowed.
+ * - "ACTIVE" : The device is active.
+ * - "DISABLED" : The device is disabled.
+ * - "DELETED" : The device was deleted. This state will never be returned by
+ * an API call,
+ * but will be used in the final policy compliance report published to Cloud
+ * Pub/Sub when the device acknowledges the deletion.
+ * - "PROVISIONING" : The device is being provisioned. Newly enrolled devices
+ * will be in this
+ * state until they have applied policy.
+ */
+ core.String appliedState;
+ /**
+ * If the device state is `DISABLED`, an optional message that is displayed on
+ * the device indicating the reason the device is disabled. This field may be
+ * modified by an update request.
+ */
+ UserFacingMessage disabledReason;
+ /**
+ * Displays on the device. This information is only available when
+ * `displayInfoEnabled` is true in the device's policy.
+ */
+ core.List<Display> displays;
+ /** The time of device enrollment. */
+ core.String enrollmentTime;
+ /**
+ * If this device was enrolled with an enrollment token with additional data
+ * provided, this field contains that data.
+ */
+ core.String enrollmentTokenData;
+ /**
+ * If this device was enrolled with an enrollment token, this field contains
+ * the name of the token.
+ */
+ core.String enrollmentTokenName;
+ /** Detailed information about the device hardware. */
+ HardwareInfo hardwareInfo;
+ /**
+ * Hardware status samples in chronological order. This information is only
+ * available when `hardwareStatusEnabled` is true in the device's policy.
+ */
+ core.List<HardwareStatus> hardwareStatusSamples;
+ /** The last time the device sent a policy compliance report. */
+ core.String lastPolicyComplianceReportTime;
+ /** The last time the device fetched its policy. */
+ core.String lastPolicySyncTime;
+ /** The last time the device sent a status report. */
+ core.String lastStatusReportTime;
+ /**
+ * Events related to memory and storage measurements in chronological order.
+ * This information is only available when `memoryInfoEnabled` is true in the
+ * device's policy.
+ */
+ core.List<MemoryEvent> memoryEvents;
+ /**
+ * Memory information. This information is only available when
+ * `memoryInfoEnabled` is true in the device's policy.
+ */
+ MemoryInfo memoryInfo;
+ /**
+ * The name of the device in the form
+ * `enterprises/{enterpriseId}/devices/{deviceId}`
+ */
+ core.String name;
+ /**
+ * Device network information. This information is only available when
+ * `networkInfoEnabled` is true in the device's policy.
+ */
+ NetworkInfo networkInfo;
+ /**
+ * Details about policy settings for which the device is not in compliance.
+ */
+ core.List<NonComplianceDetail> nonComplianceDetails;
+ /** Whether the device is compliant with its policy. */
+ core.bool policyCompliant;
+ /**
+ * The name of the policy that is intended to be applied to the device. If
+ * empty, the policy with id `default` is applied.
+ * This field may be modified by an update request.
+ * The name of the policy is in the form
+ * `enterprises/{enterpriseId}/policies/{policyId}`.
+ * It is also permissible to only specify the `policyId` when updating this
+ * field as long as the `policyId` contains no slashes since the rest of the
+ * policy name can be inferred from context.
+ */
+ core.String policyName;
+ /**
+ * Power management events on the device in chronological order. This
+ * information is only available when `powerManagementEventsEnabled` is true
+ * in the device's policy.
+ */
+ core.List<PowerManagementEvent> powerManagementEvents;
+ /**
+ * The previous device names used for the same physical device when it has
+ * been enrolled multiple times. The serial number is used as the unique
+ * identifier to determine if the same physical device has enrolled
+ * previously. The names are in chronological order.
+ */
+ core.List<core.String> previousDeviceNames;
+ /**
+ * Detailed information about the device software. This information is only
+ * available when `softwareInfoEnabled` is true in the device's policy.
+ */
+ SoftwareInfo softwareInfo;
+ /**
+ * The state that is intended to be applied to the device. This field may be
+ * modified by an update request.
+ * Note that UpdateDevice only handles toggling between `ACTIVE` and
+ * `DISABLED` states. Use the
+ * [delete device
+ * method](/android/management/reference/rest/v1/enterprises.devices/delete)
+ * to cause the device to enter the `DELETED` state.
+ * Possible string values are:
+ * - "DEVICE_STATE_UNSPECIFIED" : This value is disallowed.
+ * - "ACTIVE" : The device is active.
+ * - "DISABLED" : The device is disabled.
+ * - "DELETED" : The device was deleted. This state will never be returned by
+ * an API call,
+ * but will be used in the final policy compliance report published to Cloud
+ * Pub/Sub when the device acknowledges the deletion.
+ * - "PROVISIONING" : The device is being provisioned. Newly enrolled devices
+ * will be in this
+ * state until they have applied policy.
+ */
+ core.String state;
+ /**
+ * The resource name of the user of the device in the form
+ * `enterprises/{enterpriseId}/users/{userId}`. This is the name of the
+ * device account automatically created for this device.
+ */
+ core.String userName;
+
+ Device();
+
+ Device.fromJson(core.Map _json) {
+ if (_json.containsKey("apiLevel")) {
+ apiLevel = _json["apiLevel"];
+ }
+ if (_json.containsKey("appliedPolicyName")) {
+ appliedPolicyName = _json["appliedPolicyName"];
+ }
+ if (_json.containsKey("appliedPolicyVersion")) {
+ appliedPolicyVersion = _json["appliedPolicyVersion"];
+ }
+ if (_json.containsKey("appliedState")) {
+ appliedState = _json["appliedState"];
+ }
+ if (_json.containsKey("disabledReason")) {
+ disabledReason = new UserFacingMessage.fromJson(_json["disabledReason"]);
+ }
+ if (_json.containsKey("displays")) {
+ displays = _json["displays"].map((value) => new Display.fromJson(value)).toList();
+ }
+ if (_json.containsKey("enrollmentTime")) {
+ enrollmentTime = _json["enrollmentTime"];
+ }
+ if (_json.containsKey("enrollmentTokenData")) {
+ enrollmentTokenData = _json["enrollmentTokenData"];
+ }
+ if (_json.containsKey("enrollmentTokenName")) {
+ enrollmentTokenName = _json["enrollmentTokenName"];
+ }
+ if (_json.containsKey("hardwareInfo")) {
+ hardwareInfo = new HardwareInfo.fromJson(_json["hardwareInfo"]);
+ }
+ if (_json.containsKey("hardwareStatusSamples")) {
+ hardwareStatusSamples = _json["hardwareStatusSamples"].map((value) => new HardwareStatus.fromJson(value)).toList();
+ }
+ if (_json.containsKey("lastPolicyComplianceReportTime")) {
+ lastPolicyComplianceReportTime = _json["lastPolicyComplianceReportTime"];
+ }
+ if (_json.containsKey("lastPolicySyncTime")) {
+ lastPolicySyncTime = _json["lastPolicySyncTime"];
+ }
+ if (_json.containsKey("lastStatusReportTime")) {
+ lastStatusReportTime = _json["lastStatusReportTime"];
+ }
+ if (_json.containsKey("memoryEvents")) {
+ memoryEvents = _json["memoryEvents"].map((value) => new MemoryEvent.fromJson(value)).toList();
+ }
+ if (_json.containsKey("memoryInfo")) {
+ memoryInfo = new MemoryInfo.fromJson(_json["memoryInfo"]);
+ }
+ if (_json.containsKey("name")) {
+ name = _json["name"];
+ }
+ if (_json.containsKey("networkInfo")) {
+ networkInfo = new NetworkInfo.fromJson(_json["networkInfo"]);
+ }
+ if (_json.containsKey("nonComplianceDetails")) {
+ nonComplianceDetails = _json["nonComplianceDetails"].map((value) => new NonComplianceDetail.fromJson(value)).toList();
+ }
+ if (_json.containsKey("policyCompliant")) {
+ policyCompliant = _json["policyCompliant"];
+ }
+ if (_json.containsKey("policyName")) {
+ policyName = _json["policyName"];
+ }
+ if (_json.containsKey("powerManagementEvents")) {
+ powerManagementEvents = _json["powerManagementEvents"].map((value) => new PowerManagementEvent.fromJson(value)).toList();
+ }
+ if (_json.containsKey("previousDeviceNames")) {
+ previousDeviceNames = _json["previousDeviceNames"];
+ }
+ if (_json.containsKey("softwareInfo")) {
+ softwareInfo = new SoftwareInfo.fromJson(_json["softwareInfo"]);
+ }
+ if (_json.containsKey("state")) {
+ state = _json["state"];
+ }
+ if (_json.containsKey("userName")) {
+ userName = _json["userName"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (apiLevel != null) {
+ _json["apiLevel"] = apiLevel;
+ }
+ if (appliedPolicyName != null) {
+ _json["appliedPolicyName"] = appliedPolicyName;
+ }
+ if (appliedPolicyVersion != null) {
+ _json["appliedPolicyVersion"] = appliedPolicyVersion;
+ }
+ if (appliedState != null) {
+ _json["appliedState"] = appliedState;
+ }
+ if (disabledReason != null) {
+ _json["disabledReason"] = (disabledReason).toJson();
+ }
+ if (displays != null) {
+ _json["displays"] = displays.map((value) => (value).toJson()).toList();
+ }
+ if (enrollmentTime != null) {
+ _json["enrollmentTime"] = enrollmentTime;
+ }
+ if (enrollmentTokenData != null) {
+ _json["enrollmentTokenData"] = enrollmentTokenData;
+ }
+ if (enrollmentTokenName != null) {
+ _json["enrollmentTokenName"] = enrollmentTokenName;
+ }
+ if (hardwareInfo != null) {
+ _json["hardwareInfo"] = (hardwareInfo).toJson();
+ }
+ if (hardwareStatusSamples != null) {
+ _json["hardwareStatusSamples"] = hardwareStatusSamples.map((value) => (value).toJson()).toList();
+ }
+ if (lastPolicyComplianceReportTime != null) {
+ _json["lastPolicyComplianceReportTime"] = lastPolicyComplianceReportTime;
+ }
+ if (lastPolicySyncTime != null) {
+ _json["lastPolicySyncTime"] = lastPolicySyncTime;
+ }
+ if (lastStatusReportTime != null) {
+ _json["lastStatusReportTime"] = lastStatusReportTime;
+ }
+ if (memoryEvents != null) {
+ _json["memoryEvents"] = memoryEvents.map((value) => (value).toJson()).toList();
+ }
+ if (memoryInfo != null) {
+ _json["memoryInfo"] = (memoryInfo).toJson();
+ }
+ if (name != null) {
+ _json["name"] = name;
+ }
+ if (networkInfo != null) {
+ _json["networkInfo"] = (networkInfo).toJson();
+ }
+ if (nonComplianceDetails != null) {
+ _json["nonComplianceDetails"] = nonComplianceDetails.map((value) => (value).toJson()).toList();
+ }
+ if (policyCompliant != null) {
+ _json["policyCompliant"] = policyCompliant;
+ }
+ if (policyName != null) {
+ _json["policyName"] = policyName;
+ }
+ if (powerManagementEvents != null) {
+ _json["powerManagementEvents"] = powerManagementEvents.map((value) => (value).toJson()).toList();
+ }
+ if (previousDeviceNames != null) {
+ _json["previousDeviceNames"] = previousDeviceNames;
+ }
+ if (softwareInfo != null) {
+ _json["softwareInfo"] = (softwareInfo).toJson();
+ }
+ if (state != null) {
+ _json["state"] = state;
+ }
+ if (userName != null) {
+ _json["userName"] = userName;
+ }
+ return _json;
+ }
+}
+
+/** Device display information. */
+class Display {
+ /** Display density expressed as dots-per-inch. */
+ core.int density;
+ /** Unique display id. */
+ core.int displayId;
+ /** Display height in pixels. */
+ core.int height;
+ /** Name of the display. */
+ core.String name;
+ /** Refresh rate of the display in frames per second. */
+ core.int refreshRate;
+ /**
+ * State of the display.
+ * Possible string values are:
+ * - "DISPLAY_STATE_UNSPECIFIED" : This value is disallowed.
+ * - "OFF" : Display is off.
+ * - "ON" : Display is on.
+ * - "DOZE" : Display is dozing in a low power state
+ * - "SUSPENDED" : Display is dozing in a suspended low power state.
+ */
+ core.String state;
+ /** Display width in pixels. */
+ core.int width;
+
+ Display();
+
+ Display.fromJson(core.Map _json) {
+ if (_json.containsKey("density")) {
+ density = _json["density"];
+ }
+ if (_json.containsKey("displayId")) {
+ displayId = _json["displayId"];
+ }
+ if (_json.containsKey("height")) {
+ height = _json["height"];
+ }
+ if (_json.containsKey("name")) {
+ name = _json["name"];
+ }
+ if (_json.containsKey("refreshRate")) {
+ refreshRate = _json["refreshRate"];
+ }
+ if (_json.containsKey("state")) {
+ state = _json["state"];
+ }
+ if (_json.containsKey("width")) {
+ width = _json["width"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (density != null) {
+ _json["density"] = density;
+ }
+ if (displayId != null) {
+ _json["displayId"] = displayId;
+ }
+ if (height != null) {
+ _json["height"] = height;
+ }
+ if (name != null) {
+ _json["name"] = name;
+ }
+ if (refreshRate != null) {
+ _json["refreshRate"] = refreshRate;
+ }
+ if (state != null) {
+ _json["state"] = state;
+ }
+ if (width != null) {
+ _json["width"] = width;
+ }
+ return _json;
+ }
+}
+
+/**
+ * A generic empty message that you can re-use to avoid defining duplicated
+ * empty messages in your APIs. A typical example is to use it as the request
+ * or the response type of an API method. For instance:
+ *
+ * service Foo {
+ * rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
+ * }
+ *
+ * The JSON representation for `Empty` is empty JSON object `{}`.
+ */
+class Empty {
+
+ Empty();
+
+ Empty.fromJson(core.Map _json) {
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ return _json;
+ }
+}
+
+/** An enrollment token. */
+class EnrollmentToken {
+ /**
+ * Optional, arbitrary data associated with the enrollment token.
+ * This could contain, for example, the id of an org unit to which the device
+ * is assigned after enrollment.
+ * After a device enrolls with the token, this data will be exposed in the
+ * `enrollment_token_data` field of the
+ * [`Device`](/android/management/reference/rest/v1/enterprises.devices#Device)
+ * resource. The data must be 1024 characters or less; otherwise, the creation
+ * request will fail.
+ */
+ core.String additionalData;
+ /**
+ * The duration of the token. If not specified, the duration will be 1 hour.
+ * The allowed range is 1 minute to 30 days.
+ */
+ core.String duration;
+ /**
+ * The expiration time of the token. This is a read-only field generated by
+ * the server.
+ */
+ core.String expirationTimestamp;
+ /**
+ * The name of the enrollment token, which is generated by the server during
+ * creation, in the form
+ * `enterprises/{enterpriseId}/enrollmentTokens/{enrollmentTokenId}`
+ */
+ core.String name;
+ /**
+ * The name of the policy that will be initially applied to the enrolled
+ * device in the form `enterprises/{enterpriseId}/policies/{policyId}`.
+ * If not specified, the policy with id `default` is applied.
+ * It is permissible to only specify the `policyId` when updating this
+ * field as long as the `policyId` contains no slashes since the rest of the
+ * policy name can be inferred from context.
+ */
+ core.String policyName;
+ /**
+ * A JSON string whose UTF-8 representation can be used to generate a QR code
+ * to enroll a device with this enrollment token. To enroll a device using
+ * NFC, the NFC record must contain a serialized `java.util.Properties`
+ * representation of the properties in the JSON.
+ */
+ core.String qrCode;
+ /**
+ * The token value which is passed to the device and authorizes the device to
+ * enroll. This is a read-only field generated by the server.
+ */
+ core.String value;
+
+ EnrollmentToken();
+
+ EnrollmentToken.fromJson(core.Map _json) {
+ if (_json.containsKey("additionalData")) {
+ additionalData = _json["additionalData"];
+ }
+ if (_json.containsKey("duration")) {
+ duration = _json["duration"];
+ }
+ if (_json.containsKey("expirationTimestamp")) {
+ expirationTimestamp = _json["expirationTimestamp"];
+ }
+ if (_json.containsKey("name")) {
+ name = _json["name"];
+ }
+ if (_json.containsKey("policyName")) {
+ policyName = _json["policyName"];
+ }
+ if (_json.containsKey("qrCode")) {
+ qrCode = _json["qrCode"];
+ }
+ if (_json.containsKey("value")) {
+ value = _json["value"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (additionalData != null) {
+ _json["additionalData"] = additionalData;
+ }
+ if (duration != null) {
+ _json["duration"] = duration;
+ }
+ if (expirationTimestamp != null) {
+ _json["expirationTimestamp"] = expirationTimestamp;
+ }
+ if (name != null) {
+ _json["name"] = name;
+ }
+ if (policyName != null) {
+ _json["policyName"] = policyName;
+ }
+ if (qrCode != null) {
+ _json["qrCode"] = qrCode;
+ }
+ if (value != null) {
+ _json["value"] = value;
+ }
+ return _json;
+ }
+}
+
+/** The configuration applied to an enterprise. */
+class Enterprise {
+ /**
+ * Whether app auto-approval is enabled. When enabled, apps installed via
+ * policy for this enterprise have all permissions automatically approved.
+ * When enabled, it is the caller's responsibility to display the permissions
+ * required by an app to the enterprise admin before setting the app to be
+ * installed in a policy.
+ */
+ core.bool appAutoApprovalEnabled;
+ /** The notification types to enable via Google Cloud Pub/Sub. */
+ core.List<core.String> enabledNotificationTypes;
+ /** The name of the enterprise as it will appear to users. */
+ core.String enterpriseDisplayName;
+ /**
+ * An image displayed as a logo during device provisioning. Supported types
+ * are: image/bmp, image/gif, image/x-ico, image/jpeg, image/png, image/webp,
+ * image/vnd.wap.wbmp, image/x-adobe-dng.
+ */
+ ExternalData logo;
+ /**
+ * The name of the enterprise which is generated by the server during
+ * creation, in the form
+ * `enterprises/{enterpriseId}`
+ */
+ core.String name;
+ /**
+ * A color in RGB format indicating the predominant color to display in the
+ * device management app UI. The color components are stored as follows:
+ * `(red << 16) | (green << 8) | blue`, where each component may take a value
+ * between 0 and 255 inclusive.
+ */
+ core.int primaryColor;
+ /**
+ * When Cloud Pub/Sub notifications are enabled, this field is required to
+ * indicate the topic to which the notifications will be published. The format
+ * of this field is `projects/{project}/topics/{topic}`. You must have granted
+ * the publish permission on this topic to
+ * android-cloud-policy@system.gserviceaccount.com
+ */
+ core.String pubsubTopic;
+
+ Enterprise();
+
+ Enterprise.fromJson(core.Map _json) {
+ if (_json.containsKey("appAutoApprovalEnabled")) {
+ appAutoApprovalEnabled = _json["appAutoApprovalEnabled"];
+ }
+ if (_json.containsKey("enabledNotificationTypes")) {
+ enabledNotificationTypes = _json["enabledNotificationTypes"];
+ }
+ if (_json.containsKey("enterpriseDisplayName")) {
+ enterpriseDisplayName = _json["enterpriseDisplayName"];
+ }
+ if (_json.containsKey("logo")) {
+ logo = new ExternalData.fromJson(_json["logo"]);
+ }
+ if (_json.containsKey("name")) {
+ name = _json["name"];
+ }
+ if (_json.containsKey("primaryColor")) {
+ primaryColor = _json["primaryColor"];
+ }
+ if (_json.containsKey("pubsubTopic")) {
+ pubsubTopic = _json["pubsubTopic"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (appAutoApprovalEnabled != null) {
+ _json["appAutoApprovalEnabled"] = appAutoApprovalEnabled;
+ }
+ if (enabledNotificationTypes != null) {
+ _json["enabledNotificationTypes"] = enabledNotificationTypes;
+ }
+ if (enterpriseDisplayName != null) {
+ _json["enterpriseDisplayName"] = enterpriseDisplayName;
+ }
+ if (logo != null) {
+ _json["logo"] = (logo).toJson();
+ }
+ if (name != null) {
+ _json["name"] = name;
+ }
+ if (primaryColor != null) {
+ _json["primaryColor"] = primaryColor;
+ }
+ if (pubsubTopic != null) {
+ _json["pubsubTopic"] = pubsubTopic;
+ }
+ return _json;
+ }
+}
+
+/**
+ * Data hosted at an external location. The data is to be downloaded by Android
+ * Device Policy and verified against the hash.
+ */
+class ExternalData {
+ /**
+ * The base-64 encoded SHA-256 hash of the content hosted at url. If the
+ * content does not match this hash, Android Device Policy will not use the
+ * data.
+ */
+ core.String sha256Hash;
+ /**
+ * The absolute URL to the data, which must use either the http or https
+ * scheme. Android Device Policy does not provide any credentials in the GET
+ * request, so the URL must be publicly accessible. Including a long, random
+ * component in the URL may be used to prevent attackers from discovering the
+ * URL.
+ */
+ core.String url;
+
+ ExternalData();
+
+ ExternalData.fromJson(core.Map _json) {
+ if (_json.containsKey("sha256Hash")) {
+ sha256Hash = _json["sha256Hash"];
+ }
+ if (_json.containsKey("url")) {
+ url = _json["url"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (sha256Hash != null) {
+ _json["sha256Hash"] = sha256Hash;
+ }
+ if (url != null) {
+ _json["url"] = url;
+ }
+ return _json;
+ }
+}
+
+/**
+ * Information about device hardware. The fields related to temperature
+ * thresholds are only available when hardwareStatusEnabled is true in the
+ * device's policy.
+ */
+class HardwareInfo {
+ /**
+ * Battery shutdown temperature thresholds in Celsius for each battery on the
+ * device.
+ */
+ core.List<core.double> batteryShutdownTemperatures;
+ /**
+ * Battery throttling temperature thresholds in Celsius for each battery on
+ * the device.
+ */
+ core.List<core.double> batteryThrottlingTemperatures;
+ /** Brand of the device, e.g. `Google`. */
+ core.String brand;
+ /**
+ * CPU shutdown temperature thresholds in Celsius for each CPU on the device.
+ */
+ core.List<core.double> cpuShutdownTemperatures;
+ /**
+ * CPU throttling temperature thresholds in Celsius for each CPU on the
+ * device.
+ */
+ core.List<core.double> cpuThrottlingTemperatures;
+ /** Baseband version, e.g. `MDM9625_104662.22.05.34p`. */
+ core.String deviceBasebandVersion;
+ /**
+ * GPU shutdown temperature thresholds in Celsius for each GPU on the device.
+ */
+ core.List<core.double> gpuShutdownTemperatures;
+ /**
+ * GPU throttling temperature thresholds in Celsius for each GPU on the
+ * device.
+ */
+ core.List<core.double> gpuThrottlingTemperatures;
+ /** Name of the hardware, e.g. `Angler`. */
+ core.String hardware;
+ /** Manufacturer, e.g. `Motorola`. */
+ core.String manufacturer;
+ /** The model of the device, e.g. `Asus Nexus 7`. */
+ core.String model;
+ /** The device serial number. */
+ core.String serialNumber;
+ /** Device skin shutdown temperature thresholds in Celsius. */
+ core.List<core.double> skinShutdownTemperatures;
+ /** Device skin throttling temperature thresholds in Celsius. */
+ core.List<core.double> skinThrottlingTemperatures;
+
+ HardwareInfo();
+
+ HardwareInfo.fromJson(core.Map _json) {
+ if (_json.containsKey("batteryShutdownTemperatures")) {
+ batteryShutdownTemperatures = _json["batteryShutdownTemperatures"];
+ }
+ if (_json.containsKey("batteryThrottlingTemperatures")) {
+ batteryThrottlingTemperatures = _json["batteryThrottlingTemperatures"];
+ }
+ if (_json.containsKey("brand")) {
+ brand = _json["brand"];
+ }
+ if (_json.containsKey("cpuShutdownTemperatures")) {
+ cpuShutdownTemperatures = _json["cpuShutdownTemperatures"];
+ }
+ if (_json.containsKey("cpuThrottlingTemperatures")) {
+ cpuThrottlingTemperatures = _json["cpuThrottlingTemperatures"];
+ }
+ if (_json.containsKey("deviceBasebandVersion")) {
+ deviceBasebandVersion = _json["deviceBasebandVersion"];
+ }
+ if (_json.containsKey("gpuShutdownTemperatures")) {
+ gpuShutdownTemperatures = _json["gpuShutdownTemperatures"];
+ }
+ if (_json.containsKey("gpuThrottlingTemperatures")) {
+ gpuThrottlingTemperatures = _json["gpuThrottlingTemperatures"];
+ }
+ if (_json.containsKey("hardware")) {
+ hardware = _json["hardware"];
+ }
+ if (_json.containsKey("manufacturer")) {
+ manufacturer = _json["manufacturer"];
+ }
+ if (_json.containsKey("model")) {
+ model = _json["model"];
+ }
+ if (_json.containsKey("serialNumber")) {
+ serialNumber = _json["serialNumber"];
+ }
+ if (_json.containsKey("skinShutdownTemperatures")) {
+ skinShutdownTemperatures = _json["skinShutdownTemperatures"];
+ }
+ if (_json.containsKey("skinThrottlingTemperatures")) {
+ skinThrottlingTemperatures = _json["skinThrottlingTemperatures"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (batteryShutdownTemperatures != null) {
+ _json["batteryShutdownTemperatures"] = batteryShutdownTemperatures;
+ }
+ if (batteryThrottlingTemperatures != null) {
+ _json["batteryThrottlingTemperatures"] = batteryThrottlingTemperatures;
+ }
+ if (brand != null) {
+ _json["brand"] = brand;
+ }
+ if (cpuShutdownTemperatures != null) {
+ _json["cpuShutdownTemperatures"] = cpuShutdownTemperatures;
+ }
+ if (cpuThrottlingTemperatures != null) {
+ _json["cpuThrottlingTemperatures"] = cpuThrottlingTemperatures;
+ }
+ if (deviceBasebandVersion != null) {
+ _json["deviceBasebandVersion"] = deviceBasebandVersion;
+ }
+ if (gpuShutdownTemperatures != null) {
+ _json["gpuShutdownTemperatures"] = gpuShutdownTemperatures;
+ }
+ if (gpuThrottlingTemperatures != null) {
+ _json["gpuThrottlingTemperatures"] = gpuThrottlingTemperatures;
+ }
+ if (hardware != null) {
+ _json["hardware"] = hardware;
+ }
+ if (manufacturer != null) {
+ _json["manufacturer"] = manufacturer;
+ }
+ if (model != null) {
+ _json["model"] = model;
+ }
+ if (serialNumber != null) {
+ _json["serialNumber"] = serialNumber;
+ }
+ if (skinShutdownTemperatures != null) {
+ _json["skinShutdownTemperatures"] = skinShutdownTemperatures;
+ }
+ if (skinThrottlingTemperatures != null) {
+ _json["skinThrottlingTemperatures"] = skinThrottlingTemperatures;
+ }
+ return _json;
+ }
+}
+
+/**
+ * Hardware status. Temperatures may be compared to the temperature thresholds
+ * available in `hardwareInfo` to determine hardware health.
+ */
+class HardwareStatus {
+ /**
+ * Current battery temperatures in Celsius for each battery on the device.
+ */
+ core.List<core.double> batteryTemperatures;
+ /** Current CPU temperatures in Celsius for each CPU on the device. */
+ core.List<core.double> cpuTemperatures;
+ /**
+ * CPU usages in percentage for each core available on the device.
+ * Usage is 0 for each unplugged core. Empty array implies that CPU usage
+ * is not supported in the system.
+ */
+ core.List<core.double> cpuUsages;
+ /** The time the measurements were taken. */
+ core.String createTime;
+ /**
+ * Fan speeds in RPM for each fan on the device. Empty array means that there
+ * are no fans or fan speed is not supported on the system.
+ */
+ core.List<core.double> fanSpeeds;
+ /** Current GPU temperatures in Celsius for each GPU on the device. */
+ core.List<core.double> gpuTemperatures;
+ /** Current device skin temperatures in Celsius. */
+ core.List<core.double> skinTemperatures;
+
+ HardwareStatus();
+
+ HardwareStatus.fromJson(core.Map _json) {
+ if (_json.containsKey("batteryTemperatures")) {
+ batteryTemperatures = _json["batteryTemperatures"];
+ }
+ if (_json.containsKey("cpuTemperatures")) {
+ cpuTemperatures = _json["cpuTemperatures"];
+ }
+ if (_json.containsKey("cpuUsages")) {
+ cpuUsages = _json["cpuUsages"];
+ }
+ if (_json.containsKey("createTime")) {
+ createTime = _json["createTime"];
+ }
+ if (_json.containsKey("fanSpeeds")) {
+ fanSpeeds = _json["fanSpeeds"];
+ }
+ if (_json.containsKey("gpuTemperatures")) {
+ gpuTemperatures = _json["gpuTemperatures"];
+ }
+ if (_json.containsKey("skinTemperatures")) {
+ skinTemperatures = _json["skinTemperatures"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (batteryTemperatures != null) {
+ _json["batteryTemperatures"] = batteryTemperatures;
+ }
+ if (cpuTemperatures != null) {
+ _json["cpuTemperatures"] = cpuTemperatures;
+ }
+ if (cpuUsages != null) {
+ _json["cpuUsages"] = cpuUsages;
+ }
+ if (createTime != null) {
+ _json["createTime"] = createTime;
+ }
+ if (fanSpeeds != null) {
+ _json["fanSpeeds"] = fanSpeeds;
+ }
+ if (gpuTemperatures != null) {
+ _json["gpuTemperatures"] = gpuTemperatures;
+ }
+ if (skinTemperatures != null) {
+ _json["skinTemperatures"] = skinTemperatures;
+ }
+ return _json;
+ }
+}
+
+/** Response to a request to list devices for a given enterprise. */
+class ListDevicesResponse {
+ /** The list of devices. */
+ core.List<Device> devices;
+ /** If there are more results, a token to retrieve next page of results. */
+ core.String nextPageToken;
+
+ ListDevicesResponse();
+
+ ListDevicesResponse.fromJson(core.Map _json) {
+ if (_json.containsKey("devices")) {
+ devices = _json["devices"].map((value) => new Device.fromJson(value)).toList();
+ }
+ if (_json.containsKey("nextPageToken")) {
+ nextPageToken = _json["nextPageToken"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (devices != null) {
+ _json["devices"] = devices.map((value) => (value).toJson()).toList();
+ }
+ if (nextPageToken != null) {
+ _json["nextPageToken"] = nextPageToken;
+ }
+ return _json;
+ }
+}
+
+/** The response message for Operations.ListOperations. */
+class ListOperationsResponse {
+ /** The standard List next-page token. */
+ core.String nextPageToken;
+ /** A list of operations that matches the specified filter in the request. */
+ core.List<Operation> operations;
+
+ ListOperationsResponse();
+
+ ListOperationsResponse.fromJson(core.Map _json) {
+ if (_json.containsKey("nextPageToken")) {
+ nextPageToken = _json["nextPageToken"];
+ }
+ if (_json.containsKey("operations")) {
+ operations = _json["operations"].map((value) => new Operation.fromJson(value)).toList();
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (nextPageToken != null) {
+ _json["nextPageToken"] = nextPageToken;
+ }
+ if (operations != null) {
+ _json["operations"] = operations.map((value) => (value).toJson()).toList();
+ }
+ return _json;
+ }
+}
+
+/** Response to a request to list policies for a given enterprise. */
+class ListPoliciesResponse {
+ /** If there are more results, a token to retrieve next page of results. */
+ core.String nextPageToken;
+ /** The list of policies. */
+ core.List<Policy> policies;
+
+ ListPoliciesResponse();
+
+ ListPoliciesResponse.fromJson(core.Map _json) {
+ if (_json.containsKey("nextPageToken")) {
+ nextPageToken = _json["nextPageToken"];
+ }
+ if (_json.containsKey("policies")) {
+ policies = _json["policies"].map((value) => new Policy.fromJson(value)).toList();
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (nextPageToken != null) {
+ _json["nextPageToken"] = nextPageToken;
+ }
+ if (policies != null) {
+ _json["policies"] = policies.map((value) => (value).toJson()).toList();
+ }
+ return _json;
+ }
+}
+
+/** Managed property. */
+class ManagedProperty {
+ /**
+ * The default value of the properties. `BUNDLE_ARRAY` properties
+ * never have a default value.
+ *
+ * The values for Object must be JSON objects. It can consist of `num`,
+ * `String`, `bool` and `null` as well as `Map` and `List` values.
+ */
+ core.Object defaultValue;
+ /**
+ * A longer description of the property, giving more detail of what it
+ * affects. Localized.
+ */
+ core.String description;
+ /**
+ * For `CHOICE` or `MULTISELECT` properties, the list
+ * of possible entries.
+ */
+ core.List<ManagedPropertyEntry> entries;
+ /**
+ * The unique key that the application uses to identify the property,
+ * e.g. "com.google.android.gm.fieldname".
+ */
+ core.String key;
+ /**
+ * For `BUNDLE_ARRAY` properties, the list of nested properties. A
+ * `BUNDLE_ARRAY` property is at most two levels deep.
+ */
+ core.List<ManagedProperty> nestedProperties;
+ /** The name of the property. Localized. */
+ core.String title;
+ /**
+ * The type of the property.
+ * Possible string values are:
+ * - "MANAGED_PROPERTY_TYPE_UNSPECIFIED" : Not used.
+ * - "BOOL" : A property of boolean type.
+ * - "STRING" : A property of string type.
+ * - "INTEGER" : A property of integer type.
+ * - "CHOICE" : A choice of one item from a set.
+ * - "MULTISELECT" : A choice of multiple items from a set.
+ * - "HIDDEN" : A hidden restriction of string type (the default value can be
+ * used
+ * to pass along information that cannot be modified, such as a version
+ * code).
+ * - "BUNDLE_ARRAY" : An array of property bundles.
+ */
+ core.String type;
+
+ ManagedProperty();
+
+ ManagedProperty.fromJson(core.Map _json) {
+ if (_json.containsKey("defaultValue")) {
+ defaultValue = _json["defaultValue"];
+ }
+ if (_json.containsKey("description")) {
+ description = _json["description"];
+ }
+ if (_json.containsKey("entries")) {
+ entries = _json["entries"].map((value) => new ManagedPropertyEntry.fromJson(value)).toList();
+ }
+ if (_json.containsKey("key")) {
+ key = _json["key"];
+ }
+ if (_json.containsKey("nestedProperties")) {
+ nestedProperties = _json["nestedProperties"].map((value) => new ManagedProperty.fromJson(value)).toList();
+ }
+ if (_json.containsKey("title")) {
+ title = _json["title"];
+ }
+ if (_json.containsKey("type")) {
+ type = _json["type"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (defaultValue != null) {
+ _json["defaultValue"] = defaultValue;
+ }
+ if (description != null) {
+ _json["description"] = description;
+ }
+ if (entries != null) {
+ _json["entries"] = entries.map((value) => (value).toJson()).toList();
+ }
+ if (key != null) {
+ _json["key"] = key;
+ }
+ if (nestedProperties != null) {
+ _json["nestedProperties"] = nestedProperties.map((value) => (value).toJson()).toList();
+ }
+ if (title != null) {
+ _json["title"] = title;
+ }
+ if (type != null) {
+ _json["type"] = type;
+ }
+ return _json;
+ }
+}
+
+/** An entry of a managed property. */
+class ManagedPropertyEntry {
+ /** The human-readable name of the value. Localized. */
+ core.String name;
+ /**
+ * The machine-readable value of the entry, which should be used in the
+ * configuration. Not localized.
+ */
+ core.String value;
+
+ ManagedPropertyEntry();
+
+ ManagedPropertyEntry.fromJson(core.Map _json) {
+ if (_json.containsKey("name")) {
+ name = _json["name"];
+ }
+ if (_json.containsKey("value")) {
+ value = _json["value"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (name != null) {
+ _json["name"] = name;
+ }
+ if (value != null) {
+ _json["value"] = value;
+ }
+ return _json;
+ }
+}
+
+/** An event related to memory and storage measurements. */
+class MemoryEvent {
+ /**
+ * The number of free bytes in the medium, or for `EXTERNAL_STORAGE_DETECTED`,
+ * the total capacity in bytes of the storage medium.
+ */
+ core.String byteCount;
+ /** The creation time of the event. */
+ core.String createTime;
+ /**
+ * Event type.
+ * Possible string values are:
+ * - "MEMORY_EVENT_TYPE_UNSPECIFIED" : Unspecified. No events have this type.
+ * - "RAM_MEASURED" : Free space in RAM was measured.
+ * - "INTERNAL_STORAGE_MEASURED" : Free space in internal storage was
+ * measured.
+ * - "EXTERNAL_STORAGE_DETECTED" : A new external storage medium was detected.
+ * The reported byte count is
+ * the total capacity of the storage medium.
+ * - "EXTERNAL_STORAGE_REMOVED" : An external storage medium was removed. The
+ * reported byte count is zero.
+ * - "EXTERNAL_STORAGE_MEASURED" : Free space in an external storage medium
+ * was measured.
+ */
+ core.String eventType;
+
+ MemoryEvent();
+
+ MemoryEvent.fromJson(core.Map _json) {
+ if (_json.containsKey("byteCount")) {
+ byteCount = _json["byteCount"];
+ }
+ if (_json.containsKey("createTime")) {
+ createTime = _json["createTime"];
+ }
+ if (_json.containsKey("eventType")) {
+ eventType = _json["eventType"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (byteCount != null) {
+ _json["byteCount"] = byteCount;
+ }
+ if (createTime != null) {
+ _json["createTime"] = createTime;
+ }
+ if (eventType != null) {
+ _json["eventType"] = eventType;
+ }
+ return _json;
+ }
+}
+
+/** Information about device memory and storage. */
+class MemoryInfo {
+ /** Total internal storage on device in bytes. */
+ core.String totalInternalStorage;
+ /** Total RAM on device in bytes. */
+ core.String totalRam;
+
+ MemoryInfo();
+
+ MemoryInfo.fromJson(core.Map _json) {
+ if (_json.containsKey("totalInternalStorage")) {
+ totalInternalStorage = _json["totalInternalStorage"];
+ }
+ if (_json.containsKey("totalRam")) {
+ totalRam = _json["totalRam"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (totalInternalStorage != null) {
+ _json["totalInternalStorage"] = totalInternalStorage;
+ }
+ if (totalRam != null) {
+ _json["totalRam"] = totalRam;
+ }
+ return _json;
+ }
+}
+
+/** Device network info. */
+class NetworkInfo {
+ /** IMEI number of the GSM device, e.g. `A1000031212`. */
+ core.String imei;
+ /** MEID number of the CDMA device, e.g. `A00000292788E1`. */
+ core.String meid;
+ /** WiFi MAC address of the device, e.g. `7c:11:11:11:11:11`. */
+ core.String wifiMacAddress;
+
+ NetworkInfo();
+
+ NetworkInfo.fromJson(core.Map _json) {
+ if (_json.containsKey("imei")) {
+ imei = _json["imei"];
+ }
+ if (_json.containsKey("meid")) {
+ meid = _json["meid"];
+ }
+ if (_json.containsKey("wifiMacAddress")) {
+ wifiMacAddress = _json["wifiMacAddress"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (imei != null) {
+ _json["imei"] = imei;
+ }
+ if (meid != null) {
+ _json["meid"] = meid;
+ }
+ if (wifiMacAddress != null) {
+ _json["wifiMacAddress"] = wifiMacAddress;
+ }
+ return _json;
+ }
+}
+
+/** Provides detail about non-compliance with a policy setting. */
+class NonComplianceDetail {
+ /**
+ * If the policy setting could not be applied, the current value of the
+ * setting on the device.
+ *
+ * The values for Object must be JSON objects. It can consist of `num`,
+ * `String`, `bool` and `null` as well as `Map` and `List` values.
+ */
+ core.Object currentValue;
+ /**
+ * For settings with nested fields, if a particular nested field is out of
+ * compliance, this specifies the full path to the offending field. The path
+ * is formatted in the same way the policy JSON field would be referenced in
+ * JavaScript, that is:
+ * 1) For object-typed fields, the field name is followed by a dot then by a
+ * subfield name.
+ * 2) For array-typed fields, the field name is followed by the array index
+ * enclosed in brackets.
+ * For example, to indicate a problem with the `url` field in the
+ * `externalData` field in the 3rd application, the path would be
+ * `applications[2].externalData.url`
+ */
+ core.String fieldPath;
+ /**
+ * If `package_name` is set and the non-compliance reason is
+ * `APP_NOT_INSTALLED`, the detailed reason the app cannot be installed.
+ * Possible string values are:
+ * - "INSTALLATION_FAILURE_REASON_UNSPECIFIED" : This value is disallowed.
+ * - "INSTALLATION_FAILURE_REASON_UNKNOWN" : An unknown condition is
+ * preventing the app from being installed. Some
+ * potential reaons are that the device does not have enough storage, the
+ * device network connection is unreliable, or the installation is taking
+ * longer than expected. The installation will be retried automatically.
+ * - "IN_PROGRESS" : The installation is still in progress.
+ * - "NOT_FOUND" : The app was not found in Play.
+ * - "NOT_COMPATIBLE_WITH_DEVICE" : The app is incompatible with the device.
+ * - "NOT_APPROVED" : The app has not been approved by the admin.
+ * - "PERMISSIONS_NOT_ACCEPTED" : The app has new permissions that have not
+ * been accepted by the admin.
+ * - "NOT_AVAILABLE_IN_COUNTRY" : The app is not available in the user's
+ * country.
+ * - "NO_LICENSES_REMAINING" : There are no more licenses to assign to the
+ * user.
+ * - "NOT_ENROLLED" : The enterprise is no longer enrolled with Play for Work
+ * or Android Device
+ * Policy is not enabled for the enterprise.
+ */
+ core.String installationFailureReason;
+ /**
+ * The reason the device is not in compliance with the setting.
+ * Possible string values are:
+ * - "NON_COMPLIANCE_REASON_UNSPECIFIED" : This value is disallowed.
+ * - "API_LEVEL" : The setting is not supported in the API level of Android OS
+ * version the
+ * device is running.
+ * - "ADMIN_TYPE" : The admin type (profile owner, device owner, etc.) does
+ * not support the
+ * setting.
+ * - "USER_ACTION" : The user has not taken required action to comply with the
+ * setting.
+ * - "INVALID_VALUE" : The setting has an invalid value.
+ * - "APP_NOT_INSTALLED" : The application required to implement the policy is
+ * not installed.
+ * - "UNSUPPORTED" : The policy is not supported by the version of Android
+ * Device Policy on
+ * the device.
+ * - "APP_INSTALLED" : A blocked application is installed.
+ * - "PENDING" : The setting was not applied yet at the time of the report,
+ * but is
+ * expected to be applied shortly.
+ * - "APP_INCOMPATIBLE" : The setting cannot be applied to the application
+ * because its target SDK
+ * version is not high enough.
+ */
+ core.String nonComplianceReason;
+ /**
+ * The package name indicating which application is out of compliance, if
+ * applicable.
+ */
+ core.String packageName;
+ /**
+ * The name of the policy setting. This is the JSON field name of a top-level
+ * [`Policy`](/android/management/reference/rest/v1/enterprises.policies#Policy)
+ * field.
+ */
+ core.String settingName;
+
+ NonComplianceDetail();
+
+ NonComplianceDetail.fromJson(core.Map _json) {
+ if (_json.containsKey("currentValue")) {
+ currentValue = _json["currentValue"];
+ }
+ if (_json.containsKey("fieldPath")) {
+ fieldPath = _json["fieldPath"];
+ }
+ if (_json.containsKey("installationFailureReason")) {
+ installationFailureReason = _json["installationFailureReason"];
+ }
+ if (_json.containsKey("nonComplianceReason")) {
+ nonComplianceReason = _json["nonComplianceReason"];
+ }
+ if (_json.containsKey("packageName")) {
+ packageName = _json["packageName"];
+ }
+ if (_json.containsKey("settingName")) {
+ settingName = _json["settingName"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (currentValue != null) {
+ _json["currentValue"] = currentValue;
+ }
+ if (fieldPath != null) {
+ _json["fieldPath"] = fieldPath;
+ }
+ if (installationFailureReason != null) {
+ _json["installationFailureReason"] = installationFailureReason;
+ }
+ if (nonComplianceReason != null) {
+ _json["nonComplianceReason"] = nonComplianceReason;
+ }
+ if (packageName != null) {
+ _json["packageName"] = packageName;
+ }
+ if (settingName != null) {
+ _json["settingName"] = settingName;
+ }
+ return _json;
+ }
+}
+
+/**
+ * A compliance rule condition which is satisfied if there exists *any*
+ * matching
+ * [`NonComplianceDetail`](/android/management/reference/rest/v1/enterprises.devices#NonComplianceDetail)
+ * for the device. A `NonComplianceDetail` matches a
+ * `NonComplianceDetailCondition` if *all* the fields which are set within the
+ * `NonComplianceDetailCondition` match the corresponding `NonComplianceDetail`
+ * fields.
+ */
+class NonComplianceDetailCondition {
+ /**
+ * The reason the device is not in compliance with the setting. If not set,
+ * then this condition matches any reason.
+ * Possible string values are:
+ * - "NON_COMPLIANCE_REASON_UNSPECIFIED" : This value is disallowed.
+ * - "API_LEVEL" : The setting is not supported in the API level of Android OS
+ * version the
+ * device is running.
+ * - "ADMIN_TYPE" : The admin type (profile owner, device owner, etc.) does
+ * not support the
+ * setting.
+ * - "USER_ACTION" : The user has not taken required action to comply with the
+ * setting.
+ * - "INVALID_VALUE" : The setting has an invalid value.
+ * - "APP_NOT_INSTALLED" : The application required to implement the policy is
+ * not installed.
+ * - "UNSUPPORTED" : The policy is not supported by the version of Android
+ * Device Policy on
+ * the device.
+ * - "APP_INSTALLED" : A blocked application is installed.
+ * - "PENDING" : The setting was not applied yet at the time of the report,
+ * but is
+ * expected to be applied shortly.
+ * - "APP_INCOMPATIBLE" : The setting cannot be applied to the application
+ * because its target SDK
+ * version is not high enough.
+ */
+ core.String nonComplianceReason;
+ /**
+ * The package name indicating which application is out of compliance. If not
+ * set, then this condition matches any package name. If this field is set,
+ * then `setting_name` must be unset or set to `applications`; otherwise, the
+ * condition would never be satisfied.
+ */
+ core.String packageName;
+ /**
+ * The name of the policy setting. This is the JSON field name of a top-level
+ * [`Policy`](/android/management/reference/rest/v1/enterprises.policies#Policy)
+ * field. If not set, then this condition matches any setting name.
+ */
+ core.String settingName;
+
+ NonComplianceDetailCondition();
+
+ NonComplianceDetailCondition.fromJson(core.Map _json) {
+ if (_json.containsKey("nonComplianceReason")) {
+ nonComplianceReason = _json["nonComplianceReason"];
+ }
+ if (_json.containsKey("packageName")) {
+ packageName = _json["packageName"];
+ }
+ if (_json.containsKey("settingName")) {
+ settingName = _json["settingName"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (nonComplianceReason != null) {
+ _json["nonComplianceReason"] = nonComplianceReason;
+ }
+ if (packageName != null) {
+ _json["packageName"] = packageName;
+ }
+ if (settingName != null) {
+ _json["settingName"] = settingName;
+ }
+ return _json;
+ }
+}
+
+/**
+ * This resource represents a long-running operation that is the result of a
+ * network API call.
+ */
+class Operation {
+ /**
+ * If the value is `false`, it means the operation is still in progress.
+ * If true, the operation is completed, and either `error` or `response` is
+ * available.
+ */
+ core.bool done;
+ /** The error result of the operation in case of failure or cancellation. */
+ Status error;
+ /**
+ * Service-specific metadata associated with the operation. It typically
+ * contains progress information and common metadata such as create time.
+ * Some services might not provide such metadata. Any method that returns a
+ * long-running operation should document the metadata type, if any.
+ *
+ * The values for Object must be JSON objects. It can consist of `num`,
+ * `String`, `bool` and `null` as well as `Map` and `List` values.
+ */
+ core.Map<core.String, core.Object> metadata;
+ /**
+ * The server-assigned name, which is only unique within the same service that
+ * originally returns it. If you use the default HTTP mapping, the
+ * `name` should have the format of `operations/some/unique/name`.
+ */
+ core.String name;
+ /**
+ * The normal response of the operation in case of success. If the original
+ * method returns no data on success, such as `Delete`, the response is
+ * `google.protobuf.Empty`. If the original method is standard
+ * `Get`/`Create`/`Update`, the response should be the resource. For other
+ * methods, the response should have the type `XxxResponse`, where `Xxx`
+ * is the original method name. For example, if the original method name
+ * is `TakeSnapshot()`, the inferred response type is
+ * `TakeSnapshotResponse`.
+ *
+ * The values for Object must be JSON objects. It can consist of `num`,
+ * `String`, `bool` and `null` as well as `Map` and `List` values.
+ */
+ core.Map<core.String, core.Object> response;
+
+ Operation();
+
+ Operation.fromJson(core.Map _json) {
+ if (_json.containsKey("done")) {
+ done = _json["done"];
+ }
+ if (_json.containsKey("error")) {
+ error = new Status.fromJson(_json["error"]);
+ }
+ if (_json.containsKey("metadata")) {
+ metadata = _json["metadata"];
+ }
+ if (_json.containsKey("name")) {
+ name = _json["name"];
+ }
+ if (_json.containsKey("response")) {
+ response = _json["response"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (done != null) {
+ _json["done"] = done;
+ }
+ if (error != null) {
+ _json["error"] = (error).toJson();
+ }
+ if (metadata != null) {
+ _json["metadata"] = metadata;
+ }
+ if (name != null) {
+ _json["name"] = name;
+ }
+ if (response != null) {
+ _json["response"] = response;
+ }
+ return _json;
+ }
+}
+
+/** Requirements for the password used to unlock a device. */
+class PasswordRequirements {
+ /**
+ * A device will be wiped after too many incorrect device-unlock passwords
+ * have been entered. A value of 0 means there is no restriction.
+ */
+ core.int maximumFailedPasswordsForWipe;
+ /** Password expiration timeout. */
+ core.String passwordExpirationTimeout;
+ /**
+ * The length of the password history. After setting this, the user will
+ * not be able to enter a new password that is the same as any password in
+ * the history. A value of 0 means there is no restriction.
+ */
+ core.int passwordHistoryLength;
+ /**
+ * The minimum allowed password length. A value of 0 means there is no
+ * restriction.
+ * Only enforced when `password_quality` is `NUMERIC`, `NUMERIC_COMPLEX`,
+ * `ALPHABETIC`, `ALPHANUMERIC`, or `COMPLEX`.
+ */
+ core.int passwordMinimumLength;
+ /**
+ * Minimum number of letters required in the password.
+ * Only enforced when `password_quality` is `COMPLEX`.
+ */
+ core.int passwordMinimumLetters;
+ /**
+ * Minimum number of lower case letters required in the password.
+ * Only enforced when `password_quality` is `COMPLEX`.
+ */
+ core.int passwordMinimumLowerCase;
+ /**
+ * Minimum number of non-letter characters (numerical digits or symbols)
+ * required in the password.
+ * Only enforced when `password_quality` is `COMPLEX`.
+ */
+ core.int passwordMinimumNonLetter;
+ /**
+ * Minimum number of numerical digits required in the password.
+ * Only enforced when `password_quality` is `COMPLEX`.
+ */
+ core.int passwordMinimumNumeric;
+ /**
+ * Minimum number of symbols required in the password.
+ * Only enforced when `password_quality` is `COMPLEX`.
+ */
+ core.int passwordMinimumSymbols;
+ /**
+ * Minimum number of upper case letters required in the password.
+ * Only enforced when `password_quality` is `COMPLEX`.
+ */
+ core.int passwordMinimumUpperCase;
+ /**
+ * The required password quality.
+ * Possible string values are:
+ * - "PASSWORD_QUALITY_UNSPECIFIED" : There are no requirements for the
+ * password.
+ * - "SOMETHING" : There must be a password, but there are no restrictions on
+ * its
+ * characters.
+ * - "NUMERIC" : The password must contain numeric characters.
+ * - "NUMERIC_COMPLEX" : The password must contain numeric characters with no
+ * repeating (4444) or
+ * ordered (1234, 4321, 2468) sequences.
+ * - "ALPHABETIC" : The password must contain alphabetic (or symbol)
+ * characters.
+ * - "ALPHANUMERIC" : The password must contain at both numeric and alphabetic
+ * (or symbol)
+ * characters.
+ * - "COMPLEX" : The password must contain at least a letter, a numerical
+ * digit and a
+ * special symbol. Other password constraints, for example,
+ * `password_minimum_letters` are enforced.
+ */
+ core.String passwordQuality;
+
+ PasswordRequirements();
+
+ PasswordRequirements.fromJson(core.Map _json) {
+ if (_json.containsKey("maximumFailedPasswordsForWipe")) {
+ maximumFailedPasswordsForWipe = _json["maximumFailedPasswordsForWipe"];
+ }
+ if (_json.containsKey("passwordExpirationTimeout")) {
+ passwordExpirationTimeout = _json["passwordExpirationTimeout"];
+ }
+ if (_json.containsKey("passwordHistoryLength")) {
+ passwordHistoryLength = _json["passwordHistoryLength"];
+ }
+ if (_json.containsKey("passwordMinimumLength")) {
+ passwordMinimumLength = _json["passwordMinimumLength"];
+ }
+ if (_json.containsKey("passwordMinimumLetters")) {
+ passwordMinimumLetters = _json["passwordMinimumLetters"];
+ }
+ if (_json.containsKey("passwordMinimumLowerCase")) {
+ passwordMinimumLowerCase = _json["passwordMinimumLowerCase"];
+ }
+ if (_json.containsKey("passwordMinimumNonLetter")) {
+ passwordMinimumNonLetter = _json["passwordMinimumNonLetter"];
+ }
+ if (_json.containsKey("passwordMinimumNumeric")) {
+ passwordMinimumNumeric = _json["passwordMinimumNumeric"];
+ }
+ if (_json.containsKey("passwordMinimumSymbols")) {
+ passwordMinimumSymbols = _json["passwordMinimumSymbols"];
+ }
+ if (_json.containsKey("passwordMinimumUpperCase")) {
+ passwordMinimumUpperCase = _json["passwordMinimumUpperCase"];
+ }
+ if (_json.containsKey("passwordQuality")) {
+ passwordQuality = _json["passwordQuality"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (maximumFailedPasswordsForWipe != null) {
+ _json["maximumFailedPasswordsForWipe"] = maximumFailedPasswordsForWipe;
+ }
+ if (passwordExpirationTimeout != null) {
+ _json["passwordExpirationTimeout"] = passwordExpirationTimeout;
+ }
+ if (passwordHistoryLength != null) {
+ _json["passwordHistoryLength"] = passwordHistoryLength;
+ }
+ if (passwordMinimumLength != null) {
+ _json["passwordMinimumLength"] = passwordMinimumLength;
+ }
+ if (passwordMinimumLetters != null) {
+ _json["passwordMinimumLetters"] = passwordMinimumLetters;
+ }
+ if (passwordMinimumLowerCase != null) {
+ _json["passwordMinimumLowerCase"] = passwordMinimumLowerCase;
+ }
+ if (passwordMinimumNonLetter != null) {
+ _json["passwordMinimumNonLetter"] = passwordMinimumNonLetter;
+ }
+ if (passwordMinimumNumeric != null) {
+ _json["passwordMinimumNumeric"] = passwordMinimumNumeric;
+ }
+ if (passwordMinimumSymbols != null) {
+ _json["passwordMinimumSymbols"] = passwordMinimumSymbols;
+ }
+ if (passwordMinimumUpperCase != null) {
+ _json["passwordMinimumUpperCase"] = passwordMinimumUpperCase;
+ }
+ if (passwordQuality != null) {
+ _json["passwordQuality"] = passwordQuality;
+ }
+ return _json;
+ }
+}
+
+/** Configuration for an Android permission and its grant state. */
+class PermissionGrant {
+ /** The android permission, e.g. `android.permission.READ_CALENDAR`. */
+ core.String permission;
+ /**
+ * The policy for granting the permission.
+ * Possible string values are:
+ * - "PERMISSION_POLICY_UNSPECIFIED" : Policy not specified. If no policy is
+ * specified for a permission at any
+ * level, then the `PROMPT` behavior is used by default.
+ * - "PROMPT" : Prompt the user to grant a permission.
+ * - "GRANT" : Automatically grant a permission.
+ * - "DENY" : Automatically deny a permission.
+ */
+ core.String policy;
+
+ PermissionGrant();
+
+ PermissionGrant.fromJson(core.Map _json) {
+ if (_json.containsKey("permission")) {
+ permission = _json["permission"];
+ }
+ if (_json.containsKey("policy")) {
+ policy = _json["policy"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (permission != null) {
+ _json["permission"] = permission;
+ }
+ if (policy != null) {
+ _json["policy"] = policy;
+ }
+ return _json;
+ }
+}
+
+/**
+ * A default activity for handling intents that match a particular intent
+ * filter.
+ */
+class PersistentPreferredActivity {
+ /**
+ * The intent actions to match in the filter. If any actions are included in
+ * the filter, then an intent's action must be one of those values for it to
+ * match. If no actions are included, the intent action is ignored.
+ */
+ core.List<core.String> actions;
+ /**
+ * The intent categories to match in the filter. An intent includes the
+ * categories that it requires, all of which must be included in the filter in
+ * order to match. In other words, adding a category to the filter has no
+ * impact on matching unless that category is specified in the intent.
+ */
+ core.List<core.String> categories;
+ /**
+ * The activity that should be the default intent handler. This should be an
+ * Android component name, e.g. `com.android.enterprise.app/.MainActivity`.
+ * Alternatively, the value may be the package name of an app, which causes
+ * Android Device Policy to choose an appropriate activity from the app to
+ * handle the intent.
+ */
+ core.String receiverActivity;
+
+ PersistentPreferredActivity();
+
+ PersistentPreferredActivity.fromJson(core.Map _json) {
+ if (_json.containsKey("actions")) {
+ actions = _json["actions"];
+ }
+ if (_json.containsKey("categories")) {
+ categories = _json["categories"];
+ }
+ if (_json.containsKey("receiverActivity")) {
+ receiverActivity = _json["receiverActivity"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (actions != null) {
+ _json["actions"] = actions;
+ }
+ if (categories != null) {
+ _json["categories"] = categories;
+ }
+ if (receiverActivity != null) {
+ _json["receiverActivity"] = receiverActivity;
+ }
+ return _json;
+ }
+}
+
+/** A policy, which governs behavior for a device. */
+class Policy {
+ /** Whether adding new users and profiles is disabled. */
+ core.bool addUserDisabled;
+ /** Whether adjusting the master volume is disabled. */
+ core.bool adjustVolumeDisabled;
+ /** Policy applied to apps. */
+ core.List<ApplicationPolicy> applications;
+ /**
+ * Whether applications other than the ones configured in `applications` are
+ * blocked from being installed. When set, applications that were
+ * installed under a previous policy but no longer appear in the policy are
+ * automatically uninstalled.
+ */
+ core.bool blockApplicationsEnabled;
+ /** Whether all cameras on the device are disabled. */
+ core.bool cameraDisabled;
+ /**
+ * Rules declaring which mitigating actions to take when a device is not
+ * compliant with its policy. When the conditions for multiple rules are
+ * satisfied, all of the mitigating actions for the rules are taken. There is
+ * a maximum limit of 100 rules.
+ */
+ core.List<ComplianceRule> complianceRules;
+ /** Whether the user is allowed to enable debugging features. */
+ core.bool debuggingFeaturesAllowed;
+ /**
+ * The default permission policy for requests for runtime permissions.
+ * Possible string values are:
+ * - "PERMISSION_POLICY_UNSPECIFIED" : Policy not specified. If no policy is
+ * specified for a permission at any
+ * level, then the `PROMPT` behavior is used by default.
+ * - "PROMPT" : Prompt the user to grant a permission.
+ * - "GRANT" : Automatically grant a permission.
+ * - "DENY" : Automatically deny a permission.
+ */
+ core.String defaultPermissionPolicy;
+ /** Whether factory resetting from settings is disabled. */
+ core.bool factoryResetDisabled;
+ /**
+ * Email addresses of device administrators for factory reset protection.
+ * When the device is factory reset, it will require one of these admins to
+ * log in with the Google account email and password to unlock the device.
+ * If no admins are specified, the device will not provide factory reset
+ * protection.
+ */
+ core.List<core.String> frpAdminEmails;
+ /**
+ * Whether the user is allowed to enable the "Unknown Sources" setting,
+ * which allows installation of apps from unknown sources.
+ */
+ core.bool installUnknownSourcesAllowed;
+ /** Whether the keyguard is disabled. */
+ core.bool keyguardDisabled;
+ /**
+ * Maximum time in milliseconds for user activity until the device will lock.
+ * A value of 0 means there is no restriction.
+ */
+ core.String maximumTimeToLock;
+ /** Whether adding or removing accounts is disabled. */
+ core.bool modifyAccountsDisabled;
+ /**
+ * The name of the policy in the form
+ * `enterprises/{enterpriseId}/policies/{policyId}`
+ */
+ core.String name;
+ /**
+ * Flag to specify if network escape hatch is enabled. If this flag has been
+ * enabled then upon device boot if device has no network connection, then an
+ * activity will be shown that allows the user to temporarily connect to a
+ * network to fetch the latest policy. The launched activity will time out if
+ * no network has been connected for a given while and will return to the
+ * previous activity that was shown.
+ */
+ core.bool networkEscapeHatchEnabled;
+ /**
+ * Network configuration for the device. See
+ * [configure networks](/android/management/configure-networks)
+ * for more information.
+ *
+ * The values for Object must be JSON objects. It can consist of `num`,
+ * `String`, `bool` and `null` as well as `Map` and `List` values.
+ */
+ core.Map<core.String, core.Object> openNetworkConfiguration;
+ /** Password requirements. */
+ PasswordRequirements passwordRequirements;
+ /** Default intent handler activities. */
+ core.List<PersistentPreferredActivity> persistentPreferredActivities;
+ /** Whether removing other users is disabled. */
+ core.bool removeUserDisabled;
+ /** Whether rebooting the device into safe boot is disabled. */
+ core.bool safeBootDisabled;
+ /** Whether screen capture is disabled. */
+ core.bool screenCaptureDisabled;
+ /**
+ * Whether the status bar is disabled. This disables notifications, quick
+ * settings and other screen overlays that allow escape from full-screen mode.
+ */
+ core.bool statusBarDisabled;
+ /** Status reporting settings */
+ StatusReportingSettings statusReportingSettings;
+ /**
+ * The battery plugged in modes for which the device stays on. When using this
+ * setting, it is recommended to clear `maximum_time_to_lock` so that the
+ * device doesn't lock itself while it stays on.
+ */
+ core.List<core.String> stayOnPluggedModes;
+ /**
+ * The system update policy, which controls how OS updates are applied. If the
+ * update type is `WINDOWED` and the device has a device account, the update
+ * window will automatically apply to Play app updates as well.
+ */
+ SystemUpdate systemUpdate;
+ /**
+ * Whether the microphone is muted and adjusting microphone volume is
+ * disabled.
+ */
+ core.bool unmuteMicrophoneDisabled;
+ /**
+ * The version of the policy. This is a read-only field. The version is
+ * incremented each time the policy is updated.
+ */
+ core.String version;
+
+ Policy();
+
+ Policy.fromJson(core.Map _json) {
+ if (_json.containsKey("addUserDisabled")) {
+ addUserDisabled = _json["addUserDisabled"];
+ }
+ if (_json.containsKey("adjustVolumeDisabled")) {
+ adjustVolumeDisabled = _json["adjustVolumeDisabled"];
+ }
+ if (_json.containsKey("applications")) {
+ applications = _json["applications"].map((value) => new ApplicationPolicy.fromJson(value)).toList();
+ }
+ if (_json.containsKey("blockApplicationsEnabled")) {
+ blockApplicationsEnabled = _json["blockApplicationsEnabled"];
+ }
+ if (_json.containsKey("cameraDisabled")) {
+ cameraDisabled = _json["cameraDisabled"];
+ }
+ if (_json.containsKey("complianceRules")) {
+ complianceRules = _json["complianceRules"].map((value) => new ComplianceRule.fromJson(value)).toList();
+ }
+ if (_json.containsKey("debuggingFeaturesAllowed")) {
+ debuggingFeaturesAllowed = _json["debuggingFeaturesAllowed"];
+ }
+ if (_json.containsKey("defaultPermissionPolicy")) {
+ defaultPermissionPolicy = _json["defaultPermissionPolicy"];
+ }
+ if (_json.containsKey("factoryResetDisabled")) {
+ factoryResetDisabled = _json["factoryResetDisabled"];
+ }
+ if (_json.containsKey("frpAdminEmails")) {
+ frpAdminEmails = _json["frpAdminEmails"];
+ }
+ if (_json.containsKey("installUnknownSourcesAllowed")) {
+ installUnknownSourcesAllowed = _json["installUnknownSourcesAllowed"];
+ }
+ if (_json.containsKey("keyguardDisabled")) {
+ keyguardDisabled = _json["keyguardDisabled"];
+ }
+ if (_json.containsKey("maximumTimeToLock")) {
+ maximumTimeToLock = _json["maximumTimeToLock"];
+ }
+ if (_json.containsKey("modifyAccountsDisabled")) {
+ modifyAccountsDisabled = _json["modifyAccountsDisabled"];
+ }
+ if (_json.containsKey("name")) {
+ name = _json["name"];
+ }
+ if (_json.containsKey("networkEscapeHatchEnabled")) {
+ networkEscapeHatchEnabled = _json["networkEscapeHatchEnabled"];
+ }
+ if (_json.containsKey("openNetworkConfiguration")) {
+ openNetworkConfiguration = _json["openNetworkConfiguration"];
+ }
+ if (_json.containsKey("passwordRequirements")) {
+ passwordRequirements = new PasswordRequirements.fromJson(_json["passwordRequirements"]);
+ }
+ if (_json.containsKey("persistentPreferredActivities")) {
+ persistentPreferredActivities = _json["persistentPreferredActivities"].map((value) => new PersistentPreferredActivity.fromJson(value)).toList();
+ }
+ if (_json.containsKey("removeUserDisabled")) {
+ removeUserDisabled = _json["removeUserDisabled"];
+ }
+ if (_json.containsKey("safeBootDisabled")) {
+ safeBootDisabled = _json["safeBootDisabled"];
+ }
+ if (_json.containsKey("screenCaptureDisabled")) {
+ screenCaptureDisabled = _json["screenCaptureDisabled"];
+ }
+ if (_json.containsKey("statusBarDisabled")) {
+ statusBarDisabled = _json["statusBarDisabled"];
+ }
+ if (_json.containsKey("statusReportingSettings")) {
+ statusReportingSettings = new StatusReportingSettings.fromJson(_json["statusReportingSettings"]);
+ }
+ if (_json.containsKey("stayOnPluggedModes")) {
+ stayOnPluggedModes = _json["stayOnPluggedModes"];
+ }
+ if (_json.containsKey("systemUpdate")) {
+ systemUpdate = new SystemUpdate.fromJson(_json["systemUpdate"]);
+ }
+ if (_json.containsKey("unmuteMicrophoneDisabled")) {
+ unmuteMicrophoneDisabled = _json["unmuteMicrophoneDisabled"];
+ }
+ if (_json.containsKey("version")) {
+ version = _json["version"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (addUserDisabled != null) {
+ _json["addUserDisabled"] = addUserDisabled;
+ }
+ if (adjustVolumeDisabled != null) {
+ _json["adjustVolumeDisabled"] = adjustVolumeDisabled;
+ }
+ if (applications != null) {
+ _json["applications"] = applications.map((value) => (value).toJson()).toList();
+ }
+ if (blockApplicationsEnabled != null) {
+ _json["blockApplicationsEnabled"] = blockApplicationsEnabled;
+ }
+ if (cameraDisabled != null) {
+ _json["cameraDisabled"] = cameraDisabled;
+ }
+ if (complianceRules != null) {
+ _json["complianceRules"] = complianceRules.map((value) => (value).toJson()).toList();
+ }
+ if (debuggingFeaturesAllowed != null) {
+ _json["debuggingFeaturesAllowed"] = debuggingFeaturesAllowed;
+ }
+ if (defaultPermissionPolicy != null) {
+ _json["defaultPermissionPolicy"] = defaultPermissionPolicy;
+ }
+ if (factoryResetDisabled != null) {
+ _json["factoryResetDisabled"] = factoryResetDisabled;
+ }
+ if (frpAdminEmails != null) {
+ _json["frpAdminEmails"] = frpAdminEmails;
+ }
+ if (installUnknownSourcesAllowed != null) {
+ _json["installUnknownSourcesAllowed"] = installUnknownSourcesAllowed;
+ }
+ if (keyguardDisabled != null) {
+ _json["keyguardDisabled"] = keyguardDisabled;
+ }
+ if (maximumTimeToLock != null) {
+ _json["maximumTimeToLock"] = maximumTimeToLock;
+ }
+ if (modifyAccountsDisabled != null) {
+ _json["modifyAccountsDisabled"] = modifyAccountsDisabled;
+ }
+ if (name != null) {
+ _json["name"] = name;
+ }
+ if (networkEscapeHatchEnabled != null) {
+ _json["networkEscapeHatchEnabled"] = networkEscapeHatchEnabled;
+ }
+ if (openNetworkConfiguration != null) {
+ _json["openNetworkConfiguration"] = openNetworkConfiguration;
+ }
+ if (passwordRequirements != null) {
+ _json["passwordRequirements"] = (passwordRequirements).toJson();
+ }
+ if (persistentPreferredActivities != null) {
+ _json["persistentPreferredActivities"] = persistentPreferredActivities.map((value) => (value).toJson()).toList();
+ }
+ if (removeUserDisabled != null) {
+ _json["removeUserDisabled"] = removeUserDisabled;
+ }
+ if (safeBootDisabled != null) {
+ _json["safeBootDisabled"] = safeBootDisabled;
+ }
+ if (screenCaptureDisabled != null) {
+ _json["screenCaptureDisabled"] = screenCaptureDisabled;
+ }
+ if (statusBarDisabled != null) {
+ _json["statusBarDisabled"] = statusBarDisabled;
+ }
+ if (statusReportingSettings != null) {
+ _json["statusReportingSettings"] = (statusReportingSettings).toJson();
+ }
+ if (stayOnPluggedModes != null) {
+ _json["stayOnPluggedModes"] = stayOnPluggedModes;
+ }
+ if (systemUpdate != null) {
+ _json["systemUpdate"] = (systemUpdate).toJson();
+ }
+ if (unmuteMicrophoneDisabled != null) {
+ _json["unmuteMicrophoneDisabled"] = unmuteMicrophoneDisabled;
+ }
+ if (version != null) {
+ _json["version"] = version;
+ }
+ return _json;
+ }
+}
+
+/** A power management event. */
+class PowerManagementEvent {
+ /**
+ * For `BATTERY_LEVEL_COLLECTED` events, the battery level as a percentage.
+ */
+ core.double batteryLevel;
+ /** The creation time of the event. */
+ core.String createTime;
+ /**
+ * Event type.
+ * Possible string values are:
+ * - "POWER_MANAGEMENT_EVENT_TYPE_UNSPECIFIED" : Unspecified. No events have
+ * this type.
+ * - "BATTERY_LEVEL_COLLECTED" : Battery level was measured.
+ * - "POWER_CONNECTED" : The device started charging.
+ * - "POWER_DISCONNECTED" : The device stopped charging.
+ * - "BATTERY_LOW" : The device entered low-power mode.
+ * - "BATTERY_OKAY" : The device exited low-power mode.
+ * - "BOOT_COMPLETED" : The device booted.
+ * - "SHUTDOWN" : The device shut down.
+ */
+ core.String eventType;
+
+ PowerManagementEvent();
+
+ PowerManagementEvent.fromJson(core.Map _json) {
+ if (_json.containsKey("batteryLevel")) {
+ batteryLevel = _json["batteryLevel"];
+ }
+ if (_json.containsKey("createTime")) {
+ createTime = _json["createTime"];
+ }
+ if (_json.containsKey("eventType")) {
+ eventType = _json["eventType"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (batteryLevel != null) {
+ _json["batteryLevel"] = batteryLevel;
+ }
+ if (createTime != null) {
+ _json["createTime"] = createTime;
+ }
+ if (eventType != null) {
+ _json["eventType"] = eventType;
+ }
+ return _json;
+ }
+}
+
+/** An enterprise signup URL. */
+class SignupUrl {
+ /**
+ * The name of the resource. This must be included in the
+ * [create
+ * enterprise](/android/management/reference/rest/v1/enterprises/create)
+ * request at the end of the signup flow.
+ */
+ core.String name;
+ /**
+ * A URL under which the Admin can sign up for an enterprise.
+ * The page pointed to cannot be rendered in an iframe.
+ */
+ core.String url;
+
+ SignupUrl();
+
+ SignupUrl.fromJson(core.Map _json) {
+ if (_json.containsKey("name")) {
+ name = _json["name"];
+ }
+ if (_json.containsKey("url")) {
+ url = _json["url"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (name != null) {
+ _json["name"] = name;
+ }
+ if (url != null) {
+ _json["url"] = url;
+ }
+ return _json;
+ }
+}
+
+/** Information about device software. */
+class SoftwareInfo {
+ /**
+ * Android build Id string meant for displaying to the user,
+ * e.g. `shamu-userdebug 6.0.1 MOB30I 2756745 dev-keys`.
+ */
+ core.String androidBuildNumber;
+ /** Build time. */
+ core.String androidBuildTime;
+ /** The user visible Android version string, e.g. `6.0.1`. */
+ core.String androidVersion;
+ /** The system bootloader version number, e.g. `0.6.7`. */
+ core.String bootloaderVersion;
+ /** Kernel version, e.g. `2.6.32.9-g103d848`. */
+ core.String deviceKernelVersion;
+ /** Security patch level, e.g. `2016-05-01`. */
+ core.String securityPatchLevel;
+
+ SoftwareInfo();
+
+ SoftwareInfo.fromJson(core.Map _json) {
+ if (_json.containsKey("androidBuildNumber")) {
+ androidBuildNumber = _json["androidBuildNumber"];
+ }
+ if (_json.containsKey("androidBuildTime")) {
+ androidBuildTime = _json["androidBuildTime"];
+ }
+ if (_json.containsKey("androidVersion")) {
+ androidVersion = _json["androidVersion"];
+ }
+ if (_json.containsKey("bootloaderVersion")) {
+ bootloaderVersion = _json["bootloaderVersion"];
+ }
+ if (_json.containsKey("deviceKernelVersion")) {
+ deviceKernelVersion = _json["deviceKernelVersion"];
+ }
+ if (_json.containsKey("securityPatchLevel")) {
+ securityPatchLevel = _json["securityPatchLevel"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (androidBuildNumber != null) {
+ _json["androidBuildNumber"] = androidBuildNumber;
+ }
+ if (androidBuildTime != null) {
+ _json["androidBuildTime"] = androidBuildTime;
+ }
+ if (androidVersion != null) {
+ _json["androidVersion"] = androidVersion;
+ }
+ if (bootloaderVersion != null) {
+ _json["bootloaderVersion"] = bootloaderVersion;
+ }
+ if (deviceKernelVersion != null) {
+ _json["deviceKernelVersion"] = deviceKernelVersion;
+ }
+ if (securityPatchLevel != null) {
+ _json["securityPatchLevel"] = securityPatchLevel;
+ }
+ return _json;
+ }
+}
+
+/**
+ * The `Status` type defines a logical error model that is suitable for
+ * different
+ * programming environments, including REST APIs and RPC APIs. It is used by
+ * [gRPC](https://github.com/grpc). The error model is designed to be:
+ *
+ * - Simple to use and understand for most users
+ * - Flexible enough to meet unexpected needs
+ *
+ * # Overview
+ *
+ * The `Status` message contains three pieces of data: error code, error
+ * message,
+ * and error details. The error code should be an enum value of
+ * google.rpc.Code, but it may accept additional error codes if needed. The
+ * error message should be a developer-facing English message that helps
+ * developers *understand* and *resolve* the error. If a localized user-facing
+ * error message is needed, put the localized message in the error details or
+ * localize it in the client. The optional error details may contain arbitrary
+ * information about the error. There is a predefined set of error detail types
+ * in the package `google.rpc` that can be used for common error conditions.
+ *
+ * # Language mapping
+ *
+ * The `Status` message is the logical representation of the error model, but it
+ * is not necessarily the actual wire format. When the `Status` message is
+ * exposed in different client libraries and different wire protocols, it can be
+ * mapped differently. For example, it will likely be mapped to some exceptions
+ * in Java, but more likely mapped to some error codes in C.
+ *
+ * # Other uses
+ *
+ * The error model and the `Status` message can be used in a variety of
+ * environments, either with or without APIs, to provide a
+ * consistent developer experience across different environments.
+ *
+ * Example uses of this error model include:
+ *
+ * - Partial errors. If a service needs to return partial errors to the client,
+ * it may embed the `Status` in the normal response to indicate the partial
+ * errors.
+ *
+ * - Workflow errors. A typical workflow has multiple steps. Each step may
+ * have a `Status` message for error reporting.
+ *
+ * - Batch operations. If a client uses batch request and batch response, the
+ * `Status` message should be used directly inside batch response, one for
+ * each error sub-response.
+ *
+ * - Asynchronous operations. If an API call embeds asynchronous operation
+ * results in its response, the status of those operations should be
+ * represented directly using the `Status` message.
+ *
+ * - Logging. If some API errors are stored in logs, the message `Status` could
+ * be used directly after any stripping needed for security/privacy reasons.
+ */
+class Status {
+ /** The status code, which should be an enum value of google.rpc.Code. */
+ core.int code;
+ /**
+ * A list of messages that carry the error details. There is a common set of
+ * message types for APIs to use.
+ *
+ * The values for Object must be JSON objects. It can consist of `num`,
+ * `String`, `bool` and `null` as well as `Map` and `List` values.
+ */
+ core.List<core.Map<core.String, core.Object>> details;
+ /**
+ * A developer-facing error message, which should be in English. Any
+ * user-facing error message should be localized and sent in the
+ * google.rpc.Status.details field, or localized by the client.
+ */
+ core.String message;
+
+ Status();
+
+ Status.fromJson(core.Map _json) {
+ if (_json.containsKey("code")) {
+ code = _json["code"];
+ }
+ if (_json.containsKey("details")) {
+ details = _json["details"];
+ }
+ if (_json.containsKey("message")) {
+ message = _json["message"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (code != null) {
+ _json["code"] = code;
+ }
+ if (details != null) {
+ _json["details"] = details;
+ }
+ if (message != null) {
+ _json["message"] = message;
+ }
+ return _json;
+ }
+}
+
+/** Settings controlling the behavior of status reports. */
+class StatusReportingSettings {
+ /** Whether displays reporting is enabled. */
+ core.bool displayInfoEnabled;
+ /** Whether hardware status reporting is enabled. */
+ core.bool hardwareStatusEnabled;
+ /** Whether memory info reporting is enabled. */
+ core.bool memoryInfoEnabled;
+ /** Whether network info reporting is enabled. */
+ core.bool networkInfoEnabled;
+ /** Whether power management event reporting is enabled. */
+ core.bool powerManagementEventsEnabled;
+ /** Whether software info reporting is enabled. */
+ core.bool softwareInfoEnabled;
+
+ StatusReportingSettings();
+
+ StatusReportingSettings.fromJson(core.Map _json) {
+ if (_json.containsKey("displayInfoEnabled")) {
+ displayInfoEnabled = _json["displayInfoEnabled"];
+ }
+ if (_json.containsKey("hardwareStatusEnabled")) {
+ hardwareStatusEnabled = _json["hardwareStatusEnabled"];
+ }
+ if (_json.containsKey("memoryInfoEnabled")) {
+ memoryInfoEnabled = _json["memoryInfoEnabled"];
+ }
+ if (_json.containsKey("networkInfoEnabled")) {
+ networkInfoEnabled = _json["networkInfoEnabled"];
+ }
+ if (_json.containsKey("powerManagementEventsEnabled")) {
+ powerManagementEventsEnabled = _json["powerManagementEventsEnabled"];
+ }
+ if (_json.containsKey("softwareInfoEnabled")) {
+ softwareInfoEnabled = _json["softwareInfoEnabled"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (displayInfoEnabled != null) {
+ _json["displayInfoEnabled"] = displayInfoEnabled;
+ }
+ if (hardwareStatusEnabled != null) {
+ _json["hardwareStatusEnabled"] = hardwareStatusEnabled;
+ }
+ if (memoryInfoEnabled != null) {
+ _json["memoryInfoEnabled"] = memoryInfoEnabled;
+ }
+ if (networkInfoEnabled != null) {
+ _json["networkInfoEnabled"] = networkInfoEnabled;
+ }
+ if (powerManagementEventsEnabled != null) {
+ _json["powerManagementEventsEnabled"] = powerManagementEventsEnabled;
+ }
+ if (softwareInfoEnabled != null) {
+ _json["softwareInfoEnabled"] = softwareInfoEnabled;
+ }
+ return _json;
+ }
+}
+
+/** Configuration for managing system updates */
+class SystemUpdate {
+ /**
+ * If the type is `WINDOWED`, the end of the maintenance window, measured as
+ * the number of minutes after midnight in device local time. This value must
+ * be between 0 and 1439, inclusive. If this value is less than
+ * `start_minutes`, then the maintenance window spans midnight. If the
+ * maintenance window specified is smaller than 30 minutes, the actual window
+ * is extended to 30 minutes beyond the start time.
+ */
+ core.int endMinutes;
+ /**
+ * If the type is `WINDOWED`, the start of the maintenance window, measured as
+ * the number of minutes after midnight in device local time. This value must
+ * be between 0 and 1439, inclusive.
+ */
+ core.int startMinutes;
+ /**
+ * The type of system update to configure.
+ * Possible string values are:
+ * - "SYSTEM_UPDATE_TYPE_UNSPECIFIED" : Follow the default update behavior for
+ * the device, which typically
+ * requires the user to accept system updates.
+ * - "AUTOMATIC" : Install automatically as soon as an update is available.
+ * - "WINDOWED" : Install automatically within a daily maintenance window. If
+ * the device
+ * has a device account, this also configures Play apps to be updated within
+ * the window. This is strongly recommended for kiosk devices because this
+ * is the only way apps persistently pinned to the foreground can be updated
+ * by Play.
+ * - "POSTPONE" : Postpone automatic install up to a maximum of 30 days.
+ */
+ core.String type;
+
+ SystemUpdate();
+
+ SystemUpdate.fromJson(core.Map _json) {
+ if (_json.containsKey("endMinutes")) {
+ endMinutes = _json["endMinutes"];
+ }
+ if (_json.containsKey("startMinutes")) {
+ startMinutes = _json["startMinutes"];
+ }
+ if (_json.containsKey("type")) {
+ type = _json["type"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (endMinutes != null) {
+ _json["endMinutes"] = endMinutes;
+ }
+ if (startMinutes != null) {
+ _json["startMinutes"] = startMinutes;
+ }
+ if (type != null) {
+ _json["type"] = type;
+ }
+ return _json;
+ }
+}
+
+/**
+ * Provides user facing message with locale info. The maximum message length is
+ * 4096 characters.
+ */
+class UserFacingMessage {
+ /**
+ * The default message that gets displayed if no localized message is
+ * specified, or the user's locale does not match with any of the localized
+ * messages. A default message must be provided if any localized messages are
+ * provided.
+ */
+ core.String defaultMessage;
+ /**
+ * A map which contains <locale, message> pairs.
+ * The locale is a BCP 47 language code, e.g. en-US, es-ES, fr.
+ */
+ core.Map<core.String, core.String> localizedMessages;
+
+ UserFacingMessage();
+
+ UserFacingMessage.fromJson(core.Map _json) {
+ if (_json.containsKey("defaultMessage")) {
+ defaultMessage = _json["defaultMessage"];
+ }
+ if (_json.containsKey("localizedMessages")) {
+ localizedMessages = _json["localizedMessages"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (defaultMessage != null) {
+ _json["defaultMessage"] = defaultMessage;
+ }
+ if (localizedMessages != null) {
+ _json["localizedMessages"] = localizedMessages;
+ }
+ return _json;
+ }
+}
+
+/** A web token used to access an embeddable managed Google Play web UI. */
+class WebToken {
+ /**
+ * The name of the web token, which is generated by the server during
+ * creation, in the form
+ * `enterprises/{enterpriseId}/webTokens/{webTokenId}`.
+ */
+ core.String name;
+ /**
+ * The URL of the parent frame hosting the iframe with the embedded UI. To
+ * prevent XSS, the iframe may not be hosted at other URLs. The URL must use
+ * the https scheme.
+ */
+ core.String parentFrameUrl;
+ /**
+ * Permissions the admin may exercise in the embedded UI. The admin must have
+ * all of these permissions in order to view the UI.
+ */
+ core.List<core.String> permissions;
+ /**
+ * The token value which is used in the hosting page to generate the iframe
+ * with the embedded UI. This is a read-only field generated by the server.
+ */
+ core.String value;
+
+ WebToken();
+
+ WebToken.fromJson(core.Map _json) {
+ if (_json.containsKey("name")) {
+ name = _json["name"];
+ }
+ if (_json.containsKey("parentFrameUrl")) {
+ parentFrameUrl = _json["parentFrameUrl"];
+ }
+ if (_json.containsKey("permissions")) {
+ permissions = _json["permissions"];
+ }
+ if (_json.containsKey("value")) {
+ value = _json["value"];
+ }
+ }
+
+ core.Map<core.String, core.Object> toJson() {
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>();
+ if (name != null) {
+ _json["name"] = name;
+ }
+ if (parentFrameUrl != null) {
+ _json["parentFrameUrl"] = parentFrameUrl;
+ }
+ if (permissions != null) {
+ _json["permissions"] = permissions;
+ }
+ if (value != null) {
+ _json["value"] = value;
+ }
+ return _json;
+ }
+}
« no previous file with comments | « generated/googleapis/lib/androidenterprise/v1.dart ('k') | generated/googleapis/lib/appengine/v1.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698