<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="cloudbilling_v1.html">Cloud Billing API</a> . <a href="cloudbilling_v1.services.html">services</a> . <a href="cloudbilling_v1.services.skus.html">skus</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#list">list(parent, pageSize=None, currencyCode=None, startTime=None, pageToken=None, endTime=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all publicly available SKUs for a given cloud service.</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="list">list(parent, pageSize=None, currencyCode=None, startTime=None, pageToken=None, endTime=None, x__xgafv=None)</code>
  <pre>Lists all publicly available SKUs for a given cloud service.

Args:
  parent: string, The name of the service.
Example: "services/DA34-426B-A397" (required)
  pageSize: integer, Requested page size. Defaults to 5000.
  currencyCode: string, The ISO 4217 currency code for the pricing info in the response proto.
Will use the conversion rate as of start_time.
Optional. If not specified USD will be used.
  startTime: string, Optional inclusive start time of the time range for which the pricing
versions will be returned. Timestamps in the future are not allowed.
The time range has to be within a single calendar month in
America/Los_Angeles timezone. Time range as a whole is optional. If not
specified, the latest pricing will be returned (up to 12 hours old at
most).
  pageToken: string, A token identifying a page of results to return. This should be a
`next_page_token` value returned from a previous `ListSkus`
call. If unspecified, the first page of results is returned.
  endTime: string, Optional exclusive end time of the time range for which the pricing
versions will be returned. Timestamps in the future are not allowed.
The time range has to be within a single calendar month in
America/Los_Angeles timezone. Time range as a whole is optional. If not
specified, the latest pricing will be returned (up to 12 hours old at
most).
  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 `ListSkus`.
    "nextPageToken": "A String", # A token to retrieve the next page of results. To retrieve the next page,
        # call `ListSkus` again with the `page_token` field set to this
        # value. This field is empty if there are no more results to retrieve.
    "skus": [ # The list of public SKUs of the given service.
      { # Encapsulates a single SKU in Google Cloud Platform
        "category": { # Represents the category hierarchy of a SKU. # The category hierarchy of this SKU, purely for organizational purpose.
          "resourceGroup": "A String", # A group classification for related SKUs.
              # Example: "RAM", "GPU", "Prediction", "Ops", "GoogleEgress" etc.
          "resourceFamily": "A String", # The type of product the SKU refers to.
              # Example: "Compute", "Storage", "Network", "ApplicationServices" etc.
          "usageType": "A String", # Represents how the SKU is consumed.
              # Example: "OnDemand", "Preemptible", "Commit1Mo", "Commit1Yr" etc.
          "serviceDisplayName": "A String", # The display name of the service this SKU belongs to.
        },
        "serviceProviderName": "A String", # Identifies the service provider.
            # This is 'Google' for first party services in Google Cloud Platform.
        "description": "A String", # A human readable description of the SKU, has a maximum length of 256
            # characters.
        "skuId": "A String", # The identifier for the SKU.
            # Example: "AA95-CD31-42FE"
        "serviceRegions": [ # List of service regions this SKU is offered at.
            # Example: "asia-east1"
            # Service regions can be found at https://cloud.google.com/about/locations/
          "A String",
        ],
        "pricingInfo": [ # A timeline of pricing info for this SKU in chronological order.
          { # Represents the pricing information for a SKU at a single point of time.
            "effectiveTime": "A String", # The timestamp from which this pricing was effective within the requested
                # time range. This is guaranteed to be greater than or equal to the
                # start_time field in the request and less than the end_time field in the
                # request. If a time range was not specified in the request this field will
                # be equivalent to a time within the last 12 hours, indicating the latest
                # pricing info.
            "aggregationInfo": { # Represents the aggregation level and interval for pricing of a single SKU. # Aggregation Info. This can be left unspecified if the pricing expression
                # doesn't require aggregation.
              "aggregationLevel": "A String",
              "aggregationCount": 42, # The number of intervals to aggregate over.
                  # Example: If aggregation_level is "DAILY" and aggregation_count is 14,
                  # aggregation will be over 14 days.
              "aggregationInterval": "A String",
            },
            "pricingExpression": { # Expresses a mathematical pricing formula. For Example:- # Expresses the pricing formula. See `PricingExpression` for an example.
                #
                # `usage_unit: GBy`
                # `tiered_rates:`
                #    `[start_usage_amount: 20, unit_price: $10]`
                #    `[start_usage_amount: 100, unit_price: $5]`
                #
                # The above expresses a pricing formula where the first 20GB is free, the
                # next 80GB is priced at $10 per GB followed by $5 per GB for additional
                # usage.
              "displayQuantity": 3.14, # The recommended quantity of units for displaying pricing info. When
                  # displaying pricing info it is recommended to display:
                  # (unit_price * display_quantity) per display_quantity usage_unit.
                  # This field does not affect the pricing formula and is for display purposes
                  # only.
                  # Example: If the unit_price is "0.0001 USD", the usage_unit is "GB" and
                  # the display_quantity is "1000" then the recommended way of displaying the
                  # pricing info is "0.10 USD per 1000 GB"
              "baseUnit": "A String", # The base unit for the SKU which is the unit used in usage exports.
                  # Example: "By"
              "usageUnit": "A String", # The short hand for unit of usage this pricing is specified in.
                  # Example: usage_unit of "GiBy" means that usage is specified in "Gibi Byte".
              "baseUnitConversionFactor": 3.14, # Conversion factor for converting from price per usage_unit to price per
                  # base_unit, and start_usage_amount to start_usage_amount in base_unit.
                  # unit_price / base_unit_conversion_factor = price per base_unit.
                  # start_usage_amount * base_unit_conversion_factor = start_usage_amount in
                  # base_unit.
              "usageUnitDescription": "A String", # The unit of usage in human readable form.
                  # Example: "gibi byte".
              "baseUnitDescription": "A String", # The base unit in human readable form.
                  # Example: "byte".
              "tieredRates": [ # The list of tiered rates for this pricing. The total cost is computed by
                  # applying each of the tiered rates on usage. This repeated list is sorted
                  # by ascending order of start_usage_amount.
                { # The price rate indicating starting usage and its corresponding price.
                  "unitPrice": { # Represents an amount of money with its currency type. # The price per unit of usage.
                      # Example: unit_price of amount $10 indicates that each unit will cost $10.
                    "nanos": 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.
                    "units": "A String", # The whole units of the amount.
                        # For example if `currencyCode` is `"USD"`, then 1 unit is one US dollar.
                    "currencyCode": "A String", # The 3-letter currency code defined in ISO 4217.
                  },
                  "startUsageAmount": 3.14, # Usage is priced at this rate only after this amount.
                      # Example: start_usage_amount of 10 indicates that the usage will be priced
                      # at the unit_price after the first 10 usage_units.
                },
              ],
            },
            "currencyConversionRate": 3.14, # Conversion rate used for currency conversion, from USD to the currency
                # specified in the request. This includes any surcharge collected for billing
                # in non USD currency. If a currency is not specified in the request this
                # defaults to 1.0.
                # Example: USD * currency_conversion_rate = JPY
            "summary": "A String", # An optional human readable summary of the pricing information, has a
                # maximum length of 256 characters.
          },
        ],
        "name": "A String", # The resource name for the SKU.
            # Example: "services/DA34-426B-A397/skus/AA95-CD31-42FE"
      },
    ],
  }</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 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>