Sua aplicação informa quantas licenças cada cliente tem naquele momento. Cada leitura declara um estado, não acumula como um evento, e a Aira cobra a última quantidade conhecida a cada ciclo.
Enviar as leituras
Sua aplicação envia as leituras em lote, com uma chave de API que tenha a permissãolicenses:write.
Em cobranças pró-rata, o
occurredAt define em que dia cada mudança de quantidade passa a valer — e, com isso, quantos dias restantes do ciclo cada ajuste cobra. Reporte as leituras com o momento real da mudança, não o momento do envio.payload existe para auditoria: com ele, quem confere uma fatura de “47 usuários” vê quais 47 foram contados. Chaves além de id e name são preservadas como propriedades da unidade, visíveis junto da leitura.

Enviar só a quantidade
Quando listar as unidades não faz sentido, como em uma base de contatos com centenas de milhares de registros, omita opayload e envie só o total:
total, então a fatura sai igual com ou sem o payload. A leitura só não mostra quais unidades foram contadas.
Lote atômico
O envio opera como uma transação atômica: se qualquer leitura do lote falhar na validação, nenhuma leitura é registrada.Se você enviar 500 leituras e 1 tiver o
code errado, as 499 válidas também são rejeitadas. Valide antes de enviar ou trate o erro e reenvie o lote corrigido. Os códigos de erro estão em Respostas de erro.Correções e versionamento
Uma leitura é identificada pela combinação decode, customerExternalId e occurredAt. O histórico é somente-anexação: nada é atualizado nem apagado.
- Reenvio idêntico não grava nada, então timeouts e retentativas não criam duplicatas
- Reenvio com
totaloupayloaddiferente anexa uma nova versão que passa a valer, e o histórico mostra a versão nova logo acima da leitura que ela corrige - Reenvio sem o
payloadde uma leitura que tinha unidades também anexa uma nova versão, e ela passa a valer sem a lista - Um
occurredAtnovo é uma leitura independente, com seu próprio histórico de versões

Uma correção enviada depois que a fatura do ciclo já foi emitida não altera essa fatura. Cada cálculo é fixado nas versões que existiam quando ele rodou.
Boas práticas
- Reporte uma leitura por cliente por dia: a quantidade de um dia é definida pela última leitura enviada até o fim daquele dia. Se nenhuma leitura chegar, a última quantidade conhecida é mantida, inclusive por ciclos inteiros.
-
Para corrigir o passado, reenvie o mesmo momento: repita
code,customerExternalIdeoccurredAtcom ototalcorreto e, se você envia as unidades, opayloadcorreto. -
Para carregar histórico, envie os momentos passados: cada
occurredAtdistinto é uma leitura independente, então um único lote pode cobrir meses.