<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="androidmanagement_v1.html">Android Management API</a> . <a href="androidmanagement_v1.enterprises.html">enterprises</a> . <a href="androidmanagement_v1.enterprises.devices.html">devices</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="androidmanagement_v1.enterprises.devices.operations.html">operations()</a></code>
</p>
<p class="firstline">Returns the operations Resource.</p>

<p class="toc_element">
  <code><a href="#delete">delete(name, wipeDataFlags=None, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a device. This operation wipes the device.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a device.</p>
<p class="toc_element">
  <code><a href="#issueCommand">issueCommand(name, body, x__xgafv=None)</a></code></p>
<p class="firstline">Issues a command to a device. The Operation resource returned contains a Command in its metadata field. Use the get operation method to get the status of the command.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, pageToken=None, x__xgafv=None, pageSize=None)</a></code></p>
<p class="firstline">Lists devices for a given enterprise.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#patch">patch(name, body, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates a device.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="delete">delete(name, wipeDataFlags=None, x__xgafv=None)</code>
  <pre>Deletes a device. This operation wipes the device.

Args:
  name: string, The name of the device in the form enterprises/{enterpriseId}/devices/{deviceId}. (required)
  wipeDataFlags: string, Optional flags that control the device wiping behavior. (repeated)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # 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 {}.
  }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Gets a device.

Args:
  name: string, The name of the device in the form enterprises/{enterpriseId}/devices/{deviceId}. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A device owned by an enterprise. Unless otherwise noted, all fields are read-only and can't be modified by enterprises.devices.patch.
      "appliedPolicyName": "A String", # The name of the policy currently applied to the device.
      "displays": [ # Detailed information about displays on the device. This information is only available if displayInfoEnabled is true in the device's policy.
        { # Device display information.
          "refreshRate": 42, # Refresh rate of the display in frames per second.
          "name": "A String", # Name of the display.
          "density": 42, # Display density expressed as dots-per-inch.
          "height": 42, # Display height in pixels.
          "width": 42, # Display width in pixels.
          "state": "A String", # State of the display.
          "displayId": 42, # Unique display id.
        },
      ],
      "nonComplianceDetails": [ # Details about policy settings that the device is not compliant with.
        { # Provides detail about non-compliance with a policy setting.
          "currentValue": "", # If the policy setting could not be applied, the current value of the setting on the device.
          "packageName": "A String", # The package name indicating which app is out of compliance, if applicable.
          "fieldPath": "A String", # 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
          "installationFailureReason": "A String", # If package_name is set and the non-compliance reason is APP_NOT_INSTALLED or APP_NOT_UPDATED, the detailed reason the app can't be installed or updated.
          "settingName": "A String", # The name of the policy setting. This is the JSON field name of a top-level Policy  field.
          "nonComplianceReason": "A String", # The reason the device is not in compliance with the setting.
        },
      ],
      "apiLevel": 42, # The API level of the Android platform version running on the device.
      "policyName": "A String", # The name of the policy applied to the device, in the form enterprises/{enterpriseId}/policies/{policyId}. If not specified, the policy_name for the device's user is applied. This field can be modified by a patch request. You can specify only the policyId when calling enterprises.devices.patch, as long as the policyId doesn’t contain any slashes. The rest of the policy name is inferred.
      "disabledReason": { # Provides a user-facing message with locale info. The maximum message length is 4096 characters. # If the device state is DISABLED, an optional message that is displayed on the device indicating the reason the device is disabled. This field can be modified by a patch request.
        "defaultMessage": "A String", # The default message displayed if no localized message is specified or the user's locale doesn't match with any of the localized messages. A default message must be provided if any localized messages are provided.
        "localizedMessages": { # A map containing <locale, message> pairs, where locale is a well-formed BCP 47 language (https://www.w3.org/International/articles/language-tags/) code, such as en-US, es-ES, or fr.
          "a_key": "A String",
        },
      },
      "enrollmentTokenData": "A String", # If the device was enrolled with an enrollment token with additional data provided, this field contains that data.
      "softwareInfo": { # Information about device software. # Detailed information about the device software. This information is only available if softwareInfoEnabled is true in the device's policy.
        "primaryLanguageCode": "A String", # An IETF BCP 47 language code for the primary locale on the device.
        "androidBuildTime": "A String", # Build time.
        "androidBuildNumber": "A String", # Android build ID string meant for displaying to the user. For example, shamu-userdebug 6.0.1 MOB30I 2756745 dev-keys.
        "deviceBuildSignature": "A String", # SHA-256 hash of android.content.pm.Signature (https://developer.android.com/reference/android/content/pm/Signature.html) associated with the system package, which can be used to verify that the system build hasn't been modified.
        "androidDevicePolicyVersionCode": 42, # The Android Device Policy app version code.
        "securityPatchLevel": "A String", # Security patch level, e.g. 2016-05-01.
        "androidDevicePolicyVersionName": "A String", # The Android Device Policy app version as displayed to the user.
        "deviceKernelVersion": "A String", # Kernel version, for example, 2.6.32.9-g103d848.
        "androidVersion": "A String", # The user-visible Android version string. For example, 6.0.1.
        "bootloaderVersion": "A String", # The system bootloader version number, e.g. 0.6.7.
      },
      "policyCompliant": True or False, # Whether the device is compliant with its policy.
      "state": "A String", # The state to be applied to the device. This field can be modified by a patch request. Note that when calling enterprises.devices.patch, ACTIVE and DISABLED are the only allowable values. To enter the device into a DELETED state, call enterprises.devices.delete.
      "lastPolicyComplianceReportTime": "A String", # Deprecated.
      "deviceSettings": { # Information about security related device settings on device. # Device settings information. This information is only available if deviceSettingsEnabled is true in the device's policy.
        "developmentSettingsEnabled": True or False, # Whether developer mode is enabled on the device.
        "unknownSourcesEnabled": True or False, # Whether installing apps from unknown sources is enabled.
        "verifyAppsEnabled": True or False, # Whether Verify Apps (Google Play Protect (https://support.google.com/googleplay/answer/2812853)) is enabled on the device.
        "adbEnabled": True or False, # Whether ADB (https://developer.android.com/studio/command-line/adb.html) is enabled on the device.
        "isEncrypted": True or False, # Whether the storage encryption is enabled.
        "encryptionStatus": "A String", # Encryption status from DevicePolicyManager.
        "isDeviceSecure": True or False, # Whether the device is secured with PIN/password.
      },
      "applicationReports": [ # Reports for apps installed on the device. This information is only available when application_reports_enabled is true in the device's policy.
        { # Information reported about an installed app.
          "displayName": "A String", # The display name of the app.
          "installerPackageName": "A String", # The package name of the app that installed this app.
          "packageName": "A String", # Package name of the app.
          "keyedAppStates": [ # List of keyed app states reported by the app.
            { # Keyed app state reported by the app.
              "severity": "A String", # The severity of the app state.
              "lastUpdateTime": "A String", # The time the app state was most recently updated.
              "key": "A String", # The key for the app state. Acts as a point of reference for what the app is providing state for. For example, when providing managed configuration feedback, this key could be the managed configuration key.
              "message": "A String", # Optionally, a free-form message string to explain the app state. If the state was triggered by a particular value (e.g. a managed configuration value), it should be included in the message.
              "data": "A String", # Optionally, a machine-readable value to be read by the EMM. For example, setting values that the admin can choose to query against in the EMM console (e.g. “notify me if the battery_warning data < 10”).
              "createTime": "A String", # The creation time of the app state on the device.
            },
          ],
          "packageSha256Hash": "A String", # The SHA-256 hash of the app's APK file, which can be used to verify the app hasn't been modified. Each byte of the hash value is represented as a two-digit hexadecimal number.
          "signingKeyCertFingerprints": [ # The SHA-1 hash of each android.content.pm.Signature (https://developer.android.com/reference/android/content/pm/Signature.html) associated with the app package. Each byte of each hash value is represented as a two-digit hexadecimal number.
            "A String",
          ],
          "applicationSource": "A String", # The source of the package.
          "state": "A String", # Application state.
          "versionName": "A String", # The app version as displayed to the user.
          "versionCode": 42, # The app version code, which can be used to determine whether one version is more recent than another.
          "events": [ # List of app events. The most recent 20 events are stored in the list.
            { # An app-related event.
              "eventType": "A String", # App event type.
              "createTime": "A String", # The creation time of the event.
            },
          ],
        },
      ],
      "lastStatusReportTime": "A String", # The last time the device sent a status report.
      "hardwareInfo": { # Information about device hardware. The fields related to temperature thresholds are only available if hardwareStatusEnabled is true in the device's policy. # Detailed information about the device hardware.
        "hardware": "A String", # Name of the hardware. For example, Angler.
        "cpuShutdownTemperatures": [ # CPU shutdown temperature thresholds in Celsius for each CPU on the device.
          3.14,
        ],
        "cpuThrottlingTemperatures": [ # CPU throttling temperature thresholds in Celsius for each CPU on the device.
          3.14,
        ],
        "batteryThrottlingTemperatures": [ # Battery throttling temperature thresholds in Celsius for each battery on the device.
          3.14,
        ],
        "serialNumber": "A String", # The device serial number.
        "gpuShutdownTemperatures": [ # GPU shutdown temperature thresholds in Celsius for each GPU on the device.
          3.14,
        ],
        "gpuThrottlingTemperatures": [ # GPU throttling temperature thresholds in Celsius for each GPU on the device.
          3.14,
        ],
        "skinShutdownTemperatures": [ # Device skin shutdown temperature thresholds in Celsius.
          3.14,
        ],
        "skinThrottlingTemperatures": [ # Device skin throttling temperature thresholds in Celsius.
          3.14,
        ],
        "batteryShutdownTemperatures": [ # Battery shutdown temperature thresholds in Celsius for each battery on the device.
          3.14,
        ],
        "deviceBasebandVersion": "A String", # Baseband version. For example, MDM9625_104662.22.05.34p.
        "model": "A String", # The model of the device. For example, Asus Nexus 7.
        "brand": "A String", # Brand of the device. For example, Google.
        "manufacturer": "A String", # Manufacturer. For example, Motorola.
      },
      "networkInfo": { # Device network info. # Device network information. This information is only available if networkInfoEnabled is true in the device's policy.
        "imei": "A String", # IMEI number of the GSM device. For example, A1000031212.
        "networkOperatorName": "A String", # Alphabetic name of current registered operator. For example, Vodafone.
        "meid": "A String", # MEID number of the CDMA device. For example, A00000292788E1.
        "wifiMacAddress": "A String", # Wi-Fi MAC address of the device. For example, 7c:11:11:11:11:11.
      },
      "managementMode": "A String", # The type of management mode Android Device Policy takes on the device. This influences which policy settings are supported.
      "memoryEvents": [ # Events related to memory and storage measurements in chronological order. This information is only available if memoryInfoEnabled is true in the device's policy.
        { # An event related to memory and storage measurements.
          "eventType": "A String", # Event type.
          "byteCount": "A String", # The number of free bytes in the medium, or for EXTERNAL_STORAGE_DETECTED, the total capacity in bytes of the storage medium.
          "createTime": "A String", # The creation time of the event.
        },
      ],
      "powerManagementEvents": [ # Power management events on the device in chronological order. This information is only available if powerManagementEventsEnabled is true in the device's policy.
        { # A power management event.
          "eventType": "A String", # Event type.
          "batteryLevel": 3.14, # For BATTERY_LEVEL_COLLECTED events, the battery level as a percentage.
          "createTime": "A String", # The creation time of the event.
        },
      ],
      "enrollmentTokenName": "A String", # If the device was enrolled with an enrollment token, this field contains the name of the token.
      "user": { # A user belonging to an enterprise. # The user who owns the device.
        "accountIdentifier": "A String", # A unique identifier you create for this user, such as user342 or asset#44418. This field must be set when the user is created and can't be updated. This field must not contain personally identifiable information (PII). This identifier must be 1024 characters or less; otherwise, the update policy request will fail.
      },
      "hardwareStatusSamples": [ # Hardware status samples in chronological order. This information is only available if hardwareStatusEnabled is true in the device's policy.
        { # Hardware status. Temperatures may be compared to the temperature thresholds available in hardwareInfo to determine hardware health.
          "gpuTemperatures": [ # Current GPU temperatures in Celsius for each GPU on the device.
            3.14,
          ],
          "fanSpeeds": [ # 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.
            3.14,
          ],
          "cpuTemperatures": [ # Current CPU temperatures in Celsius for each CPU on the device.
            3.14,
          ],
          "createTime": "A String", # The time the measurements were taken.
          "cpuUsages": [ # 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.
            3.14,
          ],
          "skinTemperatures": [ # Current device skin temperatures in Celsius.
            3.14,
          ],
          "batteryTemperatures": [ # Current battery temperatures in Celsius for each battery on the device.
            3.14,
          ],
        },
      ],
      "appliedPolicyVersion": "A String", # The version of the policy currently applied to the device.
      "userName": "A String", # The resource name of the user that owns this device in the form enterprises/{enterpriseId}/users/{userId}.
      "name": "A String", # The name of the device in the form enterprises/{enterpriseId}/devices/{deviceId}.
      "previousDeviceNames": [ # If the same physical device has been enrolled multiple times, this field contains its previous device names. 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.
        "A String",
      ],
      "lastPolicySyncTime": "A String", # The last time the device fetched its policy.
      "appliedState": "A String", # The state currently applied to the device.
      "systemProperties": { # Map of selected system properties name and value related to the device.
        "a_key": "A String",
      },
      "memoryInfo": { # Information about device memory and storage. # Memory information. This information is only available if memoryInfoEnabled is true in the device's policy.
        "totalInternalStorage": "A String", # Total internal storage on device in bytes.
        "totalRam": "A String", # Total RAM on device in bytes.
      },
      "enrollmentTime": "A String", # The time of device enrollment.
    }</pre>
</div>

<div class="method">
    <code class="details" id="issueCommand">issueCommand(name, body, x__xgafv=None)</code>
  <pre>Issues a command to a device. The Operation resource returned contains a Command in its metadata field. Use the get operation method to get the status of the command.

Args:
  name: string, The name of the device in the form enterprises/{enterpriseId}/devices/{deviceId}. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # A command.
    "userName": "A String", # The resource name of the user that owns the device in the form enterprises/{enterpriseId}/users/{userId}. This is automatically generated by the server based on the device the command is sent to.
    "resetPasswordFlags": [ # For commands of type RESET_PASSWORD, optionally specifies flags.
      "A String",
    ],
    "newPassword": "A String", # For commands of type RESET_PASSWORD, optionally specifies the new password.
    "errorCode": "A String", # If the command failed, an error code explaining the failure. This is not set when the command is cancelled by the caller.
    "duration": "A String", # 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.
    "type": "A String", # The type of the command.
    "createTime": "A String", # The timestamp at which the command was created. The timestamp is automatically generated by the server.
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
    "metadata": { # 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.
      "a_key": "", # Properties of the object. Contains field @type with type URL.
    },
    "error": { # 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). Each Status message contains three pieces of data: error code, error message, and error details.You can find out more about this error model and how to work with it in the API Design Guide (https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
      "message": "A String", # 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.
      "code": 42, # The status code, which should be an enum value of google.rpc.Code.
      "details": [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
        {
          "a_key": "", # Properties of the object. Contains field @type with type URL.
        },
      ],
    },
    "done": True or False, # 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.
    "response": { # 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.
      "a_key": "", # Properties of the object. Contains field @type with type URL.
    },
    "name": "A String", # 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 be a resource name ending with operations/{unique_id}.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageToken=None, x__xgafv=None, pageSize=None)</code>
  <pre>Lists devices for a given enterprise.

Args:
  parent: string, The name of the enterprise in the form enterprises/{enterpriseId}. (required)
  pageToken: string, A token identifying a page of results returned by the server.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
  pageSize: integer, The requested page size. The actual page size may be fixed to a min or max value.

Returns:
  An object of the form:

    { # Response to a request to list devices for a given enterprise.
    "nextPageToken": "A String", # If there are more results, a token to retrieve next page of results.
    "devices": [ # The list of devices.
      { # A device owned by an enterprise. Unless otherwise noted, all fields are read-only and can't be modified by enterprises.devices.patch.
          "appliedPolicyName": "A String", # The name of the policy currently applied to the device.
          "displays": [ # Detailed information about displays on the device. This information is only available if displayInfoEnabled is true in the device's policy.
            { # Device display information.
              "refreshRate": 42, # Refresh rate of the display in frames per second.
              "name": "A String", # Name of the display.
              "density": 42, # Display density expressed as dots-per-inch.
              "height": 42, # Display height in pixels.
              "width": 42, # Display width in pixels.
              "state": "A String", # State of the display.
              "displayId": 42, # Unique display id.
            },
          ],
          "nonComplianceDetails": [ # Details about policy settings that the device is not compliant with.
            { # Provides detail about non-compliance with a policy setting.
              "currentValue": "", # If the policy setting could not be applied, the current value of the setting on the device.
              "packageName": "A String", # The package name indicating which app is out of compliance, if applicable.
              "fieldPath": "A String", # 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
              "installationFailureReason": "A String", # If package_name is set and the non-compliance reason is APP_NOT_INSTALLED or APP_NOT_UPDATED, the detailed reason the app can't be installed or updated.
              "settingName": "A String", # The name of the policy setting. This is the JSON field name of a top-level Policy  field.
              "nonComplianceReason": "A String", # The reason the device is not in compliance with the setting.
            },
          ],
          "apiLevel": 42, # The API level of the Android platform version running on the device.
          "policyName": "A String", # The name of the policy applied to the device, in the form enterprises/{enterpriseId}/policies/{policyId}. If not specified, the policy_name for the device's user is applied. This field can be modified by a patch request. You can specify only the policyId when calling enterprises.devices.patch, as long as the policyId doesn’t contain any slashes. The rest of the policy name is inferred.
          "disabledReason": { # Provides a user-facing message with locale info. The maximum message length is 4096 characters. # If the device state is DISABLED, an optional message that is displayed on the device indicating the reason the device is disabled. This field can be modified by a patch request.
            "defaultMessage": "A String", # The default message displayed if no localized message is specified or the user's locale doesn't match with any of the localized messages. A default message must be provided if any localized messages are provided.
            "localizedMessages": { # A map containing <locale, message> pairs, where locale is a well-formed BCP 47 language (https://www.w3.org/International/articles/language-tags/) code, such as en-US, es-ES, or fr.
              "a_key": "A String",
            },
          },
          "enrollmentTokenData": "A String", # If the device was enrolled with an enrollment token with additional data provided, this field contains that data.
          "softwareInfo": { # Information about device software. # Detailed information about the device software. This information is only available if softwareInfoEnabled is true in the device's policy.
            "primaryLanguageCode": "A String", # An IETF BCP 47 language code for the primary locale on the device.
            "androidBuildTime": "A String", # Build time.
            "androidBuildNumber": "A String", # Android build ID string meant for displaying to the user. For example, shamu-userdebug 6.0.1 MOB30I 2756745 dev-keys.
            "deviceBuildSignature": "A String", # SHA-256 hash of android.content.pm.Signature (https://developer.android.com/reference/android/content/pm/Signature.html) associated with the system package, which can be used to verify that the system build hasn't been modified.
            "androidDevicePolicyVersionCode": 42, # The Android Device Policy app version code.
            "securityPatchLevel": "A String", # Security patch level, e.g. 2016-05-01.
            "androidDevicePolicyVersionName": "A String", # The Android Device Policy app version as displayed to the user.
            "deviceKernelVersion": "A String", # Kernel version, for example, 2.6.32.9-g103d848.
            "androidVersion": "A String", # The user-visible Android version string. For example, 6.0.1.
            "bootloaderVersion": "A String", # The system bootloader version number, e.g. 0.6.7.
          },
          "policyCompliant": True or False, # Whether the device is compliant with its policy.
          "state": "A String", # The state to be applied to the device. This field can be modified by a patch request. Note that when calling enterprises.devices.patch, ACTIVE and DISABLED are the only allowable values. To enter the device into a DELETED state, call enterprises.devices.delete.
          "lastPolicyComplianceReportTime": "A String", # Deprecated.
          "deviceSettings": { # Information about security related device settings on device. # Device settings information. This information is only available if deviceSettingsEnabled is true in the device's policy.
            "developmentSettingsEnabled": True or False, # Whether developer mode is enabled on the device.
            "unknownSourcesEnabled": True or False, # Whether installing apps from unknown sources is enabled.
            "verifyAppsEnabled": True or False, # Whether Verify Apps (Google Play Protect (https://support.google.com/googleplay/answer/2812853)) is enabled on the device.
            "adbEnabled": True or False, # Whether ADB (https://developer.android.com/studio/command-line/adb.html) is enabled on the device.
            "isEncrypted": True or False, # Whether the storage encryption is enabled.
            "encryptionStatus": "A String", # Encryption status from DevicePolicyManager.
            "isDeviceSecure": True or False, # Whether the device is secured with PIN/password.
          },
          "applicationReports": [ # Reports for apps installed on the device. This information is only available when application_reports_enabled is true in the device's policy.
            { # Information reported about an installed app.
              "displayName": "A String", # The display name of the app.
              "installerPackageName": "A String", # The package name of the app that installed this app.
              "packageName": "A String", # Package name of the app.
              "keyedAppStates": [ # List of keyed app states reported by the app.
                { # Keyed app state reported by the app.
                  "severity": "A String", # The severity of the app state.
                  "lastUpdateTime": "A String", # The time the app state was most recently updated.
                  "key": "A String", # The key for the app state. Acts as a point of reference for what the app is providing state for. For example, when providing managed configuration feedback, this key could be the managed configuration key.
                  "message": "A String", # Optionally, a free-form message string to explain the app state. If the state was triggered by a particular value (e.g. a managed configuration value), it should be included in the message.
                  "data": "A String", # Optionally, a machine-readable value to be read by the EMM. For example, setting values that the admin can choose to query against in the EMM console (e.g. “notify me if the battery_warning data < 10”).
                  "createTime": "A String", # The creation time of the app state on the device.
                },
              ],
              "packageSha256Hash": "A String", # The SHA-256 hash of the app's APK file, which can be used to verify the app hasn't been modified. Each byte of the hash value is represented as a two-digit hexadecimal number.
              "signingKeyCertFingerprints": [ # The SHA-1 hash of each android.content.pm.Signature (https://developer.android.com/reference/android/content/pm/Signature.html) associated with the app package. Each byte of each hash value is represented as a two-digit hexadecimal number.
                "A String",
              ],
              "applicationSource": "A String", # The source of the package.
              "state": "A String", # Application state.
              "versionName": "A String", # The app version as displayed to the user.
              "versionCode": 42, # The app version code, which can be used to determine whether one version is more recent than another.
              "events": [ # List of app events. The most recent 20 events are stored in the list.
                { # An app-related event.
                  "eventType": "A String", # App event type.
                  "createTime": "A String", # The creation time of the event.
                },
              ],
            },
          ],
          "lastStatusReportTime": "A String", # The last time the device sent a status report.
          "hardwareInfo": { # Information about device hardware. The fields related to temperature thresholds are only available if hardwareStatusEnabled is true in the device's policy. # Detailed information about the device hardware.
            "hardware": "A String", # Name of the hardware. For example, Angler.
            "cpuShutdownTemperatures": [ # CPU shutdown temperature thresholds in Celsius for each CPU on the device.
              3.14,
            ],
            "cpuThrottlingTemperatures": [ # CPU throttling temperature thresholds in Celsius for each CPU on the device.
              3.14,
            ],
            "batteryThrottlingTemperatures": [ # Battery throttling temperature thresholds in Celsius for each battery on the device.
              3.14,
            ],
            "serialNumber": "A String", # The device serial number.
            "gpuShutdownTemperatures": [ # GPU shutdown temperature thresholds in Celsius for each GPU on the device.
              3.14,
            ],
            "gpuThrottlingTemperatures": [ # GPU throttling temperature thresholds in Celsius for each GPU on the device.
              3.14,
            ],
            "skinShutdownTemperatures": [ # Device skin shutdown temperature thresholds in Celsius.
              3.14,
            ],
            "skinThrottlingTemperatures": [ # Device skin throttling temperature thresholds in Celsius.
              3.14,
            ],
            "batteryShutdownTemperatures": [ # Battery shutdown temperature thresholds in Celsius for each battery on the device.
              3.14,
            ],
            "deviceBasebandVersion": "A String", # Baseband version. For example, MDM9625_104662.22.05.34p.
            "model": "A String", # The model of the device. For example, Asus Nexus 7.
            "brand": "A String", # Brand of the device. For example, Google.
            "manufacturer": "A String", # Manufacturer. For example, Motorola.
          },
          "networkInfo": { # Device network info. # Device network information. This information is only available if networkInfoEnabled is true in the device's policy.
            "imei": "A String", # IMEI number of the GSM device. For example, A1000031212.
            "networkOperatorName": "A String", # Alphabetic name of current registered operator. For example, Vodafone.
            "meid": "A String", # MEID number of the CDMA device. For example, A00000292788E1.
            "wifiMacAddress": "A String", # Wi-Fi MAC address of the device. For example, 7c:11:11:11:11:11.
          },
          "managementMode": "A String", # The type of management mode Android Device Policy takes on the device. This influences which policy settings are supported.
          "memoryEvents": [ # Events related to memory and storage measurements in chronological order. This information is only available if memoryInfoEnabled is true in the device's policy.
            { # An event related to memory and storage measurements.
              "eventType": "A String", # Event type.
              "byteCount": "A String", # The number of free bytes in the medium, or for EXTERNAL_STORAGE_DETECTED, the total capacity in bytes of the storage medium.
              "createTime": "A String", # The creation time of the event.
            },
          ],
          "powerManagementEvents": [ # Power management events on the device in chronological order. This information is only available if powerManagementEventsEnabled is true in the device's policy.
            { # A power management event.
              "eventType": "A String", # Event type.
              "batteryLevel": 3.14, # For BATTERY_LEVEL_COLLECTED events, the battery level as a percentage.
              "createTime": "A String", # The creation time of the event.
            },
          ],
          "enrollmentTokenName": "A String", # If the device was enrolled with an enrollment token, this field contains the name of the token.
          "user": { # A user belonging to an enterprise. # The user who owns the device.
            "accountIdentifier": "A String", # A unique identifier you create for this user, such as user342 or asset#44418. This field must be set when the user is created and can't be updated. This field must not contain personally identifiable information (PII). This identifier must be 1024 characters or less; otherwise, the update policy request will fail.
          },
          "hardwareStatusSamples": [ # Hardware status samples in chronological order. This information is only available if hardwareStatusEnabled is true in the device's policy.
            { # Hardware status. Temperatures may be compared to the temperature thresholds available in hardwareInfo to determine hardware health.
              "gpuTemperatures": [ # Current GPU temperatures in Celsius for each GPU on the device.
                3.14,
              ],
              "fanSpeeds": [ # 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.
                3.14,
              ],
              "cpuTemperatures": [ # Current CPU temperatures in Celsius for each CPU on the device.
                3.14,
              ],
              "createTime": "A String", # The time the measurements were taken.
              "cpuUsages": [ # 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.
                3.14,
              ],
              "skinTemperatures": [ # Current device skin temperatures in Celsius.
                3.14,
              ],
              "batteryTemperatures": [ # Current battery temperatures in Celsius for each battery on the device.
                3.14,
              ],
            },
          ],
          "appliedPolicyVersion": "A String", # The version of the policy currently applied to the device.
          "userName": "A String", # The resource name of the user that owns this device in the form enterprises/{enterpriseId}/users/{userId}.
          "name": "A String", # The name of the device in the form enterprises/{enterpriseId}/devices/{deviceId}.
          "previousDeviceNames": [ # If the same physical device has been enrolled multiple times, this field contains its previous device names. 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.
            "A String",
          ],
          "lastPolicySyncTime": "A String", # The last time the device fetched its policy.
          "appliedState": "A String", # The state currently applied to the device.
          "systemProperties": { # Map of selected system properties name and value related to the device.
            "a_key": "A String",
          },
          "memoryInfo": { # Information about device memory and storage. # Memory information. This information is only available if memoryInfoEnabled is true in the device's policy.
            "totalInternalStorage": "A String", # Total internal storage on device in bytes.
            "totalRam": "A String", # Total RAM on device in bytes.
          },
          "enrollmentTime": "A String", # The time of device enrollment.
        },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(name, body, updateMask=None, x__xgafv=None)</code>
  <pre>Updates a device.

Args:
  name: string, The name of the device in the form enterprises/{enterpriseId}/devices/{deviceId}. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # A device owned by an enterprise. Unless otherwise noted, all fields are read-only and can't be modified by enterprises.devices.patch.
    "appliedPolicyName": "A String", # The name of the policy currently applied to the device.
    "displays": [ # Detailed information about displays on the device. This information is only available if displayInfoEnabled is true in the device's policy.
      { # Device display information.
        "refreshRate": 42, # Refresh rate of the display in frames per second.
        "name": "A String", # Name of the display.
        "density": 42, # Display density expressed as dots-per-inch.
        "height": 42, # Display height in pixels.
        "width": 42, # Display width in pixels.
        "state": "A String", # State of the display.
        "displayId": 42, # Unique display id.
      },
    ],
    "nonComplianceDetails": [ # Details about policy settings that the device is not compliant with.
      { # Provides detail about non-compliance with a policy setting.
        "currentValue": "", # If the policy setting could not be applied, the current value of the setting on the device.
        "packageName": "A String", # The package name indicating which app is out of compliance, if applicable.
        "fieldPath": "A String", # 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
        "installationFailureReason": "A String", # If package_name is set and the non-compliance reason is APP_NOT_INSTALLED or APP_NOT_UPDATED, the detailed reason the app can't be installed or updated.
        "settingName": "A String", # The name of the policy setting. This is the JSON field name of a top-level Policy  field.
        "nonComplianceReason": "A String", # The reason the device is not in compliance with the setting.
      },
    ],
    "apiLevel": 42, # The API level of the Android platform version running on the device.
    "policyName": "A String", # The name of the policy applied to the device, in the form enterprises/{enterpriseId}/policies/{policyId}. If not specified, the policy_name for the device's user is applied. This field can be modified by a patch request. You can specify only the policyId when calling enterprises.devices.patch, as long as the policyId doesn’t contain any slashes. The rest of the policy name is inferred.
    "disabledReason": { # Provides a user-facing message with locale info. The maximum message length is 4096 characters. # If the device state is DISABLED, an optional message that is displayed on the device indicating the reason the device is disabled. This field can be modified by a patch request.
      "defaultMessage": "A String", # The default message displayed if no localized message is specified or the user's locale doesn't match with any of the localized messages. A default message must be provided if any localized messages are provided.
      "localizedMessages": { # A map containing <locale, message> pairs, where locale is a well-formed BCP 47 language (https://www.w3.org/International/articles/language-tags/) code, such as en-US, es-ES, or fr.
        "a_key": "A String",
      },
    },
    "enrollmentTokenData": "A String", # If the device was enrolled with an enrollment token with additional data provided, this field contains that data.
    "softwareInfo": { # Information about device software. # Detailed information about the device software. This information is only available if softwareInfoEnabled is true in the device's policy.
      "primaryLanguageCode": "A String", # An IETF BCP 47 language code for the primary locale on the device.
      "androidBuildTime": "A String", # Build time.
      "androidBuildNumber": "A String", # Android build ID string meant for displaying to the user. For example, shamu-userdebug 6.0.1 MOB30I 2756745 dev-keys.
      "deviceBuildSignature": "A String", # SHA-256 hash of android.content.pm.Signature (https://developer.android.com/reference/android/content/pm/Signature.html) associated with the system package, which can be used to verify that the system build hasn't been modified.
      "androidDevicePolicyVersionCode": 42, # The Android Device Policy app version code.
      "securityPatchLevel": "A String", # Security patch level, e.g. 2016-05-01.
      "androidDevicePolicyVersionName": "A String", # The Android Device Policy app version as displayed to the user.
      "deviceKernelVersion": "A String", # Kernel version, for example, 2.6.32.9-g103d848.
      "androidVersion": "A String", # The user-visible Android version string. For example, 6.0.1.
      "bootloaderVersion": "A String", # The system bootloader version number, e.g. 0.6.7.
    },
    "policyCompliant": True or False, # Whether the device is compliant with its policy.
    "state": "A String", # The state to be applied to the device. This field can be modified by a patch request. Note that when calling enterprises.devices.patch, ACTIVE and DISABLED are the only allowable values. To enter the device into a DELETED state, call enterprises.devices.delete.
    "lastPolicyComplianceReportTime": "A String", # Deprecated.
    "deviceSettings": { # Information about security related device settings on device. # Device settings information. This information is only available if deviceSettingsEnabled is true in the device's policy.
      "developmentSettingsEnabled": True or False, # Whether developer mode is enabled on the device.
      "unknownSourcesEnabled": True or False, # Whether installing apps from unknown sources is enabled.
      "verifyAppsEnabled": True or False, # Whether Verify Apps (Google Play Protect (https://support.google.com/googleplay/answer/2812853)) is enabled on the device.
      "adbEnabled": True or False, # Whether ADB (https://developer.android.com/studio/command-line/adb.html) is enabled on the device.
      "isEncrypted": True or False, # Whether the storage encryption is enabled.
      "encryptionStatus": "A String", # Encryption status from DevicePolicyManager.
      "isDeviceSecure": True or False, # Whether the device is secured with PIN/password.
    },
    "applicationReports": [ # Reports for apps installed on the device. This information is only available when application_reports_enabled is true in the device's policy.
      { # Information reported about an installed app.
        "displayName": "A String", # The display name of the app.
        "installerPackageName": "A String", # The package name of the app that installed this app.
        "packageName": "A String", # Package name of the app.
        "keyedAppStates": [ # List of keyed app states reported by the app.
          { # Keyed app state reported by the app.
            "severity": "A String", # The severity of the app state.
            "lastUpdateTime": "A String", # The time the app state was most recently updated.
            "key": "A String", # The key for the app state. Acts as a point of reference for what the app is providing state for. For example, when providing managed configuration feedback, this key could be the managed configuration key.
            "message": "A String", # Optionally, a free-form message string to explain the app state. If the state was triggered by a particular value (e.g. a managed configuration value), it should be included in the message.
            "data": "A String", # Optionally, a machine-readable value to be read by the EMM. For example, setting values that the admin can choose to query against in the EMM console (e.g. “notify me if the battery_warning data < 10”).
            "createTime": "A String", # The creation time of the app state on the device.
          },
        ],
        "packageSha256Hash": "A String", # The SHA-256 hash of the app's APK file, which can be used to verify the app hasn't been modified. Each byte of the hash value is represented as a two-digit hexadecimal number.
        "signingKeyCertFingerprints": [ # The SHA-1 hash of each android.content.pm.Signature (https://developer.android.com/reference/android/content/pm/Signature.html) associated with the app package. Each byte of each hash value is represented as a two-digit hexadecimal number.
          "A String",
        ],
        "applicationSource": "A String", # The source of the package.
        "state": "A String", # Application state.
        "versionName": "A String", # The app version as displayed to the user.
        "versionCode": 42, # The app version code, which can be used to determine whether one version is more recent than another.
        "events": [ # List of app events. The most recent 20 events are stored in the list.
          { # An app-related event.
            "eventType": "A String", # App event type.
            "createTime": "A String", # The creation time of the event.
          },
        ],
      },
    ],
    "lastStatusReportTime": "A String", # The last time the device sent a status report.
    "hardwareInfo": { # Information about device hardware. The fields related to temperature thresholds are only available if hardwareStatusEnabled is true in the device's policy. # Detailed information about the device hardware.
      "hardware": "A String", # Name of the hardware. For example, Angler.
      "cpuShutdownTemperatures": [ # CPU shutdown temperature thresholds in Celsius for each CPU on the device.
        3.14,
      ],
      "cpuThrottlingTemperatures": [ # CPU throttling temperature thresholds in Celsius for each CPU on the device.
        3.14,
      ],
      "batteryThrottlingTemperatures": [ # Battery throttling temperature thresholds in Celsius for each battery on the device.
        3.14,
      ],
      "serialNumber": "A String", # The device serial number.
      "gpuShutdownTemperatures": [ # GPU shutdown temperature thresholds in Celsius for each GPU on the device.
        3.14,
      ],
      "gpuThrottlingTemperatures": [ # GPU throttling temperature thresholds in Celsius for each GPU on the device.
        3.14,
      ],
      "skinShutdownTemperatures": [ # Device skin shutdown temperature thresholds in Celsius.
        3.14,
      ],
      "skinThrottlingTemperatures": [ # Device skin throttling temperature thresholds in Celsius.
        3.14,
      ],
      "batteryShutdownTemperatures": [ # Battery shutdown temperature thresholds in Celsius for each battery on the device.
        3.14,
      ],
      "deviceBasebandVersion": "A String", # Baseband version. For example, MDM9625_104662.22.05.34p.
      "model": "A String", # The model of the device. For example, Asus Nexus 7.
      "brand": "A String", # Brand of the device. For example, Google.
      "manufacturer": "A String", # Manufacturer. For example, Motorola.
    },
    "networkInfo": { # Device network info. # Device network information. This information is only available if networkInfoEnabled is true in the device's policy.
      "imei": "A String", # IMEI number of the GSM device. For example, A1000031212.
      "networkOperatorName": "A String", # Alphabetic name of current registered operator. For example, Vodafone.
      "meid": "A String", # MEID number of the CDMA device. For example, A00000292788E1.
      "wifiMacAddress": "A String", # Wi-Fi MAC address of the device. For example, 7c:11:11:11:11:11.
    },
    "managementMode": "A String", # The type of management mode Android Device Policy takes on the device. This influences which policy settings are supported.
    "memoryEvents": [ # Events related to memory and storage measurements in chronological order. This information is only available if memoryInfoEnabled is true in the device's policy.
      { # An event related to memory and storage measurements.
        "eventType": "A String", # Event type.
        "byteCount": "A String", # The number of free bytes in the medium, or for EXTERNAL_STORAGE_DETECTED, the total capacity in bytes of the storage medium.
        "createTime": "A String", # The creation time of the event.
      },
    ],
    "powerManagementEvents": [ # Power management events on the device in chronological order. This information is only available if powerManagementEventsEnabled is true in the device's policy.
      { # A power management event.
        "eventType": "A String", # Event type.
        "batteryLevel": 3.14, # For BATTERY_LEVEL_COLLECTED events, the battery level as a percentage.
        "createTime": "A String", # The creation time of the event.
      },
    ],
    "enrollmentTokenName": "A String", # If the device was enrolled with an enrollment token, this field contains the name of the token.
    "user": { # A user belonging to an enterprise. # The user who owns the device.
      "accountIdentifier": "A String", # A unique identifier you create for this user, such as user342 or asset#44418. This field must be set when the user is created and can't be updated. This field must not contain personally identifiable information (PII). This identifier must be 1024 characters or less; otherwise, the update policy request will fail.
    },
    "hardwareStatusSamples": [ # Hardware status samples in chronological order. This information is only available if hardwareStatusEnabled is true in the device's policy.
      { # Hardware status. Temperatures may be compared to the temperature thresholds available in hardwareInfo to determine hardware health.
        "gpuTemperatures": [ # Current GPU temperatures in Celsius for each GPU on the device.
          3.14,
        ],
        "fanSpeeds": [ # 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.
          3.14,
        ],
        "cpuTemperatures": [ # Current CPU temperatures in Celsius for each CPU on the device.
          3.14,
        ],
        "createTime": "A String", # The time the measurements were taken.
        "cpuUsages": [ # 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.
          3.14,
        ],
        "skinTemperatures": [ # Current device skin temperatures in Celsius.
          3.14,
        ],
        "batteryTemperatures": [ # Current battery temperatures in Celsius for each battery on the device.
          3.14,
        ],
      },
    ],
    "appliedPolicyVersion": "A String", # The version of the policy currently applied to the device.
    "userName": "A String", # The resource name of the user that owns this device in the form enterprises/{enterpriseId}/users/{userId}.
    "name": "A String", # The name of the device in the form enterprises/{enterpriseId}/devices/{deviceId}.
    "previousDeviceNames": [ # If the same physical device has been enrolled multiple times, this field contains its previous device names. 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.
      "A String",
    ],
    "lastPolicySyncTime": "A String", # The last time the device fetched its policy.
    "appliedState": "A String", # The state currently applied to the device.
    "systemProperties": { # Map of selected system properties name and value related to the device.
      "a_key": "A String",
    },
    "memoryInfo": { # Information about device memory and storage. # Memory information. This information is only available if memoryInfoEnabled is true in the device's policy.
      "totalInternalStorage": "A String", # Total internal storage on device in bytes.
      "totalRam": "A String", # Total RAM on device in bytes.
    },
    "enrollmentTime": "A String", # The time of device enrollment.
  }

  updateMask: string, The field mask indicating the fields to update. If not set, all modifiable fields will be modified.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A device owned by an enterprise. Unless otherwise noted, all fields are read-only and can't be modified by enterprises.devices.patch.
      "appliedPolicyName": "A String", # The name of the policy currently applied to the device.
      "displays": [ # Detailed information about displays on the device. This information is only available if displayInfoEnabled is true in the device's policy.
        { # Device display information.
          "refreshRate": 42, # Refresh rate of the display in frames per second.
          "name": "A String", # Name of the display.
          "density": 42, # Display density expressed as dots-per-inch.
          "height": 42, # Display height in pixels.
          "width": 42, # Display width in pixels.
          "state": "A String", # State of the display.
          "displayId": 42, # Unique display id.
        },
      ],
      "nonComplianceDetails": [ # Details about policy settings that the device is not compliant with.
        { # Provides detail about non-compliance with a policy setting.
          "currentValue": "", # If the policy setting could not be applied, the current value of the setting on the device.
          "packageName": "A String", # The package name indicating which app is out of compliance, if applicable.
          "fieldPath": "A String", # 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
          "installationFailureReason": "A String", # If package_name is set and the non-compliance reason is APP_NOT_INSTALLED or APP_NOT_UPDATED, the detailed reason the app can't be installed or updated.
          "settingName": "A String", # The name of the policy setting. This is the JSON field name of a top-level Policy  field.
          "nonComplianceReason": "A String", # The reason the device is not in compliance with the setting.
        },
      ],
      "apiLevel": 42, # The API level of the Android platform version running on the device.
      "policyName": "A String", # The name of the policy applied to the device, in the form enterprises/{enterpriseId}/policies/{policyId}. If not specified, the policy_name for the device's user is applied. This field can be modified by a patch request. You can specify only the policyId when calling enterprises.devices.patch, as long as the policyId doesn’t contain any slashes. The rest of the policy name is inferred.
      "disabledReason": { # Provides a user-facing message with locale info. The maximum message length is 4096 characters. # If the device state is DISABLED, an optional message that is displayed on the device indicating the reason the device is disabled. This field can be modified by a patch request.
        "defaultMessage": "A String", # The default message displayed if no localized message is specified or the user's locale doesn't match with any of the localized messages. A default message must be provided if any localized messages are provided.
        "localizedMessages": { # A map containing <locale, message> pairs, where locale is a well-formed BCP 47 language (https://www.w3.org/International/articles/language-tags/) code, such as en-US, es-ES, or fr.
          "a_key": "A String",
        },
      },
      "enrollmentTokenData": "A String", # If the device was enrolled with an enrollment token with additional data provided, this field contains that data.
      "softwareInfo": { # Information about device software. # Detailed information about the device software. This information is only available if softwareInfoEnabled is true in the device's policy.
        "primaryLanguageCode": "A String", # An IETF BCP 47 language code for the primary locale on the device.
        "androidBuildTime": "A String", # Build time.
        "androidBuildNumber": "A String", # Android build ID string meant for displaying to the user. For example, shamu-userdebug 6.0.1 MOB30I 2756745 dev-keys.
        "deviceBuildSignature": "A String", # SHA-256 hash of android.content.pm.Signature (https://developer.android.com/reference/android/content/pm/Signature.html) associated with the system package, which can be used to verify that the system build hasn't been modified.
        "androidDevicePolicyVersionCode": 42, # The Android Device Policy app version code.
        "securityPatchLevel": "A String", # Security patch level, e.g. 2016-05-01.
        "androidDevicePolicyVersionName": "A String", # The Android Device Policy app version as displayed to the user.
        "deviceKernelVersion": "A String", # Kernel version, for example, 2.6.32.9-g103d848.
        "androidVersion": "A String", # The user-visible Android version string. For example, 6.0.1.
        "bootloaderVersion": "A String", # The system bootloader version number, e.g. 0.6.7.
      },
      "policyCompliant": True or False, # Whether the device is compliant with its policy.
      "state": "A String", # The state to be applied to the device. This field can be modified by a patch request. Note that when calling enterprises.devices.patch, ACTIVE and DISABLED are the only allowable values. To enter the device into a DELETED state, call enterprises.devices.delete.
      "lastPolicyComplianceReportTime": "A String", # Deprecated.
      "deviceSettings": { # Information about security related device settings on device. # Device settings information. This information is only available if deviceSettingsEnabled is true in the device's policy.
        "developmentSettingsEnabled": True or False, # Whether developer mode is enabled on the device.
        "unknownSourcesEnabled": True or False, # Whether installing apps from unknown sources is enabled.
        "verifyAppsEnabled": True or False, # Whether Verify Apps (Google Play Protect (https://support.google.com/googleplay/answer/2812853)) is enabled on the device.
        "adbEnabled": True or False, # Whether ADB (https://developer.android.com/studio/command-line/adb.html) is enabled on the device.
        "isEncrypted": True or False, # Whether the storage encryption is enabled.
        "encryptionStatus": "A String", # Encryption status from DevicePolicyManager.
        "isDeviceSecure": True or False, # Whether the device is secured with PIN/password.
      },
      "applicationReports": [ # Reports for apps installed on the device. This information is only available when application_reports_enabled is true in the device's policy.
        { # Information reported about an installed app.
          "displayName": "A String", # The display name of the app.
          "installerPackageName": "A String", # The package name of the app that installed this app.
          "packageName": "A String", # Package name of the app.
          "keyedAppStates": [ # List of keyed app states reported by the app.
            { # Keyed app state reported by the app.
              "severity": "A String", # The severity of the app state.
              "lastUpdateTime": "A String", # The time the app state was most recently updated.
              "key": "A String", # The key for the app state. Acts as a point of reference for what the app is providing state for. For example, when providing managed configuration feedback, this key could be the managed configuration key.
              "message": "A String", # Optionally, a free-form message string to explain the app state. If the state was triggered by a particular value (e.g. a managed configuration value), it should be included in the message.
              "data": "A String", # Optionally, a machine-readable value to be read by the EMM. For example, setting values that the admin can choose to query against in the EMM console (e.g. “notify me if the battery_warning data < 10”).
              "createTime": "A String", # The creation time of the app state on the device.
            },
          ],
          "packageSha256Hash": "A String", # The SHA-256 hash of the app's APK file, which can be used to verify the app hasn't been modified. Each byte of the hash value is represented as a two-digit hexadecimal number.
          "signingKeyCertFingerprints": [ # The SHA-1 hash of each android.content.pm.Signature (https://developer.android.com/reference/android/content/pm/Signature.html) associated with the app package. Each byte of each hash value is represented as a two-digit hexadecimal number.
            "A String",
          ],
          "applicationSource": "A String", # The source of the package.
          "state": "A String", # Application state.
          "versionName": "A String", # The app version as displayed to the user.
          "versionCode": 42, # The app version code, which can be used to determine whether one version is more recent than another.
          "events": [ # List of app events. The most recent 20 events are stored in the list.
            { # An app-related event.
              "eventType": "A String", # App event type.
              "createTime": "A String", # The creation time of the event.
            },
          ],
        },
      ],
      "lastStatusReportTime": "A String", # The last time the device sent a status report.
      "hardwareInfo": { # Information about device hardware. The fields related to temperature thresholds are only available if hardwareStatusEnabled is true in the device's policy. # Detailed information about the device hardware.
        "hardware": "A String", # Name of the hardware. For example, Angler.
        "cpuShutdownTemperatures": [ # CPU shutdown temperature thresholds in Celsius for each CPU on the device.
          3.14,
        ],
        "cpuThrottlingTemperatures": [ # CPU throttling temperature thresholds in Celsius for each CPU on the device.
          3.14,
        ],
        "batteryThrottlingTemperatures": [ # Battery throttling temperature thresholds in Celsius for each battery on the device.
          3.14,
        ],
        "serialNumber": "A String", # The device serial number.
        "gpuShutdownTemperatures": [ # GPU shutdown temperature thresholds in Celsius for each GPU on the device.
          3.14,
        ],
        "gpuThrottlingTemperatures": [ # GPU throttling temperature thresholds in Celsius for each GPU on the device.
          3.14,
        ],
        "skinShutdownTemperatures": [ # Device skin shutdown temperature thresholds in Celsius.
          3.14,
        ],
        "skinThrottlingTemperatures": [ # Device skin throttling temperature thresholds in Celsius.
          3.14,
        ],
        "batteryShutdownTemperatures": [ # Battery shutdown temperature thresholds in Celsius for each battery on the device.
          3.14,
        ],
        "deviceBasebandVersion": "A String", # Baseband version. For example, MDM9625_104662.22.05.34p.
        "model": "A String", # The model of the device. For example, Asus Nexus 7.
        "brand": "A String", # Brand of the device. For example, Google.
        "manufacturer": "A String", # Manufacturer. For example, Motorola.
      },
      "networkInfo": { # Device network info. # Device network information. This information is only available if networkInfoEnabled is true in the device's policy.
        "imei": "A String", # IMEI number of the GSM device. For example, A1000031212.
        "networkOperatorName": "A String", # Alphabetic name of current registered operator. For example, Vodafone.
        "meid": "A String", # MEID number of the CDMA device. For example, A00000292788E1.
        "wifiMacAddress": "A String", # Wi-Fi MAC address of the device. For example, 7c:11:11:11:11:11.
      },
      "managementMode": "A String", # The type of management mode Android Device Policy takes on the device. This influences which policy settings are supported.
      "memoryEvents": [ # Events related to memory and storage measurements in chronological order. This information is only available if memoryInfoEnabled is true in the device's policy.
        { # An event related to memory and storage measurements.
          "eventType": "A String", # Event type.
          "byteCount": "A String", # The number of free bytes in the medium, or for EXTERNAL_STORAGE_DETECTED, the total capacity in bytes of the storage medium.
          "createTime": "A String", # The creation time of the event.
        },
      ],
      "powerManagementEvents": [ # Power management events on the device in chronological order. This information is only available if powerManagementEventsEnabled is true in the device's policy.
        { # A power management event.
          "eventType": "A String", # Event type.
          "batteryLevel": 3.14, # For BATTERY_LEVEL_COLLECTED events, the battery level as a percentage.
          "createTime": "A String", # The creation time of the event.
        },
      ],
      "enrollmentTokenName": "A String", # If the device was enrolled with an enrollment token, this field contains the name of the token.
      "user": { # A user belonging to an enterprise. # The user who owns the device.
        "accountIdentifier": "A String", # A unique identifier you create for this user, such as user342 or asset#44418. This field must be set when the user is created and can't be updated. This field must not contain personally identifiable information (PII). This identifier must be 1024 characters or less; otherwise, the update policy request will fail.
      },
      "hardwareStatusSamples": [ # Hardware status samples in chronological order. This information is only available if hardwareStatusEnabled is true in the device's policy.
        { # Hardware status. Temperatures may be compared to the temperature thresholds available in hardwareInfo to determine hardware health.
          "gpuTemperatures": [ # Current GPU temperatures in Celsius for each GPU on the device.
            3.14,
          ],
          "fanSpeeds": [ # 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.
            3.14,
          ],
          "cpuTemperatures": [ # Current CPU temperatures in Celsius for each CPU on the device.
            3.14,
          ],
          "createTime": "A String", # The time the measurements were taken.
          "cpuUsages": [ # 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.
            3.14,
          ],
          "skinTemperatures": [ # Current device skin temperatures in Celsius.
            3.14,
          ],
          "batteryTemperatures": [ # Current battery temperatures in Celsius for each battery on the device.
            3.14,
          ],
        },
      ],
      "appliedPolicyVersion": "A String", # The version of the policy currently applied to the device.
      "userName": "A String", # The resource name of the user that owns this device in the form enterprises/{enterpriseId}/users/{userId}.
      "name": "A String", # The name of the device in the form enterprises/{enterpriseId}/devices/{deviceId}.
      "previousDeviceNames": [ # If the same physical device has been enrolled multiple times, this field contains its previous device names. 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.
        "A String",
      ],
      "lastPolicySyncTime": "A String", # The last time the device fetched its policy.
      "appliedState": "A String", # The state currently applied to the device.
      "systemProperties": { # Map of selected system properties name and value related to the device.
        "a_key": "A String",
      },
      "memoryInfo": { # Information about device memory and storage. # Memory information. This information is only available if memoryInfoEnabled is true in the device's policy.
        "totalInternalStorage": "A String", # Total internal storage on device in bytes.
        "totalRam": "A String", # Total RAM on device in bytes.
      },
      "enrollmentTime": "A String", # The time of device enrollment.
    }</pre>
</div>

</body></html>