<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="cloudidentity_v1.html">Cloud Identity API</a> . <a href="cloudidentity_v1.devices.html">devices</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="cloudidentity_v1.devices.deviceUsers.html">deviceUsers()</a></code>
</p>
<p class="firstline">Returns the deviceUsers Resource.</p>

<p class="toc_element">
  <code><a href="#cancelWipe">cancelWipe(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Cancels an unfinished device wipe. This operation can be used to cancel device wipe in the gap between the wipe operation returning success and the device being wiped. This operation is possible when the device is in a "pending wipe" state. The device enters the "pending wipe" state when a wipe device command is issued, but has not yet been sent to the device. The cancel wipe will fail if the wipe command has already been issued to the device.</p>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#create">create(body=None, customer=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a device. Only company-owned device may be created. **Note**: This method is available only to customers who have one of the following SKUs: Enterprise Standard, Enterprise Plus, Enterprise for Education, and Cloud Identity Premium</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, customer=None, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes the specified device.</p>
<p class="toc_element">
  <code><a href="#get">get(name, customer=None, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves the specified device.</p>
<p class="toc_element">
  <code><a href="#list">list(customer=None, filter=None, orderBy=None, pageSize=None, pageToken=None, view=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists/Searches devices.</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="#wipe">wipe(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Wipes all data on the specified device.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="cancelWipe">cancelWipe(name, body=None, x__xgafv=None)</code>
  <pre>Cancels an unfinished device wipe. This operation can be used to cancel device wipe in the gap between the wipe operation returning success and the device being wiped. This operation is possible when the device is in a &quot;pending wipe&quot; state. The device enters the &quot;pending wipe&quot; state when a wipe device command is issued, but has not yet been sent to the device. The cancel wipe will fail if the wipe command has already been issued to the device.

Args:
  name: string, Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device_id}`, where device_id is the unique ID assigned to the Device. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for cancelling an unfinished device wipe.
  &quot;customer&quot;: &quot;A String&quot;, # Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you&#x27;re using this API for your own organization, use `customers/my_customer` If you&#x27;re using this API to manage another organization, use `customers/{customer_id}`, where customer_id is the customer to whom the device belongs.
}

  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.
  &quot;done&quot;: 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.
  &quot;error&quot;: { # 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.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # 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.
  },
  &quot;metadata&quot;: { # 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.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # 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}`.
  &quot;response&quot;: { # 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`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="create">create(body=None, customer=None, x__xgafv=None)</code>
  <pre>Creates a device. Only company-owned device may be created. **Note**: This method is available only to customers who have one of the following SKUs: Enterprise Standard, Enterprise Plus, Enterprise for Education, and Cloud Identity Premium

Args:
  body: object, The request body.
    The object takes the form of:

{ #  A Device within the Cloud Identity Devices API. Represents a Device known to Google Cloud, independent of the device ownership, type, and whether it is assigned or in use by a user.
  &quot;androidSpecificAttributes&quot;: { # Resource representing the Android specific attributes of a Device. # Output only. Attributes specific to Android devices.
    &quot;enabledUnknownSources&quot;: True or False, # Whether applications from unknown sources can be installed on device.
    &quot;ownerProfileAccount&quot;: True or False, # Whether this account is on an owner/primary profile. For phones, only true for owner profiles. Android 4+ devices can have secondary or restricted user profiles.
    &quot;ownershipPrivilege&quot;: &quot;A String&quot;, # Ownership privileges on device.
    &quot;supportsWorkProfile&quot;: True or False, # Whether device supports Android work profiles. If false, this service will not block access to corp data even if an administrator turns on the &quot;Enforce Work Profile&quot; policy.
  },
  &quot;assetTag&quot;: &quot;A String&quot;, # Asset tag of the device.
  &quot;basebandVersion&quot;: &quot;A String&quot;, # Output only. Baseband version of the device.
  &quot;bootloaderVersion&quot;: &quot;A String&quot;, # Output only. Device bootloader version. Example: 0.6.7.
  &quot;brand&quot;: &quot;A String&quot;, # Output only. Device brand. Example: Samsung.
  &quot;buildNumber&quot;: &quot;A String&quot;, # Output only. Build number of the device.
  &quot;compromisedState&quot;: &quot;A String&quot;, # Output only. Represents whether the Device is compromised.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. When the Company-Owned device was imported. This field is empty for BYOD devices.
  &quot;deviceType&quot;: &quot;A String&quot;, # Output only. Type of device.
  &quot;enabledDeveloperOptions&quot;: True or False, # Output only. Whether developer options is enabled on device.
  &quot;enabledUsbDebugging&quot;: True or False, # Output only. Whether USB debugging is enabled on device.
  &quot;encryptionState&quot;: &quot;A String&quot;, # Output only. Device encryption state.
  &quot;imei&quot;: &quot;A String&quot;, # Output only. IMEI number of device if GSM device; empty otherwise.
  &quot;kernelVersion&quot;: &quot;A String&quot;, # Output only. Kernel version of the device.
  &quot;lastSyncTime&quot;: &quot;A String&quot;, # Most recent time when device synced with this service.
  &quot;managementState&quot;: &quot;A String&quot;, # Output only. Management state of the device
  &quot;manufacturer&quot;: &quot;A String&quot;, # Output only. Device manufacturer. Example: Motorola.
  &quot;meid&quot;: &quot;A String&quot;, # Output only. MEID number of device if CDMA device; empty otherwise.
  &quot;model&quot;: &quot;A String&quot;, # Output only. Model name of device. Example: Pixel 3.
  &quot;name&quot;: &quot;A String&quot;, # Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device_id}`, where device_id is the unique id assigned to the Device.
  &quot;networkOperator&quot;: &quot;A String&quot;, # Output only. Mobile or network operator of device, if available.
  &quot;osVersion&quot;: &quot;A String&quot;, # Output only. OS version of the device. Example: Android 8.1.0.
  &quot;otherAccounts&quot;: [ # Output only. Domain name for Google accounts on device. Type for other accounts on device. On Android, will only be populated if |ownership_privilege| is |PROFILE_OWNER| or |DEVICE_OWNER|. Does not include the account signed in to the device policy app if that account&#x27;s domain has only one account. Examples: &quot;com.example&quot;, &quot;xyz.com&quot;.
    &quot;A String&quot;,
  ],
  &quot;ownerType&quot;: &quot;A String&quot;, # Output only. Whether the device is owned by the company or an individual
  &quot;releaseVersion&quot;: &quot;A String&quot;, # Output only. OS release version. Example: 6.0.
  &quot;securityPatchTime&quot;: &quot;A String&quot;, # Output only. OS security patch update time on device.
  &quot;serialNumber&quot;: &quot;A String&quot;, # Serial Number of device. Example: HT82V1A01076.
  &quot;wifiMacAddresses&quot;: [ # WiFi MAC addresses of device.
    &quot;A String&quot;,
  ],
}

  customer: string, Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you&#x27;re using this API for your own organization, use `customers/my_customer` If you&#x27;re using this API to manage another organization, use `customers/{customer_id}`, where customer_id is the customer to whom the device belongs.
  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.
  &quot;done&quot;: 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.
  &quot;error&quot;: { # 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.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # 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.
  },
  &quot;metadata&quot;: { # 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.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # 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}`.
  &quot;response&quot;: { # 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`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, customer=None, x__xgafv=None)</code>
  <pre>Deletes the specified device.

Args:
  name: string, Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device_id}`, where device_id is the unique ID assigned to the Device. (required)
  customer: string, Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you&#x27;re using this API for your own organization, use `customers/my_customer` If you&#x27;re using this API to manage another organization, use `customers/{customer_id}`, where customer_id is the customer to whom the device belongs.
  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.
  &quot;done&quot;: 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.
  &quot;error&quot;: { # 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.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # 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.
  },
  &quot;metadata&quot;: { # 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.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # 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}`.
  &quot;response&quot;: { # 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`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, customer=None, x__xgafv=None)</code>
  <pre>Retrieves the specified device.

Args:
  name: string, Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in the format: `devices/{device_id}`, where device_id is the unique ID assigned to the Device. (required)
  customer: string, Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Customer in the format: `customers/{customer_id}`, where customer_id is the customer to whom the device belongs. If you&#x27;re using this API for your own organization, use `customers/my_customer`. If you&#x27;re using this API to manage another organization, use `customers/{customer_id}`, where customer_id is the customer to whom the device belongs.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { #  A Device within the Cloud Identity Devices API. Represents a Device known to Google Cloud, independent of the device ownership, type, and whether it is assigned or in use by a user.
  &quot;androidSpecificAttributes&quot;: { # Resource representing the Android specific attributes of a Device. # Output only. Attributes specific to Android devices.
    &quot;enabledUnknownSources&quot;: True or False, # Whether applications from unknown sources can be installed on device.
    &quot;ownerProfileAccount&quot;: True or False, # Whether this account is on an owner/primary profile. For phones, only true for owner profiles. Android 4+ devices can have secondary or restricted user profiles.
    &quot;ownershipPrivilege&quot;: &quot;A String&quot;, # Ownership privileges on device.
    &quot;supportsWorkProfile&quot;: True or False, # Whether device supports Android work profiles. If false, this service will not block access to corp data even if an administrator turns on the &quot;Enforce Work Profile&quot; policy.
  },
  &quot;assetTag&quot;: &quot;A String&quot;, # Asset tag of the device.
  &quot;basebandVersion&quot;: &quot;A String&quot;, # Output only. Baseband version of the device.
  &quot;bootloaderVersion&quot;: &quot;A String&quot;, # Output only. Device bootloader version. Example: 0.6.7.
  &quot;brand&quot;: &quot;A String&quot;, # Output only. Device brand. Example: Samsung.
  &quot;buildNumber&quot;: &quot;A String&quot;, # Output only. Build number of the device.
  &quot;compromisedState&quot;: &quot;A String&quot;, # Output only. Represents whether the Device is compromised.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. When the Company-Owned device was imported. This field is empty for BYOD devices.
  &quot;deviceType&quot;: &quot;A String&quot;, # Output only. Type of device.
  &quot;enabledDeveloperOptions&quot;: True or False, # Output only. Whether developer options is enabled on device.
  &quot;enabledUsbDebugging&quot;: True or False, # Output only. Whether USB debugging is enabled on device.
  &quot;encryptionState&quot;: &quot;A String&quot;, # Output only. Device encryption state.
  &quot;imei&quot;: &quot;A String&quot;, # Output only. IMEI number of device if GSM device; empty otherwise.
  &quot;kernelVersion&quot;: &quot;A String&quot;, # Output only. Kernel version of the device.
  &quot;lastSyncTime&quot;: &quot;A String&quot;, # Most recent time when device synced with this service.
  &quot;managementState&quot;: &quot;A String&quot;, # Output only. Management state of the device
  &quot;manufacturer&quot;: &quot;A String&quot;, # Output only. Device manufacturer. Example: Motorola.
  &quot;meid&quot;: &quot;A String&quot;, # Output only. MEID number of device if CDMA device; empty otherwise.
  &quot;model&quot;: &quot;A String&quot;, # Output only. Model name of device. Example: Pixel 3.
  &quot;name&quot;: &quot;A String&quot;, # Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device_id}`, where device_id is the unique id assigned to the Device.
  &quot;networkOperator&quot;: &quot;A String&quot;, # Output only. Mobile or network operator of device, if available.
  &quot;osVersion&quot;: &quot;A String&quot;, # Output only. OS version of the device. Example: Android 8.1.0.
  &quot;otherAccounts&quot;: [ # Output only. Domain name for Google accounts on device. Type for other accounts on device. On Android, will only be populated if |ownership_privilege| is |PROFILE_OWNER| or |DEVICE_OWNER|. Does not include the account signed in to the device policy app if that account&#x27;s domain has only one account. Examples: &quot;com.example&quot;, &quot;xyz.com&quot;.
    &quot;A String&quot;,
  ],
  &quot;ownerType&quot;: &quot;A String&quot;, # Output only. Whether the device is owned by the company or an individual
  &quot;releaseVersion&quot;: &quot;A String&quot;, # Output only. OS release version. Example: 6.0.
  &quot;securityPatchTime&quot;: &quot;A String&quot;, # Output only. OS security patch update time on device.
  &quot;serialNumber&quot;: &quot;A String&quot;, # Serial Number of device. Example: HT82V1A01076.
  &quot;wifiMacAddresses&quot;: [ # WiFi MAC addresses of device.
    &quot;A String&quot;,
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(customer=None, filter=None, orderBy=None, pageSize=None, pageToken=None, view=None, x__xgafv=None)</code>
  <pre>Lists/Searches devices.

Args:
  customer: string, Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer in the format: `customers/{customer_id}`, where customer_id is the customer to whom the device belongs. If you&#x27;re using this API for your own organization, use `customers/my_customer`. If you&#x27;re using this API to manage another organization, use `customers/{customer_id}`, where customer_id is the customer to whom the device belongs.
  filter: string, Optional. Additional restrictions when fetching list of devices. For a list of search fields, refer to [Mobile device search fields](https://developers.google.com/admin-sdk/directory/v1/search-operators). Multiple search fields are separated by the space character.
  orderBy: string, Optional. Order specification for devices in the response. Only one of the following field names may be used to specify the order: `create_time`, `last_sync_time`, `model`, `os_version`, `device_type` and `serial_number`. `desc` may be specified optionally at the end to specify results to be sorted in descending order. Default order is ascending.
  pageSize: integer, Optional. The maximum number of Devices to return. If unspecified, at most 20 Devices will be returned. The maximum value is 100; values above 100 will be coerced to 100.
  pageToken: string, Optional. A page token, received from a previous `ListDevices` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListDevices` must match the call that provided the page token.
  view: string, Optional. The view to use for the List request.
    Allowed values
      VIEW_UNSPECIFIED - Default value. The value is unused.
      COMPANY_INVENTORY - This view contains all devices imported by the company admin. Each device in the response contains all information specified by the company admin when importing the device (i.e. asset tags). This includes devices that may be unaassigned or assigned to users.
      USER_ASSIGNED_DEVICES - This view contains all devices with at least one user registered on the device. Each device in the response contains all device information, except for asset tags.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message that is returned from the ListDevices method.
  &quot;devices&quot;: [ # Devices meeting the list restrictions.
    { #  A Device within the Cloud Identity Devices API. Represents a Device known to Google Cloud, independent of the device ownership, type, and whether it is assigned or in use by a user.
      &quot;androidSpecificAttributes&quot;: { # Resource representing the Android specific attributes of a Device. # Output only. Attributes specific to Android devices.
        &quot;enabledUnknownSources&quot;: True or False, # Whether applications from unknown sources can be installed on device.
        &quot;ownerProfileAccount&quot;: True or False, # Whether this account is on an owner/primary profile. For phones, only true for owner profiles. Android 4+ devices can have secondary or restricted user profiles.
        &quot;ownershipPrivilege&quot;: &quot;A String&quot;, # Ownership privileges on device.
        &quot;supportsWorkProfile&quot;: True or False, # Whether device supports Android work profiles. If false, this service will not block access to corp data even if an administrator turns on the &quot;Enforce Work Profile&quot; policy.
      },
      &quot;assetTag&quot;: &quot;A String&quot;, # Asset tag of the device.
      &quot;basebandVersion&quot;: &quot;A String&quot;, # Output only. Baseband version of the device.
      &quot;bootloaderVersion&quot;: &quot;A String&quot;, # Output only. Device bootloader version. Example: 0.6.7.
      &quot;brand&quot;: &quot;A String&quot;, # Output only. Device brand. Example: Samsung.
      &quot;buildNumber&quot;: &quot;A String&quot;, # Output only. Build number of the device.
      &quot;compromisedState&quot;: &quot;A String&quot;, # Output only. Represents whether the Device is compromised.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. When the Company-Owned device was imported. This field is empty for BYOD devices.
      &quot;deviceType&quot;: &quot;A String&quot;, # Output only. Type of device.
      &quot;enabledDeveloperOptions&quot;: True or False, # Output only. Whether developer options is enabled on device.
      &quot;enabledUsbDebugging&quot;: True or False, # Output only. Whether USB debugging is enabled on device.
      &quot;encryptionState&quot;: &quot;A String&quot;, # Output only. Device encryption state.
      &quot;imei&quot;: &quot;A String&quot;, # Output only. IMEI number of device if GSM device; empty otherwise.
      &quot;kernelVersion&quot;: &quot;A String&quot;, # Output only. Kernel version of the device.
      &quot;lastSyncTime&quot;: &quot;A String&quot;, # Most recent time when device synced with this service.
      &quot;managementState&quot;: &quot;A String&quot;, # Output only. Management state of the device
      &quot;manufacturer&quot;: &quot;A String&quot;, # Output only. Device manufacturer. Example: Motorola.
      &quot;meid&quot;: &quot;A String&quot;, # Output only. MEID number of device if CDMA device; empty otherwise.
      &quot;model&quot;: &quot;A String&quot;, # Output only. Model name of device. Example: Pixel 3.
      &quot;name&quot;: &quot;A String&quot;, # Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device_id}`, where device_id is the unique id assigned to the Device.
      &quot;networkOperator&quot;: &quot;A String&quot;, # Output only. Mobile or network operator of device, if available.
      &quot;osVersion&quot;: &quot;A String&quot;, # Output only. OS version of the device. Example: Android 8.1.0.
      &quot;otherAccounts&quot;: [ # Output only. Domain name for Google accounts on device. Type for other accounts on device. On Android, will only be populated if |ownership_privilege| is |PROFILE_OWNER| or |DEVICE_OWNER|. Does not include the account signed in to the device policy app if that account&#x27;s domain has only one account. Examples: &quot;com.example&quot;, &quot;xyz.com&quot;.
        &quot;A String&quot;,
      ],
      &quot;ownerType&quot;: &quot;A String&quot;, # Output only. Whether the device is owned by the company or an individual
      &quot;releaseVersion&quot;: &quot;A String&quot;, # Output only. OS release version. Example: 6.0.
      &quot;securityPatchTime&quot;: &quot;A String&quot;, # Output only. OS security patch update time on device.
      &quot;serialNumber&quot;: &quot;A String&quot;, # Serial Number of device. Example: HT82V1A01076.
      &quot;wifiMacAddresses&quot;: [ # WiFi MAC addresses of device.
        &quot;A String&quot;,
      ],
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # Token to retrieve the next page of results. Empty if there are no more results.
}</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 &#x27;execute()&#x27; 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="wipe">wipe(name, body=None, x__xgafv=None)</code>
  <pre>Wipes all data on the specified device.

Args:
  name: string, Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device_id}/deviceUsers/{device_user_id}`, where device_id is the unique ID assigned to the Device, and device_user_id is the unique ID assigned to the User. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for wiping all data on the device.
  &quot;customer&quot;: &quot;A String&quot;, # Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you&#x27;re using this API for your own organization, use `customers/my_customer` If you&#x27;re using this API to manage another organization, use `customers/{customer_id}`, where customer_id is the customer to whom the device belongs.
}

  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.
  &quot;done&quot;: 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.
  &quot;error&quot;: { # 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.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # 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.
  },
  &quot;metadata&quot;: { # 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.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # 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}`.
  &quot;response&quot;: { # 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`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

</body></html>