<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.vendors.html">vendors</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="androiddeviceprovisioning_v1.partners.vendors.customers.html">customers()</a></code>
</p>
<p class="firstline">Returns the customers Resource.</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 the vendors of the partner.</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>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists the vendors of the partner.

Args:
  parent: string, Required. The resource name in the format `partners/[PARTNER_ID]`. (required)
  pageSize: integer, The maximum number of results to be returned.
  pageToken: string, A token identifying a page of results returned by the server.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message to list vendors of the partner.
    &quot;vendors&quot;: [ # List of vendors of the reseller partner. Fields `name`, `companyId` and
        # `companyName` are populated to the Company object.
      { # A reseller, vendor, or customer in the zero-touch reseller and customer APIs.
        &quot;companyName&quot;: &quot;A String&quot;, # Required. The name of the company. For example _XYZ Corp_. Displayed to the
            # company&#x27;s employees in the zero-touch enrollment portal.
        &quot;termsStatus&quot;: &quot;A String&quot;, # Output only. Whether any user from the company has accepted the latest
            # Terms of Service (ToS). See
            # TermsStatus.
        &quot;ownerEmails&quot;: [ # Required. Input only. Email address of customer&#x27;s users in the owner role. At least
            # one `owner_email` is required. Each email address must be associated with a
            # Google Account. Owners share the same access as admins but can also add,
            # delete, and edit your organization&#x27;s portal users.
          &quot;A String&quot;,
        ],
        &quot;companyId&quot;: &quot;A String&quot;, # Output only. The ID of the company. Assigned by the server.
        &quot;name&quot;: &quot;A String&quot;, # Output only. The API resource name of the company. The resource name is one
            # of the following formats:
            #
            # * `partners/[PARTNER_ID]/customers/[CUSTOMER_ID]`
            # * `partners/[PARTNER_ID]/vendors/[VENDOR_ID]`
            # * `partners/[PARTNER_ID]/vendors/[VENDOR_ID]/customers/[CUSTOMER_ID]`
            #
            # Assigned by the server.
        &quot;adminEmails&quot;: [ # Optional. Email address of customer&#x27;s users in the admin role.
            # Each email address must be associated with a Google Account.
          &quot;A String&quot;,
        ],
      },
    ],
    &quot;totalSize&quot;: 42, # The total count of items in the list irrespective of pagination.
    &quot;nextPageToken&quot;: &quot;A String&quot;, # A token to retrieve the next page of results. Omitted if no further results
        # are available.
  }</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>

</body></html>