Saltar 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 cupão 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 · Indique a comunidade no cabeçalho X-CommunityId., com param: "X-CommunityId"
Criar espaço numa secção que não existe400 · Secçã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 "Equipa"403 · Apenas membros da equipa (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 subscritores409 · 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 noutro lugar: para quem chama, ele não existe na comunidade do X-CommunityId.

QuandoResposta
A rota indica 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 indica um item de outra comunidade (ler um conteúdo, os comentários, os participantes de um evento)404 · common.notFound (Não encontrado)
Editar, eliminar, comentar, reagir ou fixar conteúdo, evento ou estado 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 enviando o header da sua. Se o item é da comunidade e mesmo assim responde 404, confirme se o X-CommunityId é o da comunidade certa.

Itens removidos

A API não apaga de verdade: itens eliminados são marcados como removidos e deixam de aparecer. Por isso um id eliminado 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