<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="reseller_v1.html">Enterprise Apps Reseller API</a> . <a href="reseller_v1.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="#get">get(customerId, x__xgafv=None)</a></code></p>
<p class="firstline">Get a customer account.</p>
<p class="toc_element">
  <code><a href="#insert">insert(body=None, customerAuthToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Order a new customer's account.</p>
<p class="toc_element">
  <code><a href="#patch">patch(customerId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Patch a customer account's settings via Apiary Patch Orchestration</p>
<p class="toc_element">
  <code><a href="#update">update(customerId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Update a customer account's settings.</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="get">get(customerId, x__xgafv=None)</code>
  <pre>Get a customer account.

Args:
  customerId: string, Either the customer&#x27;s primary domain name or the customer&#x27;s unique identifier. If using the domain name, we do not recommend using a customerId as a key for persistent data. If the domain name for a customerId is changed, the Google system automatically updates. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # JSON template for a customer.
  &quot;alternateEmail&quot;: &quot;A String&quot;, # Like the &quot;Customer email&quot; in the reseller tools, this email is the secondary contact used if something happens to the customer&#x27;s service such as service outage or a security issue. This property is required when creating a new customer and should not use the same domain as customerDomain .
  &quot;customerDomain&quot;: &quot;A String&quot;, # The customer&#x27;s primary domain name string. customerDomain is required when creating a new customer. Do not include the www prefix in the domain when adding a customer.
  &quot;customerDomainVerified&quot;: True or False, # Whether the customer&#x27;s primary domain has been verified.
  &quot;customerId&quot;: &quot;A String&quot;, # This property will always be returned in a response as the unique identifier generated by Google. In a request, this property can be either the primary domain or the unique identifier generated by Google.
  &quot;kind&quot;: &quot;reseller#customer&quot;, # Identifies the resource as a customer. Value: reseller#customer
  &quot;phoneNumber&quot;: &quot;A String&quot;, # Customer contact phone number. Must start with &quot;+&quot; followed by the country code. The rest of the number can be contiguous numbers or respect the phone local format conventions, but it must be a real phone number and not, for example, &quot;123&quot;. This field is silently ignored if invalid.
  &quot;postalAddress&quot;: { # JSON template for address of a customer. # A customer&#x27;s address information. Each field has a limit of 255 charcters.
    &quot;addressLine1&quot;: &quot;A String&quot;, # A customer&#x27;s physical address. An address can be composed of one to three lines. The addressline2 and addressLine3 are optional.
    &quot;addressLine2&quot;: &quot;A String&quot;, # Line 2 of the address.
    &quot;addressLine3&quot;: &quot;A String&quot;, # Line 3 of the address.
    &quot;contactName&quot;: &quot;A String&quot;, # The customer contact&#x27;s name. This is required.
    &quot;countryCode&quot;: &quot;A String&quot;, # For countryCode information, see the ISO 3166 country code elements. Verify that country is approved for resale of Google products. This property is required when creating a new customer.
    &quot;kind&quot;: &quot;customers#address&quot;, # Identifies the resource as a customer address. Value: customers#address
    &quot;locality&quot;: &quot;A String&quot;, # An example of a locality value is the city of San Francisco.
    &quot;organizationName&quot;: &quot;A String&quot;, # The company or company division name. This is required.
    &quot;postalCode&quot;: &quot;A String&quot;, # A postalCode example is a postal zip code such as 94043. This property is required when creating a new customer.
    &quot;region&quot;: &quot;A String&quot;, # An example of a region value is CA for the state of California.
  },
  &quot;resourceUiUrl&quot;: &quot;A String&quot;, # URL to customer&#x27;s Admin console dashboard. The read-only URL is generated by the API service. This is used if your client application requires the customer to complete a task in the Admin console.
}</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(body=None, customerAuthToken=None, x__xgafv=None)</code>
  <pre>Order a new customer&#x27;s account.

Args:
  body: object, The request body.
    The object takes the form of:

{ # JSON template for a customer.
  &quot;alternateEmail&quot;: &quot;A String&quot;, # Like the &quot;Customer email&quot; in the reseller tools, this email is the secondary contact used if something happens to the customer&#x27;s service such as service outage or a security issue. This property is required when creating a new customer and should not use the same domain as customerDomain .
  &quot;customerDomain&quot;: &quot;A String&quot;, # The customer&#x27;s primary domain name string. customerDomain is required when creating a new customer. Do not include the www prefix in the domain when adding a customer.
  &quot;customerDomainVerified&quot;: True or False, # Whether the customer&#x27;s primary domain has been verified.
  &quot;customerId&quot;: &quot;A String&quot;, # This property will always be returned in a response as the unique identifier generated by Google. In a request, this property can be either the primary domain or the unique identifier generated by Google.
  &quot;kind&quot;: &quot;reseller#customer&quot;, # Identifies the resource as a customer. Value: reseller#customer
  &quot;phoneNumber&quot;: &quot;A String&quot;, # Customer contact phone number. Must start with &quot;+&quot; followed by the country code. The rest of the number can be contiguous numbers or respect the phone local format conventions, but it must be a real phone number and not, for example, &quot;123&quot;. This field is silently ignored if invalid.
  &quot;postalAddress&quot;: { # JSON template for address of a customer. # A customer&#x27;s address information. Each field has a limit of 255 charcters.
    &quot;addressLine1&quot;: &quot;A String&quot;, # A customer&#x27;s physical address. An address can be composed of one to three lines. The addressline2 and addressLine3 are optional.
    &quot;addressLine2&quot;: &quot;A String&quot;, # Line 2 of the address.
    &quot;addressLine3&quot;: &quot;A String&quot;, # Line 3 of the address.
    &quot;contactName&quot;: &quot;A String&quot;, # The customer contact&#x27;s name. This is required.
    &quot;countryCode&quot;: &quot;A String&quot;, # For countryCode information, see the ISO 3166 country code elements. Verify that country is approved for resale of Google products. This property is required when creating a new customer.
    &quot;kind&quot;: &quot;customers#address&quot;, # Identifies the resource as a customer address. Value: customers#address
    &quot;locality&quot;: &quot;A String&quot;, # An example of a locality value is the city of San Francisco.
    &quot;organizationName&quot;: &quot;A String&quot;, # The company or company division name. This is required.
    &quot;postalCode&quot;: &quot;A String&quot;, # A postalCode example is a postal zip code such as 94043. This property is required when creating a new customer.
    &quot;region&quot;: &quot;A String&quot;, # An example of a region value is CA for the state of California.
  },
  &quot;resourceUiUrl&quot;: &quot;A String&quot;, # URL to customer&#x27;s Admin console dashboard. The read-only URL is generated by the API service. This is used if your client application requires the customer to complete a task in the Admin console.
}

  customerAuthToken: string, The customerAuthToken query string is required when creating a resold account that transfers a direct customer&#x27;s subscription or transfers another reseller customer&#x27;s subscription to your reseller management. This is a hexadecimal authentication token needed to complete the subscription transfer. For more information, see the administrator help center.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # JSON template for a customer.
  &quot;alternateEmail&quot;: &quot;A String&quot;, # Like the &quot;Customer email&quot; in the reseller tools, this email is the secondary contact used if something happens to the customer&#x27;s service such as service outage or a security issue. This property is required when creating a new customer and should not use the same domain as customerDomain .
  &quot;customerDomain&quot;: &quot;A String&quot;, # The customer&#x27;s primary domain name string. customerDomain is required when creating a new customer. Do not include the www prefix in the domain when adding a customer.
  &quot;customerDomainVerified&quot;: True or False, # Whether the customer&#x27;s primary domain has been verified.
  &quot;customerId&quot;: &quot;A String&quot;, # This property will always be returned in a response as the unique identifier generated by Google. In a request, this property can be either the primary domain or the unique identifier generated by Google.
  &quot;kind&quot;: &quot;reseller#customer&quot;, # Identifies the resource as a customer. Value: reseller#customer
  &quot;phoneNumber&quot;: &quot;A String&quot;, # Customer contact phone number. Must start with &quot;+&quot; followed by the country code. The rest of the number can be contiguous numbers or respect the phone local format conventions, but it must be a real phone number and not, for example, &quot;123&quot;. This field is silently ignored if invalid.
  &quot;postalAddress&quot;: { # JSON template for address of a customer. # A customer&#x27;s address information. Each field has a limit of 255 charcters.
    &quot;addressLine1&quot;: &quot;A String&quot;, # A customer&#x27;s physical address. An address can be composed of one to three lines. The addressline2 and addressLine3 are optional.
    &quot;addressLine2&quot;: &quot;A String&quot;, # Line 2 of the address.
    &quot;addressLine3&quot;: &quot;A String&quot;, # Line 3 of the address.
    &quot;contactName&quot;: &quot;A String&quot;, # The customer contact&#x27;s name. This is required.
    &quot;countryCode&quot;: &quot;A String&quot;, # For countryCode information, see the ISO 3166 country code elements. Verify that country is approved for resale of Google products. This property is required when creating a new customer.
    &quot;kind&quot;: &quot;customers#address&quot;, # Identifies the resource as a customer address. Value: customers#address
    &quot;locality&quot;: &quot;A String&quot;, # An example of a locality value is the city of San Francisco.
    &quot;organizationName&quot;: &quot;A String&quot;, # The company or company division name. This is required.
    &quot;postalCode&quot;: &quot;A String&quot;, # A postalCode example is a postal zip code such as 94043. This property is required when creating a new customer.
    &quot;region&quot;: &quot;A String&quot;, # An example of a region value is CA for the state of California.
  },
  &quot;resourceUiUrl&quot;: &quot;A String&quot;, # URL to customer&#x27;s Admin console dashboard. The read-only URL is generated by the API service. This is used if your client application requires the customer to complete a task in the Admin console.
}</pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(customerId, body=None, x__xgafv=None)</code>
  <pre>Patch a customer account&#x27;s settings via Apiary Patch Orchestration

Args:
  customerId: string, Either the customer&#x27;s primary domain name or the customer&#x27;s unique identifier. If using the domain name, we do not recommend using a customerId as a key for persistent data. If the domain name for a customerId is changed, the Google system automatically updates. (required)
  body: object, The request body.
    The object takes the form of:

{ # JSON template for a customer.
  &quot;alternateEmail&quot;: &quot;A String&quot;, # Like the &quot;Customer email&quot; in the reseller tools, this email is the secondary contact used if something happens to the customer&#x27;s service such as service outage or a security issue. This property is required when creating a new customer and should not use the same domain as customerDomain .
  &quot;customerDomain&quot;: &quot;A String&quot;, # The customer&#x27;s primary domain name string. customerDomain is required when creating a new customer. Do not include the www prefix in the domain when adding a customer.
  &quot;customerDomainVerified&quot;: True or False, # Whether the customer&#x27;s primary domain has been verified.
  &quot;customerId&quot;: &quot;A String&quot;, # This property will always be returned in a response as the unique identifier generated by Google. In a request, this property can be either the primary domain or the unique identifier generated by Google.
  &quot;kind&quot;: &quot;reseller#customer&quot;, # Identifies the resource as a customer. Value: reseller#customer
  &quot;phoneNumber&quot;: &quot;A String&quot;, # Customer contact phone number. Must start with &quot;+&quot; followed by the country code. The rest of the number can be contiguous numbers or respect the phone local format conventions, but it must be a real phone number and not, for example, &quot;123&quot;. This field is silently ignored if invalid.
  &quot;postalAddress&quot;: { # JSON template for address of a customer. # A customer&#x27;s address information. Each field has a limit of 255 charcters.
    &quot;addressLine1&quot;: &quot;A String&quot;, # A customer&#x27;s physical address. An address can be composed of one to three lines. The addressline2 and addressLine3 are optional.
    &quot;addressLine2&quot;: &quot;A String&quot;, # Line 2 of the address.
    &quot;addressLine3&quot;: &quot;A String&quot;, # Line 3 of the address.
    &quot;contactName&quot;: &quot;A String&quot;, # The customer contact&#x27;s name. This is required.
    &quot;countryCode&quot;: &quot;A String&quot;, # For countryCode information, see the ISO 3166 country code elements. Verify that country is approved for resale of Google products. This property is required when creating a new customer.
    &quot;kind&quot;: &quot;customers#address&quot;, # Identifies the resource as a customer address. Value: customers#address
    &quot;locality&quot;: &quot;A String&quot;, # An example of a locality value is the city of San Francisco.
    &quot;organizationName&quot;: &quot;A String&quot;, # The company or company division name. This is required.
    &quot;postalCode&quot;: &quot;A String&quot;, # A postalCode example is a postal zip code such as 94043. This property is required when creating a new customer.
    &quot;region&quot;: &quot;A String&quot;, # An example of a region value is CA for the state of California.
  },
  &quot;resourceUiUrl&quot;: &quot;A String&quot;, # URL to customer&#x27;s Admin console dashboard. The read-only URL is generated by the API service. This is used if your client application requires the customer to complete a task in the Admin console.
}

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

Returns:
  An object of the form:

    { # JSON template for a customer.
  &quot;alternateEmail&quot;: &quot;A String&quot;, # Like the &quot;Customer email&quot; in the reseller tools, this email is the secondary contact used if something happens to the customer&#x27;s service such as service outage or a security issue. This property is required when creating a new customer and should not use the same domain as customerDomain .
  &quot;customerDomain&quot;: &quot;A String&quot;, # The customer&#x27;s primary domain name string. customerDomain is required when creating a new customer. Do not include the www prefix in the domain when adding a customer.
  &quot;customerDomainVerified&quot;: True or False, # Whether the customer&#x27;s primary domain has been verified.
  &quot;customerId&quot;: &quot;A String&quot;, # This property will always be returned in a response as the unique identifier generated by Google. In a request, this property can be either the primary domain or the unique identifier generated by Google.
  &quot;kind&quot;: &quot;reseller#customer&quot;, # Identifies the resource as a customer. Value: reseller#customer
  &quot;phoneNumber&quot;: &quot;A String&quot;, # Customer contact phone number. Must start with &quot;+&quot; followed by the country code. The rest of the number can be contiguous numbers or respect the phone local format conventions, but it must be a real phone number and not, for example, &quot;123&quot;. This field is silently ignored if invalid.
  &quot;postalAddress&quot;: { # JSON template for address of a customer. # A customer&#x27;s address information. Each field has a limit of 255 charcters.
    &quot;addressLine1&quot;: &quot;A String&quot;, # A customer&#x27;s physical address. An address can be composed of one to three lines. The addressline2 and addressLine3 are optional.
    &quot;addressLine2&quot;: &quot;A String&quot;, # Line 2 of the address.
    &quot;addressLine3&quot;: &quot;A String&quot;, # Line 3 of the address.
    &quot;contactName&quot;: &quot;A String&quot;, # The customer contact&#x27;s name. This is required.
    &quot;countryCode&quot;: &quot;A String&quot;, # For countryCode information, see the ISO 3166 country code elements. Verify that country is approved for resale of Google products. This property is required when creating a new customer.
    &quot;kind&quot;: &quot;customers#address&quot;, # Identifies the resource as a customer address. Value: customers#address
    &quot;locality&quot;: &quot;A String&quot;, # An example of a locality value is the city of San Francisco.
    &quot;organizationName&quot;: &quot;A String&quot;, # The company or company division name. This is required.
    &quot;postalCode&quot;: &quot;A String&quot;, # A postalCode example is a postal zip code such as 94043. This property is required when creating a new customer.
    &quot;region&quot;: &quot;A String&quot;, # An example of a region value is CA for the state of California.
  },
  &quot;resourceUiUrl&quot;: &quot;A String&quot;, # URL to customer&#x27;s Admin console dashboard. The read-only URL is generated by the API service. This is used if your client application requires the customer to complete a task in the Admin console.
}</pre>
</div>

<div class="method">
    <code class="details" id="update">update(customerId, body=None, x__xgafv=None)</code>
  <pre>Update a customer account&#x27;s settings.

Args:
  customerId: string, Either the customer&#x27;s primary domain name or the customer&#x27;s unique identifier. If using the domain name, we do not recommend using a customerId as a key for persistent data. If the domain name for a customerId is changed, the Google system automatically updates. (required)
  body: object, The request body.
    The object takes the form of:

{ # JSON template for a customer.
  &quot;alternateEmail&quot;: &quot;A String&quot;, # Like the &quot;Customer email&quot; in the reseller tools, this email is the secondary contact used if something happens to the customer&#x27;s service such as service outage or a security issue. This property is required when creating a new customer and should not use the same domain as customerDomain .
  &quot;customerDomain&quot;: &quot;A String&quot;, # The customer&#x27;s primary domain name string. customerDomain is required when creating a new customer. Do not include the www prefix in the domain when adding a customer.
  &quot;customerDomainVerified&quot;: True or False, # Whether the customer&#x27;s primary domain has been verified.
  &quot;customerId&quot;: &quot;A String&quot;, # This property will always be returned in a response as the unique identifier generated by Google. In a request, this property can be either the primary domain or the unique identifier generated by Google.
  &quot;kind&quot;: &quot;reseller#customer&quot;, # Identifies the resource as a customer. Value: reseller#customer
  &quot;phoneNumber&quot;: &quot;A String&quot;, # Customer contact phone number. Must start with &quot;+&quot; followed by the country code. The rest of the number can be contiguous numbers or respect the phone local format conventions, but it must be a real phone number and not, for example, &quot;123&quot;. This field is silently ignored if invalid.
  &quot;postalAddress&quot;: { # JSON template for address of a customer. # A customer&#x27;s address information. Each field has a limit of 255 charcters.
    &quot;addressLine1&quot;: &quot;A String&quot;, # A customer&#x27;s physical address. An address can be composed of one to three lines. The addressline2 and addressLine3 are optional.
    &quot;addressLine2&quot;: &quot;A String&quot;, # Line 2 of the address.
    &quot;addressLine3&quot;: &quot;A String&quot;, # Line 3 of the address.
    &quot;contactName&quot;: &quot;A String&quot;, # The customer contact&#x27;s name. This is required.
    &quot;countryCode&quot;: &quot;A String&quot;, # For countryCode information, see the ISO 3166 country code elements. Verify that country is approved for resale of Google products. This property is required when creating a new customer.
    &quot;kind&quot;: &quot;customers#address&quot;, # Identifies the resource as a customer address. Value: customers#address
    &quot;locality&quot;: &quot;A String&quot;, # An example of a locality value is the city of San Francisco.
    &quot;organizationName&quot;: &quot;A String&quot;, # The company or company division name. This is required.
    &quot;postalCode&quot;: &quot;A String&quot;, # A postalCode example is a postal zip code such as 94043. This property is required when creating a new customer.
    &quot;region&quot;: &quot;A String&quot;, # An example of a region value is CA for the state of California.
  },
  &quot;resourceUiUrl&quot;: &quot;A String&quot;, # URL to customer&#x27;s Admin console dashboard. The read-only URL is generated by the API service. This is used if your client application requires the customer to complete a task in the Admin console.
}

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

Returns:
  An object of the form:

    { # JSON template for a customer.
  &quot;alternateEmail&quot;: &quot;A String&quot;, # Like the &quot;Customer email&quot; in the reseller tools, this email is the secondary contact used if something happens to the customer&#x27;s service such as service outage or a security issue. This property is required when creating a new customer and should not use the same domain as customerDomain .
  &quot;customerDomain&quot;: &quot;A String&quot;, # The customer&#x27;s primary domain name string. customerDomain is required when creating a new customer. Do not include the www prefix in the domain when adding a customer.
  &quot;customerDomainVerified&quot;: True or False, # Whether the customer&#x27;s primary domain has been verified.
  &quot;customerId&quot;: &quot;A String&quot;, # This property will always be returned in a response as the unique identifier generated by Google. In a request, this property can be either the primary domain or the unique identifier generated by Google.
  &quot;kind&quot;: &quot;reseller#customer&quot;, # Identifies the resource as a customer. Value: reseller#customer
  &quot;phoneNumber&quot;: &quot;A String&quot;, # Customer contact phone number. Must start with &quot;+&quot; followed by the country code. The rest of the number can be contiguous numbers or respect the phone local format conventions, but it must be a real phone number and not, for example, &quot;123&quot;. This field is silently ignored if invalid.
  &quot;postalAddress&quot;: { # JSON template for address of a customer. # A customer&#x27;s address information. Each field has a limit of 255 charcters.
    &quot;addressLine1&quot;: &quot;A String&quot;, # A customer&#x27;s physical address. An address can be composed of one to three lines. The addressline2 and addressLine3 are optional.
    &quot;addressLine2&quot;: &quot;A String&quot;, # Line 2 of the address.
    &quot;addressLine3&quot;: &quot;A String&quot;, # Line 3 of the address.
    &quot;contactName&quot;: &quot;A String&quot;, # The customer contact&#x27;s name. This is required.
    &quot;countryCode&quot;: &quot;A String&quot;, # For countryCode information, see the ISO 3166 country code elements. Verify that country is approved for resale of Google products. This property is required when creating a new customer.
    &quot;kind&quot;: &quot;customers#address&quot;, # Identifies the resource as a customer address. Value: customers#address
    &quot;locality&quot;: &quot;A String&quot;, # An example of a locality value is the city of San Francisco.
    &quot;organizationName&quot;: &quot;A String&quot;, # The company or company division name. This is required.
    &quot;postalCode&quot;: &quot;A String&quot;, # A postalCode example is a postal zip code such as 94043. This property is required when creating a new customer.
    &quot;region&quot;: &quot;A String&quot;, # An example of a region value is CA for the state of California.
  },
  &quot;resourceUiUrl&quot;: &quot;A String&quot;, # URL to customer&#x27;s Admin console dashboard. The read-only URL is generated by the API service. This is used if your client application requires the customer to complete a task in the Admin console.
}</pre>
</div>

</body></html>