Gerenciar direitos de Ofertas privadas

Quando um cliente compra uma oferta privada, o Google cria um direito, o que indica que o cliente comprou a oferta no Cloud Marketplace.

Neste artigo, analisamos como gerenciar direitos para suas ofertas privadas usando a API Partner Procurement.

Para detalhes sobre como usar a API Partner Procurement para ofertas privadas, acesse a documentação de referência.

Aprovar um direito

Quando um cliente compra uma oferta privada, o Cloud Marketplace cria um direito e envia a seguinte mensagem do Pub/Sub para seu produto:

{
  "eventId": "...",
  "eventType": "ENTITLEMENT_CREATION_REQUESTED",
  "entitlement": {
  "id": "ENTITLEMENT_ID",
  "updateTime": "...",
  "newOfferDuration": "P1Y6M", // Contract duration for the offer
  "newOfferEndTime": "", // Ending time for the offer
  },
}

Neste exemplo, ENTITLEMENT_ID é um ID criado pelo Cloud Marketplace.

Se a oferta tiver sido criada com uma duração, a mensagem vai mostrar a duração em anos e meses, e o campo newOfferEndTime vai estar vazio. Se a oferta tiver sido criada com um horário de término especificado, a mensagem vai mostrar o horário de término da oferta, e o campo newOfferDuration vai estar vazio.

No seu sistema, atualize a conta do usuário para mostrar que ele comprou a oferta. Em seguida, para aprovar o direito, faça uma solicitação HTTP POST à API Partner Procurement e envie o ENTITLEMENT_ID que você está aprovando:

POST v1/providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID:approve

Rejeitar um direito

Para rejeitar um direito, use o método reject na sua solicitação HTTP POST:

POST v1/providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID:reject

Substituir uma oferta ativa

Dependendo de como você configura a oferta privada, o cliente pode substituir a oferta. Se um cliente selecionar uma nova oferta privada, você receberá uma mensagem do Pub/Sub no seguinte formato:

{
  "eventId": "...",
  "eventType": "ENTITLEMENT_PLAN_CHANGE_REQUESTED",
  "entitlement": {
  "id": "ENTITLEMENT_ID",
  "newPlan": "ultimate",   // New plan for the offer,
  "newOffer": "OFFER2",    // New offer,
  "updateTime": "...",
  "newOfferDuration": "P2Y",   // Contract duration for the new offer
  },
}

Neste exemplo, OFFER2 é a oferta de substituição e ENTITLEMENT_ID é um ID criado pelo Cloud Marketplace. A duração da oferta é fornecida em anos e meses.

Para aprovar a substituição da oferta, faça a seguinte solicitação HTTP POST à API Partner Procurement:

POST v1/providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID:approvePlanChange

O corpo da solicitação precisa ter o plano da oferta que está sendo aprovada:

{
  "pendingPlanName": PLAN_NAME
}

Depois que a alteração for aprovada, você receberá outra mensagem do Pub/Sub quando a alteração entrar em vigor. Na mensagem, o campo eventType muda para ENTITLEMENT_PLAN_CHANGED. Para verificar o status de um plano, faça a seguinte solicitação HTTP GET para a API Partner Procurement:

GET v1/providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID

A resposta é semelhante à seguinte, com o campo state indicando se a nova oferta está ativa ou se a alteração da oferta ainda está pendente.

{
  "name": "providers/PARTNER_ID/entitlements/ENTITLEMENT_ID",
  "provider": "PARTNER_ID",
  "account": "USER_ACCOUNT_ID",
  "product": "example-server",
  "Offer":   "OFFER1",
  "plan": "pro",
  "state": "ENTITLEMENT_PENDING_PLAN_CHANGE",
  "newPendingOffer": "OFFER2",
  "newPendingPlan": "ultimate",
  "newOfferDuration": "P2Y",
  "newOfferEndTime": "",
  ...
}

Concluir outras tarefas de direitos

Para outras tarefas de direitos que não são específicas de ofertas privadas, consulte a documentação pública do Cloud Marketplace:

Lista de tipos de evento para tarefas da conta de oferta particular

A tabela a seguir inclui eventTypes que seu produto pode receber em mensagens do Pub/Sub para ofertas privadas.

Para ver a lista completa, consulte Lista de tipos de eventos para tarefas da conta.

eventType Descrição
ENTITLEMENT_OFFER_ENDED Indica que a oferta privada de um cliente terminou. A oferta aciona um evento ENTITLEMENT_CANCELLED ou permanece ativa com preços sem desconto.

A seguir