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

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

Returns:
  An object of the form:

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

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

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

Returns:
  An object of the form:

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

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

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

Returns:
  An object of the form:

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

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

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

Returns:
  An object of the form:

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

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

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

Returns:
  An object of the form:

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

<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 parameters&#x27; names and values are defined in the offer&#x27;s parameter definitions.
        { # 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 parameters&#x27; names and values are defined in the offer&#x27;s parameter definitions.
        { # 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>