<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="androiddeviceprovisioning_v1.html">Android Device Provisioning Partner API</a> . <a href="androiddeviceprovisioning_v1.customers.html">customers</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="androiddeviceprovisioning_v1.customers.configurations.html">configurations()</a></code>
</p>
<p class="firstline">Returns the configurations Resource.</p>

<p class="toc_element">
  <code><a href="androiddeviceprovisioning_v1.customers.devices.html">devices()</a></code>
</p>
<p class="firstline">Returns the devices Resource.</p>

<p class="toc_element">
  <code><a href="androiddeviceprovisioning_v1.customers.dpcs.html">dpcs()</a></code>
</p>
<p class="firstline">Returns the dpcs Resource.</p>

<p class="toc_element">
  <code><a href="#list">list(pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists the user's customer accounts.</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(pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists the user's customer accounts.

Args:
  pageSize: integer, The maximum number of customers to show in a page of results.
A number between 1 and 100 (inclusive).
  pageToken: string, A token specifying which result page to return.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for listing my customers.
    "nextPageToken": "A String", # A token used to access the next page of results. Omitted if no further
        # results are available.
    "customers": [ # The customer accounts the calling user is a member of.
      { # A reseller, vendor, or customer in the zero-touch reseller and customer APIs.
        "name": "A String", # 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.
        "companyId": "A String", # Output only. The ID of the company. Assigned by the server.
        "companyName": "A String", # Required. The name of the company. For example _XYZ Corp_. Displayed to the
            # company's employees in the zero-touch enrollment portal.
        "ownerEmails": [ # Input only. Email address of customer'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's portal users.
          "A String",
        ],
        "termsStatus": "A String", # Output only. Whether any user from the company has accepted the latest
            # Terms of Service (ToS). See
            # TermsStatus.
        "adminEmails": [ # Input only. Optional. Email address of customer's users in the admin role.
            # Each email address must be associated with a Google Account.
          "A String",
        ],
      },
    ],
  }</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 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>