Pular para o conteúdo

Referência da API

Visão geral da superfície de API do Juca — rotas internas, camada de adapter Valter e server actions.

A superfície de API do Juca tem três camadas:

  1. Rotas de API Internas — ~55 endpoints em src/app/api/ servindo o frontend. Muitos são transitórios e serão substituídos por chamadas diretas à API Valter.
  2. Adapter Valter (planejado para v0.3) — camada de abstração para chamar o Valter e futuros agentes de backend via uma interface unificada.
  3. Server Actionssrc/actions/ para mutações de cliente para servidor (transições de fase do briefing, gerenciamento de sessão).
GrupoCaminhoEndpointsStatusFinalidade
Unified/api/unified/*4AtivoGerenciamento de sessão e análise no hub
Export/api/export/*1AtivoExportação de PDF
Auth/api/auth/*1AtivoHandler do NextAuth
Health/api/health1AtivoVerificação de saúde do sistema
Metrics/api/metrics1AtivoMétricas da aplicação
Feedback/api/feedback/*2AtivoFeedback dos usuários
Chat/api/chat/*6TransitórioPipeline de chat (SSE)
Analyzer/api/analyzer/*8TransitórioPipeline de análise de casos
Search/api/search/*2TransitórioBusca híbrida de jurisprudência
KG/api/kg/*14TransitórioConsultas ao grafo de conhecimento
Reasoning/api/reasoning/*4TransitórioExtração IRAC
Comparator/api/comparator/*2TransitórioComparação multi-modelo
Reference/api/reference/*2TransitórioDados de referência
Citations/api/citations/*1TransitórioEstatísticas de citações

Todas as rotas de API (exceto /api/health) exigem autenticação:

Produção: Sessão JWT do NextAuth via auth() de @/lib/auth.

Desenvolvimento: Defina ENABLE_DEV_AUTH=true em .env.local para ignorar a autenticação com um usuário de dev.

// Padrão em toda rota de API
import { auth } from '@/lib/auth';
export async function GET() {
const session = await auth();
if (!session?.user) return new Response('Unauthorized', { status: 401 });
// ...
}

Todas as respostas JSON da API seguem um padrão de envelope padrão definido em src/types/api.ts:

Sucesso:

{
"success": true,
"data": { },
"metadata": { "timestamp": "2026-02-28T...", "duration_ms": 123 }
}

Erro:

{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "O parâmetro X é obrigatório",
"details": { }
}
}

Códigos de erro padrão: VALIDATION_ERROR, NOT_FOUND, UNAUTHORIZED, INTERNAL_ERROR, SERVICE_UNAVAILABLE, RATE_LIMITED, TIMEOUT.

Rotas com streaming SSE usam uma convenção diferente:

  • event: stage — payload de progresso livre (não usa o envelope)
  • event: result — usa o envelope ApiSuccess
  • event: error — usa o envelope ApiError

O cliente de API em src/lib/api/client.ts desempacota o envelope automaticamente: em caso de sucesso retorna data; em caso de falha lança ApiClientError com code e details.