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.
O
payload existe para auditoria: sem ele, uma fatura afirmaria “47 usuários” sem que ninguém pudesse conferir quais 47. Chaves além de id e name são preservadas como propriedades da unidade, visíveis junto da leitura.

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 o dia marcado como Corrigido - 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 ototale opayloadcorretos. -
Para carregar histórico, envie os momentos passados: cada
occurredAtdistinto é uma leitura independente, então um único lote pode cobrir meses.