<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="cloudchannel_v1.html">Cloud Channel API</a> . <a href="cloudchannel_v1.accounts.html">accounts</a> . <a href="cloudchannel_v1.accounts.channelPartnerLinks.html">channelPartnerLinks</a> . <a href="cloudchannel_v1.accounts.channelPartnerLinks.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 new Customer resource under the reseller or distributor account. Possible error codes: * PERMISSION_DENIED: The reseller account making the request is different from the reseller account in the API request. * INVALID_ARGUMENT: * Required request parameters are missing or invalid. * Domain field value doesn't match the primary email domain. Return value: The newly created Customer resource.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes the given Customer permanently and irreversibly. Possible error codes: * PERMISSION_DENIED: The account making the request does not own this customer. * INVALID_ARGUMENT: Required request parameters are missing or invalid. * FAILED_PRECONDITION: The customer has existing entitlements. * NOT_FOUND: No Customer resource found for the name in the request.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Returns a requested Customer resource. Possible error codes: * PERMISSION_DENIED: The reseller account making the request is different from the reseller account in the API request. * INVALID_ARGUMENT: Required request parameters are missing or invalid. * NOT_FOUND: The customer resource doesn't exist. Usually the result of an invalid name parameter. Return value: The Customer resource.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">List Customers. Possible error codes: * PERMISSION_DENIED: The reseller account making the request is different from the reseller account in the API request. * INVALID_ARGUMENT: Required request parameters are missing or invalid. Return value: List of Customers, or an empty list if there are no customers.</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>
<p class="toc_element">
  <code><a href="#patch">patch(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates an existing Customer resource for the reseller or distributor. Possible error codes: * PERMISSION_DENIED: The reseller account making the request is different from the reseller account in the API request. * INVALID_ARGUMENT: Required request parameters are missing or invalid. * NOT_FOUND: No Customer resource found for the name in the request. Return value: The updated Customer resource.</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 new Customer resource under the reseller or distributor account. Possible error codes: * PERMISSION_DENIED: The reseller account making the request is different from the reseller account in the API request. * INVALID_ARGUMENT: * Required request parameters are missing or invalid. * Domain field value doesn&#x27;t match the primary email domain. Return value: The newly created Customer resource.

Args:
  parent: string, Required. The resource name of reseller account in which to create the customer. Parent uses the format: accounts/{account_id} (required)
  body: object, The request body.
    The object takes the form of:

{ # Entity representing a customer of a reseller or distributor.
  &quot;alternateEmail&quot;: &quot;A String&quot;, # Secondary contact email. Alternate email and primary contact email are required to have different domains if primary contact email is present. When creating admin.google.com accounts, users get notified credentials at this email. This email address is also used as a recovery email.
  &quot;channelPartnerId&quot;: &quot;A String&quot;, # Cloud Identity ID of the customer&#x27;s channel partner. Populated only if a channel partner exists for this customer.
  &quot;cloudIdentityId&quot;: &quot;A String&quot;, # Output only. Customer&#x27;s cloud_identity_id. Populated only if a Cloud Identity resource exists for this customer.
  &quot;cloudIdentityInfo&quot;: { # Cloud Identity information for the Cloud Channel Customer. # Output only. Cloud Identity information for the customer. Populated only if a Cloud Identity account exists for this customer.
    &quot;adminConsoleUri&quot;: &quot;A String&quot;, # Output only. URI of Customer&#x27;s Admin console dashboard.
    &quot;alternateEmail&quot;: &quot;A String&quot;, # The alternate email.
    &quot;customerType&quot;: &quot;A String&quot;, # CustomerType indicates verification type needed for using services.
    &quot;eduData&quot;: { # Required Edu Attributes # Edu information about the customer.
      &quot;instituteSize&quot;: &quot;A String&quot;, # Size of the institute.
      &quot;instituteType&quot;: &quot;A String&quot;, # Designated institute type of customer.
      &quot;website&quot;: &quot;A String&quot;, # Web address for the edu customer&#x27;s institution.
    },
    &quot;isDomainVerified&quot;: True or False, # Output only. Whether the domain is verified. This field is not returned for a Customer&#x27;s cloud_identity_info resource. Partners can use the domains.get() method of the Workspace SDK&#x27;s Directory API, or listen to the PRIMARY_DOMAIN_VERIFIED Pub/Sub event in to track domain verification of their resolve Workspace customers.
    &quot;languageCode&quot;: &quot;A String&quot;, # Language code.
    &quot;phoneNumber&quot;: &quot;A String&quot;, # Phone number associated with the Cloud Identity.
    &quot;primaryDomain&quot;: &quot;A String&quot;, # Output only. The primary domain name.
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the customer is created.
  &quot;domain&quot;: &quot;A String&quot;, # Required. Primary domain used by the customer. Domain of primary contact email is required to be same as the provided domain.
  &quot;languageCode&quot;: &quot;A String&quot;, # Optional. The BCP-47 language code, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see https://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of the customer. Format: accounts/{account_id}/customers/{customer_id}
  &quot;orgDisplayName&quot;: &quot;A String&quot;, # Required. Name of the organization that the customer entity represents.
  &quot;orgPostalAddress&quot;: { # Represents a postal address, e.g. for postal delivery or payments addresses. Given a postal address, a postal service can deliver items to a premise, P.O. Box or similar. It is not intended to model geographical locations (roads, towns, mountains). In typical usage an address would be created via user input or from importing existing data, depending on the type of process. Advice on address input / editing: - Use an i18n-ready address widget such as https://github.com/google/libaddressinput) - Users should not be presented with UI elements for input or editing of fields outside countries where that field is used. For more guidance on how to use this schema, please see: https://support.google.com/business/answer/6397478 # Required. Address of the organization of the customer entity. Region and zip codes are required to enforce US laws and embargoes. Valid address lines are required for all customers. Language code is discarded. Use the Customer-level language code to set the customer&#x27;s language.
    &quot;addressLines&quot;: [ # Unstructured address lines describing the lower levels of an address. Because values in address_lines do not have type information and may sometimes contain multiple values in a single field (e.g. &quot;Austin, TX&quot;), it is important that the line order is clear. The order of address lines should be &quot;envelope order&quot; for the country/region of the address. In places where this can vary (e.g. Japan), address_language is used to make it explicit (e.g. &quot;ja&quot; for large-to-small ordering and &quot;ja-Latn&quot; or &quot;en&quot; for small-to-large). This way, the most specific line of an address can be selected based on the language. The minimum permitted structural representation of an address consists of a region_code with all remaining information placed in the address_lines. It would be possible to format such an address very approximately without geocoding, but no semantic reasoning could be made about any of the address components until it was at least partially resolved. Creating an address only containing a region_code and address_lines, and then geocoding is the recommended way to handle completely unstructured addresses (as opposed to guessing which parts of the address should be localities or administrative areas).
      &quot;A String&quot;,
    ],
    &quot;administrativeArea&quot;: &quot;A String&quot;, # Optional. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (e.g. &quot;Barcelona&quot; and not &quot;Catalonia&quot;). Many countries don&#x27;t use an administrative area in postal addresses. E.g. in Switzerland this should be left unpopulated.
    &quot;languageCode&quot;: &quot;A String&quot;, # Optional. BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address&#x27; country/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. If this value is not known, it should be omitted (rather than specifying a possibly incorrect default). Examples: &quot;zh-Hant&quot;, &quot;ja&quot;, &quot;ja-Latn&quot;, &quot;en&quot;.
    &quot;locality&quot;: &quot;A String&quot;, # Optional. Generally refers to the city/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world where localities are not well defined or do not fit into this structure well, leave locality empty and use address_lines.
    &quot;organization&quot;: &quot;A String&quot;, # Optional. The name of the organization at the address.
    &quot;postalCode&quot;: &quot;A String&quot;, # Optional. Postal code of the address. Not all countries use or require postal codes to be present, but where they are used, they may trigger additional validation with other parts of the address (e.g. state/zip validation in the U.S.A.).
    &quot;recipients&quot;: [ # Optional. The recipient at the address. This field may, under certain circumstances, contain multiline information. For example, it might contain &quot;care of&quot; information.
      &quot;A String&quot;,
    ],
    &quot;regionCode&quot;: &quot;A String&quot;, # Required. CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See http://cldr.unicode.org/ and http://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: &quot;CH&quot; for Switzerland.
    &quot;revision&quot;: 42, # The schema revision of the `PostalAddress`. This must be set to 0, which is the latest revision. All new revisions **must** be backward compatible with old revisions.
    &quot;sortingCode&quot;: &quot;A String&quot;, # Optional. Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like &quot;CEDEX&quot;, optionally followed by a number (e.g. &quot;CEDEX 7&quot;), or just a number alone, representing the &quot;sector code&quot; (Jamaica), &quot;delivery area indicator&quot; (Malawi) or &quot;post office indicator&quot; (e.g. Côte d&#x27;Ivoire).
    &quot;sublocality&quot;: &quot;A String&quot;, # Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts.
  },
  &quot;primaryContactInfo&quot;: { # Contact information for a customer account. # Primary contact info.
    &quot;displayName&quot;: &quot;A String&quot;, # Output only. Display name of the contact in the customer account. Populated by combining customer first name and last name.
    &quot;email&quot;: &quot;A String&quot;, # Email of the contact in the customer account. Email is required for entitlements that need creation of admin.google.com accounts. The email will be the username used in credentials to access the admin.google.com account.
    &quot;firstName&quot;: &quot;A String&quot;, # First name of the contact in the customer account.
    &quot;lastName&quot;: &quot;A String&quot;, # Last name of the contact in the customer account.
    &quot;phone&quot;: &quot;A String&quot;, # Phone number of the contact in the customer account.
    &quot;title&quot;: &quot;A String&quot;, # Optional. Job title of the contact in the customer account.
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the customer is updated.
}

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

Returns:
  An object of the form:

    { # Entity representing a customer of a reseller or distributor.
  &quot;alternateEmail&quot;: &quot;A String&quot;, # Secondary contact email. Alternate email and primary contact email are required to have different domains if primary contact email is present. When creating admin.google.com accounts, users get notified credentials at this email. This email address is also used as a recovery email.
  &quot;channelPartnerId&quot;: &quot;A String&quot;, # Cloud Identity ID of the customer&#x27;s channel partner. Populated only if a channel partner exists for this customer.
  &quot;cloudIdentityId&quot;: &quot;A String&quot;, # Output only. Customer&#x27;s cloud_identity_id. Populated only if a Cloud Identity resource exists for this customer.
  &quot;cloudIdentityInfo&quot;: { # Cloud Identity information for the Cloud Channel Customer. # Output only. Cloud Identity information for the customer. Populated only if a Cloud Identity account exists for this customer.
    &quot;adminConsoleUri&quot;: &quot;A String&quot;, # Output only. URI of Customer&#x27;s Admin console dashboard.
    &quot;alternateEmail&quot;: &quot;A String&quot;, # The alternate email.
    &quot;customerType&quot;: &quot;A String&quot;, # CustomerType indicates verification type needed for using services.
    &quot;eduData&quot;: { # Required Edu Attributes # Edu information about the customer.
      &quot;instituteSize&quot;: &quot;A String&quot;, # Size of the institute.
      &quot;instituteType&quot;: &quot;A String&quot;, # Designated institute type of customer.
      &quot;website&quot;: &quot;A String&quot;, # Web address for the edu customer&#x27;s institution.
    },
    &quot;isDomainVerified&quot;: True or False, # Output only. Whether the domain is verified. This field is not returned for a Customer&#x27;s cloud_identity_info resource. Partners can use the domains.get() method of the Workspace SDK&#x27;s Directory API, or listen to the PRIMARY_DOMAIN_VERIFIED Pub/Sub event in to track domain verification of their resolve Workspace customers.
    &quot;languageCode&quot;: &quot;A String&quot;, # Language code.
    &quot;phoneNumber&quot;: &quot;A String&quot;, # Phone number associated with the Cloud Identity.
    &quot;primaryDomain&quot;: &quot;A String&quot;, # Output only. The primary domain name.
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the customer is created.
  &quot;domain&quot;: &quot;A String&quot;, # Required. Primary domain used by the customer. Domain of primary contact email is required to be same as the provided domain.
  &quot;languageCode&quot;: &quot;A String&quot;, # Optional. The BCP-47 language code, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see https://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of the customer. Format: accounts/{account_id}/customers/{customer_id}
  &quot;orgDisplayName&quot;: &quot;A String&quot;, # Required. Name of the organization that the customer entity represents.
  &quot;orgPostalAddress&quot;: { # Represents a postal address, e.g. for postal delivery or payments addresses. Given a postal address, a postal service can deliver items to a premise, P.O. Box or similar. It is not intended to model geographical locations (roads, towns, mountains). In typical usage an address would be created via user input or from importing existing data, depending on the type of process. Advice on address input / editing: - Use an i18n-ready address widget such as https://github.com/google/libaddressinput) - Users should not be presented with UI elements for input or editing of fields outside countries where that field is used. For more guidance on how to use this schema, please see: https://support.google.com/business/answer/6397478 # Required. Address of the organization of the customer entity. Region and zip codes are required to enforce US laws and embargoes. Valid address lines are required for all customers. Language code is discarded. Use the Customer-level language code to set the customer&#x27;s language.
    &quot;addressLines&quot;: [ # Unstructured address lines describing the lower levels of an address. Because values in address_lines do not have type information and may sometimes contain multiple values in a single field (e.g. &quot;Austin, TX&quot;), it is important that the line order is clear. The order of address lines should be &quot;envelope order&quot; for the country/region of the address. In places where this can vary (e.g. Japan), address_language is used to make it explicit (e.g. &quot;ja&quot; for large-to-small ordering and &quot;ja-Latn&quot; or &quot;en&quot; for small-to-large). This way, the most specific line of an address can be selected based on the language. The minimum permitted structural representation of an address consists of a region_code with all remaining information placed in the address_lines. It would be possible to format such an address very approximately without geocoding, but no semantic reasoning could be made about any of the address components until it was at least partially resolved. Creating an address only containing a region_code and address_lines, and then geocoding is the recommended way to handle completely unstructured addresses (as opposed to guessing which parts of the address should be localities or administrative areas).
      &quot;A String&quot;,
    ],
    &quot;administrativeArea&quot;: &quot;A String&quot;, # Optional. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (e.g. &quot;Barcelona&quot; and not &quot;Catalonia&quot;). Many countries don&#x27;t use an administrative area in postal addresses. E.g. in Switzerland this should be left unpopulated.
    &quot;languageCode&quot;: &quot;A String&quot;, # Optional. BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address&#x27; country/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. If this value is not known, it should be omitted (rather than specifying a possibly incorrect default). Examples: &quot;zh-Hant&quot;, &quot;ja&quot;, &quot;ja-Latn&quot;, &quot;en&quot;.
    &quot;locality&quot;: &quot;A String&quot;, # Optional. Generally refers to the city/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world where localities are not well defined or do not fit into this structure well, leave locality empty and use address_lines.
    &quot;organization&quot;: &quot;A String&quot;, # Optional. The name of the organization at the address.
    &quot;postalCode&quot;: &quot;A String&quot;, # Optional. Postal code of the address. Not all countries use or require postal codes to be present, but where they are used, they may trigger additional validation with other parts of the address (e.g. state/zip validation in the U.S.A.).
    &quot;recipients&quot;: [ # Optional. The recipient at the address. This field may, under certain circumstances, contain multiline information. For example, it might contain &quot;care of&quot; information.
      &quot;A String&quot;,
    ],
    &quot;regionCode&quot;: &quot;A String&quot;, # Required. CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See http://cldr.unicode.org/ and http://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: &quot;CH&quot; for Switzerland.
    &quot;revision&quot;: 42, # The schema revision of the `PostalAddress`. This must be set to 0, which is the latest revision. All new revisions **must** be backward compatible with old revisions.
    &quot;sortingCode&quot;: &quot;A String&quot;, # Optional. Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like &quot;CEDEX&quot;, optionally followed by a number (e.g. &quot;CEDEX 7&quot;), or just a number alone, representing the &quot;sector code&quot; (Jamaica), &quot;delivery area indicator&quot; (Malawi) or &quot;post office indicator&quot; (e.g. Côte d&#x27;Ivoire).
    &quot;sublocality&quot;: &quot;A String&quot;, # Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts.
  },
  &quot;primaryContactInfo&quot;: { # Contact information for a customer account. # Primary contact info.
    &quot;displayName&quot;: &quot;A String&quot;, # Output only. Display name of the contact in the customer account. Populated by combining customer first name and last name.
    &quot;email&quot;: &quot;A String&quot;, # Email of the contact in the customer account. Email is required for entitlements that need creation of admin.google.com accounts. The email will be the username used in credentials to access the admin.google.com account.
    &quot;firstName&quot;: &quot;A String&quot;, # First name of the contact in the customer account.
    &quot;lastName&quot;: &quot;A String&quot;, # Last name of the contact in the customer account.
    &quot;phone&quot;: &quot;A String&quot;, # Phone number of the contact in the customer account.
    &quot;title&quot;: &quot;A String&quot;, # Optional. Job title of the contact in the customer account.
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the customer is updated.
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes the given Customer permanently and irreversibly. Possible error codes: * PERMISSION_DENIED: The account making the request does not own this customer. * INVALID_ARGUMENT: Required request parameters are missing or invalid. * FAILED_PRECONDITION: The customer has existing entitlements. * NOT_FOUND: No Customer resource found for the name in the request.

Args:
  name: string, Required. The resource name of the customer to delete. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON representation for `Empty` is empty JSON object `{}`.
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Returns a requested Customer resource. Possible error codes: * PERMISSION_DENIED: The reseller account making the request is different from the reseller account in the API request. * INVALID_ARGUMENT: Required request parameters are missing or invalid. * NOT_FOUND: The customer resource doesn&#x27;t exist. Usually the result of an invalid name parameter. Return value: The Customer resource.

Args:
  name: string, Required. The resource name of the customer to retrieve. Name uses the format: accounts/{account_id}/customers/{customer_id} (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Entity representing a customer of a reseller or distributor.
  &quot;alternateEmail&quot;: &quot;A String&quot;, # Secondary contact email. Alternate email and primary contact email are required to have different domains if primary contact email is present. When creating admin.google.com accounts, users get notified credentials at this email. This email address is also used as a recovery email.
  &quot;channelPartnerId&quot;: &quot;A String&quot;, # Cloud Identity ID of the customer&#x27;s channel partner. Populated only if a channel partner exists for this customer.
  &quot;cloudIdentityId&quot;: &quot;A String&quot;, # Output only. Customer&#x27;s cloud_identity_id. Populated only if a Cloud Identity resource exists for this customer.
  &quot;cloudIdentityInfo&quot;: { # Cloud Identity information for the Cloud Channel Customer. # Output only. Cloud Identity information for the customer. Populated only if a Cloud Identity account exists for this customer.
    &quot;adminConsoleUri&quot;: &quot;A String&quot;, # Output only. URI of Customer&#x27;s Admin console dashboard.
    &quot;alternateEmail&quot;: &quot;A String&quot;, # The alternate email.
    &quot;customerType&quot;: &quot;A String&quot;, # CustomerType indicates verification type needed for using services.
    &quot;eduData&quot;: { # Required Edu Attributes # Edu information about the customer.
      &quot;instituteSize&quot;: &quot;A String&quot;, # Size of the institute.
      &quot;instituteType&quot;: &quot;A String&quot;, # Designated institute type of customer.
      &quot;website&quot;: &quot;A String&quot;, # Web address for the edu customer&#x27;s institution.
    },
    &quot;isDomainVerified&quot;: True or False, # Output only. Whether the domain is verified. This field is not returned for a Customer&#x27;s cloud_identity_info resource. Partners can use the domains.get() method of the Workspace SDK&#x27;s Directory API, or listen to the PRIMARY_DOMAIN_VERIFIED Pub/Sub event in to track domain verification of their resolve Workspace customers.
    &quot;languageCode&quot;: &quot;A String&quot;, # Language code.
    &quot;phoneNumber&quot;: &quot;A String&quot;, # Phone number associated with the Cloud Identity.
    &quot;primaryDomain&quot;: &quot;A String&quot;, # Output only. The primary domain name.
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the customer is created.
  &quot;domain&quot;: &quot;A String&quot;, # Required. Primary domain used by the customer. Domain of primary contact email is required to be same as the provided domain.
  &quot;languageCode&quot;: &quot;A String&quot;, # Optional. The BCP-47 language code, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see https://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of the customer. Format: accounts/{account_id}/customers/{customer_id}
  &quot;orgDisplayName&quot;: &quot;A String&quot;, # Required. Name of the organization that the customer entity represents.
  &quot;orgPostalAddress&quot;: { # Represents a postal address, e.g. for postal delivery or payments addresses. Given a postal address, a postal service can deliver items to a premise, P.O. Box or similar. It is not intended to model geographical locations (roads, towns, mountains). In typical usage an address would be created via user input or from importing existing data, depending on the type of process. Advice on address input / editing: - Use an i18n-ready address widget such as https://github.com/google/libaddressinput) - Users should not be presented with UI elements for input or editing of fields outside countries where that field is used. For more guidance on how to use this schema, please see: https://support.google.com/business/answer/6397478 # Required. Address of the organization of the customer entity. Region and zip codes are required to enforce US laws and embargoes. Valid address lines are required for all customers. Language code is discarded. Use the Customer-level language code to set the customer&#x27;s language.
    &quot;addressLines&quot;: [ # Unstructured address lines describing the lower levels of an address. Because values in address_lines do not have type information and may sometimes contain multiple values in a single field (e.g. &quot;Austin, TX&quot;), it is important that the line order is clear. The order of address lines should be &quot;envelope order&quot; for the country/region of the address. In places where this can vary (e.g. Japan), address_language is used to make it explicit (e.g. &quot;ja&quot; for large-to-small ordering and &quot;ja-Latn&quot; or &quot;en&quot; for small-to-large). This way, the most specific line of an address can be selected based on the language. The minimum permitted structural representation of an address consists of a region_code with all remaining information placed in the address_lines. It would be possible to format such an address very approximately without geocoding, but no semantic reasoning could be made about any of the address components until it was at least partially resolved. Creating an address only containing a region_code and address_lines, and then geocoding is the recommended way to handle completely unstructured addresses (as opposed to guessing which parts of the address should be localities or administrative areas).
      &quot;A String&quot;,
    ],
    &quot;administrativeArea&quot;: &quot;A String&quot;, # Optional. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (e.g. &quot;Barcelona&quot; and not &quot;Catalonia&quot;). Many countries don&#x27;t use an administrative area in postal addresses. E.g. in Switzerland this should be left unpopulated.
    &quot;languageCode&quot;: &quot;A String&quot;, # Optional. BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address&#x27; country/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. If this value is not known, it should be omitted (rather than specifying a possibly incorrect default). Examples: &quot;zh-Hant&quot;, &quot;ja&quot;, &quot;ja-Latn&quot;, &quot;en&quot;.
    &quot;locality&quot;: &quot;A String&quot;, # Optional. Generally refers to the city/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world where localities are not well defined or do not fit into this structure well, leave locality empty and use address_lines.
    &quot;organization&quot;: &quot;A String&quot;, # Optional. The name of the organization at the address.
    &quot;postalCode&quot;: &quot;A String&quot;, # Optional. Postal code of the address. Not all countries use or require postal codes to be present, but where they are used, they may trigger additional validation with other parts of the address (e.g. state/zip validation in the U.S.A.).
    &quot;recipients&quot;: [ # Optional. The recipient at the address. This field may, under certain circumstances, contain multiline information. For example, it might contain &quot;care of&quot; information.
      &quot;A String&quot;,
    ],
    &quot;regionCode&quot;: &quot;A String&quot;, # Required. CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See http://cldr.unicode.org/ and http://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: &quot;CH&quot; for Switzerland.
    &quot;revision&quot;: 42, # The schema revision of the `PostalAddress`. This must be set to 0, which is the latest revision. All new revisions **must** be backward compatible with old revisions.
    &quot;sortingCode&quot;: &quot;A String&quot;, # Optional. Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like &quot;CEDEX&quot;, optionally followed by a number (e.g. &quot;CEDEX 7&quot;), or just a number alone, representing the &quot;sector code&quot; (Jamaica), &quot;delivery area indicator&quot; (Malawi) or &quot;post office indicator&quot; (e.g. Côte d&#x27;Ivoire).
    &quot;sublocality&quot;: &quot;A String&quot;, # Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts.
  },
  &quot;primaryContactInfo&quot;: { # Contact information for a customer account. # Primary contact info.
    &quot;displayName&quot;: &quot;A String&quot;, # Output only. Display name of the contact in the customer account. Populated by combining customer first name and last name.
    &quot;email&quot;: &quot;A String&quot;, # Email of the contact in the customer account. Email is required for entitlements that need creation of admin.google.com accounts. The email will be the username used in credentials to access the admin.google.com account.
    &quot;firstName&quot;: &quot;A String&quot;, # First name of the contact in the customer account.
    &quot;lastName&quot;: &quot;A String&quot;, # Last name of the contact in the customer account.
    &quot;phone&quot;: &quot;A String&quot;, # Phone number of the contact in the customer account.
    &quot;title&quot;: &quot;A String&quot;, # Optional. Job title of the contact in the customer account.
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the customer is updated.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>List Customers. Possible error codes: * PERMISSION_DENIED: The reseller account making the request is different from the reseller account in the API request. * INVALID_ARGUMENT: Required request parameters are missing or invalid. Return value: List of Customers, or an empty list if there are no customers.

Args:
  parent: string, Required. The resource name of the reseller account to list customers from. Parent uses the format: accounts/{account_id}. (required)
  pageSize: integer, Optional. The maximum number of customers to return. The service may return fewer than this value. If unspecified, returns at most 10 customers. The maximum value is 50.
  pageToken: string, Optional. A token identifying a page of results other than the first page. Obtained through ListCustomersResponse.next_page_token of the previous CloudChannelService.ListCustomers call.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for CloudChannelService.ListCustomers.
  &quot;customers&quot;: [ # The customers belonging to a reseller or distributor.
    { # Entity representing a customer of a reseller or distributor.
      &quot;alternateEmail&quot;: &quot;A String&quot;, # Secondary contact email. Alternate email and primary contact email are required to have different domains if primary contact email is present. When creating admin.google.com accounts, users get notified credentials at this email. This email address is also used as a recovery email.
      &quot;channelPartnerId&quot;: &quot;A String&quot;, # Cloud Identity ID of the customer&#x27;s channel partner. Populated only if a channel partner exists for this customer.
      &quot;cloudIdentityId&quot;: &quot;A String&quot;, # Output only. Customer&#x27;s cloud_identity_id. Populated only if a Cloud Identity resource exists for this customer.
      &quot;cloudIdentityInfo&quot;: { # Cloud Identity information for the Cloud Channel Customer. # Output only. Cloud Identity information for the customer. Populated only if a Cloud Identity account exists for this customer.
        &quot;adminConsoleUri&quot;: &quot;A String&quot;, # Output only. URI of Customer&#x27;s Admin console dashboard.
        &quot;alternateEmail&quot;: &quot;A String&quot;, # The alternate email.
        &quot;customerType&quot;: &quot;A String&quot;, # CustomerType indicates verification type needed for using services.
        &quot;eduData&quot;: { # Required Edu Attributes # Edu information about the customer.
          &quot;instituteSize&quot;: &quot;A String&quot;, # Size of the institute.
          &quot;instituteType&quot;: &quot;A String&quot;, # Designated institute type of customer.
          &quot;website&quot;: &quot;A String&quot;, # Web address for the edu customer&#x27;s institution.
        },
        &quot;isDomainVerified&quot;: True or False, # Output only. Whether the domain is verified. This field is not returned for a Customer&#x27;s cloud_identity_info resource. Partners can use the domains.get() method of the Workspace SDK&#x27;s Directory API, or listen to the PRIMARY_DOMAIN_VERIFIED Pub/Sub event in to track domain verification of their resolve Workspace customers.
        &quot;languageCode&quot;: &quot;A String&quot;, # Language code.
        &quot;phoneNumber&quot;: &quot;A String&quot;, # Phone number associated with the Cloud Identity.
        &quot;primaryDomain&quot;: &quot;A String&quot;, # Output only. The primary domain name.
      },
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the customer is created.
      &quot;domain&quot;: &quot;A String&quot;, # Required. Primary domain used by the customer. Domain of primary contact email is required to be same as the provided domain.
      &quot;languageCode&quot;: &quot;A String&quot;, # Optional. The BCP-47 language code, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see https://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
      &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of the customer. Format: accounts/{account_id}/customers/{customer_id}
      &quot;orgDisplayName&quot;: &quot;A String&quot;, # Required. Name of the organization that the customer entity represents.
      &quot;orgPostalAddress&quot;: { # Represents a postal address, e.g. for postal delivery or payments addresses. Given a postal address, a postal service can deliver items to a premise, P.O. Box or similar. It is not intended to model geographical locations (roads, towns, mountains). In typical usage an address would be created via user input or from importing existing data, depending on the type of process. Advice on address input / editing: - Use an i18n-ready address widget such as https://github.com/google/libaddressinput) - Users should not be presented with UI elements for input or editing of fields outside countries where that field is used. For more guidance on how to use this schema, please see: https://support.google.com/business/answer/6397478 # Required. Address of the organization of the customer entity. Region and zip codes are required to enforce US laws and embargoes. Valid address lines are required for all customers. Language code is discarded. Use the Customer-level language code to set the customer&#x27;s language.
        &quot;addressLines&quot;: [ # Unstructured address lines describing the lower levels of an address. Because values in address_lines do not have type information and may sometimes contain multiple values in a single field (e.g. &quot;Austin, TX&quot;), it is important that the line order is clear. The order of address lines should be &quot;envelope order&quot; for the country/region of the address. In places where this can vary (e.g. Japan), address_language is used to make it explicit (e.g. &quot;ja&quot; for large-to-small ordering and &quot;ja-Latn&quot; or &quot;en&quot; for small-to-large). This way, the most specific line of an address can be selected based on the language. The minimum permitted structural representation of an address consists of a region_code with all remaining information placed in the address_lines. It would be possible to format such an address very approximately without geocoding, but no semantic reasoning could be made about any of the address components until it was at least partially resolved. Creating an address only containing a region_code and address_lines, and then geocoding is the recommended way to handle completely unstructured addresses (as opposed to guessing which parts of the address should be localities or administrative areas).
          &quot;A String&quot;,
        ],
        &quot;administrativeArea&quot;: &quot;A String&quot;, # Optional. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (e.g. &quot;Barcelona&quot; and not &quot;Catalonia&quot;). Many countries don&#x27;t use an administrative area in postal addresses. E.g. in Switzerland this should be left unpopulated.
        &quot;languageCode&quot;: &quot;A String&quot;, # Optional. BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address&#x27; country/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. If this value is not known, it should be omitted (rather than specifying a possibly incorrect default). Examples: &quot;zh-Hant&quot;, &quot;ja&quot;, &quot;ja-Latn&quot;, &quot;en&quot;.
        &quot;locality&quot;: &quot;A String&quot;, # Optional. Generally refers to the city/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world where localities are not well defined or do not fit into this structure well, leave locality empty and use address_lines.
        &quot;organization&quot;: &quot;A String&quot;, # Optional. The name of the organization at the address.
        &quot;postalCode&quot;: &quot;A String&quot;, # Optional. Postal code of the address. Not all countries use or require postal codes to be present, but where they are used, they may trigger additional validation with other parts of the address (e.g. state/zip validation in the U.S.A.).
        &quot;recipients&quot;: [ # Optional. The recipient at the address. This field may, under certain circumstances, contain multiline information. For example, it might contain &quot;care of&quot; information.
          &quot;A String&quot;,
        ],
        &quot;regionCode&quot;: &quot;A String&quot;, # Required. CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See http://cldr.unicode.org/ and http://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: &quot;CH&quot; for Switzerland.
        &quot;revision&quot;: 42, # The schema revision of the `PostalAddress`. This must be set to 0, which is the latest revision. All new revisions **must** be backward compatible with old revisions.
        &quot;sortingCode&quot;: &quot;A String&quot;, # Optional. Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like &quot;CEDEX&quot;, optionally followed by a number (e.g. &quot;CEDEX 7&quot;), or just a number alone, representing the &quot;sector code&quot; (Jamaica), &quot;delivery area indicator&quot; (Malawi) or &quot;post office indicator&quot; (e.g. Côte d&#x27;Ivoire).
        &quot;sublocality&quot;: &quot;A String&quot;, # Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts.
      },
      &quot;primaryContactInfo&quot;: { # Contact information for a customer account. # Primary contact info.
        &quot;displayName&quot;: &quot;A String&quot;, # Output only. Display name of the contact in the customer account. Populated by combining customer first name and last name.
        &quot;email&quot;: &quot;A String&quot;, # Email of the contact in the customer account. Email is required for entitlements that need creation of admin.google.com accounts. The email will be the username used in credentials to access the admin.google.com account.
        &quot;firstName&quot;: &quot;A String&quot;, # First name of the contact in the customer account.
        &quot;lastName&quot;: &quot;A String&quot;, # Last name of the contact in the customer account.
        &quot;phone&quot;: &quot;A String&quot;, # Phone number of the contact in the customer account.
        &quot;title&quot;: &quot;A String&quot;, # Optional. Job title of the contact in the customer account.
      },
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the customer is updated.
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token to retrieve the next page of results. Pass to ListCustomersRequest.page_token to obtain that page.
}</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>

<div class="method">
    <code class="details" id="patch">patch(name, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates an existing Customer resource for the reseller or distributor. Possible error codes: * PERMISSION_DENIED: The reseller account making the request is different from the reseller account in the API request. * INVALID_ARGUMENT: Required request parameters are missing or invalid. * NOT_FOUND: No Customer resource found for the name in the request. Return value: The updated Customer resource.

Args:
  name: string, Output only. Resource name of the customer. Format: accounts/{account_id}/customers/{customer_id} (required)
  body: object, The request body.
    The object takes the form of:

{ # Entity representing a customer of a reseller or distributor.
  &quot;alternateEmail&quot;: &quot;A String&quot;, # Secondary contact email. Alternate email and primary contact email are required to have different domains if primary contact email is present. When creating admin.google.com accounts, users get notified credentials at this email. This email address is also used as a recovery email.
  &quot;channelPartnerId&quot;: &quot;A String&quot;, # Cloud Identity ID of the customer&#x27;s channel partner. Populated only if a channel partner exists for this customer.
  &quot;cloudIdentityId&quot;: &quot;A String&quot;, # Output only. Customer&#x27;s cloud_identity_id. Populated only if a Cloud Identity resource exists for this customer.
  &quot;cloudIdentityInfo&quot;: { # Cloud Identity information for the Cloud Channel Customer. # Output only. Cloud Identity information for the customer. Populated only if a Cloud Identity account exists for this customer.
    &quot;adminConsoleUri&quot;: &quot;A String&quot;, # Output only. URI of Customer&#x27;s Admin console dashboard.
    &quot;alternateEmail&quot;: &quot;A String&quot;, # The alternate email.
    &quot;customerType&quot;: &quot;A String&quot;, # CustomerType indicates verification type needed for using services.
    &quot;eduData&quot;: { # Required Edu Attributes # Edu information about the customer.
      &quot;instituteSize&quot;: &quot;A String&quot;, # Size of the institute.
      &quot;instituteType&quot;: &quot;A String&quot;, # Designated institute type of customer.
      &quot;website&quot;: &quot;A String&quot;, # Web address for the edu customer&#x27;s institution.
    },
    &quot;isDomainVerified&quot;: True or False, # Output only. Whether the domain is verified. This field is not returned for a Customer&#x27;s cloud_identity_info resource. Partners can use the domains.get() method of the Workspace SDK&#x27;s Directory API, or listen to the PRIMARY_DOMAIN_VERIFIED Pub/Sub event in to track domain verification of their resolve Workspace customers.
    &quot;languageCode&quot;: &quot;A String&quot;, # Language code.
    &quot;phoneNumber&quot;: &quot;A String&quot;, # Phone number associated with the Cloud Identity.
    &quot;primaryDomain&quot;: &quot;A String&quot;, # Output only. The primary domain name.
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the customer is created.
  &quot;domain&quot;: &quot;A String&quot;, # Required. Primary domain used by the customer. Domain of primary contact email is required to be same as the provided domain.
  &quot;languageCode&quot;: &quot;A String&quot;, # Optional. The BCP-47 language code, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see https://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of the customer. Format: accounts/{account_id}/customers/{customer_id}
  &quot;orgDisplayName&quot;: &quot;A String&quot;, # Required. Name of the organization that the customer entity represents.
  &quot;orgPostalAddress&quot;: { # Represents a postal address, e.g. for postal delivery or payments addresses. Given a postal address, a postal service can deliver items to a premise, P.O. Box or similar. It is not intended to model geographical locations (roads, towns, mountains). In typical usage an address would be created via user input or from importing existing data, depending on the type of process. Advice on address input / editing: - Use an i18n-ready address widget such as https://github.com/google/libaddressinput) - Users should not be presented with UI elements for input or editing of fields outside countries where that field is used. For more guidance on how to use this schema, please see: https://support.google.com/business/answer/6397478 # Required. Address of the organization of the customer entity. Region and zip codes are required to enforce US laws and embargoes. Valid address lines are required for all customers. Language code is discarded. Use the Customer-level language code to set the customer&#x27;s language.
    &quot;addressLines&quot;: [ # Unstructured address lines describing the lower levels of an address. Because values in address_lines do not have type information and may sometimes contain multiple values in a single field (e.g. &quot;Austin, TX&quot;), it is important that the line order is clear. The order of address lines should be &quot;envelope order&quot; for the country/region of the address. In places where this can vary (e.g. Japan), address_language is used to make it explicit (e.g. &quot;ja&quot; for large-to-small ordering and &quot;ja-Latn&quot; or &quot;en&quot; for small-to-large). This way, the most specific line of an address can be selected based on the language. The minimum permitted structural representation of an address consists of a region_code with all remaining information placed in the address_lines. It would be possible to format such an address very approximately without geocoding, but no semantic reasoning could be made about any of the address components until it was at least partially resolved. Creating an address only containing a region_code and address_lines, and then geocoding is the recommended way to handle completely unstructured addresses (as opposed to guessing which parts of the address should be localities or administrative areas).
      &quot;A String&quot;,
    ],
    &quot;administrativeArea&quot;: &quot;A String&quot;, # Optional. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (e.g. &quot;Barcelona&quot; and not &quot;Catalonia&quot;). Many countries don&#x27;t use an administrative area in postal addresses. E.g. in Switzerland this should be left unpopulated.
    &quot;languageCode&quot;: &quot;A String&quot;, # Optional. BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address&#x27; country/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. If this value is not known, it should be omitted (rather than specifying a possibly incorrect default). Examples: &quot;zh-Hant&quot;, &quot;ja&quot;, &quot;ja-Latn&quot;, &quot;en&quot;.
    &quot;locality&quot;: &quot;A String&quot;, # Optional. Generally refers to the city/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world where localities are not well defined or do not fit into this structure well, leave locality empty and use address_lines.
    &quot;organization&quot;: &quot;A String&quot;, # Optional. The name of the organization at the address.
    &quot;postalCode&quot;: &quot;A String&quot;, # Optional. Postal code of the address. Not all countries use or require postal codes to be present, but where they are used, they may trigger additional validation with other parts of the address (e.g. state/zip validation in the U.S.A.).
    &quot;recipients&quot;: [ # Optional. The recipient at the address. This field may, under certain circumstances, contain multiline information. For example, it might contain &quot;care of&quot; information.
      &quot;A String&quot;,
    ],
    &quot;regionCode&quot;: &quot;A String&quot;, # Required. CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See http://cldr.unicode.org/ and http://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: &quot;CH&quot; for Switzerland.
    &quot;revision&quot;: 42, # The schema revision of the `PostalAddress`. This must be set to 0, which is the latest revision. All new revisions **must** be backward compatible with old revisions.
    &quot;sortingCode&quot;: &quot;A String&quot;, # Optional. Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like &quot;CEDEX&quot;, optionally followed by a number (e.g. &quot;CEDEX 7&quot;), or just a number alone, representing the &quot;sector code&quot; (Jamaica), &quot;delivery area indicator&quot; (Malawi) or &quot;post office indicator&quot; (e.g. Côte d&#x27;Ivoire).
    &quot;sublocality&quot;: &quot;A String&quot;, # Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts.
  },
  &quot;primaryContactInfo&quot;: { # Contact information for a customer account. # Primary contact info.
    &quot;displayName&quot;: &quot;A String&quot;, # Output only. Display name of the contact in the customer account. Populated by combining customer first name and last name.
    &quot;email&quot;: &quot;A String&quot;, # Email of the contact in the customer account. Email is required for entitlements that need creation of admin.google.com accounts. The email will be the username used in credentials to access the admin.google.com account.
    &quot;firstName&quot;: &quot;A String&quot;, # First name of the contact in the customer account.
    &quot;lastName&quot;: &quot;A String&quot;, # Last name of the contact in the customer account.
    &quot;phone&quot;: &quot;A String&quot;, # Phone number of the contact in the customer account.
    &quot;title&quot;: &quot;A String&quot;, # Optional. Job title of the contact in the customer account.
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the customer is updated.
}

  updateMask: string, The update mask that applies to the resource. Optional.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Entity representing a customer of a reseller or distributor.
  &quot;alternateEmail&quot;: &quot;A String&quot;, # Secondary contact email. Alternate email and primary contact email are required to have different domains if primary contact email is present. When creating admin.google.com accounts, users get notified credentials at this email. This email address is also used as a recovery email.
  &quot;channelPartnerId&quot;: &quot;A String&quot;, # Cloud Identity ID of the customer&#x27;s channel partner. Populated only if a channel partner exists for this customer.
  &quot;cloudIdentityId&quot;: &quot;A String&quot;, # Output only. Customer&#x27;s cloud_identity_id. Populated only if a Cloud Identity resource exists for this customer.
  &quot;cloudIdentityInfo&quot;: { # Cloud Identity information for the Cloud Channel Customer. # Output only. Cloud Identity information for the customer. Populated only if a Cloud Identity account exists for this customer.
    &quot;adminConsoleUri&quot;: &quot;A String&quot;, # Output only. URI of Customer&#x27;s Admin console dashboard.
    &quot;alternateEmail&quot;: &quot;A String&quot;, # The alternate email.
    &quot;customerType&quot;: &quot;A String&quot;, # CustomerType indicates verification type needed for using services.
    &quot;eduData&quot;: { # Required Edu Attributes # Edu information about the customer.
      &quot;instituteSize&quot;: &quot;A String&quot;, # Size of the institute.
      &quot;instituteType&quot;: &quot;A String&quot;, # Designated institute type of customer.
      &quot;website&quot;: &quot;A String&quot;, # Web address for the edu customer&#x27;s institution.
    },
    &quot;isDomainVerified&quot;: True or False, # Output only. Whether the domain is verified. This field is not returned for a Customer&#x27;s cloud_identity_info resource. Partners can use the domains.get() method of the Workspace SDK&#x27;s Directory API, or listen to the PRIMARY_DOMAIN_VERIFIED Pub/Sub event in to track domain verification of their resolve Workspace customers.
    &quot;languageCode&quot;: &quot;A String&quot;, # Language code.
    &quot;phoneNumber&quot;: &quot;A String&quot;, # Phone number associated with the Cloud Identity.
    &quot;primaryDomain&quot;: &quot;A String&quot;, # Output only. The primary domain name.
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the customer is created.
  &quot;domain&quot;: &quot;A String&quot;, # Required. Primary domain used by the customer. Domain of primary contact email is required to be same as the provided domain.
  &quot;languageCode&quot;: &quot;A String&quot;, # Optional. The BCP-47 language code, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see https://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of the customer. Format: accounts/{account_id}/customers/{customer_id}
  &quot;orgDisplayName&quot;: &quot;A String&quot;, # Required. Name of the organization that the customer entity represents.
  &quot;orgPostalAddress&quot;: { # Represents a postal address, e.g. for postal delivery or payments addresses. Given a postal address, a postal service can deliver items to a premise, P.O. Box or similar. It is not intended to model geographical locations (roads, towns, mountains). In typical usage an address would be created via user input or from importing existing data, depending on the type of process. Advice on address input / editing: - Use an i18n-ready address widget such as https://github.com/google/libaddressinput) - Users should not be presented with UI elements for input or editing of fields outside countries where that field is used. For more guidance on how to use this schema, please see: https://support.google.com/business/answer/6397478 # Required. Address of the organization of the customer entity. Region and zip codes are required to enforce US laws and embargoes. Valid address lines are required for all customers. Language code is discarded. Use the Customer-level language code to set the customer&#x27;s language.
    &quot;addressLines&quot;: [ # Unstructured address lines describing the lower levels of an address. Because values in address_lines do not have type information and may sometimes contain multiple values in a single field (e.g. &quot;Austin, TX&quot;), it is important that the line order is clear. The order of address lines should be &quot;envelope order&quot; for the country/region of the address. In places where this can vary (e.g. Japan), address_language is used to make it explicit (e.g. &quot;ja&quot; for large-to-small ordering and &quot;ja-Latn&quot; or &quot;en&quot; for small-to-large). This way, the most specific line of an address can be selected based on the language. The minimum permitted structural representation of an address consists of a region_code with all remaining information placed in the address_lines. It would be possible to format such an address very approximately without geocoding, but no semantic reasoning could be made about any of the address components until it was at least partially resolved. Creating an address only containing a region_code and address_lines, and then geocoding is the recommended way to handle completely unstructured addresses (as opposed to guessing which parts of the address should be localities or administrative areas).
      &quot;A String&quot;,
    ],
    &quot;administrativeArea&quot;: &quot;A String&quot;, # Optional. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (e.g. &quot;Barcelona&quot; and not &quot;Catalonia&quot;). Many countries don&#x27;t use an administrative area in postal addresses. E.g. in Switzerland this should be left unpopulated.
    &quot;languageCode&quot;: &quot;A String&quot;, # Optional. BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address&#x27; country/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. If this value is not known, it should be omitted (rather than specifying a possibly incorrect default). Examples: &quot;zh-Hant&quot;, &quot;ja&quot;, &quot;ja-Latn&quot;, &quot;en&quot;.
    &quot;locality&quot;: &quot;A String&quot;, # Optional. Generally refers to the city/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world where localities are not well defined or do not fit into this structure well, leave locality empty and use address_lines.
    &quot;organization&quot;: &quot;A String&quot;, # Optional. The name of the organization at the address.
    &quot;postalCode&quot;: &quot;A String&quot;, # Optional. Postal code of the address. Not all countries use or require postal codes to be present, but where they are used, they may trigger additional validation with other parts of the address (e.g. state/zip validation in the U.S.A.).
    &quot;recipients&quot;: [ # Optional. The recipient at the address. This field may, under certain circumstances, contain multiline information. For example, it might contain &quot;care of&quot; information.
      &quot;A String&quot;,
    ],
    &quot;regionCode&quot;: &quot;A String&quot;, # Required. CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See http://cldr.unicode.org/ and http://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: &quot;CH&quot; for Switzerland.
    &quot;revision&quot;: 42, # The schema revision of the `PostalAddress`. This must be set to 0, which is the latest revision. All new revisions **must** be backward compatible with old revisions.
    &quot;sortingCode&quot;: &quot;A String&quot;, # Optional. Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like &quot;CEDEX&quot;, optionally followed by a number (e.g. &quot;CEDEX 7&quot;), or just a number alone, representing the &quot;sector code&quot; (Jamaica), &quot;delivery area indicator&quot; (Malawi) or &quot;post office indicator&quot; (e.g. Côte d&#x27;Ivoire).
    &quot;sublocality&quot;: &quot;A String&quot;, # Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts.
  },
  &quot;primaryContactInfo&quot;: { # Contact information for a customer account. # Primary contact info.
    &quot;displayName&quot;: &quot;A String&quot;, # Output only. Display name of the contact in the customer account. Populated by combining customer first name and last name.
    &quot;email&quot;: &quot;A String&quot;, # Email of the contact in the customer account. Email is required for entitlements that need creation of admin.google.com accounts. The email will be the username used in credentials to access the admin.google.com account.
    &quot;firstName&quot;: &quot;A String&quot;, # First name of the contact in the customer account.
    &quot;lastName&quot;: &quot;A String&quot;, # Last name of the contact in the customer account.
    &quot;phone&quot;: &quot;A String&quot;, # Phone number of the contact in the customer account.
    &quot;title&quot;: &quot;A String&quot;, # Optional. Job title of the contact in the customer account.
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the customer is updated.
}</pre>
</div>

</body></html>