<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="androiddeviceprovisioning_v1.html">Android Device Provisioning Partner API</a> . <a href="androiddeviceprovisioning_v1.customers.html">customers</a> . <a href="androiddeviceprovisioning_v1.customers.devices.html">devices</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#applyConfiguration">applyConfiguration(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Applies a Configuration to the device to register the device for zero-touch enrollment. After applying a configuration to a device, the device automatically provisions itself on first boot, or next factory reset.</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="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the details of a device.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists a customer's 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="#removeConfiguration">removeConfiguration(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Removes a configuration from device.</p>
<p class="toc_element">
  <code><a href="#unclaim">unclaim(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Unclaims a device from a customer and removes it from zero-touch enrollment. After removing a device, a customer must contact their reseller to register the device into zero-touch enrollment again.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="applyConfiguration">applyConfiguration(parent, body=None, x__xgafv=None)</code>
  <pre>Applies a Configuration to the device to register the device for zero-touch enrollment. After applying a configuration to a device, the device automatically provisions itself on first boot, or next factory reset.

Args:
  parent: string, Required. The customer managing the device. An API resource name in the format `customers/[CUSTOMER_ID]`. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for customer to assign a configuration to device.
    &quot;configuration&quot;: &quot;A String&quot;, # Required. The configuration applied to the device in the format `customers/[CUSTOMER_ID]/configurations/[CONFIGURATION_ID]`.
    &quot;device&quot;: { # A `DeviceReference` is an API abstraction that lets you supply a _device_ argument to a method using one of the following identifier types: * A numeric API resource ID. * Real-world hardware IDs, such as IMEI number, belonging to the manufactured device. Methods that operate on devices take a `DeviceReference` as a parameter type because it&#x27;s more flexible for the caller. To learn more about device identifiers, read [Identifiers](https://developers.google.com/zero-touch/guides/identifiers). # Required. The device the configuration is applied to.
      &quot;deviceId&quot;: &quot;A String&quot;, # The ID of the device.
      &quot;deviceIdentifier&quot;: { # Encapsulates hardware and product IDs to identify a manufactured device. To understand requirements on identifier sets, read [Identifiers](https://developers.google.com/zero-touch/guides/identifiers). # The hardware IDs of the device.
        &quot;model&quot;: &quot;A String&quot;, # The device model&#x27;s name. Matches the device&#x27;s built-in value returned from `android.os.Build.MODEL`. Allowed values are listed in [models](/zero-touch/resources/manufacturer-names#model-names).
        &quot;meid&quot;: &quot;A String&quot;, # The device’s MEID number.
        &quot;imei&quot;: &quot;A String&quot;, # The device’s IMEI number. Validated on input.
        &quot;manufacturer&quot;: &quot;A String&quot;, # The device manufacturer’s name. Matches the device&#x27;s built-in value returned from `android.os.Build.MANUFACTURER`. Allowed values are listed in [manufacturers](/zero-touch/resources/manufacturer-names#manufacturers-names).
        &quot;serialNumber&quot;: &quot;A String&quot;, # The manufacturer&#x27;s serial number for the device. This value might not be unique across different device models.
      },
    },
  }

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

Returns:
  An object of the form:

    { # A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON representation for `Empty` is empty JSON object `{}`.
  }</pre>
</div>

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

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

Args:
  name: string, Required. The device to get. An API resource name in the format `customers/[CUSTOMER_ID]/devices/[DEVICE_ID]`. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # An Android device registered for zero-touch enrollment.
    &quot;claims&quot;: [ # Output only. The provisioning claims for a device. Devices claimed for zero-touch enrollment have a claim with the type `SECTION_TYPE_ZERO_TOUCH`. Call `partners.devices.unclaim` or `partners.devices.unclaimAsync` to remove the device from zero-touch enrollment.
      { # A record of a device claimed by a reseller for a customer. Devices claimed for zero-touch enrollment have a claim with the type `SECTION_TYPE_ZERO_TOUCH`. To learn more, read [Claim devices for customers](/zero-touch/guides/how-it-works#claim).
        &quot;ownerCompanyId&quot;: &quot;A String&quot;, # The ID of the Customer that purchased the device.
        &quot;vacationModeStartTime&quot;: &quot;A String&quot;, # The timestamp when the device was put into ‘vacation mode’. This value is present iff the device is in &#x27;vacation mode&#x27;.
        &quot;sectionType&quot;: &quot;A String&quot;, # Output only. The type of claim made on the device.
        &quot;resellerId&quot;: &quot;A String&quot;, # The ID of the reseller that claimed the device.
        &quot;vacationModeExpireTime&quot;: &quot;A String&quot;, # The timestamp when the device will exit ‘vacation mode’. This value is present iff the device is in &#x27;vacation mode&#x27;.
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # Output only. The API resource name in the format `partners/[PARTNER_ID]/devices/[DEVICE_ID]`. Assigned by the server.
    &quot;deviceMetadata&quot;: { # Metadata entries that can be attached to a `Device`. To learn more, read [Device metadata](https://developers.google.com/zero-touch/guides/metadata). # The metadata attached to the device. Structured as key-value pairs. To learn more, read [Device metadata](https://developers.google.com/zero-touch/guides/metadata).
      &quot;entries&quot;: { # Metadata entries recorded as key-value pairs.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;deviceId&quot;: &quot;A String&quot;, # Output only. The ID of the device. Assigned by the server.
    &quot;deviceIdentifier&quot;: { # Encapsulates hardware and product IDs to identify a manufactured device. To understand requirements on identifier sets, read [Identifiers](https://developers.google.com/zero-touch/guides/identifiers). # The hardware IDs that identify a manufactured device. To learn more, read [Identifiers](https://developers.google.com/zero-touch/guides/identifiers).
      &quot;model&quot;: &quot;A String&quot;, # The device model&#x27;s name. Matches the device&#x27;s built-in value returned from `android.os.Build.MODEL`. Allowed values are listed in [models](/zero-touch/resources/manufacturer-names#model-names).
      &quot;meid&quot;: &quot;A String&quot;, # The device’s MEID number.
      &quot;imei&quot;: &quot;A String&quot;, # The device’s IMEI number. Validated on input.
      &quot;manufacturer&quot;: &quot;A String&quot;, # The device manufacturer’s name. Matches the device&#x27;s built-in value returned from `android.os.Build.MANUFACTURER`. Allowed values are listed in [manufacturers](/zero-touch/resources/manufacturer-names#manufacturers-names).
      &quot;serialNumber&quot;: &quot;A String&quot;, # The manufacturer&#x27;s serial number for the device. This value might not be unique across different device models.
    },
    &quot;configuration&quot;: &quot;A String&quot;, # Not available to resellers.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists a customer&#x27;s devices.

Args:
  parent: string, Required. The customer managing the devices. An API resource name in the format `customers/[CUSTOMER_ID]`. (required)
  pageSize: string, The maximum number of devices to show in a page of results. Must be between 1 and 100 inclusive.
  pageToken: string, A token specifying which result page to return.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message of customer&#x27;s liting devices.
    &quot;nextPageToken&quot;: &quot;A String&quot;, # A token used to access the next page of results. Omitted if no further results are available.
    &quot;devices&quot;: [ # The customer&#x27;s devices.
      { # An Android device registered for zero-touch enrollment.
        &quot;claims&quot;: [ # Output only. The provisioning claims for a device. Devices claimed for zero-touch enrollment have a claim with the type `SECTION_TYPE_ZERO_TOUCH`. Call `partners.devices.unclaim` or `partners.devices.unclaimAsync` to remove the device from zero-touch enrollment.
          { # A record of a device claimed by a reseller for a customer. Devices claimed for zero-touch enrollment have a claim with the type `SECTION_TYPE_ZERO_TOUCH`. To learn more, read [Claim devices for customers](/zero-touch/guides/how-it-works#claim).
            &quot;ownerCompanyId&quot;: &quot;A String&quot;, # The ID of the Customer that purchased the device.
            &quot;vacationModeStartTime&quot;: &quot;A String&quot;, # The timestamp when the device was put into ‘vacation mode’. This value is present iff the device is in &#x27;vacation mode&#x27;.
            &quot;sectionType&quot;: &quot;A String&quot;, # Output only. The type of claim made on the device.
            &quot;resellerId&quot;: &quot;A String&quot;, # The ID of the reseller that claimed the device.
            &quot;vacationModeExpireTime&quot;: &quot;A String&quot;, # The timestamp when the device will exit ‘vacation mode’. This value is present iff the device is in &#x27;vacation mode&#x27;.
          },
        ],
        &quot;name&quot;: &quot;A String&quot;, # Output only. The API resource name in the format `partners/[PARTNER_ID]/devices/[DEVICE_ID]`. Assigned by the server.
        &quot;deviceMetadata&quot;: { # Metadata entries that can be attached to a `Device`. To learn more, read [Device metadata](https://developers.google.com/zero-touch/guides/metadata). # The metadata attached to the device. Structured as key-value pairs. To learn more, read [Device metadata](https://developers.google.com/zero-touch/guides/metadata).
          &quot;entries&quot;: { # Metadata entries recorded as key-value pairs.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
        },
        &quot;deviceId&quot;: &quot;A String&quot;, # Output only. The ID of the device. Assigned by the server.
        &quot;deviceIdentifier&quot;: { # Encapsulates hardware and product IDs to identify a manufactured device. To understand requirements on identifier sets, read [Identifiers](https://developers.google.com/zero-touch/guides/identifiers). # The hardware IDs that identify a manufactured device. To learn more, read [Identifiers](https://developers.google.com/zero-touch/guides/identifiers).
          &quot;model&quot;: &quot;A String&quot;, # The device model&#x27;s name. Matches the device&#x27;s built-in value returned from `android.os.Build.MODEL`. Allowed values are listed in [models](/zero-touch/resources/manufacturer-names#model-names).
          &quot;meid&quot;: &quot;A String&quot;, # The device’s MEID number.
          &quot;imei&quot;: &quot;A String&quot;, # The device’s IMEI number. Validated on input.
          &quot;manufacturer&quot;: &quot;A String&quot;, # The device manufacturer’s name. Matches the device&#x27;s built-in value returned from `android.os.Build.MANUFACTURER`. Allowed values are listed in [manufacturers](/zero-touch/resources/manufacturer-names#manufacturers-names).
          &quot;serialNumber&quot;: &quot;A String&quot;, # The manufacturer&#x27;s serial number for the device. This value might not be unique across different device models.
        },
        &quot;configuration&quot;: &quot;A String&quot;, # Not available to resellers.
      },
    ],
  }</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="removeConfiguration">removeConfiguration(parent, body=None, x__xgafv=None)</code>
  <pre>Removes a configuration from device.

Args:
  parent: string, Required. The customer managing the device in the format `customers/[CUSTOMER_ID]`. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for customer to remove the configuration from device.
    &quot;device&quot;: { # A `DeviceReference` is an API abstraction that lets you supply a _device_ argument to a method using one of the following identifier types: * A numeric API resource ID. * Real-world hardware IDs, such as IMEI number, belonging to the manufactured device. Methods that operate on devices take a `DeviceReference` as a parameter type because it&#x27;s more flexible for the caller. To learn more about device identifiers, read [Identifiers](https://developers.google.com/zero-touch/guides/identifiers). # Required. The device to remove the configuration from.
      &quot;deviceId&quot;: &quot;A String&quot;, # The ID of the device.
      &quot;deviceIdentifier&quot;: { # Encapsulates hardware and product IDs to identify a manufactured device. To understand requirements on identifier sets, read [Identifiers](https://developers.google.com/zero-touch/guides/identifiers). # The hardware IDs of the device.
        &quot;model&quot;: &quot;A String&quot;, # The device model&#x27;s name. Matches the device&#x27;s built-in value returned from `android.os.Build.MODEL`. Allowed values are listed in [models](/zero-touch/resources/manufacturer-names#model-names).
        &quot;meid&quot;: &quot;A String&quot;, # The device’s MEID number.
        &quot;imei&quot;: &quot;A String&quot;, # The device’s IMEI number. Validated on input.
        &quot;manufacturer&quot;: &quot;A String&quot;, # The device manufacturer’s name. Matches the device&#x27;s built-in value returned from `android.os.Build.MANUFACTURER`. Allowed values are listed in [manufacturers](/zero-touch/resources/manufacturer-names#manufacturers-names).
        &quot;serialNumber&quot;: &quot;A String&quot;, # The manufacturer&#x27;s serial number for the device. This value might not be unique across different device models.
      },
    },
  }

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

Returns:
  An object of the form:

    { # A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON representation for `Empty` is empty JSON object `{}`.
  }</pre>
</div>

<div class="method">
    <code class="details" id="unclaim">unclaim(parent, body=None, x__xgafv=None)</code>
  <pre>Unclaims a device from a customer and removes it from zero-touch enrollment. After removing a device, a customer must contact their reseller to register the device into zero-touch enrollment again.

Args:
  parent: string, Required. The customer managing the device. An API resource name in the format `customers/[CUSTOMER_ID]`. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for customer to unclaim a device.
    &quot;device&quot;: { # A `DeviceReference` is an API abstraction that lets you supply a _device_ argument to a method using one of the following identifier types: * A numeric API resource ID. * Real-world hardware IDs, such as IMEI number, belonging to the manufactured device. Methods that operate on devices take a `DeviceReference` as a parameter type because it&#x27;s more flexible for the caller. To learn more about device identifiers, read [Identifiers](https://developers.google.com/zero-touch/guides/identifiers). # Required. The device to unclaim.
      &quot;deviceId&quot;: &quot;A String&quot;, # The ID of the device.
      &quot;deviceIdentifier&quot;: { # Encapsulates hardware and product IDs to identify a manufactured device. To understand requirements on identifier sets, read [Identifiers](https://developers.google.com/zero-touch/guides/identifiers). # The hardware IDs of the device.
        &quot;model&quot;: &quot;A String&quot;, # The device model&#x27;s name. Matches the device&#x27;s built-in value returned from `android.os.Build.MODEL`. Allowed values are listed in [models](/zero-touch/resources/manufacturer-names#model-names).
        &quot;meid&quot;: &quot;A String&quot;, # The device’s MEID number.
        &quot;imei&quot;: &quot;A String&quot;, # The device’s IMEI number. Validated on input.
        &quot;manufacturer&quot;: &quot;A String&quot;, # The device manufacturer’s name. Matches the device&#x27;s built-in value returned from `android.os.Build.MANUFACTURER`. Allowed values are listed in [manufacturers](/zero-touch/resources/manufacturer-names#manufacturers-names).
        &quot;serialNumber&quot;: &quot;A String&quot;, # The manufacturer&#x27;s serial number for the device. This value might not be unique across different device models.
      },
    },
  }

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

Returns:
  An object of the form:

    { # A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON representation for `Empty` is empty JSON object `{}`.
  }</pre>
</div>

</body></html>