<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="#get">get(customerId)</a></code></p>
<p class="firstline">Get a customer account.</p>
<p class="toc_element">
  <code><a href="#insert">insert(body, customerAuthToken=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)</a></code></p>
<p class="firstline">Update a customer account's settings. This method supports patch semantics.</p>
<p class="toc_element">
  <code><a href="#update">update(customerId, body)</a></code></p>
<p class="firstline">Update a customer account's settings.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="get">get(customerId)</code>
  <pre>Get a customer account.

Args:
  customerId: string, Either the customer's primary domain name or the customer'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)

Returns:
  An object of the form:

    { # JSON template for a customer.
      "customerDomain": "A String", # The customer'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.
      "customerDomainVerified": True or False, # Whether the customer's primary domain has been verified.
      "alternateEmail": "A String", # Like the "Customer email" in the reseller tools, this email is the secondary contact used if something happens to the customer'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.
      "kind": "reseller#customer", # Identifies the resource as a customer. Value: reseller#customer
      "resourceUiUrl": "A String", # URL to customer'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.
      "phoneNumber": "A String", # Customer contact phone number. Must start with "+" 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, "123". This field is silently ignored if invalid.
      "postalAddress": { # JSON template for address of a customer. # A customer's address information. Each field has a limit of 255 charcters.
        "kind": "customers#address", # Identifies the resource as a customer address. Value: customers#address
        "organizationName": "A String", # The company or company division name. This is required.
        "countryCode": "A String", # 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.
        "locality": "A String", # An example of a locality value is the city of San Francisco.
        "region": "A String", # An example of a region value is CA for the state of California.
        "addressLine2": "A String", # Line 2 of the address.
        "addressLine3": "A String", # Line 3 of the address.
        "contactName": "A String", # The customer contact's name. This is required.
        "addressLine1": "A String", # A customer's physical address. An address can be composed of one to three lines. The addressline2 and addressLine3 are optional.
        "postalCode": "A String", # A postalCode example is a postal zip code such as 94043. This property is required when creating a new customer.
      },
      "customerId": "A String", # 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.
    }</pre>
</div>

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

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

{ # JSON template for a customer.
    "customerDomain": "A String", # The customer'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.
    "customerDomainVerified": True or False, # Whether the customer's primary domain has been verified.
    "alternateEmail": "A String", # Like the "Customer email" in the reseller tools, this email is the secondary contact used if something happens to the customer'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.
    "kind": "reseller#customer", # Identifies the resource as a customer. Value: reseller#customer
    "resourceUiUrl": "A String", # URL to customer'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.
    "phoneNumber": "A String", # Customer contact phone number. Must start with "+" 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, "123". This field is silently ignored if invalid.
    "postalAddress": { # JSON template for address of a customer. # A customer's address information. Each field has a limit of 255 charcters.
      "kind": "customers#address", # Identifies the resource as a customer address. Value: customers#address
      "organizationName": "A String", # The company or company division name. This is required.
      "countryCode": "A String", # 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.
      "locality": "A String", # An example of a locality value is the city of San Francisco.
      "region": "A String", # An example of a region value is CA for the state of California.
      "addressLine2": "A String", # Line 2 of the address.
      "addressLine3": "A String", # Line 3 of the address.
      "contactName": "A String", # The customer contact's name. This is required.
      "addressLine1": "A String", # A customer's physical address. An address can be composed of one to three lines. The addressline2 and addressLine3 are optional.
      "postalCode": "A String", # A postalCode example is a postal zip code such as 94043. This property is required when creating a new customer.
    },
    "customerId": "A String", # 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.
  }

  customerAuthToken: string, The customerAuthToken query string is required when creating a resold account that transfers a direct customer's subscription or transfers another reseller customer'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.

Returns:
  An object of the form:

    { # JSON template for a customer.
      "customerDomain": "A String", # The customer'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.
      "customerDomainVerified": True or False, # Whether the customer's primary domain has been verified.
      "alternateEmail": "A String", # Like the "Customer email" in the reseller tools, this email is the secondary contact used if something happens to the customer'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.
      "kind": "reseller#customer", # Identifies the resource as a customer. Value: reseller#customer
      "resourceUiUrl": "A String", # URL to customer'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.
      "phoneNumber": "A String", # Customer contact phone number. Must start with "+" 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, "123". This field is silently ignored if invalid.
      "postalAddress": { # JSON template for address of a customer. # A customer's address information. Each field has a limit of 255 charcters.
        "kind": "customers#address", # Identifies the resource as a customer address. Value: customers#address
        "organizationName": "A String", # The company or company division name. This is required.
        "countryCode": "A String", # 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.
        "locality": "A String", # An example of a locality value is the city of San Francisco.
        "region": "A String", # An example of a region value is CA for the state of California.
        "addressLine2": "A String", # Line 2 of the address.
        "addressLine3": "A String", # Line 3 of the address.
        "contactName": "A String", # The customer contact's name. This is required.
        "addressLine1": "A String", # A customer's physical address. An address can be composed of one to three lines. The addressline2 and addressLine3 are optional.
        "postalCode": "A String", # A postalCode example is a postal zip code such as 94043. This property is required when creating a new customer.
      },
      "customerId": "A String", # 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.
    }</pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(customerId, body)</code>
  <pre>Update a customer account's settings. This method supports patch semantics.

Args:
  customerId: string, Either the customer's primary domain name or the customer'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. (required)
    The object takes the form of:

{ # JSON template for a customer.
    "customerDomain": "A String", # The customer'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.
    "customerDomainVerified": True or False, # Whether the customer's primary domain has been verified.
    "alternateEmail": "A String", # Like the "Customer email" in the reseller tools, this email is the secondary contact used if something happens to the customer'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.
    "kind": "reseller#customer", # Identifies the resource as a customer. Value: reseller#customer
    "resourceUiUrl": "A String", # URL to customer'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.
    "phoneNumber": "A String", # Customer contact phone number. Must start with "+" 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, "123". This field is silently ignored if invalid.
    "postalAddress": { # JSON template for address of a customer. # A customer's address information. Each field has a limit of 255 charcters.
      "kind": "customers#address", # Identifies the resource as a customer address. Value: customers#address
      "organizationName": "A String", # The company or company division name. This is required.
      "countryCode": "A String", # 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.
      "locality": "A String", # An example of a locality value is the city of San Francisco.
      "region": "A String", # An example of a region value is CA for the state of California.
      "addressLine2": "A String", # Line 2 of the address.
      "addressLine3": "A String", # Line 3 of the address.
      "contactName": "A String", # The customer contact's name. This is required.
      "addressLine1": "A String", # A customer's physical address. An address can be composed of one to three lines. The addressline2 and addressLine3 are optional.
      "postalCode": "A String", # A postalCode example is a postal zip code such as 94043. This property is required when creating a new customer.
    },
    "customerId": "A String", # 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.
  }


Returns:
  An object of the form:

    { # JSON template for a customer.
      "customerDomain": "A String", # The customer'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.
      "customerDomainVerified": True or False, # Whether the customer's primary domain has been verified.
      "alternateEmail": "A String", # Like the "Customer email" in the reseller tools, this email is the secondary contact used if something happens to the customer'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.
      "kind": "reseller#customer", # Identifies the resource as a customer. Value: reseller#customer
      "resourceUiUrl": "A String", # URL to customer'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.
      "phoneNumber": "A String", # Customer contact phone number. Must start with "+" 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, "123". This field is silently ignored if invalid.
      "postalAddress": { # JSON template for address of a customer. # A customer's address information. Each field has a limit of 255 charcters.
        "kind": "customers#address", # Identifies the resource as a customer address. Value: customers#address
        "organizationName": "A String", # The company or company division name. This is required.
        "countryCode": "A String", # 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.
        "locality": "A String", # An example of a locality value is the city of San Francisco.
        "region": "A String", # An example of a region value is CA for the state of California.
        "addressLine2": "A String", # Line 2 of the address.
        "addressLine3": "A String", # Line 3 of the address.
        "contactName": "A String", # The customer contact's name. This is required.
        "addressLine1": "A String", # A customer's physical address. An address can be composed of one to three lines. The addressline2 and addressLine3 are optional.
        "postalCode": "A String", # A postalCode example is a postal zip code such as 94043. This property is required when creating a new customer.
      },
      "customerId": "A String", # 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.
    }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(customerId, body)</code>
  <pre>Update a customer account's settings.

Args:
  customerId: string, Either the customer's primary domain name or the customer'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. (required)
    The object takes the form of:

{ # JSON template for a customer.
    "customerDomain": "A String", # The customer'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.
    "customerDomainVerified": True or False, # Whether the customer's primary domain has been verified.
    "alternateEmail": "A String", # Like the "Customer email" in the reseller tools, this email is the secondary contact used if something happens to the customer'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.
    "kind": "reseller#customer", # Identifies the resource as a customer. Value: reseller#customer
    "resourceUiUrl": "A String", # URL to customer'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.
    "phoneNumber": "A String", # Customer contact phone number. Must start with "+" 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, "123". This field is silently ignored if invalid.
    "postalAddress": { # JSON template for address of a customer. # A customer's address information. Each field has a limit of 255 charcters.
      "kind": "customers#address", # Identifies the resource as a customer address. Value: customers#address
      "organizationName": "A String", # The company or company division name. This is required.
      "countryCode": "A String", # 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.
      "locality": "A String", # An example of a locality value is the city of San Francisco.
      "region": "A String", # An example of a region value is CA for the state of California.
      "addressLine2": "A String", # Line 2 of the address.
      "addressLine3": "A String", # Line 3 of the address.
      "contactName": "A String", # The customer contact's name. This is required.
      "addressLine1": "A String", # A customer's physical address. An address can be composed of one to three lines. The addressline2 and addressLine3 are optional.
      "postalCode": "A String", # A postalCode example is a postal zip code such as 94043. This property is required when creating a new customer.
    },
    "customerId": "A String", # 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.
  }


Returns:
  An object of the form:

    { # JSON template for a customer.
      "customerDomain": "A String", # The customer'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.
      "customerDomainVerified": True or False, # Whether the customer's primary domain has been verified.
      "alternateEmail": "A String", # Like the "Customer email" in the reseller tools, this email is the secondary contact used if something happens to the customer'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.
      "kind": "reseller#customer", # Identifies the resource as a customer. Value: reseller#customer
      "resourceUiUrl": "A String", # URL to customer'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.
      "phoneNumber": "A String", # Customer contact phone number. Must start with "+" 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, "123". This field is silently ignored if invalid.
      "postalAddress": { # JSON template for address of a customer. # A customer's address information. Each field has a limit of 255 charcters.
        "kind": "customers#address", # Identifies the resource as a customer address. Value: customers#address
        "organizationName": "A String", # The company or company division name. This is required.
        "countryCode": "A String", # 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.
        "locality": "A String", # An example of a locality value is the city of San Francisco.
        "region": "A String", # An example of a region value is CA for the state of California.
        "addressLine2": "A String", # Line 2 of the address.
        "addressLine3": "A String", # Line 3 of the address.
        "contactName": "A String", # The customer contact's name. This is required.
        "addressLine1": "A String", # A customer's physical address. An address can be composed of one to three lines. The addressline2 and addressLine3 are optional.
        "postalCode": "A String", # A postalCode example is a postal zip code such as 94043. This property is required when creating a new customer.
      },
      "customerId": "A String", # 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.
    }</pre>
</div>

</body></html>