<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.customers.html">customers</a></h1>
<h2>Instance Methods</h2>
<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="#create">create(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a customer for zero-touch enrollment. After the method returns successfully, admin and owner roles can manage devices and EMM configs by calling API methods or using their zero-touch enrollment portal. The customer receives an email that welcomes them to zero-touch enrollment and explains how to sign into the portal.</p>
<p class="toc_element">
  <code><a href="#list">list(partnerId, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists the customers that are enrolled to the reseller identified by the `partnerId` argument. This list includes customers that the reseller created and customers that enrolled themselves using the portal.</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="create">create(parent, body=None, x__xgafv=None)</code>
  <pre>Creates a customer for zero-touch enrollment. After the method returns successfully, admin and owner roles can manage devices and EMM configs by calling API methods or using their zero-touch enrollment portal. The customer receives an email that welcomes them to zero-touch enrollment and explains how to sign into the portal.

Args:
  parent: string, Required. The parent resource ID in the format `partners/[PARTNER_ID]` that identifies the reseller. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message to create a customer.
  &quot;customer&quot;: { # A reseller, vendor, or customer in the zero-touch reseller and customer APIs. # Required. The company data to populate the new customer. Must contain a value for `companyName` and at least one `owner_email` that&#x27;s associated with a Google Account. The values for `companyId` and `name` must be empty.
    &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.
  },
}

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

Returns:
  An object of the form:

    { # 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">list(partnerId, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists the customers that are enrolled to the reseller identified by the `partnerId` argument. This list includes customers that the reseller created and customers that enrolled themselves using the portal.

Args:
  partnerId: string, Required. The ID of the reseller partner. (required)
  pageSize: integer, The maximum number of results to be returned. If not specified or 0, all the records are 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 of all customers related to this partner.
  &quot;customers&quot;: [ # List of customers related to this reseller partner.
    { # 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.
    },
  ],
  &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.
}</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>