<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="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</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="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<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;nextPageToken&quot;: &quot;A String&quot;, # A token to retrieve 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.
  &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;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;companyId&quot;: &quot;A String&quot;, # Output only. The ID of the company. Assigned by the server.
      &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;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;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;termsStatus&quot;: &quot;A String&quot;, # Output only. Whether any user from the company has accepted the latest Terms of Service (ToS). See TermsStatus.
    },
  ],
}</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>