<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()</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}`, where device 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}`, where customer 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, successful response of the operation. 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;ctsProfileMatch&quot;: True or False, # Whether the device passes Android CTS compliance.
    &quot;enabledUnknownSources&quot;: True or False, # Whether applications from unknown sources can be installed on device.
    &quot;hasPotentiallyHarmfulApps&quot;: True or False, # Whether any potentially harmful apps were detected on the 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;verifiedBoot&quot;: True or False, # Whether Android verified boot status is GREEN.
    &quot;verifyAppsEnabled&quot;: True or False, # Whether Google Play Protect Verify Apps is enabled.
  },
  &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;deviceId&quot;: &quot;A String&quot;, # Unique identifier for the device.
  &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;endpointVerificationSpecificAttributes&quot;: { # Resource representing the [Endpoint Verification-specific attributes](https://cloud.google.com/endpoint-verification/docs/device-information) of a device. # Output only. Attributes specific to [Endpoint Verification](https://cloud.google.com/endpoint-verification/docs/overview) devices.
    &quot;additionalSignals&quot;: { # [Additional signals](https://cloud.google.com/endpoint-verification/docs/device-information) reported by Endpoint Verification. It includes the following attributes: * Non-configurable attributes: hotfixes, av_installed, av_enabled, windows_domain_name, is_os_native_firewall_enabled, and is_secure_boot_enabled. * [Configurable attributes](https://cloud.google.com/endpoint-verification/docs/collect-config-attributes): file, folder, and binary attributes; registry entries; and properties in a plist.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
    },
    &quot;browserAttributes&quot;: [ # Details of browser profiles reported by Endpoint Verification.
      { # Contains information about browser profiles reported by the [Endpoint Verification extension](https://chromewebstore.google.com/detail/endpoint-verification/callobklhcbilhphinckomhgkigmfocg?pli=1).
        &quot;chromeBrowserInfo&quot;: { # Browser-specific fields reported by the [Endpoint Verification extension](https://chromewebstore.google.com/detail/endpoint-verification/callobklhcbilhphinckomhgkigmfocg?pli=1). # Represents the current state of the [Chrome browser attributes](https://cloud.google.com/access-context-manager/docs/browser-attributes) sent by the [Endpoint Verification extension](https://chromewebstore.google.com/detail/endpoint-verification/callobklhcbilhphinckomhgkigmfocg?pli=1).
          &quot;browserManagementState&quot;: &quot;A String&quot;, # Output only. Browser&#x27;s management state.
          &quot;browserVersion&quot;: &quot;A String&quot;, # Version of the request initiating browser. E.g. `91.0.4442.4`.
          &quot;isBuiltInDnsClientEnabled&quot;: True or False, # Current state of [built-in DNS client](https://chromeenterprise.google/policies/#BuiltInDnsClientEnabled).
          &quot;isBulkDataEntryAnalysisEnabled&quot;: True or False, # Current state of [bulk data analysis](https://chromeenterprise.google/policies/#OnBulkDataEntryEnterpriseConnector). Set to true if provider list from Chrome is non-empty.
          &quot;isChromeCleanupEnabled&quot;: True or False, # Current state of [Chrome Cleanup](https://chromeenterprise.google/policies/#ChromeCleanupEnabled).
          &quot;isChromeRemoteDesktopAppBlocked&quot;: True or False, # Current state of [Chrome Remote Desktop app](https://chromeenterprise.google/policies/#URLBlocklist).
          &quot;isFileDownloadAnalysisEnabled&quot;: True or False, # Current state of [file download analysis](https://chromeenterprise.google/policies/#OnFileDownloadedEnterpriseConnector). Set to true if provider list from Chrome is non-empty.
          &quot;isFileUploadAnalysisEnabled&quot;: True or False, # Current state of [file upload analysis](https://chromeenterprise.google/policies/#OnFileAttachedEnterpriseConnector). Set to true if provider list from Chrome is non-empty.
          &quot;isRealtimeUrlCheckEnabled&quot;: True or False, # Current state of [real-time URL check](https://chromeenterprise.google/policies/#EnterpriseRealTimeUrlCheckMode). Set to true if provider list from Chrome is non-empty.
          &quot;isSecurityEventAnalysisEnabled&quot;: True or False, # Current state of [security event analysis](https://chromeenterprise.google/policies/#OnSecurityEventEnterpriseConnector). Set to true if provider list from Chrome is non-empty.
          &quot;isSiteIsolationEnabled&quot;: True or False, # Current state of [site isolation](https://chromeenterprise.google/policies/?policy=IsolateOrigins).
          &quot;isThirdPartyBlockingEnabled&quot;: True or False, # Current state of [third-party blocking](https://chromeenterprise.google/policies/#ThirdPartyBlockingEnabled).
          &quot;passwordProtectionWarningTrigger&quot;: &quot;A String&quot;, # Current state of [password protection trigger](https://chromeenterprise.google/policies/#PasswordProtectionWarningTrigger).
          &quot;safeBrowsingProtectionLevel&quot;: &quot;A String&quot;, # Current state of [Safe Browsing protection level](https://chromeenterprise.google/policies/#SafeBrowsingProtectionLevel).
        },
        &quot;chromeProfileId&quot;: &quot;A String&quot;, # Chrome profile ID that is exposed by the Chrome API. It is unique for each device.
        &quot;lastProfileSyncTime&quot;: &quot;A String&quot;, # Timestamp in milliseconds since the Unix epoch when the profile/gcm id was last synced.
      },
    ],
    &quot;certificateAttributes&quot;: [ # Details of certificates.
      { # Stores information about a certificate.
        &quot;certificateTemplate&quot;: { # CertificateTemplate (v3 Extension in X.509). # The X.509 extension for CertificateTemplate.
          &quot;id&quot;: &quot;A String&quot;, # The template id of the template. Example: &quot;1.3.6.1.4.1.311.21.8.15608621.11768144.5720724.16068415.6889630.81.2472537.7784047&quot;.
          &quot;majorVersion&quot;: 42, # The Major version of the template. Example: 100.
          &quot;minorVersion&quot;: 42, # The minor version of the template. Example: 12.
        },
        &quot;fingerprint&quot;: &quot;A String&quot;, # The encoded certificate fingerprint.
        &quot;issuer&quot;: &quot;A String&quot;, # The name of the issuer of this certificate.
        &quot;serialNumber&quot;: &quot;A String&quot;, # Serial number of the certificate, Example: &quot;123456789&quot;.
        &quot;subject&quot;: &quot;A String&quot;, # The subject name of this certificate.
        &quot;thumbprint&quot;: &quot;A String&quot;, # The certificate thumbprint.
        &quot;validationState&quot;: &quot;A String&quot;, # Output only. Validation state of this certificate.
        &quot;validityExpirationTime&quot;: &quot;A String&quot;, # Certificate not valid at or after this timestamp.
        &quot;validityStartTime&quot;: &quot;A String&quot;, # Certificate not valid before this timestamp.
      },
    ],
  },
  &quot;hostname&quot;: &quot;A String&quot;, # Host name of the device.
  &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}`, where device is the unique id assigned to the Device. Important: Device API scopes require that you use domain-wide delegation to access the API. For more information, see [Set up the Devices API](https://cloud.google.com/identity/docs/how-to/setup-devices).
  &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;unifiedDeviceId&quot;: &quot;A String&quot;, # Output only. Unified device id of the device.
  &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}`, where customer 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, successful response of the operation. 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}`, where device 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}`, where customer 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, successful response of the operation. 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}`, where device 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}`, where customer 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}`, where customer 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;ctsProfileMatch&quot;: True or False, # Whether the device passes Android CTS compliance.
    &quot;enabledUnknownSources&quot;: True or False, # Whether applications from unknown sources can be installed on device.
    &quot;hasPotentiallyHarmfulApps&quot;: True or False, # Whether any potentially harmful apps were detected on the 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;verifiedBoot&quot;: True or False, # Whether Android verified boot status is GREEN.
    &quot;verifyAppsEnabled&quot;: True or False, # Whether Google Play Protect Verify Apps is enabled.
  },
  &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;deviceId&quot;: &quot;A String&quot;, # Unique identifier for the device.
  &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;endpointVerificationSpecificAttributes&quot;: { # Resource representing the [Endpoint Verification-specific attributes](https://cloud.google.com/endpoint-verification/docs/device-information) of a device. # Output only. Attributes specific to [Endpoint Verification](https://cloud.google.com/endpoint-verification/docs/overview) devices.
    &quot;additionalSignals&quot;: { # [Additional signals](https://cloud.google.com/endpoint-verification/docs/device-information) reported by Endpoint Verification. It includes the following attributes: * Non-configurable attributes: hotfixes, av_installed, av_enabled, windows_domain_name, is_os_native_firewall_enabled, and is_secure_boot_enabled. * [Configurable attributes](https://cloud.google.com/endpoint-verification/docs/collect-config-attributes): file, folder, and binary attributes; registry entries; and properties in a plist.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
    },
    &quot;browserAttributes&quot;: [ # Details of browser profiles reported by Endpoint Verification.
      { # Contains information about browser profiles reported by the [Endpoint Verification extension](https://chromewebstore.google.com/detail/endpoint-verification/callobklhcbilhphinckomhgkigmfocg?pli=1).
        &quot;chromeBrowserInfo&quot;: { # Browser-specific fields reported by the [Endpoint Verification extension](https://chromewebstore.google.com/detail/endpoint-verification/callobklhcbilhphinckomhgkigmfocg?pli=1). # Represents the current state of the [Chrome browser attributes](https://cloud.google.com/access-context-manager/docs/browser-attributes) sent by the [Endpoint Verification extension](https://chromewebstore.google.com/detail/endpoint-verification/callobklhcbilhphinckomhgkigmfocg?pli=1).
          &quot;browserManagementState&quot;: &quot;A String&quot;, # Output only. Browser&#x27;s management state.
          &quot;browserVersion&quot;: &quot;A String&quot;, # Version of the request initiating browser. E.g. `91.0.4442.4`.
          &quot;isBuiltInDnsClientEnabled&quot;: True or False, # Current state of [built-in DNS client](https://chromeenterprise.google/policies/#BuiltInDnsClientEnabled).
          &quot;isBulkDataEntryAnalysisEnabled&quot;: True or False, # Current state of [bulk data analysis](https://chromeenterprise.google/policies/#OnBulkDataEntryEnterpriseConnector). Set to true if provider list from Chrome is non-empty.
          &quot;isChromeCleanupEnabled&quot;: True or False, # Current state of [Chrome Cleanup](https://chromeenterprise.google/policies/#ChromeCleanupEnabled).
          &quot;isChromeRemoteDesktopAppBlocked&quot;: True or False, # Current state of [Chrome Remote Desktop app](https://chromeenterprise.google/policies/#URLBlocklist).
          &quot;isFileDownloadAnalysisEnabled&quot;: True or False, # Current state of [file download analysis](https://chromeenterprise.google/policies/#OnFileDownloadedEnterpriseConnector). Set to true if provider list from Chrome is non-empty.
          &quot;isFileUploadAnalysisEnabled&quot;: True or False, # Current state of [file upload analysis](https://chromeenterprise.google/policies/#OnFileAttachedEnterpriseConnector). Set to true if provider list from Chrome is non-empty.
          &quot;isRealtimeUrlCheckEnabled&quot;: True or False, # Current state of [real-time URL check](https://chromeenterprise.google/policies/#EnterpriseRealTimeUrlCheckMode). Set to true if provider list from Chrome is non-empty.
          &quot;isSecurityEventAnalysisEnabled&quot;: True or False, # Current state of [security event analysis](https://chromeenterprise.google/policies/#OnSecurityEventEnterpriseConnector). Set to true if provider list from Chrome is non-empty.
          &quot;isSiteIsolationEnabled&quot;: True or False, # Current state of [site isolation](https://chromeenterprise.google/policies/?policy=IsolateOrigins).
          &quot;isThirdPartyBlockingEnabled&quot;: True or False, # Current state of [third-party blocking](https://chromeenterprise.google/policies/#ThirdPartyBlockingEnabled).
          &quot;passwordProtectionWarningTrigger&quot;: &quot;A String&quot;, # Current state of [password protection trigger](https://chromeenterprise.google/policies/#PasswordProtectionWarningTrigger).
          &quot;safeBrowsingProtectionLevel&quot;: &quot;A String&quot;, # Current state of [Safe Browsing protection level](https://chromeenterprise.google/policies/#SafeBrowsingProtectionLevel).
        },
        &quot;chromeProfileId&quot;: &quot;A String&quot;, # Chrome profile ID that is exposed by the Chrome API. It is unique for each device.
        &quot;lastProfileSyncTime&quot;: &quot;A String&quot;, # Timestamp in milliseconds since the Unix epoch when the profile/gcm id was last synced.
      },
    ],
    &quot;certificateAttributes&quot;: [ # Details of certificates.
      { # Stores information about a certificate.
        &quot;certificateTemplate&quot;: { # CertificateTemplate (v3 Extension in X.509). # The X.509 extension for CertificateTemplate.
          &quot;id&quot;: &quot;A String&quot;, # The template id of the template. Example: &quot;1.3.6.1.4.1.311.21.8.15608621.11768144.5720724.16068415.6889630.81.2472537.7784047&quot;.
          &quot;majorVersion&quot;: 42, # The Major version of the template. Example: 100.
          &quot;minorVersion&quot;: 42, # The minor version of the template. Example: 12.
        },
        &quot;fingerprint&quot;: &quot;A String&quot;, # The encoded certificate fingerprint.
        &quot;issuer&quot;: &quot;A String&quot;, # The name of the issuer of this certificate.
        &quot;serialNumber&quot;: &quot;A String&quot;, # Serial number of the certificate, Example: &quot;123456789&quot;.
        &quot;subject&quot;: &quot;A String&quot;, # The subject name of this certificate.
        &quot;thumbprint&quot;: &quot;A String&quot;, # The certificate thumbprint.
        &quot;validationState&quot;: &quot;A String&quot;, # Output only. Validation state of this certificate.
        &quot;validityExpirationTime&quot;: &quot;A String&quot;, # Certificate not valid at or after this timestamp.
        &quot;validityStartTime&quot;: &quot;A String&quot;, # Certificate not valid before this timestamp.
      },
    ],
  },
  &quot;hostname&quot;: &quot;A String&quot;, # Host name of the device.
  &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}`, where device is the unique id assigned to the Device. Important: Device API scopes require that you use domain-wide delegation to access the API. For more information, see [Set up the Devices API](https://cloud.google.com/identity/docs/how-to/setup-devices).
  &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;unifiedDeviceId&quot;: &quot;A String&quot;, # Output only. Unified device id of the device.
  &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}`, where customer 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}`, where customer 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 unassigned 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;ctsProfileMatch&quot;: True or False, # Whether the device passes Android CTS compliance.
        &quot;enabledUnknownSources&quot;: True or False, # Whether applications from unknown sources can be installed on device.
        &quot;hasPotentiallyHarmfulApps&quot;: True or False, # Whether any potentially harmful apps were detected on the 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;verifiedBoot&quot;: True or False, # Whether Android verified boot status is GREEN.
        &quot;verifyAppsEnabled&quot;: True or False, # Whether Google Play Protect Verify Apps is enabled.
      },
      &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;deviceId&quot;: &quot;A String&quot;, # Unique identifier for the device.
      &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;endpointVerificationSpecificAttributes&quot;: { # Resource representing the [Endpoint Verification-specific attributes](https://cloud.google.com/endpoint-verification/docs/device-information) of a device. # Output only. Attributes specific to [Endpoint Verification](https://cloud.google.com/endpoint-verification/docs/overview) devices.
        &quot;additionalSignals&quot;: { # [Additional signals](https://cloud.google.com/endpoint-verification/docs/device-information) reported by Endpoint Verification. It includes the following attributes: * Non-configurable attributes: hotfixes, av_installed, av_enabled, windows_domain_name, is_os_native_firewall_enabled, and is_secure_boot_enabled. * [Configurable attributes](https://cloud.google.com/endpoint-verification/docs/collect-config-attributes): file, folder, and binary attributes; registry entries; and properties in a plist.
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
        },
        &quot;browserAttributes&quot;: [ # Details of browser profiles reported by Endpoint Verification.
          { # Contains information about browser profiles reported by the [Endpoint Verification extension](https://chromewebstore.google.com/detail/endpoint-verification/callobklhcbilhphinckomhgkigmfocg?pli=1).
            &quot;chromeBrowserInfo&quot;: { # Browser-specific fields reported by the [Endpoint Verification extension](https://chromewebstore.google.com/detail/endpoint-verification/callobklhcbilhphinckomhgkigmfocg?pli=1). # Represents the current state of the [Chrome browser attributes](https://cloud.google.com/access-context-manager/docs/browser-attributes) sent by the [Endpoint Verification extension](https://chromewebstore.google.com/detail/endpoint-verification/callobklhcbilhphinckomhgkigmfocg?pli=1).
              &quot;browserManagementState&quot;: &quot;A String&quot;, # Output only. Browser&#x27;s management state.
              &quot;browserVersion&quot;: &quot;A String&quot;, # Version of the request initiating browser. E.g. `91.0.4442.4`.
              &quot;isBuiltInDnsClientEnabled&quot;: True or False, # Current state of [built-in DNS client](https://chromeenterprise.google/policies/#BuiltInDnsClientEnabled).
              &quot;isBulkDataEntryAnalysisEnabled&quot;: True or False, # Current state of [bulk data analysis](https://chromeenterprise.google/policies/#OnBulkDataEntryEnterpriseConnector). Set to true if provider list from Chrome is non-empty.
              &quot;isChromeCleanupEnabled&quot;: True or False, # Current state of [Chrome Cleanup](https://chromeenterprise.google/policies/#ChromeCleanupEnabled).
              &quot;isChromeRemoteDesktopAppBlocked&quot;: True or False, # Current state of [Chrome Remote Desktop app](https://chromeenterprise.google/policies/#URLBlocklist).
              &quot;isFileDownloadAnalysisEnabled&quot;: True or False, # Current state of [file download analysis](https://chromeenterprise.google/policies/#OnFileDownloadedEnterpriseConnector). Set to true if provider list from Chrome is non-empty.
              &quot;isFileUploadAnalysisEnabled&quot;: True or False, # Current state of [file upload analysis](https://chromeenterprise.google/policies/#OnFileAttachedEnterpriseConnector). Set to true if provider list from Chrome is non-empty.
              &quot;isRealtimeUrlCheckEnabled&quot;: True or False, # Current state of [real-time URL check](https://chromeenterprise.google/policies/#EnterpriseRealTimeUrlCheckMode). Set to true if provider list from Chrome is non-empty.
              &quot;isSecurityEventAnalysisEnabled&quot;: True or False, # Current state of [security event analysis](https://chromeenterprise.google/policies/#OnSecurityEventEnterpriseConnector). Set to true if provider list from Chrome is non-empty.
              &quot;isSiteIsolationEnabled&quot;: True or False, # Current state of [site isolation](https://chromeenterprise.google/policies/?policy=IsolateOrigins).
              &quot;isThirdPartyBlockingEnabled&quot;: True or False, # Current state of [third-party blocking](https://chromeenterprise.google/policies/#ThirdPartyBlockingEnabled).
              &quot;passwordProtectionWarningTrigger&quot;: &quot;A String&quot;, # Current state of [password protection trigger](https://chromeenterprise.google/policies/#PasswordProtectionWarningTrigger).
              &quot;safeBrowsingProtectionLevel&quot;: &quot;A String&quot;, # Current state of [Safe Browsing protection level](https://chromeenterprise.google/policies/#SafeBrowsingProtectionLevel).
            },
            &quot;chromeProfileId&quot;: &quot;A String&quot;, # Chrome profile ID that is exposed by the Chrome API. It is unique for each device.
            &quot;lastProfileSyncTime&quot;: &quot;A String&quot;, # Timestamp in milliseconds since the Unix epoch when the profile/gcm id was last synced.
          },
        ],
        &quot;certificateAttributes&quot;: [ # Details of certificates.
          { # Stores information about a certificate.
            &quot;certificateTemplate&quot;: { # CertificateTemplate (v3 Extension in X.509). # The X.509 extension for CertificateTemplate.
              &quot;id&quot;: &quot;A String&quot;, # The template id of the template. Example: &quot;1.3.6.1.4.1.311.21.8.15608621.11768144.5720724.16068415.6889630.81.2472537.7784047&quot;.
              &quot;majorVersion&quot;: 42, # The Major version of the template. Example: 100.
              &quot;minorVersion&quot;: 42, # The minor version of the template. Example: 12.
            },
            &quot;fingerprint&quot;: &quot;A String&quot;, # The encoded certificate fingerprint.
            &quot;issuer&quot;: &quot;A String&quot;, # The name of the issuer of this certificate.
            &quot;serialNumber&quot;: &quot;A String&quot;, # Serial number of the certificate, Example: &quot;123456789&quot;.
            &quot;subject&quot;: &quot;A String&quot;, # The subject name of this certificate.
            &quot;thumbprint&quot;: &quot;A String&quot;, # The certificate thumbprint.
            &quot;validationState&quot;: &quot;A String&quot;, # Output only. Validation state of this certificate.
            &quot;validityExpirationTime&quot;: &quot;A String&quot;, # Certificate not valid at or after this timestamp.
            &quot;validityStartTime&quot;: &quot;A String&quot;, # Certificate not valid before this timestamp.
          },
        ],
      },
      &quot;hostname&quot;: &quot;A String&quot;, # Host name of the device.
      &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}`, where device is the unique id assigned to the Device. Important: Device API scopes require that you use domain-wide delegation to access the API. For more information, see [Set up the Devices API](https://cloud.google.com/identity/docs/how-to/setup-devices).
      &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;unifiedDeviceId&quot;: &quot;A String&quot;, # Output only. Unified device id of the device.
      &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()</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}/deviceUsers/{device_user}`, where device is the unique ID assigned to the Device, and device_user 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}`, where customer is the customer to whom the device belongs.
  &quot;removeResetLock&quot;: True or False, # Optional. Specifies if a user is able to factory reset a device after a Device Wipe. On iOS, this is called &quot;Activation Lock&quot;, while on Android, this is known as &quot;Factory Reset Protection&quot;. If true, this protection will be removed from the device, so that a user can successfully factory reset. If false, the setting is untouched 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, successful response of the operation. 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>