<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_v1beta1.html">Cloud Identity API</a> . <a href="cloudidentity_v1beta1.devices.html">devices</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="cloudidentity_v1beta1.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.</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, 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, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes the specified device.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves the specified device.</p>
<p class="toc_element">
  <code><a href="#list">list(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.

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.
}

  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, 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:

{ # Request message for creating a Company Owned device.
  &quot;device&quot;: { # 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. # Required. The device to be created. The name field within this device is ignored in the create method. A new name is created by the method, and returned within the response. Only the fields `device_type`, `serial_number` and `asset_tag` (if present) are used to create the device. All other fields are ignored. The `device_type` and `serial_number` fields are required.
    &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;,
    ],
  },
}

  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, 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)
  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, 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 format: `devices/{device_id}`, where device_id is the unique ID assigned to the Device. (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 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(filter=None, orderBy=None, pageSize=None, pageToken=None, view=None, x__xgafv=None)</code>
  <pre>Lists/Searches devices.

Args:
  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 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).
      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.
}

  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>