eTecTrilha API v1.0.0
API REST do eTecTrilha — app gamificado de estudos para o Vestibulinho ETEC. Autenticação via sessão NextAuth (cookie). Rotas /admin exigem papel ADMIN.
Especificação OpenAPI 3.0 completa em /api/openapi.json — importe no Swagger UI, Postman ou Insomnia.
Auth
Cadastro e login
/api/auth/registerCadastra usuário com e-mail e senha
/api/auth/signinFluxo de login NextAuth (Google e credenciais)
Perfil
Dados do usuário logado
/api/meResumo do usuário: XP, nível, vidas, streak, precisão, revisões pendentes
/api/meAtualiza nome e preferência de som
Jornada
Disciplinas, módulos e fases
/api/journeyJornada completa: disciplinas → módulos → fases, com progresso e bloqueios
/api/phases/{id}Questões de uma fase (sem gabarito)
/api/phases/{id}/completeRegistra conclusão de fase (+100 XP na primeira conclusão com ≥70%)
Estudo
Respostas, revisão espaçada e desafio diário
/api/answersResponde uma questão — retorna gabarito, explicação, XP, vidas e conquistas
Regras: +10 XP por acerto (dobro no desafio diário); +50 XP a cada 5 acertos seguidos (campo combo); errar em fase/desafio custa 1 vida; erros entram na revisão espaçada (1, 3, 7, 15, 30 dias).
/api/reviewQuestões erradas vencidas para revisar (repetição espaçada)
/api/challengeDesafio diário (10 questões, XP em dobro) e status do dia
/api/challenge/completeRegistra a conclusão do desafio diário
Simulados
/api/examsLista os simulados do usuário
/api/examsCria um simulado com filtros (ano, disciplina, aleatório)
/api/exams/{id}Detalhe do simulado (gabarito incluído apenas após finalizar)
/api/exams/{id}/submitFinaliza o simulado: nota, acertos, erros, tempo, percentil e análise por disciplina
Estatísticas
/api/statsDashboard: acertos por disciplina, evolução semanal, mapa de calor, tempo estudado
/api/rankingRanking semanal, mensal ou geral
/api/achievementsConquistas (todas + desbloqueadas)
Admin
Gestão do banco de questões
/api/admin/questionsLista questões com filtros e paginação
/api/admin/questionsCadastra uma questão
/api/admin/questions/{id}Edita uma questão
/api/admin/questions/{id}Exclui uma questão
/api/admin/importImporta questões em massa (JSON ou CSV, até 10.000 por chamada)
Cabeçalhos aceitos (flexíveis): ano, semestre, disciplina, tema, enunciado, a, b, c, d, e, correta/gabarito, explicacao, dificuldade, tempo_medio.