<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.customers.html">customers</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="cloudchannel_v1.accounts.customers.entitlements.html">entitlements()</a></code>
</p>
<p class="firstline">Returns the entitlements Resource.</p>

<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. 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 the 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="#import_">import_(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Imports a Customer from the Cloud Identity associated with the provided Cloud Identity ID or domain before a TransferEntitlements call. If a linked Customer already exists and overwrite_if_exists is true, it will update that Customer's data. Possible error codes: * PERMISSION_DENIED: The reseller account making the request is different from the reseller account in the API request. * NOT_FOUND: Cloud Identity doesn't exist or was deleted. * INVALID_ARGUMENT: Required parameters are missing, or the auth_token is expired or invalid. * ALREADY_EXISTS: A customer already exists and has conflicting critical fields. Requires an overwrite. Return value: The Customer.</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="#listPurchasableOffers">listPurchasableOffers(customer, changeOfferPurchase_entitlement=None, changeOfferPurchase_newSku=None, createEntitlementPurchase_sku=None, languageCode=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists the following: * Offers that you can purchase for a customer. * Offers that you can change for an entitlement. Possible error codes: * PERMISSION_DENIED: The customer doesn't belong to the reseller * INVALID_ARGUMENT: Required request parameters are missing or invalid.</p>
<p class="toc_element">
  <code><a href="#listPurchasableOffers_next">listPurchasableOffers_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="#listPurchasableSkus">listPurchasableSkus(customer, changeOfferPurchase_changeType=None, changeOfferPurchase_entitlement=None, createEntitlementPurchase_product=None, languageCode=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists the following: * SKUs that you can purchase for a customer * SKUs that you can upgrade or downgrade for an entitlement. Possible error codes: * PERMISSION_DENIED: The customer doesn't belong to the reseller. * INVALID_ARGUMENT: Required request parameters are missing or invalid.</p>
<p class="toc_element">
  <code><a href="#listPurchasableSkus_next">listPurchasableSkus_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="#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>
<p class="toc_element">
  <code><a href="#provisionCloudIdentity">provisionCloudIdentity(customer, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a Cloud Identity for the given customer using the customer's information, or the information provided here. Possible error codes: * PERMISSION_DENIED: The customer doesn't belong to the reseller. * INVALID_ARGUMENT: Required request parameters are missing or invalid. * NOT_FOUND: The customer was not found. * ALREADY_EXISTS: The customer's primary email already exists. Retry after changing the customer's primary contact email. * INTERNAL: Any non-user error related to a technical issue in the backend. Contact Cloud Channel support. * UNKNOWN: Any non-user error related to a technical issue in the backend. Contact Cloud Channel support. Return value: The ID of a long-running operation. To get the results of the operation, call the GetOperation method of CloudChannelOperationsService. The Operation metadata contains an instance of OperationMetadata.</p>
<p class="toc_element">
  <code><a href="#transferEntitlements">transferEntitlements(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Transfers customer entitlements to new reseller. Possible error codes: * PERMISSION_DENIED: The customer doesn't belong to the reseller. * INVALID_ARGUMENT: Required request parameters are missing or invalid. * NOT_FOUND: The customer or offer resource was not found. * ALREADY_EXISTS: The SKU was already transferred for the customer. * CONDITION_NOT_MET or FAILED_PRECONDITION: * The SKU requires domain verification to transfer, but the domain is not verified. * An Add-On SKU (example, Vault or Drive) is missing the pre-requisite SKU (example, G Suite Basic). * (Developer accounts only) Reseller and resold domain must meet the following naming requirements: * Domain names must start with goog-test. * Domain names must include the reseller domain. * Specify all transferring entitlements. * INTERNAL: Any non-user error related to a technical issue in the backend. Contact Cloud Channel support. * UNKNOWN: Any non-user error related to a technical issue in the backend. Contact Cloud Channel support. Return value: The ID of a long-running operation. To get the results of the operation, call the GetOperation method of CloudChannelOperationsService. The Operation metadata will contain an instance of OperationMetadata.</p>
<p class="toc_element">
  <code><a href="#transferEntitlementsToGoogle">transferEntitlementsToGoogle(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Transfers customer entitlements from their current reseller to Google. Possible error codes: * PERMISSION_DENIED: The customer doesn't belong to the reseller. * INVALID_ARGUMENT: Required request parameters are missing or invalid. * NOT_FOUND: The customer or offer resource was not found. * ALREADY_EXISTS: The SKU was already transferred for the customer. * CONDITION_NOT_MET or FAILED_PRECONDITION: * The SKU requires domain verification to transfer, but the domain is not verified. * An Add-On SKU (example, Vault or Drive) is missing the pre-requisite SKU (example, G Suite Basic). * (Developer accounts only) Reseller and resold domain must meet the following naming requirements: * Domain names must start with goog-test. * Domain names must include the reseller domain. * INTERNAL: Any non-user error related to a technical issue in the backend. Contact Cloud Channel support. * UNKNOWN: Any non-user error related to a technical issue in the backend. Contact Cloud Channel support. Return value: The ID of a long-running operation. To get the results of the operation, call the GetOperation method of CloudChannelOperationsService. The response will contain google.protobuf.Empty on success. The Operation metadata will contain an instance of OperationMetadata.</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. You need to provide an alternate email to create different domains if a primary contact email already exists. Users will receive a notification with credentials when you create an admin.google.com account. Secondary emails are also recovery email addresses. Alternate emails are optional when you create Team customers.
  &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. The customer&#x27;s Cloud Identity ID if the customer has a Cloud Identity resource.
  &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. Time when the customer was created.
  &quot;domain&quot;: &quot;A String&quot;, # Required. The customer&#x27;s primary domain. Must match the primary contact email&#x27;s 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. The organization address for the customer. To enforce US laws and embargoes, we require a region and zip code. You must provide valid addresses for every customer. To set the customer&#x27;s language, use the Customer-level language code.
    &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. The customer account contact&#x27;s display name, formatted as a combination of the customer&#x27;s first and last name.
    &quot;email&quot;: &quot;A String&quot;, # The customer account&#x27;s contact email. Required for entitlements that create admin.google.com accounts, and serves as the customer&#x27;s username for those accounts. Use this email to invite Team customers.
    &quot;firstName&quot;: &quot;A String&quot;, # The customer account contact&#x27;s first name. Optional for Team customers.
    &quot;lastName&quot;: &quot;A String&quot;, # The customer account contact&#x27;s last name. Optional for Team customers.
    &quot;phone&quot;: &quot;A String&quot;, # The customer account&#x27;s contact phone number.
    &quot;title&quot;: &quot;A String&quot;, # Optional. The customer account contact&#x27;s job title.
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Time when the customer was 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. You need to provide an alternate email to create different domains if a primary contact email already exists. Users will receive a notification with credentials when you create an admin.google.com account. Secondary emails are also recovery email addresses. Alternate emails are optional when you create Team customers.
  &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. The customer&#x27;s Cloud Identity ID if the customer has a Cloud Identity resource.
  &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. Time when the customer was created.
  &quot;domain&quot;: &quot;A String&quot;, # Required. The customer&#x27;s primary domain. Must match the primary contact email&#x27;s 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. The organization address for the customer. To enforce US laws and embargoes, we require a region and zip code. You must provide valid addresses for every customer. To set the customer&#x27;s language, use the Customer-level language code.
    &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. The customer account contact&#x27;s display name, formatted as a combination of the customer&#x27;s first and last name.
    &quot;email&quot;: &quot;A String&quot;, # The customer account&#x27;s contact email. Required for entitlements that create admin.google.com accounts, and serves as the customer&#x27;s username for those accounts. Use this email to invite Team customers.
    &quot;firstName&quot;: &quot;A String&quot;, # The customer account contact&#x27;s first name. Optional for Team customers.
    &quot;lastName&quot;: &quot;A String&quot;, # The customer account contact&#x27;s last name. Optional for Team customers.
    &quot;phone&quot;: &quot;A String&quot;, # The customer account&#x27;s contact phone number.
    &quot;title&quot;: &quot;A String&quot;, # Optional. The customer account contact&#x27;s job title.
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Time when the customer was updated.
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes the given Customer permanently. 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 the 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. You need to provide an alternate email to create different domains if a primary contact email already exists. Users will receive a notification with credentials when you create an admin.google.com account. Secondary emails are also recovery email addresses. Alternate emails are optional when you create Team customers.
  &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. The customer&#x27;s Cloud Identity ID if the customer has a Cloud Identity resource.
  &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. Time when the customer was created.
  &quot;domain&quot;: &quot;A String&quot;, # Required. The customer&#x27;s primary domain. Must match the primary contact email&#x27;s 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. The organization address for the customer. To enforce US laws and embargoes, we require a region and zip code. You must provide valid addresses for every customer. To set the customer&#x27;s language, use the Customer-level language code.
    &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. The customer account contact&#x27;s display name, formatted as a combination of the customer&#x27;s first and last name.
    &quot;email&quot;: &quot;A String&quot;, # The customer account&#x27;s contact email. Required for entitlements that create admin.google.com accounts, and serves as the customer&#x27;s username for those accounts. Use this email to invite Team customers.
    &quot;firstName&quot;: &quot;A String&quot;, # The customer account contact&#x27;s first name. Optional for Team customers.
    &quot;lastName&quot;: &quot;A String&quot;, # The customer account contact&#x27;s last name. Optional for Team customers.
    &quot;phone&quot;: &quot;A String&quot;, # The customer account&#x27;s contact phone number.
    &quot;title&quot;: &quot;A String&quot;, # Optional. The customer account contact&#x27;s job title.
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Time when the customer was updated.
}</pre>
</div>

<div class="method">
    <code class="details" id="import_">import_(parent, body=None, x__xgafv=None)</code>
  <pre>Imports a Customer from the Cloud Identity associated with the provided Cloud Identity ID or domain before a TransferEntitlements call. If a linked Customer already exists and overwrite_if_exists is true, it will update that Customer&#x27;s data. Possible error codes: * PERMISSION_DENIED: The reseller account making the request is different from the reseller account in the API request. * NOT_FOUND: Cloud Identity doesn&#x27;t exist or was deleted. * INVALID_ARGUMENT: Required parameters are missing, or the auth_token is expired or invalid. * ALREADY_EXISTS: A customer already exists and has conflicting critical fields. Requires an overwrite. Return value: The Customer.

Args:
  parent: string, Required. The resource name of the reseller&#x27;s account. Parent takes the format: accounts/{account_id} or accounts/{account_id}/channelPartnerLinks/{channel_partner_id} (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for CloudChannelService.ImportCustomer
  &quot;authToken&quot;: &quot;A String&quot;, # Optional. The super admin of the resold customer generates this token to authorize a reseller to access their Cloud Identity and purchase entitlements on their behalf. You can omit this token after authorization. See https://support.google.com/a/answer/7643790 for more details.
  &quot;channelPartnerId&quot;: &quot;A String&quot;, # Optional. Cloud Identity ID of a channel partner who will be the direct reseller for the customer&#x27;s order. This field is required for 2-tier transfer scenarios and can be provided via the request Parent binding as well.
  &quot;cloudIdentityId&quot;: &quot;A String&quot;, # Required. Customer&#x27;s Cloud Identity ID
  &quot;customer&quot;: &quot;A String&quot;, # Optional. Specifies the customer that will receive imported Cloud Identity information. Format: accounts/{account_id}/customers/{customer_id}
  &quot;domain&quot;: &quot;A String&quot;, # Required. Customer domain.
  &quot;overwriteIfExists&quot;: True or False, # Required. Choose to overwrite an existing customer if found. This must be set to true if there is an existing customer with a conflicting region code or domain.
}

  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. You need to provide an alternate email to create different domains if a primary contact email already exists. Users will receive a notification with credentials when you create an admin.google.com account. Secondary emails are also recovery email addresses. Alternate emails are optional when you create Team customers.
  &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. The customer&#x27;s Cloud Identity ID if the customer has a Cloud Identity resource.
  &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. Time when the customer was created.
  &quot;domain&quot;: &quot;A String&quot;, # Required. The customer&#x27;s primary domain. Must match the primary contact email&#x27;s 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. The organization address for the customer. To enforce US laws and embargoes, we require a region and zip code. You must provide valid addresses for every customer. To set the customer&#x27;s language, use the Customer-level language code.
    &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. The customer account contact&#x27;s display name, formatted as a combination of the customer&#x27;s first and last name.
    &quot;email&quot;: &quot;A String&quot;, # The customer account&#x27;s contact email. Required for entitlements that create admin.google.com accounts, and serves as the customer&#x27;s username for those accounts. Use this email to invite Team customers.
    &quot;firstName&quot;: &quot;A String&quot;, # The customer account contact&#x27;s first name. Optional for Team customers.
    &quot;lastName&quot;: &quot;A String&quot;, # The customer account contact&#x27;s last name. Optional for Team customers.
    &quot;phone&quot;: &quot;A String&quot;, # The customer account&#x27;s contact phone number.
    &quot;title&quot;: &quot;A String&quot;, # Optional. The customer account contact&#x27;s job title.
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Time when the customer was 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. You need to provide an alternate email to create different domains if a primary contact email already exists. Users will receive a notification with credentials when you create an admin.google.com account. Secondary emails are also recovery email addresses. Alternate emails are optional when you create Team customers.
      &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. The customer&#x27;s Cloud Identity ID if the customer has a Cloud Identity resource.
      &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. Time when the customer was created.
      &quot;domain&quot;: &quot;A String&quot;, # Required. The customer&#x27;s primary domain. Must match the primary contact email&#x27;s 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. The organization address for the customer. To enforce US laws and embargoes, we require a region and zip code. You must provide valid addresses for every customer. To set the customer&#x27;s language, use the Customer-level language code.
        &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. The customer account contact&#x27;s display name, formatted as a combination of the customer&#x27;s first and last name.
        &quot;email&quot;: &quot;A String&quot;, # The customer account&#x27;s contact email. Required for entitlements that create admin.google.com accounts, and serves as the customer&#x27;s username for those accounts. Use this email to invite Team customers.
        &quot;firstName&quot;: &quot;A String&quot;, # The customer account contact&#x27;s first name. Optional for Team customers.
        &quot;lastName&quot;: &quot;A String&quot;, # The customer account contact&#x27;s last name. Optional for Team customers.
        &quot;phone&quot;: &quot;A String&quot;, # The customer account&#x27;s contact phone number.
        &quot;title&quot;: &quot;A String&quot;, # Optional. The customer account contact&#x27;s job title.
      },
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Time when the customer was 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="listPurchasableOffers">listPurchasableOffers(customer, changeOfferPurchase_entitlement=None, changeOfferPurchase_newSku=None, createEntitlementPurchase_sku=None, languageCode=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists the following: * Offers that you can purchase for a customer. * Offers that you can change for an entitlement. Possible error codes: * PERMISSION_DENIED: The customer doesn&#x27;t belong to the reseller * INVALID_ARGUMENT: Required request parameters are missing or invalid.

Args:
  customer: string, Required. The resource name of the customer to list Offers for. Format: accounts/{account_id}/customers/{customer_id}. (required)
  changeOfferPurchase_entitlement: string, Required. Resource name of the entitlement. Format: accounts/{account_id}/customers/{customer_id}/entitlements/{entitlement_id}
  changeOfferPurchase_newSku: string, Optional. Resource name of the new target SKU. Provide this SKU when upgrading or downgrading an entitlement. Format: products/{product_id}/skus/{sku_id}
  createEntitlementPurchase_sku: string, Required. SKU that the result should be restricted to. Format: products/{product_id}/skus/{sku_id}.
  languageCode: string, Optional. The BCP-47 language code. For example, &quot;en-US&quot;. The response will localize in the corresponding language code, if specified. The default value is &quot;en-US&quot;.
  pageSize: integer, Optional. Requested page size. Server might return fewer results than requested. If unspecified, returns at most 100 Offers. The maximum value is 1000; the server will coerce values above 1000.
  pageToken: string, Optional. A token for a page of results other than the first page.
  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 ListPurchasableOffers.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token to retrieve the next page of results.
  &quot;purchasableOffers&quot;: [ # The list of Offers requested.
    { # Offer that you can purchase for a customer. This is used in the ListPurchasableOffer API response.
      &quot;offer&quot;: { # Represents an offer made to resellers for purchase. An offer is associated with a Sku, has a plan for payment, a price, and defines the constraints for buying. # Offer.
        &quot;constraints&quot;: { # Represents the constraints for buying the Offer. # Constraints on transacting the Offer.
          &quot;customerConstraints&quot;: { # Represents constraints required to purchase the Offer for a customer. # Represents constraints required to purchase the Offer for a customer.
            &quot;allowedCustomerTypes&quot;: [ # Allowed Customer Type.
              &quot;A String&quot;,
            ],
            &quot;allowedRegions&quot;: [ # Allowed geographical regions of the customer.
              &quot;A String&quot;,
            ],
            &quot;promotionalOrderTypes&quot;: [ # Allowed Promotional Order Type. Present for Promotional offers.
              &quot;A String&quot;,
            ],
          },
        },
        &quot;endTime&quot;: &quot;A String&quot;, # Output only. End of the Offer validity time.
        &quot;marketingInfo&quot;: { # Represents the marketing information for a Product, SKU or Offer. # Marketing information for the Offer.
          &quot;defaultLogo&quot;: { # Represents media information. # Default logo.
            &quot;content&quot;: &quot;A String&quot;, # URL of the media.
            &quot;title&quot;: &quot;A String&quot;, # Title of the media.
            &quot;type&quot;: &quot;A String&quot;, # Type of the media.
          },
          &quot;description&quot;: &quot;A String&quot;, # Human readable description. Description can contain HTML.
          &quot;displayName&quot;: &quot;A String&quot;, # Human readable name.
        },
        &quot;name&quot;: &quot;A String&quot;, # Resource Name of the Offer. Format: accounts/{account_id}/offers/{offer_id}
        &quot;parameterDefinitions&quot;: [ # Parameters required to use current Offer to purchase.
          { # Parameter&#x27;s definition. Specifies what parameter is required to use the current Offer to purchase.
            &quot;allowedValues&quot;: [ # If not empty, parameter values must be drawn from this list. For example, [us-west1, us-west2, ...] Applicable to STRING parameter type.
              { # Data type and value of a parameter.
                &quot;boolValue&quot;: True or False, # Represents a boolean value.
                &quot;doubleValue&quot;: 3.14, # Represents a double value.
                &quot;int64Value&quot;: &quot;A String&quot;, # Represents an int64 value.
                &quot;protoValue&quot;: { # Represents an &#x27;Any&#x27; proto value.
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
                &quot;stringValue&quot;: &quot;A String&quot;, # Represents a string value.
              },
            ],
            &quot;maxValue&quot;: { # Data type and value of a parameter. # Maximum value of the parameter, if applicable. Inclusive. For example, maximum seats when purchasing Google Workspace Business Standard. Applicable to INT64 and DOUBLE parameter types.
              &quot;boolValue&quot;: True or False, # Represents a boolean value.
              &quot;doubleValue&quot;: 3.14, # Represents a double value.
              &quot;int64Value&quot;: &quot;A String&quot;, # Represents an int64 value.
              &quot;protoValue&quot;: { # Represents an &#x27;Any&#x27; proto value.
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
              },
              &quot;stringValue&quot;: &quot;A String&quot;, # Represents a string value.
            },
            &quot;minValue&quot;: { # Data type and value of a parameter. # Minimal value of the parameter, if applicable. Inclusive. For example, minimal commitment when purchasing Anthos is 0.01. Applicable to INT64 and DOUBLE parameter types.
              &quot;boolValue&quot;: True or False, # Represents a boolean value.
              &quot;doubleValue&quot;: 3.14, # Represents a double value.
              &quot;int64Value&quot;: &quot;A String&quot;, # Represents an int64 value.
              &quot;protoValue&quot;: { # Represents an &#x27;Any&#x27; proto value.
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
              },
              &quot;stringValue&quot;: &quot;A String&quot;, # Represents a string value.
            },
            &quot;name&quot;: &quot;A String&quot;, # Name of the parameter.
            &quot;optional&quot;: True or False, # If set to true, parameter is optional to purchase this Offer.
            &quot;parameterType&quot;: &quot;A String&quot;, # Data type of the parameter. Minimal value, Maximum value and allowed values will use specified data type here.
          },
        ],
        &quot;plan&quot;: { # The payment plan for the Offer. Describes how to make a payment. # Describes the payment plan for the Offer.
          &quot;billingAccount&quot;: &quot;A String&quot;, # Reseller Billing account to charge after an offer transaction. Only present for Google Cloud Platform offers.
          &quot;paymentCycle&quot;: { # Represents period in days/months/years. # Describes how frequently the reseller will be billed, such as once per month.
            &quot;duration&quot;: 42, # Total duration of Period Type defined.
            &quot;periodType&quot;: &quot;A String&quot;, # Period Type.
          },
          &quot;paymentPlan&quot;: &quot;A String&quot;, # Describes how a reseller will be billed.
          &quot;paymentType&quot;: &quot;A String&quot;, # Specifies when the payment needs to happen.
          &quot;trialPeriod&quot;: { # Represents period in days/months/years. # Present for Offers with a trial period. For trial-only Offers, a paid service needs to start before the trial period ends for continued service. For Regular Offers with a trial period, the regular pricing goes into effect when trial period ends, or if paid service is started before the end of the trial period.
            &quot;duration&quot;: 42, # Total duration of Period Type defined.
            &quot;periodType&quot;: &quot;A String&quot;, # Period Type.
          },
        },
        &quot;priceByResources&quot;: [ # Price for each monetizable resource type.
          { # Represents price by resource type.
            &quot;price&quot;: { # Represents the price of the Offer. # Price of the Offer. Present if there are no price phases.
              &quot;basePrice&quot;: { # Represents an amount of money with its currency type. # Base price.
                &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
                &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
                &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
              },
              &quot;discount&quot;: 3.14, # Discount percentage, represented as decimal. For example, a 20% discount will be represent as 0.2.
              &quot;effectivePrice&quot;: { # Represents an amount of money with its currency type. # Effective Price after applying the discounts.
                &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
                &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
                &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
              },
              &quot;externalPriceUri&quot;: &quot;A String&quot;, # Link to external price list, such as link to Google Voice rate card.
            },
            &quot;pricePhases&quot;: [ # Specifies the price by time range.
              { # Specifies the price by the duration of months. For example, a 20% discount for the first six months, then a 10% discount starting on the seventh month.
                &quot;firstPeriod&quot;: 42, # Defines first period for the phase.
                &quot;lastPeriod&quot;: 42, # Defines first period for the phase.
                &quot;periodType&quot;: &quot;A String&quot;, # Defines the phase period type.
                &quot;price&quot;: { # Represents the price of the Offer. # Price of the phase. Present if there are no price tiers.
                  &quot;basePrice&quot;: { # Represents an amount of money with its currency type. # Base price.
                    &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
                    &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
                    &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
                  },
                  &quot;discount&quot;: 3.14, # Discount percentage, represented as decimal. For example, a 20% discount will be represent as 0.2.
                  &quot;effectivePrice&quot;: { # Represents an amount of money with its currency type. # Effective Price after applying the discounts.
                    &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
                    &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
                    &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
                  },
                  &quot;externalPriceUri&quot;: &quot;A String&quot;, # Link to external price list, such as link to Google Voice rate card.
                },
                &quot;priceTiers&quot;: [ # Price by the resource tiers.
                  { # Defines price at resource tier level. For example, an offer with following definition : * Tier 1: Provide 25% discount for all seats between 1 and 25. * Tier 2: Provide 10% discount for all seats between 26 and 100. * Tier 3: Provide flat 15% discount for all seats above 100. Each of these tiers is represented as a PriceTier.
                    &quot;firstResource&quot;: 42, # First resource for which the tier price applies.
                    &quot;lastResource&quot;: 42, # Last resource for which the tier price applies.
                    &quot;price&quot;: { # Represents the price of the Offer. # Price of the tier.
                      &quot;basePrice&quot;: { # Represents an amount of money with its currency type. # Base price.
                        &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
                        &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
                        &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
                      },
                      &quot;discount&quot;: 3.14, # Discount percentage, represented as decimal. For example, a 20% discount will be represent as 0.2.
                      &quot;effectivePrice&quot;: { # Represents an amount of money with its currency type. # Effective Price after applying the discounts.
                        &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
                        &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
                        &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
                      },
                      &quot;externalPriceUri&quot;: &quot;A String&quot;, # Link to external price list, such as link to Google Voice rate card.
                    },
                  },
                ],
              },
            ],
            &quot;resourceType&quot;: &quot;A String&quot;, # Resource Type. Example: SEAT
          },
        ],
        &quot;sku&quot;: { # Represents a product&#x27;s purchasable Stock Keeping Unit (SKU). SKUs represent the different variations of the product. For example, Google Workspace Business Standard and Google Workspace Business Plus are Google Workspace product SKUs. # SKU the offer is associated with.
          &quot;marketingInfo&quot;: { # Represents the marketing information for a Product, SKU or Offer. # Marketing information for the SKU.
            &quot;defaultLogo&quot;: { # Represents media information. # Default logo.
              &quot;content&quot;: &quot;A String&quot;, # URL of the media.
              &quot;title&quot;: &quot;A String&quot;, # Title of the media.
              &quot;type&quot;: &quot;A String&quot;, # Type of the media.
            },
            &quot;description&quot;: &quot;A String&quot;, # Human readable description. Description can contain HTML.
            &quot;displayName&quot;: &quot;A String&quot;, # Human readable name.
          },
          &quot;name&quot;: &quot;A String&quot;, # Resource Name of the SKU. Format: products/{product_id}/skus/{sku_id}
          &quot;product&quot;: { # A Product is the entity a customer uses when placing an order. For example, Google Workspace, Google Voice, etc. # Product the SKU is associated with.
            &quot;marketingInfo&quot;: { # Represents the marketing information for a Product, SKU or Offer. # Marketing information for the product.
              &quot;defaultLogo&quot;: { # Represents media information. # Default logo.
                &quot;content&quot;: &quot;A String&quot;, # URL of the media.
                &quot;title&quot;: &quot;A String&quot;, # Title of the media.
                &quot;type&quot;: &quot;A String&quot;, # Type of the media.
              },
              &quot;description&quot;: &quot;A String&quot;, # Human readable description. Description can contain HTML.
              &quot;displayName&quot;: &quot;A String&quot;, # Human readable name.
            },
            &quot;name&quot;: &quot;A String&quot;, # Resource Name of the Product. Format: products/{product_id}
          },
        },
        &quot;startTime&quot;: &quot;A String&quot;, # Start of the Offer validity time.
      },
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="listPurchasableOffers_next">listPurchasableOffers_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="listPurchasableSkus">listPurchasableSkus(customer, changeOfferPurchase_changeType=None, changeOfferPurchase_entitlement=None, createEntitlementPurchase_product=None, languageCode=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists the following: * SKUs that you can purchase for a customer * SKUs that you can upgrade or downgrade for an entitlement. Possible error codes: * PERMISSION_DENIED: The customer doesn&#x27;t belong to the reseller. * INVALID_ARGUMENT: Required request parameters are missing or invalid.

Args:
  customer: string, Required. The resource name of the customer to list SKUs for. Format: accounts/{account_id}/customers/{customer_id}. (required)
  changeOfferPurchase_changeType: string, Required. Change Type for the entitlement.
    Allowed values
      CHANGE_TYPE_UNSPECIFIED - Not used.
      UPGRADE - SKU is an upgrade on the current entitlement.
      DOWNGRADE - SKU is a downgrade on the current entitlement.
  changeOfferPurchase_entitlement: string, Required. Resource name of the entitlement. Format: accounts/{account_id}/customers/{customer_id}/entitlements/{entitlement_id}
  createEntitlementPurchase_product: string, Required. List SKUs belonging to this Product. Format: products/{product_id}. Supports products/- to retrieve SKUs for all products.
  languageCode: string, Optional. The BCP-47 language code. For example, &quot;en-US&quot;. The response will localize in the corresponding language code, if specified. The default value is &quot;en-US&quot;.
  pageSize: integer, Optional. Requested page size. Server might return fewer results than requested. If unspecified, returns at most 100 SKUs. The maximum value is 1000; the server will coerce values above 1000.
  pageToken: string, Optional. A token for a page of results other than the first page.
  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 ListPurchasableSkus.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token to retrieve the next page of results.
  &quot;purchasableSkus&quot;: [ # The list of SKUs requested.
    { # SKU that you can purchase. This is used in ListPurchasableSku API response.
      &quot;sku&quot;: { # Represents a product&#x27;s purchasable Stock Keeping Unit (SKU). SKUs represent the different variations of the product. For example, Google Workspace Business Standard and Google Workspace Business Plus are Google Workspace product SKUs. # SKU
        &quot;marketingInfo&quot;: { # Represents the marketing information for a Product, SKU or Offer. # Marketing information for the SKU.
          &quot;defaultLogo&quot;: { # Represents media information. # Default logo.
            &quot;content&quot;: &quot;A String&quot;, # URL of the media.
            &quot;title&quot;: &quot;A String&quot;, # Title of the media.
            &quot;type&quot;: &quot;A String&quot;, # Type of the media.
          },
          &quot;description&quot;: &quot;A String&quot;, # Human readable description. Description can contain HTML.
          &quot;displayName&quot;: &quot;A String&quot;, # Human readable name.
        },
        &quot;name&quot;: &quot;A String&quot;, # Resource Name of the SKU. Format: products/{product_id}/skus/{sku_id}
        &quot;product&quot;: { # A Product is the entity a customer uses when placing an order. For example, Google Workspace, Google Voice, etc. # Product the SKU is associated with.
          &quot;marketingInfo&quot;: { # Represents the marketing information for a Product, SKU or Offer. # Marketing information for the product.
            &quot;defaultLogo&quot;: { # Represents media information. # Default logo.
              &quot;content&quot;: &quot;A String&quot;, # URL of the media.
              &quot;title&quot;: &quot;A String&quot;, # Title of the media.
              &quot;type&quot;: &quot;A String&quot;, # Type of the media.
            },
            &quot;description&quot;: &quot;A String&quot;, # Human readable description. Description can contain HTML.
            &quot;displayName&quot;: &quot;A String&quot;, # Human readable name.
          },
          &quot;name&quot;: &quot;A String&quot;, # Resource Name of the Product. Format: products/{product_id}
        },
      },
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="listPurchasableSkus_next">listPurchasableSkus_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="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. You need to provide an alternate email to create different domains if a primary contact email already exists. Users will receive a notification with credentials when you create an admin.google.com account. Secondary emails are also recovery email addresses. Alternate emails are optional when you create Team customers.
  &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. The customer&#x27;s Cloud Identity ID if the customer has a Cloud Identity resource.
  &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. Time when the customer was created.
  &quot;domain&quot;: &quot;A String&quot;, # Required. The customer&#x27;s primary domain. Must match the primary contact email&#x27;s 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. The organization address for the customer. To enforce US laws and embargoes, we require a region and zip code. You must provide valid addresses for every customer. To set the customer&#x27;s language, use the Customer-level language code.
    &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. The customer account contact&#x27;s display name, formatted as a combination of the customer&#x27;s first and last name.
    &quot;email&quot;: &quot;A String&quot;, # The customer account&#x27;s contact email. Required for entitlements that create admin.google.com accounts, and serves as the customer&#x27;s username for those accounts. Use this email to invite Team customers.
    &quot;firstName&quot;: &quot;A String&quot;, # The customer account contact&#x27;s first name. Optional for Team customers.
    &quot;lastName&quot;: &quot;A String&quot;, # The customer account contact&#x27;s last name. Optional for Team customers.
    &quot;phone&quot;: &quot;A String&quot;, # The customer account&#x27;s contact phone number.
    &quot;title&quot;: &quot;A String&quot;, # Optional. The customer account contact&#x27;s job title.
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Time when the customer was 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. You need to provide an alternate email to create different domains if a primary contact email already exists. Users will receive a notification with credentials when you create an admin.google.com account. Secondary emails are also recovery email addresses. Alternate emails are optional when you create Team customers.
  &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. The customer&#x27;s Cloud Identity ID if the customer has a Cloud Identity resource.
  &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. Time when the customer was created.
  &quot;domain&quot;: &quot;A String&quot;, # Required. The customer&#x27;s primary domain. Must match the primary contact email&#x27;s 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. The organization address for the customer. To enforce US laws and embargoes, we require a region and zip code. You must provide valid addresses for every customer. To set the customer&#x27;s language, use the Customer-level language code.
    &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. The customer account contact&#x27;s display name, formatted as a combination of the customer&#x27;s first and last name.
    &quot;email&quot;: &quot;A String&quot;, # The customer account&#x27;s contact email. Required for entitlements that create admin.google.com accounts, and serves as the customer&#x27;s username for those accounts. Use this email to invite Team customers.
    &quot;firstName&quot;: &quot;A String&quot;, # The customer account contact&#x27;s first name. Optional for Team customers.
    &quot;lastName&quot;: &quot;A String&quot;, # The customer account contact&#x27;s last name. Optional for Team customers.
    &quot;phone&quot;: &quot;A String&quot;, # The customer account&#x27;s contact phone number.
    &quot;title&quot;: &quot;A String&quot;, # Optional. The customer account contact&#x27;s job title.
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Time when the customer was updated.
}</pre>
</div>

<div class="method">
    <code class="details" id="provisionCloudIdentity">provisionCloudIdentity(customer, body=None, x__xgafv=None)</code>
  <pre>Creates a Cloud Identity for the given customer using the customer&#x27;s information, or the information provided here. Possible error codes: * PERMISSION_DENIED: The customer doesn&#x27;t belong to the reseller. * INVALID_ARGUMENT: Required request parameters are missing or invalid. * NOT_FOUND: The customer was not found. * ALREADY_EXISTS: The customer&#x27;s primary email already exists. Retry after changing the customer&#x27;s primary contact email. * INTERNAL: Any non-user error related to a technical issue in the backend. Contact Cloud Channel support. * UNKNOWN: Any non-user error related to a technical issue in the backend. Contact Cloud Channel support. Return value: The ID of a long-running operation. To get the results of the operation, call the GetOperation method of CloudChannelOperationsService. The Operation metadata contains an instance of OperationMetadata.

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

{ # Request message for CloudChannelService.ProvisionCloudIdentity
  &quot;cloudIdentityInfo&quot;: { # Cloud Identity information for the Cloud Channel Customer. # CloudIdentity-specific customer information.
    &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;user&quot;: { # Information needed to create an Admin User for Google Workspace. # Admin user information.
    &quot;email&quot;: &quot;A String&quot;, # Primary email of the admin user.
    &quot;familyName&quot;: &quot;A String&quot;, # Family name of the admin user.
    &quot;givenName&quot;: &quot;A String&quot;, # Given name of the admin user.
  },
  &quot;validateOnly&quot;: True or False, # Validate the request and preview the review, but do not post it.
}

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

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="transferEntitlements">transferEntitlements(parent, body=None, x__xgafv=None)</code>
  <pre>Transfers customer entitlements to new reseller. Possible error codes: * PERMISSION_DENIED: The customer doesn&#x27;t belong to the reseller. * INVALID_ARGUMENT: Required request parameters are missing or invalid. * NOT_FOUND: The customer or offer resource was not found. * ALREADY_EXISTS: The SKU was already transferred for the customer. * CONDITION_NOT_MET or FAILED_PRECONDITION: * The SKU requires domain verification to transfer, but the domain is not verified. * An Add-On SKU (example, Vault or Drive) is missing the pre-requisite SKU (example, G Suite Basic). * (Developer accounts only) Reseller and resold domain must meet the following naming requirements: * Domain names must start with goog-test. * Domain names must include the reseller domain. * Specify all transferring entitlements. * INTERNAL: Any non-user error related to a technical issue in the backend. Contact Cloud Channel support. * UNKNOWN: Any non-user error related to a technical issue in the backend. Contact Cloud Channel support. Return value: The ID of a long-running operation. To get the results of the operation, call the GetOperation method of CloudChannelOperationsService. The Operation metadata will contain an instance of OperationMetadata.

Args:
  parent: string, Required. The resource name of the reseller&#x27;s customer account that will receive transferred entitlements. Parent uses the format: accounts/{account_id}/customers/{customer_id} (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for CloudChannelService.TransferEntitlements.
  &quot;authToken&quot;: &quot;A String&quot;, # The super admin of the resold customer generates this token to authorize a reseller to access their Cloud Identity and purchase entitlements on their behalf. You can omit this token after authorization. See https://support.google.com/a/answer/7643790 for more details.
  &quot;entitlements&quot;: [ # Required. The new entitlements to create or transfer.
    { # An entitlement is a representation of a customer&#x27;s ability to use a service.
      &quot;associationInfo&quot;: { # Association links that an entitlement has to other entitlements. # Association information to other entitlements.
        &quot;baseEntitlement&quot;: &quot;A String&quot;, # The name of the base entitlement, for which this entitlement is an add-on.
      },
      &quot;commitmentSettings&quot;: { # Commitment settings for commitment-based offers. # Commitment settings for a commitment-based Offer. Required for commitment based offers.
        &quot;endTime&quot;: &quot;A String&quot;, # Output only. Commitment end timestamp.
        &quot;renewalSettings&quot;: { # Renewal settings for renewable Offers. # Optional. Renewal settings applicable for a commitment-based Offer.
          &quot;enableRenewal&quot;: True or False, # If false, the plan will be completed at the end date.
          &quot;paymentCycle&quot;: { # Represents period in days/months/years. # Describes how frequently the reseller will be billed, such as once per month.
            &quot;duration&quot;: 42, # Total duration of Period Type defined.
            &quot;periodType&quot;: &quot;A String&quot;, # Period Type.
          },
          &quot;paymentPlan&quot;: &quot;A String&quot;, # Describes how a reseller will be billed.
          &quot;resizeUnitCount&quot;: True or False, # If true and enable_renewal = true, the unit (for example seats or licenses) will be set to the number of active units at renewal time.
        },
        &quot;startTime&quot;: &quot;A String&quot;, # Output only. Commitment start timestamp.
      },
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the entitlement is created.
      &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of an entitlement in the form: accounts/{account_id}/customers/{customer_id}/entitlements/{entitlement_id}.
      &quot;offer&quot;: &quot;A String&quot;, # Required. The offer resource name for which the entitlement is to be created. Takes the form: accounts/{account_id}/offers/{offer_id}.
      &quot;parameters&quot;: [ # Extended entitlement parameters. When creating an entitlement, valid parameter names and values are defined in the Offer.parameter_definitions. The response may include the following output-only Parameters: - assigned_units: The number of licenses assigned to users. - max_units: The maximum assignable units for a flexible offer. - num_units: The total commitment for commitment-based offers.
        { # Definition for extended entitlement parameters.
          &quot;editable&quot;: True or False, # Output only. Specifies whether this parameter is allowed to be changed. For example, for a Google Workspace Business Starter entitlement in commitment plan, num_units is editable when entitlement is active.
          &quot;name&quot;: &quot;A String&quot;, # Name of the parameter.
          &quot;value&quot;: { # Data type and value of a parameter. # Value of the parameter.
            &quot;boolValue&quot;: True or False, # Represents a boolean value.
            &quot;doubleValue&quot;: 3.14, # Represents a double value.
            &quot;int64Value&quot;: &quot;A String&quot;, # Represents an int64 value.
            &quot;protoValue&quot;: { # Represents an &#x27;Any&#x27; proto value.
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
            &quot;stringValue&quot;: &quot;A String&quot;, # Represents a string value.
          },
        },
      ],
      &quot;provisionedService&quot;: { # Service provisioned for an entitlement. # Output only. Service provisioning details for the entitlement.
        &quot;productId&quot;: &quot;A String&quot;, # Output only. The product pertaining to the provisioning resource as specified in the Offer.
        &quot;provisioningId&quot;: &quot;A String&quot;, # Output only. Provisioning ID of the entitlement. For Google Workspace, this would be the underlying Subscription ID.
        &quot;skuId&quot;: &quot;A String&quot;, # Output only. The SKU pertaining to the provisioning resource as specified in the Offer.
      },
      &quot;provisioningState&quot;: &quot;A String&quot;, # Output only. Current provisioning state of the entitlement.
      &quot;purchaseOrderId&quot;: &quot;A String&quot;, # Optional. This purchase order (PO) information is for resellers to use for their company tracking usage. If a purchaseOrderId value is given, it appears in the API responses and shows up in the invoice. The property accepts up to 80 plain text characters.
      &quot;suspensionReasons&quot;: [ # Output only. Enumerable of all current suspension reasons for an entitlement.
        &quot;A String&quot;,
      ],
      &quot;trialSettings&quot;: { # Settings for trial offers. # Output only. Settings for trial offers.
        &quot;endTime&quot;: &quot;A String&quot;, # Date when the trial ends. The value is in milliseconds using the UNIX Epoch format. See an example [Epoch converter](https://www.epochconverter.com).
        &quot;trial&quot;: True or False, # Determines if the entitlement is in a trial or not: * `true` - The entitlement is in trial. * `false` - The entitlement is not in trial.
      },
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the entitlement is updated.
    },
  ],
  &quot;requestId&quot;: &quot;A String&quot;, # Optional. You can specify an optional unique request ID, and if you need to retry your request, the server will know to ignore the request if it&#x27;s complete. For example, you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if it received the original operation with the same request ID. If it did, it will ignore the second request. The request ID must be a valid [UUID](https://tools.ietf.org/html/rfc4122) with the exception that zero UUID is not supported (`00000000-0000-0000-0000-000000000000`).
}

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

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="transferEntitlementsToGoogle">transferEntitlementsToGoogle(parent, body=None, x__xgafv=None)</code>
  <pre>Transfers customer entitlements from their current reseller to Google. Possible error codes: * PERMISSION_DENIED: The customer doesn&#x27;t belong to the reseller. * INVALID_ARGUMENT: Required request parameters are missing or invalid. * NOT_FOUND: The customer or offer resource was not found. * ALREADY_EXISTS: The SKU was already transferred for the customer. * CONDITION_NOT_MET or FAILED_PRECONDITION: * The SKU requires domain verification to transfer, but the domain is not verified. * An Add-On SKU (example, Vault or Drive) is missing the pre-requisite SKU (example, G Suite Basic). * (Developer accounts only) Reseller and resold domain must meet the following naming requirements: * Domain names must start with goog-test. * Domain names must include the reseller domain. * INTERNAL: Any non-user error related to a technical issue in the backend. Contact Cloud Channel support. * UNKNOWN: Any non-user error related to a technical issue in the backend. Contact Cloud Channel support. Return value: The ID of a long-running operation. To get the results of the operation, call the GetOperation method of CloudChannelOperationsService. The response will contain google.protobuf.Empty on success. The Operation metadata will contain an instance of OperationMetadata.

Args:
  parent: string, Required. The resource name of the reseller&#x27;s customer account where the entitlements transfer from. Parent uses the format: accounts/{account_id}/customers/{customer_id} (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for CloudChannelService.TransferEntitlementsToGoogle.
  &quot;entitlements&quot;: [ # Required. The entitlements to transfer to Google.
    { # An entitlement is a representation of a customer&#x27;s ability to use a service.
      &quot;associationInfo&quot;: { # Association links that an entitlement has to other entitlements. # Association information to other entitlements.
        &quot;baseEntitlement&quot;: &quot;A String&quot;, # The name of the base entitlement, for which this entitlement is an add-on.
      },
      &quot;commitmentSettings&quot;: { # Commitment settings for commitment-based offers. # Commitment settings for a commitment-based Offer. Required for commitment based offers.
        &quot;endTime&quot;: &quot;A String&quot;, # Output only. Commitment end timestamp.
        &quot;renewalSettings&quot;: { # Renewal settings for renewable Offers. # Optional. Renewal settings applicable for a commitment-based Offer.
          &quot;enableRenewal&quot;: True or False, # If false, the plan will be completed at the end date.
          &quot;paymentCycle&quot;: { # Represents period in days/months/years. # Describes how frequently the reseller will be billed, such as once per month.
            &quot;duration&quot;: 42, # Total duration of Period Type defined.
            &quot;periodType&quot;: &quot;A String&quot;, # Period Type.
          },
          &quot;paymentPlan&quot;: &quot;A String&quot;, # Describes how a reseller will be billed.
          &quot;resizeUnitCount&quot;: True or False, # If true and enable_renewal = true, the unit (for example seats or licenses) will be set to the number of active units at renewal time.
        },
        &quot;startTime&quot;: &quot;A String&quot;, # Output only. Commitment start timestamp.
      },
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the entitlement is created.
      &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of an entitlement in the form: accounts/{account_id}/customers/{customer_id}/entitlements/{entitlement_id}.
      &quot;offer&quot;: &quot;A String&quot;, # Required. The offer resource name for which the entitlement is to be created. Takes the form: accounts/{account_id}/offers/{offer_id}.
      &quot;parameters&quot;: [ # Extended entitlement parameters. When creating an entitlement, valid parameter names and values are defined in the Offer.parameter_definitions. The response may include the following output-only Parameters: - assigned_units: The number of licenses assigned to users. - max_units: The maximum assignable units for a flexible offer. - num_units: The total commitment for commitment-based offers.
        { # Definition for extended entitlement parameters.
          &quot;editable&quot;: True or False, # Output only. Specifies whether this parameter is allowed to be changed. For example, for a Google Workspace Business Starter entitlement in commitment plan, num_units is editable when entitlement is active.
          &quot;name&quot;: &quot;A String&quot;, # Name of the parameter.
          &quot;value&quot;: { # Data type and value of a parameter. # Value of the parameter.
            &quot;boolValue&quot;: True or False, # Represents a boolean value.
            &quot;doubleValue&quot;: 3.14, # Represents a double value.
            &quot;int64Value&quot;: &quot;A String&quot;, # Represents an int64 value.
            &quot;protoValue&quot;: { # Represents an &#x27;Any&#x27; proto value.
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
            &quot;stringValue&quot;: &quot;A String&quot;, # Represents a string value.
          },
        },
      ],
      &quot;provisionedService&quot;: { # Service provisioned for an entitlement. # Output only. Service provisioning details for the entitlement.
        &quot;productId&quot;: &quot;A String&quot;, # Output only. The product pertaining to the provisioning resource as specified in the Offer.
        &quot;provisioningId&quot;: &quot;A String&quot;, # Output only. Provisioning ID of the entitlement. For Google Workspace, this would be the underlying Subscription ID.
        &quot;skuId&quot;: &quot;A String&quot;, # Output only. The SKU pertaining to the provisioning resource as specified in the Offer.
      },
      &quot;provisioningState&quot;: &quot;A String&quot;, # Output only. Current provisioning state of the entitlement.
      &quot;purchaseOrderId&quot;: &quot;A String&quot;, # Optional. This purchase order (PO) information is for resellers to use for their company tracking usage. If a purchaseOrderId value is given, it appears in the API responses and shows up in the invoice. The property accepts up to 80 plain text characters.
      &quot;suspensionReasons&quot;: [ # Output only. Enumerable of all current suspension reasons for an entitlement.
        &quot;A String&quot;,
      ],
      &quot;trialSettings&quot;: { # Settings for trial offers. # Output only. Settings for trial offers.
        &quot;endTime&quot;: &quot;A String&quot;, # Date when the trial ends. The value is in milliseconds using the UNIX Epoch format. See an example [Epoch converter](https://www.epochconverter.com).
        &quot;trial&quot;: True or False, # Determines if the entitlement is in a trial or not: * `true` - The entitlement is in trial. * `false` - The entitlement is not in trial.
      },
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the entitlement is updated.
    },
  ],
  &quot;requestId&quot;: &quot;A String&quot;, # Optional. You can specify an optional unique request ID, and if you need to retry your request, the server will know to ignore the request if it&#x27;s complete. For example, you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if it received the original operation with the same request ID. If it did, it will ignore the second request. The request ID must be a valid [UUID](https://tools.ietf.org/html/rfc4122) with the exception that zero UUID is not supported (`00000000-0000-0000-0000-000000000000`).
}

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

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

</body></html>