Configurar plano de tarifa com atributos personalizados

Você está lendo a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
info

Introdução

Em alguns casos, talvez seja necessário que os contadores de transações sejam baseados em uma variável ou valor personalizado. Por exemplo, você pode precisar:

  • Cobrar dos desenvolvedores um valor variável com base em um valor fornecido na mensagem de uma chamada de API Por exemplo, talvez você queira cobrar dos desenvolvedores de apps com base no número de bytes transmitidos na solicitação de API.
  • Agrupar várias chamadas de API em uma única transação.

Usando planos de tarifas com atributos personalizados, é possível identificar um valor na mensagem de uma chamada de API que atua como contador e que é usado para calcular contagens e cobranças de transações.

Os seguintes planos de tarifas com atributos personalizados são aceitos:

  • Tabela de preços com atributo personalizado
  • Notificação ajustável com atributo personalizado

É possível definir um máximo de dez atributos personalizados por plano de tarifas.

Entender os cálculos de atributos personalizados

A forma como o valor do atributo personalizado é considerado nas contagens e cobranças de transações do plano de tarifas depende do modelo de cobrança, conforme resumido na tabela a seguir.

Modelo de cobrança Cálculo de atributo personalizado
Taxa fixa e faixa de volume

custom attribute number * rate = charge to developer

Para uma taxa fixa, o número de atributos personalizados se torna o número de transações que são multiplicadas pela taxa. Para a faixa de volume, o número de transações em uma faixa é incrementado pelo número de atributos personalizados, e o desenvolvedor é cobrado por esse número de transações. Por exemplo, se um valor de atributo personalizado na mensagem for 10, o desenvolvedor será cobrado por 10 transações, e 10 transações serão adicionadas à contagem de faixa atual. Se o desenvolvedor tiver apenas 6 transações restantes na faixa atual, 6 será multiplicado pela taxa dessa faixa. Os 4 restantes vão para a próxima faixa e são multiplicados pela taxa dessa faixa.

Em um plano de faixa de volume, se a última faixa de volume tiver um limite (não for "ilimitada") e uma transação exceder esse limite, duas coisas acontecerão:

Pacotes

Como os pacotes são cobrados pelo grupo, não pela transação, o seguinte cálculo ocorre:

custom attribute number = amount added to bundle count

Por exemplo, se o número de atributos personalizados na mensagem for 10, 10 será adicionado a o número de transações usadas no pacote. Se o desenvolvedor tiver apenas 6 transações restantes no pacote atual, esse pacote será preenchido e a próxima contagem de pacote será incrementada em 4. A taxa desse próximo pacote, se houver, será cobrada.

Se o último pacote tiver um limite (não for "ilimitado") e uma transação exceder esse limite, duas coisas acontecerão:

Notificações ajustáveis

Para notificações ajustáveis, o seguinte cálculo ocorre:

custom attribute number = amount added to transaction count

Por exemplo, se o número de atributos personalizados na mensagem for 10, 10 será adicionado a o número total de transações.

Onde o plano de tarifas recebe o valor do atributo personalizado

A política de gravação de transações (no pacote de produtos de API) informa à monetização onde procurar o valor do atributo personalizado na mensagem. Você define o atributo personalizado na seção "Atributos personalizados" da política de gravação de transações para o pacote de produtos de API.

Em seguida, é possível selecionar esse atributo personalizado no plano de tarifas depois de criar um pacote de produtos de API que contenha a política de gravação de transações com o atributo personalizado definido.

Confira o fluxo de alto nível:

  1. Defina os atributos personalizados ao adicionar um produto de API.
  2. Crie um pacote de produtos de API que contenha o produto.
    Na política de gravação de transações para o pacote de produtos de API, adicione os atributos personalizados que serão usados para definir planos de tarifas.
  3. Crie um plano de tarifas do tipo tabela de preços ou notificação ajustável para o pacote de produtos de API e especifique um parâmetro de classificação personalizado.

A figura a seguir mostra a relação entre o atributo personalizado definido na política de gravação de transações e a configuração do plano de tabela de preços. A relação do plano de tarifas de notificação ajustável com atributo personalizado é semelhante, embora o valor da faixa de volume não seja aplicável.

Como gerar o valor do atributo personalizado na mensagem

A política de gravação de transações pode procurar o valor do atributo personalizado em vários lugares, como o cabeçalho de resposta, o corpo da resposta ou as variáveis de fluxo predefinidas na resposta. A solicitação não está disponível porque uma transação não é oficial até que você receba uma resposta bem-sucedida . A seguir, mostramos exemplos de como adicionar um cabeçalho de resposta com o valor numérico à mensagem. Nos dois casos, vamos usar a política "Atribuir mensagem" em conjunto com variáveis.

Como adicionar o tamanho do payload da solicitação ao cabeçalho da resposta

Em cada solicitação de mensagem, há uma variável client.received.content.length que contém o número de bytes no payload da solicitação. Ao anexar uma política "Atribuir mensagem" à resposta do endpoint do proxy, podemos gerar um cabeçalho de resposta chamado messageSize que contém o valor do comprimento:

<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Message-1">
    <DisplayName>Assign Message 1</DisplayName>
    <Set>
        <Headers>
          <Header name="messageSize">{client.received.content.length}</Header> 
        </Headers>  
    </Set>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

Como adicionar um valor de atributo personalizado do app ao cabeçalho

Da mesma forma, podemos gerar um cabeçalho com o valor de um atributo personalizado em um app. Por exemplo, se você incluir um atributo personalizado chamado apprating em cada app de desenvolvedor da seguinte maneira:

Ao usar a política "Verificar chave de API" (necessária para a monetização), esse valor é armazenado em uma variável chamada verifyapikey.{policy_name}.apprating. Usando a política "Atribuir mensagem" anexada à resposta do endpoint do proxy, é possível gerar um cabeçalho chamado apprating que contém o valor apprating do app:

<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Message-1">
    <DisplayName>Assign Message 1</DisplayName>
    <Set>
        <Headers>
          <Header name="apprating">{verifyapikey.Verify-API-Key-1.apprating}</Header> 
        </Headers>  
    </Set>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

Como configurar o plano de tarifas

Além da configuração de atributos personalizados descrita acima, o plano de tarifas é configurado da mesma forma que você faria normalmente (para planos de tarifas sem atributos personalizados), mas precisa obedecer aos seguintes requisitos.

Como configurar o plano de tabela de preços com atributo personalizado usando a interface

Configure planos de tabela de preços com atributos personalizados usando a interface do Edge ou a interface clássica do Edge, conforme descrito nas seções a seguir.

Edge

Para configurar um plano de tabela de preços com atributos personalizados usando a interface do Edge:

  1. Defina os atributos personalizados ao adicionar um produto de API.
  2. Crie um pacote de produtos de API que contenha o produto. Consulte Criar pacotes de produtos de API.
    Na política de gravação de transações para o pacote de produtos de API, adicione os atributos personalizados que serão usados para definir planos de tarifas. Para mais detalhes, consulte a introdução neste tópico e Criar uma política de gravação de transações.
  3. Crie um plano de tarifas para o pacote de produtos de API e especifique um parâmetro de classificação personalizado.

Para mais informações, consulte Configurar detalhes do plano de tabela de preços usando a interface.

Edge clássico (nuvem privada)

Siga estas etapas para criar um plano de tabela de preços com atributo personalizado usando a interface clássica do Edge:

  1. Na política de gravação de transações de um produto de API, adicione os atributos personalizados que serão usados para definir planos de tarifas. Para mais detalhes, consulte a introdução neste tópico e Criar uma política de gravação de transações. Faça isso para cada produto de API que você quer incluir no pacote de API.
  2. Depois que os produtos de API e as políticas de gravação de transações forem configurados exatamente da maneira que você deseja, crie um pacote de API que contenha o produto. Consulte Criar pacotes de API.
  3. Crie um plano de tarifas para o pacote de API, selecionando o tipo de plano de tarifas de Tabela de preços com atributo personalizado.
  4. Clique no link Tabela de preços. Isso abre a janela "Tabela de preços".

  5. Selecione um atributo personalizado no menu suspenso "Atributo personalizado". O menu lista atributos personalizados criados para o produto em uma política de gravação de transações. O desenvolvedor é cobrado com base no valor do atributo personalizado selecionado em cada transação.
    (Valor do atributo * taxa = cobrança do desenvolvedor)
  6. Opcionalmente, configure um plano freemium conforme descrito em Especificar detalhes do plano de tabela de preços.
  7. Configure um modelo de cobrança conforme descrito em Especificar detalhes do plano de tabela de preços. No entanto, para o tipo de plano de tarifas "Tabela de preços com atributo personalizado", o modelo de cobrança é baseado no atributo personalizado selecionado. Por exemplo, se você escolher "Taxa fixa" como o modelo de cobrança, o desenvolvedor será cobrado uma taxa fixa com base no atributo personalizado, como o número de bytes transmitidos em cada transação (não uma taxa fixa para cada transação). Consulte Cálculos para mais informações.
  8. Clique em Salvar Rascunho.
    Publique o plano somente quando tiver certeza de que ele é final. Consulte Publicar planos de tarifas para informações sobre como definir a data de publicação e publicar o plano.

Para mais informações, consulte Especificar detalhes do plano de tabela de preços usando a interface.

Como configurar um plano de notificação ajustável com atributos personalizados usando a interface

Configure planos de notificação ajustáveis com atributos personalizados, conforme descrito abaixo.

Edge

Para configurar um plano de tabela de preços com atributos personalizados usando a interface do Edge:

  1. Defina os atributos personalizados ao adicionar um produto de API.
  2. Crie um pacote de produtos de API que contenha o produto. Consulte Criar pacotes de produtos de API.
    Na política de gravação de transações para o pacote de produtos de API, adicione os atributos personalizados que serão usados para definir planos de tarifas. Para mais detalhes, consulte a introdução neste tópico e Criar uma política de gravação de transações.
  3. Crie um plano de tarifas para o pacote de produtos de API e especifique um parâmetro de classificação personalizado.

Para mais informações, consulte Configurar um plano de notificação ajustável usando a interface.

Edge clássico (nuvem privada)

Para configurar um plano de tabela de preços com atributos personalizados usando a interface clássica do Edge:

  1. Na política de gravação de transações de um produto de API, adicione os atributos personalizados que serão usados para definir planos de tarifas. Para mais detalhes, consulte a introdução neste tópico e Criar uma política de gravação de transações. Faça isso para cada produto de API que você quer incluir no pacote de API.
  2. Depois que os produtos de API e as políticas de gravação de transações forem configurados exatamente da maneira que você deseja, crie um pacote de API que contenha o produto. Consulte Criar pacotes de API.
  3. Crie um plano de tarifas para o pacote de API, selecionando o tipo de plano de tarifas de Notificação ajustável com atributo personalizado.
  4. Clique no link Detalhes. Isso abre a janela "Notificação ajustável" .

  5. Selecione um atributo personalizado no menu suspenso Atributo personalizado. O menu lista atributos personalizados criados para o produto em uma política de gravação de transações. O número total de transações do desenvolvedor é calculado com base no valor do atributo personalizado selecionado em cada transação.
  6. Defina a Base de agregação como o período em que o volume de transações é agregado. Selecione um número entre 1 e 24 meses. Esse valor é definido como 1 mês por padrão.
  7. Clique em Aplicar e fechar.
  8. Clique em Salvar Rascunho.
    Publique o plano somente quando tiver certeza de que ele é final. Consulte Publicar planos de tarifas para informações sobre como definir a data de publicação e publicar o plano.

Para mais informações, consulte Especificar detalhes do plano de notificação ajustável usando a interface.

Como especificar detalhes de um plano de tarifas com atributos personalizados usando a API

Siga estas etapas de pré-requisito:

  1. Na política de gravação de transações de um produto de API, adicione os atributos personalizados que serão usados para definir planos de tarifas. Para mais detalhes, consulte a introdução neste tópico e Criar uma política de gravação de transações. Faça isso para cada produto de API que você quer incluir no pacote de API.
  2. Depois que os produtos de API e as políticas de gravação de transações forem configurados exatamente da maneira que você deseja, crie um pacote de API que contenha o produto. Consulte Criar pacotes de API.

Em seguida, use a API para criar o plano de tarifas.

Você especifica detalhes de um plano de tarifas com atributos personalizados ao criar o plano de tarifas. Especifique os detalhes na propriedade ratePlanDetails no corpo da solicitação em uma chamada para /organizations/{org_name}/monetization-packages/{package_id}/rate-plans. Nos detalhes, especifique um valor de parâmetro de classificação que identifique o nome do atributo personalizado. Também é possível especificar um valor de parâmetro de classificação que agregue o atributo personalizado em um intervalo de tempo especificado.

Consulte Detalhes do plano de tarifas configurações para uma lista completa de opções de detalhes do plano de tarifas.

Por exemplo, o seguinte cria um plano de tabela de preços com atributo personalizado com base em um atributo personalizado chamado messageSize (consulte os itens em negrito).

$ curl -H "Content-Type:application/json" -X POST -d \
'{
   "name": "Custom attribute-based rate card plan",
   "developer":null,
   "developerCategory":null,
   "currency": {
     "id" : "usd"
     },     
   "description": "Custom attribute-based rate card plan",
   "displayName" : "Custom attribute-based rate card plan",
   "frequencyDuration": "1",
   "frequencyDurationType": "MONTH",
   "earlyTerminationFee": "10",
   "monetizationPackage": {
      "id": "location"
        },
      "organization": {
       "id": "{org_name}"
      },    
   "paymentDueDays": "30",
   "prorate": "false",
   "published": "false",     
   "ratePlanDetails":[
      {
        "currency":{
           "id":"usd"
        },
      "duration":1,
      "durationType":"MONTH",
      "meteringType":"VOLUME",
      "paymentDueDays":"30",
      "ratingParameter":"messageSize",
      "ratingParameterUnit":"MB",
      "organization":{
         "id":"{org_name}"
      },
      "ratePlanRates":[
         {
           "rate":0.15,
           "startUnit":0,
           "type":"RATECARD",
           "endUnit":1000
         },
         {
           "rate":0.1,
           "startUnit":1000,
           "type":"RATECARD",
           "endUnit":null
         }
      ],
      "freemiumUnit":0,
      "freemiumDuration":0,
      "freemiumDurationType":"MONTH",
      "type":"RATECARD",
      "customPaymentTerm":false
      }
    ],
    "freemiumUnit":0,
    "freemiumDuration":0,
    "freemiumDurationType":"MONTH",
    "contractDuration":"1",
    "contractDurationType":"YEAR", 
    "recurringStartUnit": 1,
    "recurringType": "CALENDAR",
    "recurringFee": "10",
    "setUpFee": "10",
    "startDate": "2013-09-15 00:00:00",
    "type": "STANDARD"
}' \
"https://api.enterprise.apigee.com/v1/mint/organizations/{org_name}/monetization-packages/location/rate-plans" \
-u email:password

O seguinte cria um plano de tarifas de notificação ajustável com atributo personalizado com base em um atributo personalizado chamado messageSize (consulte o item em negrito).

$ curl -H "Content-Type:application/json" -X POST -d \
'{
     "name": "AdjustableNotification",
     "displayName": "Custom attribute-based adjustable notification plan",
     "description": "Custom attribute-based adjustable notification plan",
     "published": "true",  
     "organization": {
      "id": "myorg"
     },
     "startDate": "2016-04-15 00:00:00",
     "type": "STANDARD",
     "monetizationPackage": {
        "id": "p1",
        "name": "test"
     },
     "currency": {
        "id" : "usd",
        "name" : "USD"
     },
     "ratePlanDetails": [
        {
           "type": "USAGE_TARGET",
           "meteringType": "DEV_SPECIFIC",
           "duration": 1,
           "durationType": "MONTH",
           "ratingParameter": "messageSize",
           "ratingParameterUnit": "MB",
           "organization": {
             "id": "myorg"
           },
           "currency": {
             "id": "usd",
             "name": "USD"
           }
        }
     ]
}' \
"https://api.enterprise.apigee.com/v1/mint/organizations/myorg/monetization-packages/p1/rate-plans"  \
-u email:password