Skip to content

API — Visão Geral

A API do Neemias é servida por um Cloudflare Worker e organizada por recurso. Todas as rotas utilizam o prefixo /api/v1 e seguem um pipeline declarativo de middleware que aplica autenticação, autorização por role, rate limiting e validação de schema de forma consistente.

Autenticação e Cabeçalhos

Toda requisição autenticada deve incluir três cabeçalhos obrigatórios:

HeaderValorObrigatório em
AuthorizationBearer <accessToken> (JWT HS256)Todas as rotas autenticadas
Idempotency-KeyUUID v4Todas as mutações (POST, PATCH)

v0.53.0: X-Device-Id foi removido — não é mais obrigatório.

O Idempotency-Key garante que operações retentadas por timeout ou falha de rede não sejam processadas duplicadamente.

Resumo de Endpoints (59 rotas)

v0.54.0: O número total de rotas passou de 41 para 59, incluindo novos endpoints para eventos, temas e storage proxy. Consulte o OpenAPI spec para a lista completa.

Health & Meta

MétodoRotaRolesDescrição
GET/api/v1/healthPúblicoHealth check
GET/.well-known/security.txtPúblicoRFC 9116

Autenticação

MétodoRotaRolesDescrição
POST/api/v1/auth/loginPúblicoLogin — rate limit: 5/min (PBKDF2)
POST/api/v1/auth/refreshPúblicoRenovar token — rate limit: 10/min
POST/api/v1/auth/revokeAutenticadoRevogar sessão
POST/api/v1/session/validateAutenticadoValidar sessão ativa

v0.56.0: O JWT agora retorna roles[] (array) + primaryRole, substituindo o campo role único. requireRole() usa roles.some() para any() match.

Alunos

MétodoRotaRolesDescrição
GET/api/v1/studentsAutenticadoListar alunos (paginado, busca)
POST/api/v1/studentsADMIN, CADASTROCriar aluno
PATCH/api/v1/students/:studentIdADMIN, CADASTROAtualizar aluno
POST/api/v1/students/:studentId/deleteADMINSoft-delete com justificativa

Chamada

MétodoRotaRolesDescrição
POST/api/v1/attendance/eventsCHAMADOR, ADMINMarcar presença

Turmas

MétodoRotaRolesDescrição
GET/api/v1/classesAutenticadoListar turmas
POST/api/v1/classesADMINCriar turma
PATCH/api/v1/classes/:classIdADMINAtualizar turma
POST/api/v1/classes/:classId/deleteADMINSoft-delete turma

Núcleos

MétodoRotaRolesDescrição
GET/api/v1/nucleiAutenticadoListar núcleos
POST/api/v1/nucleiADMINCriar núcleo
PATCH/api/v1/nuclei/:nucleusIdADMINAtualizar núcleo
POST/api/v1/nuclei/:nucleusId/deleteADMINSoft-delete núcleo

Usuários

MétodoRotaRolesDescrição
GET/api/v1/usersADMINListar usuários
POST/api/v1/usersADMINCriar usuário
PATCH/api/v1/users/:userIdADMINAtualizar usuário
POST/api/v1/users/:userId/reset-passwordADMINResetar senha
POST/api/v1/users/:userId/deactivateADMINDesativar usuário

Roles

MétodoRotaRolesDescrição
GET/api/v1/rolesADMINListar roles
POST/api/v1/rolesADMINCriar role customizada
PATCH/api/v1/roles/:roleNameADMINAtualizar role
DELETE/api/v1/roles/:roleNameADMINExcluir role não-sistema

Sincronia

MétodoRotaRolesDescrição
POST/api/v1/sync/eventsCHAMADOR, ADMIN, CADASTROWrapper batch — múltiplos eventos
POST/api/v1/sync/eventAutenticadoEvento único atômico via D1.batch()

Dev

MétodoRotaRolesDescrição
POST/_seedSeed de dados demo (dev only)

Pipeline de Middleware

O helper route() (workers/src/middleware/pipeline.ts) constrói cada endpoint como uma cadeia declarativa de middlewares que executam em sequência. O fluxo típico é:

Request → rateLimit? → requireAuth (JWT) → requireRole → Zod validation → Handler → Response

Headers de segurança (CORS, CSP, HSTS) são aplicados uniformemente pelo router. Erros seguem o envelope { error, message, details } com códigos HTTP canônicos (401 UNAUTHORIZED, 403 FORBIDDEN_ROLE, 409 IDEMPOTENCY_KEY_REUSED_WITH_DIFFERENT_PAYLOAD, etc.).

Consulte o Guia de API para o workflow completo de implementação de novas rotas e a especificação OpenAPI para o contrato detalhado de cada endpoint.

⚠️ Seção em expansão.


Fonte: workers/src/router.ts + workers/CONTEXT.md

Distribuído sob licença MIT.