<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.partners.html">partners</a> . <a href="androiddeviceprovisioning_v1.partners.devices.html">devices</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#claim">claim(partnerId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Claims a device for a customer and adds it to zero-touch enrollment. If the device is already claimed by another customer, the call returns an error.</p>
<p class="toc_element">
  <code><a href="#claimAsync">claimAsync(partnerId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Claims a batch of devices for a customer asynchronously. Adds the devices to zero-touch enrollment. To learn more, read [Long‑running batch operations](/zero-touch/guides/how-it-works#operations).</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="#findByIdentifier">findByIdentifier(partnerId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Finds devices by hardware identifiers, such as IMEI.</p>
<p class="toc_element">
  <code><a href="#findByIdentifier_next">findByIdentifier_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="#findByOwner">findByOwner(partnerId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Finds devices claimed for customers. The results only contain devices registered to the reseller that's identified by the `partnerId` argument. The customer's devices purchased from other resellers don't appear in the results.</p>
<p class="toc_element">
  <code><a href="#findByOwner_next">findByOwner_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="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a device.</p>
<p class="toc_element">
  <code><a href="#metadata">metadata(metadataOwnerId, deviceId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates reseller metadata associated with the device.</p>
<p class="toc_element">
  <code><a href="#unclaim">unclaim(partnerId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Unclaims a device from a customer and removes it from zero-touch enrollment.</p>
<p class="toc_element">
  <code><a href="#unclaimAsync">unclaimAsync(partnerId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Unclaims a batch of devices for a customer asynchronously. Removes the devices from zero-touch enrollment. To learn more, read [Long‑running batch operations](/zero-touch/guides/how-it-works#operations).</p>
<p class="toc_element">
  <code><a href="#updateMetadataAsync">updateMetadataAsync(partnerId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the reseller metadata attached to a batch of devices. This method updates devices asynchronously and returns an `Operation` that can be used to track progress. Read [Long‑running batch operations](/zero-touch/guides/how-it-works#operations).</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="claim">claim(partnerId, body=None, x__xgafv=None)</code>
  <pre>Claims a device for a customer and adds it to zero-touch enrollment. If the device is already claimed by another customer, the call returns an error.

Args:
  partnerId: string, Required. The ID of the reseller partner. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message to claim a device on behalf of a customer.
    &quot;sectionType&quot;: &quot;A String&quot;, # Required. The section type of the device&#x27;s provisioning record.
    &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). # Required. Required. The device identifier of the device to claim.
      &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;customerId&quot;: &quot;A String&quot;, # Required. The ID of the customer for whom the device is being claimed.
    &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). # Optional. The metadata to attach to the device.
      &quot;entries&quot;: { # Metadata entries recorded as key-value pairs.
        &quot;a_key&quot;: &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:

    { # Response message containing device id of the claim.
    &quot;deviceName&quot;: &quot;A String&quot;, # The resource name of the device in the format `partners/[PARTNER_ID]/devices/[DEVICE_ID]`.
    &quot;deviceId&quot;: &quot;A String&quot;, # The device ID of the claimed device.
  }</pre>
</div>

<div class="method">
    <code class="details" id="claimAsync">claimAsync(partnerId, body=None, x__xgafv=None)</code>
  <pre>Claims a batch of devices for a customer asynchronously. Adds the devices to zero-touch enrollment. To learn more, read [Long‑running batch operations](/zero-touch/guides/how-it-works#operations).

Args:
  partnerId: string, Required. The ID of the reseller partner. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request to claim devices asynchronously in batch. Claiming a device adds the device to zero-touch enrollment and shows the device in the customer&#x27;s view of the portal.
    &quot;claims&quot;: [ # Required. A list of device claims.
      { # Identifies one claim request.
        &quot;customerId&quot;: &quot;A String&quot;, # Required. The ID of the customer for whom the device is being claimed.
        &quot;sectionType&quot;: &quot;A String&quot;, # Required. The section type of the device&#x27;s provisioning record.
        &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). # Required. Required. Device identifier 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.
        },
        &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). # Required. The metadata to attach to the device at claim.
          &quot;entries&quot;: { # Metadata entries recorded as key-value pairs.
            &quot;a_key&quot;: &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;metadata&quot;: { # This field will contain a `DevicesLongRunningOperationMetadata` object if the operation is created by `claimAsync`, `unclaimAsync`, or `updateMetadataAsync`.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &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;response&quot;: { # This field will contain a `DevicesLongRunningOperationResponse` object if the operation is created by `claimAsync`, `unclaimAsync`, or `updateMetadataAsync`.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &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). # This field will always be not set if the operation is created by `claimAsync`, `unclaimAsync`, or `updateMetadataAsync`. In this case, error information for each device is set in `response.perDeviceStatus.result.status`.
      &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;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;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    },
    &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}`.
  }</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="findByIdentifier">findByIdentifier(partnerId, body=None, x__xgafv=None)</code>
  <pre>Finds devices by hardware identifiers, such as IMEI.

Args:
  partnerId: string, Required. The ID of the reseller partner. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request to find devices.
    &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). # Required. Required. The device identifier to search for.
      &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;pageToken&quot;: &quot;A String&quot;, # A token specifying which result page to return.
    &quot;limit&quot;: &quot;A String&quot;, # Required. The maximum number of devices to show in a page of results. Must be between 1 and 100 inclusive.
  }

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

Returns:
  An object of the form:

    { # Response containing found devices.
    &quot;devices&quot;: [ # Found 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.
      },
    ],
    &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;totalSize&quot;: 42, # The total count of items in the list irrespective of pagination.
  }</pre>
</div>

<div class="method">
    <code class="details" id="findByIdentifier_next">findByIdentifier_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="findByOwner">findByOwner(partnerId, body=None, x__xgafv=None)</code>
  <pre>Finds devices claimed for customers. The results only contain devices registered to the reseller that&#x27;s identified by the `partnerId` argument. The customer&#x27;s devices purchased from other resellers don&#x27;t appear in the results.

Args:
  partnerId: string, Required. The ID of the reseller partner. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request to find devices by customers.
    &quot;sectionType&quot;: &quot;A String&quot;, # Required. The section type of the device&#x27;s provisioning record.
    &quot;pageToken&quot;: &quot;A String&quot;, # A token specifying which result page to return.
    &quot;limit&quot;: &quot;A String&quot;, # Required. The maximum number of devices to show in a page of results. Must be between 1 and 100 inclusive.
    &quot;customerId&quot;: [ # Required. The list of customer IDs to search for.
      &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:

    { # Response containing found devices.
    &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.
      },
    ],
    &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;totalSize&quot;: 42, # The total count of items in the list irrespective of pagination.
  }</pre>
</div>

<div class="method">
    <code class="details" id="findByOwner_next">findByOwner_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="get">get(name, x__xgafv=None)</code>
  <pre>Gets a device.

Args:
  name: string, Required. The device API resource name in the format `partners/[PARTNER_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="metadata">metadata(metadataOwnerId, deviceId, body=None, x__xgafv=None)</code>
  <pre>Updates reseller metadata associated with the device.

Args:
  metadataOwnerId: string, Required. The owner of the newly set metadata. Set this to the partner ID. (required)
  deviceId: string, Required. The ID of the device. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request to set metadata for a device.
    &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). # Required. The metadata to attach to the device.
      &quot;entries&quot;: { # Metadata entries recorded as key-value pairs.
        &quot;a_key&quot;: &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:

    { # Metadata entries that can be attached to a `Device`. 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;,
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="unclaim">unclaim(partnerId, body=None, x__xgafv=None)</code>
  <pre>Unclaims a device from a customer and removes it from zero-touch enrollment.

Args:
  partnerId: string, Required. The ID of the reseller partner. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message to unclaim a device.
    &quot;vacationModeExpireTime&quot;: &quot;A String&quot;, # The expiration time of the vacation unlock.
    &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). # Required. The device identifier you used when you claimed this 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.
    },
    &quot;deviceId&quot;: &quot;A String&quot;, # Required. The device ID returned by `ClaimDevice`.
    &quot;sectionType&quot;: &quot;A String&quot;, # Required. The section type of the device&#x27;s provisioning record.
    &quot;vacationModeDays&quot;: 42, # The duration of the vacation unlock starting from when the request is processed. (1 day is treated as 24 hours)
  }

  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="unclaimAsync">unclaimAsync(partnerId, body=None, x__xgafv=None)</code>
  <pre>Unclaims a batch of devices for a customer asynchronously. Removes the devices from zero-touch enrollment. To learn more, read [Long‑running batch operations](/zero-touch/guides/how-it-works#operations).

Args:
  partnerId: string, Required. The reseller partner ID. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request to unclaim devices asynchronously in batch.
    &quot;unclaims&quot;: [ # Required. The list of devices to unclaim.
      { # Identifies one unclaim request.
        &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). # Required. Device identifier 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.
        },
        &quot;vacationModeExpireTime&quot;: &quot;A String&quot;, # Optional. The expiration time of the vacation unlock.
        &quot;deviceId&quot;: &quot;A String&quot;, # Required. Device ID of the device.
        &quot;vacationModeDays&quot;: 42, # Optional. The duration of the vacation unlock starting from when the request is processed. (1 day is treated as 24 hours)
        &quot;sectionType&quot;: &quot;A String&quot;, # Required. The section type of the device&#x27;s provisioning record.
      },
    ],
  }

  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;metadata&quot;: { # This field will contain a `DevicesLongRunningOperationMetadata` object if the operation is created by `claimAsync`, `unclaimAsync`, or `updateMetadataAsync`.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &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;response&quot;: { # This field will contain a `DevicesLongRunningOperationResponse` object if the operation is created by `claimAsync`, `unclaimAsync`, or `updateMetadataAsync`.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &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). # This field will always be not set if the operation is created by `claimAsync`, `unclaimAsync`, or `updateMetadataAsync`. In this case, error information for each device is set in `response.perDeviceStatus.result.status`.
      &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;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;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    },
    &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}`.
  }</pre>
</div>

<div class="method">
    <code class="details" id="updateMetadataAsync">updateMetadataAsync(partnerId, body=None, x__xgafv=None)</code>
  <pre>Updates the reseller metadata attached to a batch of devices. This method updates devices asynchronously and returns an `Operation` that can be used to track progress. Read [Long‑running batch operations](/zero-touch/guides/how-it-works#operations).

Args:
  partnerId: string, Required. The reseller partner ID. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request to update device metadata in batch.
    &quot;updates&quot;: [ # Required. The list of metadata updates.
      { # Identifies metadata updates to one 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). # Required. Device identifier.
          &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;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). # Required. The metadata to update.
          &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;, # Required. Device ID of 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;metadata&quot;: { # This field will contain a `DevicesLongRunningOperationMetadata` object if the operation is created by `claimAsync`, `unclaimAsync`, or `updateMetadataAsync`.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &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;response&quot;: { # This field will contain a `DevicesLongRunningOperationResponse` object if the operation is created by `claimAsync`, `unclaimAsync`, or `updateMetadataAsync`.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &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). # This field will always be not set if the operation is created by `claimAsync`, `unclaimAsync`, or `updateMetadataAsync`. In this case, error information for each device is set in `response.perDeviceStatus.result.status`.
      &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;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;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    },
    &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}`.
  }</pre>
</div>

</body></html>