<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, 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</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.
    "customer": { # 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's associated
        # with a Google Account. The values for `companyId` and `name` must be empty.
      "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.
      "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.
      "companyId": "A String", # Output only. The ID of the company. Assigned by the server.
      "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": [ # Optional. Input only. Email address of customer's users in the admin role.
          # Each email address must be associated with a Google Account.
        "A String",
      ],
    },
  }

  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.
    "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.
    "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.
    "companyId": "A String", # Output only. The ID of the company. Assigned by the server.
    "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": [ # Optional. Input only. 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">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.
    "totalSize": 42, # The total count of items in the list irrespective of pagination.
    "nextPageToken": "A String", # A token to retrieve the next page of results. Omitted if no further results
        # are available.
    "customers": [ # List of customers related to this reseller partner.
      { # 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.
        "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.
        "companyId": "A String", # Output only. The ID of the company. Assigned by the server.
        "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": [ # Optional. Input only. 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>