<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.offers.html">offers</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, filter=None, languageCode=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists the Offers the reseller can sell. Possible error codes: * INVALID_ARGUMENT: Required request parameters are missing or invalid.</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>
<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="list">list(parent, filter=None, languageCode=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists the Offers the reseller can sell. Possible error codes: * INVALID_ARGUMENT: Required request parameters are missing or invalid.

Args:
  parent: string, Required. The resource name of the reseller account from which to list Offers. Parent uses the format: accounts/{account_id}. (required)
  filter: string, Optional. The expression to filter results by name (name of the Offer), sku.name (name of the SKU), or sku.product.name (name of the Product). Example 1: sku.product.name=products/p1 AND sku.name!=products/p1/skus/s1 Example 2: name=accounts/a1/offers/o1
  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 500 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 ListOffers.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token to retrieve the next page of results.
  &quot;offers&quot;: [ # The list of Offers requested.
    { # 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.
      &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="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>

</body></html>