Erros
A API do Lumen ERP usa os códigos de status HTTP convencionais: 2xx indicam sucesso,
4xx indicam um problema na requisição e
5xx indicam uma falha do servidor. Todas as
respostas de erro são JSON, com ou sem o cabeçalho Accept: application/json.
Códigos de status HTTP
OK / Created
A requisição foi bem-sucedida. 201 indica que um registro foi criado.
Bad Request
Cabeçalhos de autenticação ausentes, ou dados inválidos nos endpoints que validam com 400 (veja os formatos abaixo).
Unauthorized
Credenciais inválidas ou revogadas. Veja o guia Autenticação.
Forbidden
A API do cliente está desativada; o app do Portal do Parceiro não está aprovado ou está suspenso; uma chave de teste foi usada em produção ("code": "SANDBOX_HOST") ou uma chave de produção no sandbox; ou o módulo é do plano Gestão Escolar (ERP) e o cliente está no plano simplificado ("code": "ERP_REQUIRED").
Not Found
A rota não existe, o {cnpj} não pertence ao cliente ou o registro pedido não foi encontrado.
Conflict
O pedido conflita com o estado atual: registro duplicado (disciplina com o mesmo nome), disciplina em uso, quadro de horários com aulas pendentes, curso não publicado etc.
Unprocessable Entity
Dados inválidos nos endpoints que validam com 422, ou operação bloqueada por uma regra de negócio (veja Consistência de Dados).
Too Many Requests
Limite de requisições por minuto excedido. Aguarde o tempo indicado no cabeçalho Retry-After.
Internal Server Error
Falha inesperada ao gravar; a mensagem costuma ser "Operação não realizada.". Pode ser repetida com segurança nas leituras; nas gravações, consulte o registro antes de repetir.
Service Unavailable
A plataforma está em manutenção (uma atualização em andamento). Tente novamente em alguns minutos.
Erros de validação
O formato depende do endpoint; a página de cada um mostra o seu. Na prática, trate
400 e 422
como erro de validação e leia errors, que pode ser uma
lista de mensagens ou um objeto com as mensagens de cada campo.
{ "success": false, "errors": [ "O campo name é obrigatório.", "O campo birthdate deve ser uma data válida." ] }
{ "success": false, "errors": { "subject_id": ["O campo subject id é obrigatório."] } }
{ "message": "O campo name é obrigatório.", "errors": { "name": ["O campo name é obrigatório."] } }
Demais erros
Recursos não encontrados, conflitos e regras de negócio trazem uma mensagem em português, pronta para exibir ao usuário.
Quando a recusa vem de uma regra de Consistência de Dados,
a resposta traz também code, estável para tratamento no seu código.
{ "success": false, "message": "Aluno não encontrado." }
{ "success": false, "code": "HAS_ENROLLMENTS", "message": "A turma possui alunos matriculados e não pode ser removida." }
{ "success": false, "code": "ERP_REQUIRED", "message": "Módulo disponível apenas para clientes do plano Gestão Escolar (ERP)." }
{ "message": "Parâmetros incorretos ou não encontrados." }
{ "message": "Too Many Attempts." }