Configurar a geração de relatórios de uso para o Google

Se você escolher o preço baseado no uso para seu produto, é preciso informar o uso do seu app à API Service Control.

Para ver uma apresentação do Service Control, consulte o Guia explicativo.

Antes de começar

(Para preços baseados no uso) Informar o uso

Quando uma autorização é criada, você precisa chamar a API Partner Procurement para recuperar um usageReportingId, usando a seguinte solicitação HTTP GET:

GET v1/providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID

A resposta contém informações sobre o direito, no seguinte formato:

{
  "name": "providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID",
  "provider": "YOUR_PARTNER_ID",
  "account": "USER_ACCOUNT_ID",
  "product": "example-messaging-service",
  "plan": "pro",
  "usageReportingId": "USAGE_REPORTING_ID",
  "state": "ENTITLEMENT_ACTIVATION_REQUESTED",
  "updateTime": "...",
  "createTime": "..."
}

Para informar o uso, primeiro você precisa fazer uma chamada de API services.check para verificar a configuração do serviço. Na resposta, se o objeto checkErrors[] estiver vazio, faça uma chamada da API services.report para enviar o relatório de uso.

O relatório de uso é uma API Service Control Operation. A seguir, é apresentado um exemplo de um relatório de uso para example-messaging-service que envia informações sobre o armazenamento que está sendo usado pelo cliente:

POST https://servicecontrol.googleapis.com/v1/services/example-messaging-service.gcpmarketplace.example.com:report
{
  "operations": [{
    "operationId": "1234-example-operation-id-4567",
    "operationName": "Hourly Usage Report",
    "consumerId": "USAGE_REPORTING_ID",
    "startTime": "2019-02-06T12:00:00Z",
    "endTime": "2019-02-06T13:00:00Z",
    "metricValueSets": [{
      "metricName": "example-messaging-service/UsageInGiB",
      "metricValues": [{ "int64Value": "150" }]
    }],
    "userLabels": {
      "cloudmarketplace.googleapis.com/resource_name": "order_history_cache",
      "cloudmarketplace.googleapis.com/container_name": "storefront_prod",
      "environment": "prod",
      "region": "us-west2"
    }
  }]
}

onde:

  • operationId é uma string exclusiva gerada pela instância de serviço. Use o mesmo operationId para as operações check e report.
  • consumerId é o mesmo que usageReportingId do direito.
  • startTime e endTime representam os horários de início e término do intervalo total para a operação report. Na maioria dos casos, o startTime de uma operação report precisa ter o mesmo valor de endTime da operação report anterior. Se o serviço de um cliente for desativado antes do startTime de uma operação report, a chamada de API services.check vai enviar um erro no objeto checkErrors[] e o cliente não será cobrado pelo intervalo correspondente.
  • MetricValueSet contém um ou mais intervalos de tempo intermediários e os valores de métrica atualizados correspondentes. Você define as métricas do serviço ao escolher e enviar o modelo de preços. Você pode conferir e referenciar os identificadores das suas métricas na seção Integração técnica do Portal do Produtor.
  • userLabels são rótulos criados pelo usuário, definidos como strings de chave-valor que seguem requisitos de sintaxe específicos. Esses rótulos são encaminhados para as ferramentas de gerenciamento de custos do Cloud Billing para atribuição. Para recomendações relacionadas à rotulagem de uso, consulte Práticas recomendadas para rotulagem de uso.

Se a API services.check retornar um ou mais dos erros a seguir, recomendamos que você interrompa a prestação do serviço para o cliente até que o erro seja resolvido:

  • SERVICE_NOT_ACTIVATED
  • BILLING_DISABLED
  • PROJECT_DELETED