Entrar no painel
Índice

(11) Referência

Erros

A forma de um erro, os códigos HTTP e os códigos estáveis da API.

A forma de um erro

Um erro da API tem sempre o mesmo corpo: um código estável em erro, para o teu programa decidir, e uma explicação em português em mensagem, para mostrar a uma pessoa (ou para o registo). No 422 dados_invalidos vem ainda campos, com uma mensagem por campo.

422 Unprocessable Entity
{
  "erro": "dados_invalidos",
  "mensagem": "Há campos por corrigir.",
  "campos": {
    "amount": "Em AOA o valor é em kwanzas inteiros (múltiplo de 100 unidades menores): os gateways angolanos não cobram cêntimos."
  }
}

Decide pelo erro, e nunca pelo texto da mensagem, que pode ser reescrito. Os códigos não mudam de significado; quando aparecer um novo, trata-o como o código HTTP diz.

Os códigos HTTP

HTTPQuer dizerRepetir?
2xxFeito. 201 quando criou alguma coisa.Não é preciso
400O pedido está mal formado.Só depois de o corrigir
401A chave falta ou não serve.Não, até trocar a chave
404O recurso não existe para esta chave e este modo. Uma rota que não existe responde 404 em texto simples, sem JSON.Não
409O estado do recurso não deixa fazer isto.Não
422Os dados estão bem formados mas não servem.Só depois de os corrigir
500, 503Falha do nosso lado.Sim, com a mesma Idempotency-Key

Os códigos estáveis

HTTPerroQuando
400pedido_invalidoO corpo não é JSON, passa de 64 KB, ou traz um campo que não existe.
400idempotencia_em_faltaUm POST sem o cabeçalho Idempotency-Key.
400idempotencia_invalidaO Idempotency-Key passa de 255 carateres.
401sem_chaveSem Authorization: Bearer, ou com um valor que não começa por sk_test_ nem sk_live_.
401chave_invalidaA chave não existe, foi revogada, ou deixou de servir depois de uma rotação.
404sessao_nao_existeNão há sessão com esse id para esta chave (o modo conta).
404pagamento_nao_existeNão há pagamento com esse id para esta chave.
404estorno_nao_existeNão há estorno com esse id para esta chave.
404subscricao_nao_existeNão há subscrição com esse id para esta chave.
409pagamento_nao_pagoPediste um estorno de um pagamento que não está confirmado.
409pagamento_ja_estornadoO pagamento já foi todo estornado.
409subscricao_terminadaA subscrição já terminou: não há nada a cancelar, nem página do cliente a abrir.
422dados_invalidosHá campos por corrigir: o objeto campos tem uma mensagem por campo.
422idempotencia_reutilizadaA mesma Idempotency-Key com outro corpo, ou noutra rota.
422moeda_sem_gatewayNão há gateway para cobrar nesta moeda, por estes métodos, neste modo.
422metodo_sem_gatewayPediste em payment_methods um método que não tem gateway neste modo e nesta moeda.
422estorno_acima_do_cobradoO estorno passa o que resta do pagamento. A mensagem diz quanto resta.
500erro_internoUma falha nossa. Nada ficou feito a meio; repete com a mesma Idempotency-Key.
503indisponivelNão foi possível validar a chave agora. Repete daqui a pouco.

Nos SDK

Uma recusa da API chega como um erro com o estado HTTP, o código e a mensagem: *spolly.Error em Go (lê-se com errors.As, e o código está em Code) e SpollyError em JavaScript (status, code, userMessage, fields; compara com ErrorCodes). Os SDK repetem sozinhos os 429, 500, 502, 503, 504 e as falhas de rede, com a mesma Idempotency-Key; um 4xx nunca se repete.