<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;customerId&quot;: &quot;A String&quot;, # Required. The ID of the customer for whom the device is being claimed.
  &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;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;meid&quot;: &quot;A String&quot;, # The device’s MEID number.
    &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;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). # 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;,
    },
  },
  &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:

    { # Response message containing device id of the claim.
  &quot;deviceId&quot;: &quot;A String&quot;, # The device ID of the claimed device.
  &quot;deviceName&quot;: &quot;A String&quot;, # The resource name of the device in the format `partners/[PARTNER_ID]/devices/[DEVICE_ID]`.
}</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;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;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;meid&quot;: &quot;A String&quot;, # The device’s MEID number.
        &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;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;,
        },
      },
      &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;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). # 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;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;: { # 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;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;: { # 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.
  },
}</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;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;meid&quot;: &quot;A String&quot;, # The device’s MEID number.
    &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;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;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;pageToken&quot;: &quot;A String&quot;, # 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 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;resellerId&quot;: &quot;A String&quot;, # The ID of the reseller that claimed the device.
          &quot;sectionType&quot;: &quot;A String&quot;, # Output only. The type of claim made on 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;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;configuration&quot;: &quot;A String&quot;, # Not available to resellers.
      &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;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;meid&quot;: &quot;A String&quot;, # The device’s MEID number.
        &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;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). # 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;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;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;customerId&quot;: [ # Required. The list of customer IDs to search for.
    &quot;A String&quot;,
  ],
  &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;pageToken&quot;: &quot;A String&quot;, # A token specifying which result page to return.
  &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:

    { # 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;resellerId&quot;: &quot;A String&quot;, # The ID of the reseller that claimed the device.
          &quot;sectionType&quot;: &quot;A String&quot;, # Output only. The type of claim made on 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;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;configuration&quot;: &quot;A String&quot;, # Not available to resellers.
      &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;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;meid&quot;: &quot;A String&quot;, # The device’s MEID number.
        &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;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). # 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;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;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;resellerId&quot;: &quot;A String&quot;, # The ID of the reseller that claimed the device.
      &quot;sectionType&quot;: &quot;A String&quot;, # Output only. The type of claim made on 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;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;configuration&quot;: &quot;A String&quot;, # Not available to resellers.
  &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;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;meid&quot;: &quot;A String&quot;, # The device’s MEID number.
    &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;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). # 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;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.
}</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;deviceId&quot;: &quot;A String&quot;, # Required. The device ID returned by `ClaimDevice`.
  &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;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;meid&quot;: &quot;A String&quot;, # The device’s MEID number.
    &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;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;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)
  &quot;vacationModeExpireTime&quot;: &quot;A String&quot;, # The expiration time of the vacation unlock.
}

  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;deviceId&quot;: &quot;A String&quot;, # Required. Device 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). # Required. Device identifier of the device.
        &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;meid&quot;: &quot;A String&quot;, # The device’s MEID number.
        &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;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;sectionType&quot;: &quot;A String&quot;, # Required. The section type of the device&#x27;s provisioning record.
      &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;vacationModeExpireTime&quot;: &quot;A String&quot;, # Optional. The expiration time of the vacation unlock.
    },
  ],
}

  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). # 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;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;: { # 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;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;: { # 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.
  },
}</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;deviceId&quot;: &quot;A String&quot;, # Required. Device 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). # Required. Device identifier.
        &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;meid&quot;: &quot;A String&quot;, # The device’s MEID number.
        &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;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;,
        },
      },
    },
  ],
}

  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). # 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;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;: { # 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;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;: { # 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.
  },
}</pre>
</div>

</body></html>