code é estável e seguro para ramificações. message é para pessoas e pode mudar. details aparece quando
conseguimos apontar o campo com problema.
Códigos
400 é para uma requisição que não conseguimos interpretar nem entender. 422 é reservado para uma requisição
perfeitamente formada que não conseguimos atender na região solicitada. Ramificar por error.code é mais durável
do que pelo status.Recusas por região
Os dois códigos de região são decididos antes de a tarefa entrar na fila, então você fica sabendo na hora, em vez de ver uma tarefa gastar todas as tentativas e falhar com um erro que só mostra o sintoma.REGION_UNSUPPORTED é permanente: esse mecanismo não pode atender o país solicitado.
REGION_UNAVAILABLE é transitório: a rota existe, mas nada pode atendê-la neste momento. Consulte
GET /capacity para ver o que cada região consegue atender agora.
Falhas de lote são por item
Um lote bem formado sempre retorna200, mesmo que todas as tarefas dele falhem. O status HTTP descreve a
requisição; results[].success descreve cada tarefa.
Um item do lote pode falhar com
REGION_UNAVAILABLE ou ENQUEUE_ERROR, e nenhum dos dois consta no enum de erros
por item do contrato de tarefas assíncronas que esta API implementa. Ambos são acréscimos, não substituições:
VALIDATION_ERROR e RESOURCE_ALREADY_EXISTS não mudam.Falhas no nível da tarefa
Uma tarefa que falha depois de entrar na fila não gera nenhum erro HTTP. Você descobre pelo status final:error de nível superior é uma string, não o objeto
{code, message, timestamp} dos erros de requisição. Ele começa com um código seguido de uma frase fixa para esse
código, então decida pelo código: ENGINE_TIMEOUT, ENGINE_NO_RESULT, ENGINE_FAILED, ou NO_IP_AVAILABLE e
NO_ACCOUNT_AVAILABLE quando nenhuma capacidade ficou livre a tempo (tentar de novo mais tarde costuma funcionar).
BAD_PAYLOAD e PAGE_UNAVAILABLE (uma página do Naver que não pode ser lida de forma anônima) mantêm uma mensagem
que diz o que mudar. A mesma tarefa entrega um webhook com task.status === "FAILED".