Pular para o conteúdo

Respostas e erros

O envelope de toda resposta, o array errors que vem sempre, os códigos HTTP e o que fazer com cada um, as mensagens de validação e de negócio, o idioma das mensagens e itens removidos.

Toda resposta da API vem no mesmo envelope. Isso deixa um único tratamento servir para todas as chamadas.

Sucesso

{
  "success": true,
  "message": "Login successful.",
  "data": { },
  "pagination": { "page": 1, "limit": 20, "total": 137, "totalPages": 7 }
}

pagination aparece só em listagens. Ver Paginação.

Erro

{
  "success": false,
  "message": "Valid email is required",
  "errors": [{ "param": "email", "message": "Valid email is required" }]
}
  • O array errors vem sempre, mesmo com um erro só.
  • param diz qual campo causou o erro, quando há um.
  • message é a mensagem para mostrar.

Assim validação e regra de negócio se tratam pelo mesmo caminho: mostre errors[].message ao lado do campo param; sem param, mostre no topo.

Os dois tipos de erro

TipoExemploComo reconhecer
ValidaçãoUm campo faltando ou num formato errado400, param = o campo, mensagem curta ("Title is required")
Regra de negócioUma ação que o estado atual não permite400, 403, 404 ou 409, mensagem que explica ("Saldo insuficiente…")

Códigos

CódigoSignificaO que fazer
200 / 201Deu certo (201 quando cria)—
204Deu certo, sem corpo (exclusões)—
400Validação falhou, ou falta o X-CommunityId (errors[0].param = "X-CommunityId")Leia errors e corrija
401Token ausente, inválido ou expiradoFaça login de novo
402O pagamento foi recusadoMostre a mensagem ao comprador
403Sem permissão: papel insuficiente, ou o espaço restringe quem criaConfira o papel e o X-CommunityId
404Não existe, foi removido, é de outra comunidade, ou o caminho é um dos antigos com /communities/{communityId}/Confira o id, a comunidade e o caminho
409Conflito com o estado atualLeia a mensagem
429Muitas tentativas (ex.: 10 códigos de cupom inválidos em 15 minutos)Espere alguns minutos
500Erro internoTente de novo; persistindo, escreva para o suporte

Exemplos reais

SituaçãoResposta
Listar produtos sem o header X-CommunityId400 · Informe a comunidade no header X-CommunityId., com param: "X-CommunityId"
Criar espaço numa seção que não existe400 · Seção não encontrada ou não pertence a esta comunidade.
Criar módulo de curso num curso que não existe404 · Curso não encontrado.
Membro publicando num espaço "Equipe"403 · Apenas membros da equipe (admin, proprietário, moderador) podem realizar esta ação
Administrador alterando um proprietário403 · Só um owner ou um SuperAdmin pode remover, rebaixar ou alterar um owner.
Tirar de um plano um adicional com assinantes409 · Não é possível tirar este adicional do plano…

Mais exemplos, na ordem em que aparecem ao montar algo, em Ordem de criação.

Idioma das mensagens

As mensagens vêm no idioma do header Accept-Language (pt-BR, en-US, es-ES, it-IT, de-DE e as outras variantes). Algumas validações de formato ainda respondem em inglês.

Item de outra comunidade

Um item que pertence a outra comunidade responde 404, igual a um id que não existe. A API não diz que o item existe em outro lugar: para quem chama, ele não existe na comunidade do X-CommunityId.

QuandoResposta
A rota nomeia um espaço de outra comunidade (?spaceId=, o espaço de um curso ou de uma chamada)404 · space.notFound (Espaço não encontrado)
A rota nomeia um item de outra comunidade (ler um conteúdo, os comentários, os participantes de um evento)404 · common.notFound (Não encontrado)
Editar, excluir, comentar, reagir ou fixar conteúdo, evento ou status de outra comunidade404 · a mensagem do módulo (content.notFound, event.notFound, status.notFound, course.notFound)

Ser proprietário, administrador ou moderador numa comunidade não dá acesso a nada de outra, nem mandando o header da sua. Se o item é da comunidade e mesmo assim responde 404, confira se o X-CommunityId é o da comunidade certa.

Itens removidos

A API não apaga de verdade: itens excluídos são marcados como removidos e deixam de aparecer. Por isso um id excluído responde 404, como se nunca tivesse existido.

Com o SDK

O SDK lança MemberfyError com .status, .body (o envelope inteiro) e .errors. Ver SDK JavaScript.

Relacionados