O front controller encaminha /_api/... a api_route_request(). As rotas públicas status e health respondem JSON; as demais regras dependem do handler. api_rate_limit_check() roda antes do despacho: usa a tabela api_rate_limits, com padrão de 100 requisições por 3600 segundos por rota/sujeito. Excesso devolve 429; falha ao avaliar o limite devolve 503.
api_response_success() devolve JSON com status: success, data e message; api_response_error() usa status: error, message e, quando informado, details. O controlador aceita JSON em api_get_request_body(); JSON inválido retorna 400. CORS lê api.cors-origins da configuração; preflight OPTIONS é tratado antes do despacho.
| Família | Rota | Contrato |
|---|---|---|
| Autenticação | auth | Login móvel, logout, perfil e módulos |
| OAuth | oauth | Renovação de access token |
| Projetos | project | Upload e recuperação |
| Sistema | system | Atualização por sessão |
| Módulos | modules | Hooks de módulos |
| Canal distribuído | distributed | Ações entre instalações |
| Gateways | gateways | Controlador separado /_gateways/ |
/_api/oauth/ sem refresh redireciona para oauth-authenticate/; não responde JSON de autorização. Consulte a biblioteca OAuth2 para o armazenamento de tokens.