Receber informações de preços do Google Cloud

Nesta página, você verá como usar a API Cloud Billing Catalog para:

  • receber uma lista de todos os serviços públicos, incluindo metadados relevantes sobre cada serviço;
  • receber uma lista de todas as SKUs públicas em um serviço, incluindo:
    • descrição legível da SKU;
    • preços públicos da SKU;
    • regiões onde a SKU está disponível para compra;
    • dados de categorização sobre a SKU.

Antes de começar

Para chamar a API Cloud Billing Catalog, é necessário ter uma chave de API. Para ver detalhes sobre chaves de API, consulte Como usar chaves de API.

Como listar serviços públicos do catálogo

Nesta etapa, você receberá uma lista de todos os serviços públicos, incluindo metadados relevantes sobre cada serviço.

API

O snippet de código a seguir lista todos os serviços públicos no catálogo:

Solicitação:

GET https://cloudbilling.googleapis.com/v1/services?key=API_KEY

Resposta:

{
  "services": [
    {
      "name": "[SERVICE_NAME]",
      "serviceId": "[SERVICE_ID]",
      "displayName": "[DISPLAY_NAME]",
    },
    [...]
  ],
  "nextPageToken": "[NEXT_PAGE_TOKEN]"
}

Em que:

  • [SERVICE_NAME] é o nome do recurso para o serviço;
  • [SERVICE_ID] é o identificador para o serviço;
  • [DISPLAY_NAME] é o nome de exibição legível para o serviço.

Os resultados são paginados. Se houver outros itens para listar, a resposta incluirá um nextPageToken. Defina pageToken=[NEXT_PAGE_TOKEN] para buscar o próximo lote. Quando todos os itens forem listados, nenhum token será retornado.

Como conseguir a lista de SKUs para um serviço

API

O snippet de código a seguir lista as SKUs no catálogo para o serviço especificado:

Solicitação:

GET https://cloudbilling.googleapis.com/v1/services/SERVICE_ID/skus?key=API_KEY

Em que:

  • SERVICE_ID é o identificador do serviço pai.

Resposta:

{
  "skus": [
    {
        "name": "[SKU_NAME]",
        "skuId": "[SKU_ID]",
        "description": "[SKU_DESCRIPTION]",
        "category": {
            "serviceDisplayName": "[SVC_DISPLAY_NAME]",
            "resourceFamily": "[FAMILY]",
            "resourceGroup": "[GROUP]",
            "usageType": "[USAGE]",
        },
        "serviceRegions": [
          "[REGION]"
        ],
        "pricingInfo": [
          {
              "effectiveTime": "[TIME]",
              "summary": "[SUMMARY]",
              "pricingExpression": {
                  "usageUnit": "[UNIT]",
                  "usageUnitDescription": "[UNIT_DESCRIPTION]",
                  "displayQuantity": [DISPLAY_QUANTITY],
                  "tieredRates": [
                    {
                        "startUsageAmount": [START_AMOUNT],
                        "unitPrice": {
                            "currencyCode": "[CURRENCY_CODE]",
                            "units": [UNITS],
                            "nanos": [NANOS],
                        },
                    }
                  ],
              },
              "aggregationInfo": {
                  "aggregationLevel": enum("[AGGREGATION_LEVEL]"),
                  "aggregationInterval": enum("[AGGREGATION_INTERVAL]"),
                  "aggregationCount": [AGGREGATION_COUNT],
              },
              "currencyConversionRate": [CONVERSION_RATE],
          }
        ],
        "serviceProviderName": "[SERVICE_PROVIDER]",
    }
  ],
  "nextPageToken": "[NEXT_PAGE_TOKEN]"
}

Em que:

  • [SKU_NAME] é o nome do recurso da SKU no formato services/{SERVICE_ID}/skus/{SKU_ID};
  • [SKU_ID] é o identificador exclusivo da SKU;
  • [SKU_DESCRIPTION] é uma descrição legível da SKU;
  • [SVC_DISPLAY_NAME] é o nome de exibição do serviço ao qual a SKU pertence;
  • [FAMILY] é o tipo de produto ao qual a SKU se refere. Por exemplo, "Compute", "Storage", "Network" etc.;
  • [GROUP] é uma classificação de grupo para SKUs relacionadas. Por exemplo, "RAM", "GPU", "Prediction" etc.;
  • [USAGE] representa como a SKU é consumida. Por exemplo, "OnDemand", "Preemptible", "Commit1Mo", "Commit1Yr" etc.;
  • [REGION] é a lista de regiões de serviço onde a SKU é oferecida. Por exemplo, "asia-east1";
  • [TIME] é um carimbo de data/hora que representa a hora em que este preço entrou em vigor no formato 2014-10-02T15:01:23.045123456Z;
  • [SUMMARY] é um resumo legível das informações de preços;
  • [UNIT] é a abreviação da unidade de uso em que o preço é especificado. Por exemplo, a usageUnit "GiBy" indica que o uso é especificado em "Gibibytes";
  • [UNIT_DESCRIPTION] é a unidade de uso legível, por exemplo, "Gibibyte";
  • [DISPLAY_QUANTITY] é a quantidade recomendada de unidades para exibir informações de preços. Ao exibir informações de preços, é recomendável exibir: (unitPrice * displayQuantity) per displayQuantity usageUnit. Esse campo não afeta a fórmula de preços e serve apenas para fins de exibição. Por exemplo, se unitPrice for "0,0001 USD", usageUnit for "GB" e displayQuantity for "1000", a maneira recomendada de exibir as informações de preço será "0,10 USD por 1000 GB".
  • O uso de [START_AMOUNT] será cotado de acordo com a taxa somente depois que esse valor for consumido. Por exemplo, startUsageAmount de 10 indica que o preço do uso será fixado no preço definido abaixo após os primeiros 10 usage_units.
  • [CURRENCY_CODE] é o código de moeda de três letras definido conforme a ISO 4217;
  • [UNITS] são as unidades inteiras do valor. Por exemplo, se currencyCode for "USD", uma unidade corresponderá a um dólar norte-americano;
  • [NANOS] é o número de unidades nano (10^-9) do valor. É necessário que o valor fique entre -999.999.999 e +999.999.999. Se "units" for positivo, "nanos" deverá ser positivo ou zero. Se "units" for zero, "nanos" poderá ser positivo, zero ou negativo. Se forem negativas, o valor deverá ser negativo ou zero. Por exemplo, US$ -1,75 é representado como units=-1 e nanos=-750,000,000.
  • [AGGREGATION_LEVEL] é o nível no qual o uso é agregado para calcular o custo. Os valores válidos são ACCOUNT, PROJECT e AGGREGATION_LEVEL_UNSPECIFIED;
  • [AGGREGATION_INTERVAL] é o intervalo no qual o uso é agregado para calcular o custo. Os valores válidos são DAILY, MONTHLY e AGGREGATION_INTERVAL_UNSPECIFIED;
  • [AGGREGATION_COUNT] é o número de intervalos de agregação. Por exemplo, se aggregationLevel for "DAILY" e aggregationCount for 14, a agregação durará mais de 14 dias.
  • [CONVERSION_RATE] é a taxa de conversão de moedas: de USD para a moeda especificada na solicitação. Se a moeda não for especificada, o padrão será 1.0;
  • [SERVICE_PROVIDER] identifica o provedor de serviços. No caso, "Google" para serviços próprios do Google Cloud Platform.

Os resultados são paginados. Se houver outros itens para listar, a resposta incluirá um nextPageToken. Defina pageToken=[NEXT_PAGE_TOKEN] para buscar o próximo lote. Quando todos os itens forem listados, nenhum token será retornado.