Resposta de sucesso#
200 com um resultado por evento, na mesma ordem do envio:
JSON
{
"results": [
{ "id": "evt_8f2c1a", "status": "accepted" },
{ "id": "evt_8f2c1b", "status": "duplicate" },
{ "id": "evt_8f2c1c", "status": "rejected", "reason": "deal.amount_invalid" }
]
}Um lote com um evento ruim não derruba os outros: cada evento tem o seu resultado.
Status por evento#
status | Significado | O que fazer |
|---|---|---|
accepted | Recebido e gravado. Se o processamento falhar do nosso lado, nós mesmos refazemos. | Nada |
duplicate | Esse id já tinha sido recebido com o mesmo conteúdo. | Nada |
ignored | Tipo de evento não suportado nesta versão. | Nada |
rejected | Evento inválido. reason indica o campo. | Corrigir e reenviar com novo id |
Motivos de rejected#
O reason segue o padrão <campo>_<problema>:
| Sufixo | Quando |
|---|---|
_required | Campo obrigatório ausente (contact.externalId_required). |
_invalid | Formato errado (occurredAt_invalid, deal.status_invalid, deal.amount_invalid). |
_too_long | Texto maior que o limite do campo. |
_in_future | Data mais de 5 minutos no futuro. |
deal.currency_unsupported | Moeda diferente de BRL. |
id_reused | id já usado com outro conteúdo. |
Erros da requisição#
| HTTP | Quando | O que fazer |
|---|---|---|
400 | Envelope inválido: schema_version_unsupported, events_required, too_many_events (mais de 50). | Corrigir o envio |
401 | Chave ausente, inválida, revogada ou expirada. | Conferir a chave |
403 | https_required, ou integração pausada pelo Clube do Lab. | Usar HTTPS; se pausada, guardar os eventos e reenviar depois |
429 | Limite de uso atingido. | Esperar os segundos do header Retry-After e reenviar |
5xx | Erro do nosso lado. | Reenviar com os mesmos ids |
Limites de uso#
| Limite | Valor |
|---|---|
| Eventos por requisição | até 50 |
| Requisições por minuto, por integração | até 12 (cerca de 600 eventos por minuto) |
| Tamanho da requisição | até 5 MB |
Os limites cobrem com folga o uso normal e a carga inicial. Se precisar de mais, fale com a gente.