<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="#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</p>
<p class="toc_element">
  <code><a href="#list">list(partnerId, pageToken=None, pageSize=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists the customers that are enrolled to the reseller identified by the</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="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;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;,
      ],
    },
  }

  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;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;,
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(partnerId, pageToken=None, pageSize=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)
  pageToken: string, A token identifying a page of results returned by the server.
  pageSize: integer, The maximum number of results to be returned. If not specified or 0, all
the records are returned.
  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;nextPageToken&quot;: &quot;A String&quot;, # A token to retrieve the next page of results. Omitted if no further results
        # are available.
    &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;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.
  }</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>