PT EN
Voltar ao site

Referência de Endpoints por Área

Integrar um sistema ao DATTA não deveria exigir engenharia reversa da interface. Esta página consolida, área por área, os endpoints citados nos guias da plataforma — com método, caminho e o que cada um faz — para que você monte sua integração consultando um único lugar. Autenticação, proteção CSRF e convenções gerais (formato JSON, campo error, permissões) estão na visão geral da API e valem para tudo o que segue.

Convenções desta página: segmentos variáveis aparecem como placeholders ({id}, {numero}, {taskId}); parâmetros de query relevantes são citados na descrição; endpoints marcados como servidor-a-servidor são pensados para integração entre sistemas, não para chamadas de navegador.

Busca, Chat & IA

Construa buscas semânticas, assistentes conversacionais e geração assistida por IA sobre o acervo do seu contexto.

MétodoEndpointO que faz
POST/api/search/hybridBusca textual híbrida (léxica + vetorial + grafo, com fusão de rankings)
POST/api/search/hybrid/diagnosticadaA mesma busca no índice de um contexto (domain), devolvendo {hits, diagnostico}: quando o resultado volta vazio — ou só com uma das duas buscas, a léxica ou a vetorial —, diagnostico.texto diz o que não bate (índice inexistente ou vazio, campo de vetor ausente, candidatos abaixo do corte de relevância, busca que falhou e por quê)
POST/api/search/hybrid/multi/diagnosticadaO mesmo sobre um padrão de índices (indexPattern, ex.: datta_* ou datta_cpc,datta_cdc), com o diagnóstico também de campo da consulta que o índice não tem
POST/api/chat/streamResposta da IA em streaming (SSE) para a Busca/Chat
GET/api/users/me/promptLê o prompt personalizado do usuário logado (resolvido pelo token, nunca por parâmetro); sem prompt → {"customPrompt":""}
PUT/api/users/me/promptGrava o prompt personalizado ({"customPrompt":"..."}; trim + truncamento em 8000 caracteres)
POST/api/captain/sessoes/{id}/anexosAnexa um documento à conversa do Captain (multipart, campo file); o texto extraído entra como contexto do objetivo. O arquivo original fica no bucket de staging (MinIO) por 24h; nada é indexado nem vetorizado
GET/api/captain/sessoes/{id}/anexos/{indice}/arquivoBaixa o arquivo original de um anexo, como foi enviado. 404 quando a retenção já expirou
POST/api/captain/sessoes/{id}/objetivoMonta o plano do Captain a partir de um objetivo em linguagem natural; progresso via SSE. Não executa nada
POST/api/captain/sessoes/{id}/confirmarExecuta o plano confirmado (SSE, passo a passo). Único ponto onde uma escrita nasce; exige CAPTAIN_EXECUTE
POST/api/llm/chat/syncChamada síncrona ao modelo de linguagem; header X-LLM-Lane: batch seleciona a fila de baixa prioridade (sem header = interativa)
POST/api/embeddings/batchGera embeddings em lote (servidor-a-servidor; usado p. ex. na deduplicação semântica de regras)
POST/api/siql/semantic/nl-to-sqlConverte pergunta em português em SQL ({question, workspace?, modelId?}); limite de 30 chamadas/hora
POST/api/siql/events/ingestRecebe eventos de consulta do motor analítico pelo caminho alternativo, quando a publicação no fluxo de eventos falha (servidor-a-servidor)
GET/api/search/node-textResolve o texto integral de um item indexado a partir de ponteiro (?index=&id=); servidor-a-servidor, restrito aos índices da plataforma

As rotas de gravação no índice de busca — documentos, trechos, vetores, regras e texto integral — são servidor-a-servidor e exigem SEARCH_INDEX_WRITE (só do perfil ADMIN) ou a credencial de serviço da plataforma. A permissão de busca (SEARCH_EXECUTE), que todos os perfis têm, não grava nem apaga.

As leituras que expõem um índice inteiro — a varredura e a paginação do backfill (/api/search/backfill/scan e /api/search/backfill/page) e a exportação do texto dos documentos de um contexto (/api/search/chunks/document-texts) — também são servidor-a-servidor: exigem SEARCH_VIEW (só do perfil ADMIN) ou a credencial de serviço. A paginação só aceita o nome exato de um índice do escopo do backfill.

A exclusão por consulta (DELETE /api/search/query/{indexName}?field=&value=) exige SEARCH_INDEX_DELETE e, desde a issue #1912, só aceita o nome exato de um índice de contexto: padrão (datta_*), lista, exclusão e índice interno da plataforma respondem 400, mesmo para o ADMIN.

Disparar, verificar e cancelar a geração de embeddings (/api/embeddings/backfill, /api/embeddings/backfill-global e /api/embeddings/backfill/cancel) exige MODELS_MANAGE (só do perfil ADMIN) ou a credencial de serviço desde a issue #1912; a permissão de gerar embedding (EMBEDDING_GENERATE), que todos os perfis têm, pede vetor e lê o status da geração (/api/embeddings/backfill/status), mas não dispara nem cancela. Os disparos são POST desde 2026-09-28 (eram GET) e respondem o progresso em SSE; a geração segue no servidor mesmo que a conexão seja fechada. O mesmo vale para a migração Neo4j → OpenSearch (POST /api/search/admin/migrate/{domain} e /migrate-all, com OPENSEARCH_ADMIN) e para o download de modelo local (POST /api/local-llm/pull/{modelo}, com MODELS_MANAGE): nenhum GET da plataforma dispara trabalho.

Desde 2026-09-29 os dois também se cancelam, com a mesma permissão do disparo, e a exclusão vale para a plataforma inteira, não por réplica:

MétodoEndpointO que faz
POST/api/search/admin/migrate/cancelCancela a migração Neo4j → OpenSearch em andamento, em qualquer réplica (OPENSEARCH_ADMIN). Cooperativo: para antes do próximo lote e fecha o SSE de quem disparou com o evento cancelada; o que já foi gravado nos índices permanece. Responde {cancelling, runId, message}; sem migração em andamento, cancelling=false
GET/api/search/admin/migration-statusEstado da migração visto de qualquer réplica: running, runId, domain, phase (INIT … DONE, ERROR, CANCELADA) e message
POST/api/local-llm/pull/{modelo}/cancelCancela o download de um modelo local (MODELS_MANAGE; alias /api/ollama/pull/{modelo}/cancel). Na réplica que baixa, interrompe na hora; em outra, em até 5 s. O cancelamento não cai no registro via Hugging Face e o modelo não é registrado; o SSE termina com status: cancelado. Responde {cancelling, message}

Só uma migração roda por vez: a segunda, em qualquer réplica, recebe um único evento error ("Já existe uma migração em andamento"). O download é um por modelo: pedir de novo o modelo que já está baixando acompanha o download em curso quando ele roda na mesma réplica, e responde 409 com a mensagem em português (um único evento cujo status é o texto) quando ele roda em outra réplica. Nenhum dos dois começa um segundo download ou uma segunda migração.

Pelo mesmo critério (issue #1935), as escritas em /api/embedding-models/** exigem MODELS_MANAGE no filtro e no handler — ativar e abrir a troca de modelo (/api/embedding-models/current, /api/embedding-models/migracao/preparar) e o passo do rerank aceitam também a credencial de serviço — e POST /api/rules/reindex-embeddings, que regera os vetores de todas as regras da plataforma, exige MODELS_MANAGE ou a credencial de serviço (antes, RULES_EDIT).

Nas rotas de busca que recebem índice no corpo (/api/search/query, /hybrid/multi, /suggest, /spellcheck…), um padrão com curinga (datta_*) ganha a exclusão de todos os índices de sistema da plataforma (histórico, prompts, telemetria, logs, glossário, catálogo, Captain), e pedir um deles pelo nome exato responde 400 (issue #1935).

bash
curl -X PUT "$BASE/api/users/me/prompt" \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-Requested-With: XMLHttpRequest" \
  -H "Content-Type: application/json" \
  -d '{"customPrompt": "Responda sempre com referências normativas."}'

Documentos & Ingestão

Automatize a entrada de conteúdo — URLs de legislação, fontes de jurisprudência, atualizações de contexto — e a remoção controlada de processos.

MétodoEndpointO que faz
POST/api/upload/extrair-textoDevolve o TEXTO de um documento enviado (multipart, campo file; ?maxCaracteres= corta na origem) — sem ingerir, indexar ou vetorizar. Exige DOCUMENT_EXTRACT_TEXT; formato fora da whitelist volta 422 com mensagem acionável
POST/api/ingest-url/startInicia ingestão de URL (legislação, HTML, arquivos); retorna {taskId} imediato
GET/api/ingest-url/status/{taskId}Status, porcentagem e fase da ingestão de URL (polling ~2 s)
POST/api/ingest-url/cancel/{taskId}Cancela a ingestão de URL em andamento
POST/api/pipelines/{id}/executeDispara a carga de jurisprudência — cada fonte oficial é um pacote do Datta Extract; corpo opcional {parametros:{...}}
POST/api/contexts/{ctx}/update"Atualizar contexto" (retoma de onde parou); {force:true} reprocessa integralmente
GET/api/contexts/{ctx}/update/status/{taskId}Progresso e relatório da atualização (diferenças, desvios)
DELETE/api/processosExclui o processo e o subgrafo próprio (?numero=&domain=; corpo {justificativa} obrigatório). Forma canônica — é a única que alcança número com barra, como a numeração de tribunal superior (AREsp 1.627.029/RS)
DELETE/api/processos/{numero}Mesma exclusão com o número no endereço. Mantida para integrações já escritas; não alcança número com barra
GET/api/processos/documentosLista os documentos (com PDF) do processo (?numero=&domain=&prefix=). Forma canônica; a variante /api/processos/{numero}/documentos não alcança número com barra
DELETE/api/search/chunks/by-processoRemove os trechos indexados do processo na base de busca (?processoNumero=&domain=; corpo opcional {documentCodes[]}; idempotente). Exige PROCESSOS_DELETE — a mesma permissão de excluir o processo — ou SEARCH_INDEX_WRITE; a permissão de busca não basta
GET/api/documents/dossie/{cnpj}/pdfs.zipBaixa um ZIP com todos os PDFs do dossiê ligados ao CNPJ (?domain= do contexto)
GET/api/documents/processo/pdfs.zipBaixa um ZIP com todos os PDFs do processo (?numero=&domain=&prefix=). Forma canônica; a variante /api/documents/processo/{numero}/pdfs.zip não alcança número com barra

Triagem & Regras

Dispare triagens em lote ou individuais, acompanhe o progresso em tempo real e gerencie o ciclo de vida completo das regras — inclusive geração por IA.

MétodoEndpointO que faz
POST/api/audit/batch/startInicia a triagem em lote ({reprocess, apenasRegrasNovas, domain} → {taskId, total, ...})
GET/api/audit/batch/streamProgresso por processo via SSE (consumir com fetch + Bearer, não EventSource; heartbeat 15 s)
GET/api/audit/batch/statusStatus/reconciliação da triagem em lote (mesma fonte do painel de execuções)
POST/api/audit/batch/cancelCancela a triagem em lote em andamento
GET/api/audit/batch/interrompidasTriagens interrompidas do contexto (?domain=), lidas do espelho durável — insumo do botão "Retomar"
GET/api/audit/detailsDetalhe da auditoria + resumo do processo (?numero=&domain= — número vai em query por conter /)
GET/api/alertsLista os alertas do contexto (?context=&status=&severidade=&page=&size=; ordena por severidade e depois por recência)
GET/api/alerts/{alertaId}Detalhe de um alerta, com a análise que o originou
POST/api/alerts/{alertaId}/statusMove o estado do alerta ({status, justificativa}; descartar exige justificativa, e cada transição vira registro)
GET/api/alerts/acoesHistórico das transições dos alertas do contexto (quem moveu, quando e por quê)
POST/api/alerts/backfillReprojeta como alertas as triagens já concluídas do contexto (?context=; idempotente, sem LLM — a análise já está gravada)
GET/api/rulesLista regras de triagem (?contexto= filtra)
POST/api/rulesCria regra
PUT/api/rules/{numero}Atualiza/move regra
DELETE/api/rules/{numero}Exclui regra
PATCH/api/rules/{numero}/toggleAtiva/desativa regra
GET/api/rules/escopoVocabulário de escopo das regras (LOCAL, GLOBAL, DIALETICA) com rótulo e ajuda em português
POST/api/rules/escopo/sugerirSugere o escopo para um título+texto ainda não salvos ({regraTitulo, regraTexto}; heurística, sem LLM, não grava nada)
POST/api/rules/escopo/classificarBackfill: atribui escopo às regras sem decisão registrada e devolve a contagem por valor (?dryRun=true simula — padrão; dryRun=false grava e audita)
GET/api/rules/{numero}/versoesHistórico de versões da regra ou critério (autor, data e motivo de cada alteração)
GET/api/rules/{numero}/interpretacaoLeitura da regra feita pelo LLM: intenção, critérios, paráfrases e evidência esperada
POST/api/rules/{numero}/interpretacaoRegera a leitura sob demanda (best-effort, em segundo plano)
GET/api/rules/niveis-anomaliaNíveis de anomalia com os tipos aninhados (?contexto= filtra os tipos)
GET/api/rules/niveis-anomalia/tiposNomes dos tipos ativos de um contexto (?contexto= obrigatório)
POST/api/rules/niveis-anomaliaCria nível de anomalia
PUT/api/rules/niveis-anomalia/{chave}Atualiza nível
DELETE/api/rules/niveis-anomalia/{chave}Exclui nível (recusa os padrão e os que ainda têm tipos)
POST/api/rules/niveis-anomalia/{chave}/tiposCria tipo de anomalia no nível
PUT/api/rules/niveis-anomalia/{chave}/tipos/{id}Atualiza tipo (trocar de nível move o vínculo)
DELETE/api/rules/niveis-anomalia/{chave}/tipos/{id}Exclui tipo
GET/api/rules/{numero}/versoes/{versao}Texto exato de uma versão específica da regra ou critério
POST/api/rules/test-referencesTesta referências normativas de uma regra ({regraTexto, regraContexto[]} → {references[], total_found, total_missing})
POST/api/rules/delete-allApaga TODAS as regras do contexto ({contexto, motivo}; permissão administrativa dedicada)
POST/api/rules/reindex-embeddingsRegera trechos e vetores de TODAS as regras da plataforma (MODELS_MANAGE ou credencial de serviço)
POST/api/rules/generateGera regras de triagem com IA ({contexto, descricao, quantidade, todas} → {status:"RUNNING", taskId})
GET/api/rules/generate/stream/{taskId}Progresso da geração em tempo real (SSE)
GET/api/rules/generate/status/{taskId}Status da geração (permite retomar ao reabrir a página)
POST/api/rules/generate/cancel/{taskId}Cancela a geração de regras
GET/api/rules/generate/activeGerações de regras em andamento
GET/api/rules/generate/recentÚltimas gerações de regras finalizadas
bash
curl -X POST "$BASE/api/rules/generate" \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-Requested-With: XMLHttpRequest" \
  -H "Content-Type: application/json" \
  -d '{"contexto": "CPC", "descricao": "prazos recursais", "quantidade": 5}'

Recursos & Peças

Gere peças recursais fundamentadas por IA e converta o resultado em documento editável.

MétodoEndpointO que faz
POST/api/chat/recursoGera a peça recursal (processoNumero, tipoRecurso, fundamentacao, chatContext, model, provider, domain); limite ~20 chamadas/hora
POST/api/chat/recurso/docxConverte a peça já gerada em .docx (content, tipoRecurso, processoNumero); não chama a IA novamente
bash
curl -X POST "$BASE/api/chat/recurso" \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-Requested-With: XMLHttpRequest" \
  -H "Content-Type: application/json" \
  -d '{"processoNumero": "0001234-56.2024.8.26.0100", "tipoRecurso": "apelacao", "fundamentacao": "cerceamento de defesa"}'

Catálogo & Conhecimento

Publique e governe datasets no Knowledge Catalog, conduza a curadoria dos ativos de conhecimento e mantenha glossário e prompts de domínio.

MétodoEndpointO que faz
POST/api/catalog/datasets/upsertRegistra/atualiza um dataset no Knowledge Catalog (estatísticas + semântica por coluna; também chamado pela catalogação automática)
GET/api/catalog/lineage/graphGrafo de linhagem (dashboard, chart, dataset, processo, coluna)
POST/api/catalog/lineage/edges/by-nameGrava arestas de linhagem de forma idempotente
GET/api/catalog/classificationsLista os 5 níveis de classificação de dados
GET/api/catalog/datasets/{id}/ownershipLê o ownership atual (dono, curador, classificação)
PUT/api/catalog/datasets/{id}/ownershipAtribui/substitui ownership ({ownerId, stewardId, classification})
DELETE/api/catalog/datasets/{id}/ownershipRemove ownership (volta ao padrão INTERNAL)
POST/api/catalog/datasets/{id}/classifyClassificação automática (heurística de PII + IA), preservando dono/curador
GET/api/catalog/datasets/by-classificationLista datasets por nível (?level=PII; relatórios LGPD)
GET/api/catalog/sources/groupedAgregado das fontes de dados disponíveis em todos os motores (?type=all)
POST/api/catalog/sources/invalidateForça o refresh do agregador de fontes
GET/api/knowledge/assetsLista ativos de conhecimento paginados (filtros dominio, tipo, status, page, size)
GET/api/knowledge/assets/{id}Detalhe de um ativo com rastreabilidade completa (documento de origem, trechos, modelo, versão, aprovador)
POST/api/knowledge/assets/generateDispara geração de ativos em lote ({dominio, documentCodes?, tipos?}); 202 + {taskId}; máx. 50 documentos por lote
GET/api/knowledge/assets/generate/stream/{taskId}Progresso da geração via SSE (fase, total, processados, falhas, ativos gerados)
POST/api/knowledge/assets/{id}/regenerateRe-geração pontual (nova versão do mesmo documento/tipo); 202 + {taskId}
PUT/api/knowledge/assets/{id}/statusTransição de status (`{status: "APPROVED"\
PUT/api/knowledge/assets/{id}/conteudoPersiste edição humana do conteúdo (mantém DRAFT, marca edição humana; valida citações)
GET/api/knowledge/assets/{id}/fonteAtivo + trechos-fonte citados, para revisão lado a lado
GET/api/knowledge/assets/{id}/diffDiferença entre a versão atual e a última aprovada
PUT/api/knowledge/assets/status-loteAprovação/rejeição em lote ({ids, status, reason}, máx. 200 ids; resultado parcial por item)
DELETE/api/knowledge/assets/{id}Exclui ativo em DRAFT/REJECTED (nunca um aprovado)
GET/api/knowledge/review-queue/fontesDocumentos fora da origem esperada aguardando decisão humana (?dominio=)
GET/api/knowledge/metrics/overviewIndicadores da base de conhecimento (funil, backlog, qualidade da geração, últimos lotes)
GET/api/catalog/glossary/termsLista termos de glossário (?status=DRAFT; com proveniência do documento de origem)
PUT/api/catalog/glossary/terms/{id}Edição inline da definição de um termo
PUT/api/catalog/glossary/status-loteAprovação/rejeição de termos em lote (máx. 500 ids); propaga ao chat em ≤ 5 min
GET/api/knowledge-prompt/{tipo}Lê o prompt de conhecimento do domínio (tipo: doc, faq, glossary, tone; ?domain=)
POST/api/knowledge-prompt/{tipo}Customiza o prompt do domínio (?domain=)
POST/api/knowledge-prompt/{tipo}/resetRestaura o prompt padrão do domínio (?domain=)
GET/api/system-promptLê o prompt de sistema do contexto (?domain=; sem ele, o do contexto ativo ou o genérico). Mesmo contrato para user-prompt, ner-prompt, audit-prompt, extraction-prompt, investigation-prompt e process-type-prompt
POST/api/system-promptGrava o prompt do contexto (?domain=, corpo {content}). Sem domain: o único contexto cadastrado; com vários, 400 listando os nomes; cadastro de contextos indisponível, 503 — nunca o contexto ativo. Vale também para .../reset, para os demais tipos e para knowledge-prompt
GET/api/captain-promptInstruções da instalação para o Captain — globais, sem domain
POST/api/captain-promptGrava as instruções da instalação ({content}; PROMPT_EDIT)
POST/api/captain-prompt/resetRestaura as instruções da instalação (vazias)
bash
curl -X POST "$BASE/api/knowledge/assets/generate" \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-Requested-With: XMLHttpRequest" \
  -H "Content-Type: application/json" \
  -d '{"dominio": "CPC"}'

Conexões & Drivers

Cadastre fontes de dados externas de forma idempotente — toda conexão criada dispara catalogação automática — e administre os drivers que as suportam.

MétodoEndpointO que faz
POST/api/connectionsCria conexão explicitamente (sem deduplicação)
POST/api/connections/ensureCria ou reusa conexão de forma idempotente (deduplicação por fingerprint de tipo+host+porta+banco+usuário, sem credencial)
GET/api/connectionsLista conexões visíveis ao usuário (?orphan=true lista órfãs; admin)
GET/api/connections/{id}Detalhe da conexão
POST/api/connections/test-without-saveTesta a configuração antes de persistir
POST/api/connections/{id}/testTesta uma conexão existente
POST/api/connections/{id}/scanRecatalogação manual — enfileira nova varredura de catalogação (admin)
GET/api/connections/{id}/scan/statusEstado da varredura de catalogação em andamento
GET/api/connections/{id}/scan/eventsProgresso da catalogação via SSE
POST/api/connections/{id}/bindingsReatribui credencial/vínculo a um usuário (conexão órfã)
GET/api/connections/{id}/monitoringLê agenda, janela e política da fonte monitorada
PUT/api/connections/{id}/monitoringGrava agenda, janela e política da fonte monitorada
POST/api/connections/{id}/check-nowDispara verificação imediata; 202 + {syncId, status, historyUrl}; 409 se já há sincronização em andamento; limite 10/hora por usuário
GET/api/connections/{id}/sync-historyHistórico paginado de sincronizações (?page=&size=, size 1–100)
DELETE/api/connections/{id}Revoga a conexão (datasets já catalogados permanecem)
GET/api/driversLista drivers instalados (?status= filtra)
GET/api/drivers/catalogCatálogo oficial de drivers aprovados
POST/api/drivers/uploadUpload de driver + metadados; passa por pipeline de validação (bytecode, vulnerabilidades, assinatura, teste de carga)
POST/api/drivers/bootstrapInstala em lote os drivers oficiais de download automático
GET/api/drivers/{id}/usagesConexões que usam o driver
POST/api/drivers/{id}/fetch-docsReingesta a documentação do fabricante (202; tarefa em segundo plano)
GET/api/drivers/{id}/docs-statusProgresso da ingestão de documentação (RUNNING/COMPLETED/FAILED)

Painéis & DATTA BI

Monte workspaces, publique dashboards, renderize visuais com filtros e drill, e acione os copilots de BI — tudo o que o editor faz, via API.

As rotas /api/config/panel/{domain}/* consultam a fonte de dados com a identidade de quem abre o painel: o Authorization da chamada é encaminhado ao grafo, à busca, ao agente JDBC e ao Trino, e cada um aplica o próprio escopo de contexto e a própria permissão. Painel não é atalho: quem não alcança o contexto pela tela do grafo também não o alcança por um painel, e consultar um agente JDBC por um painel continua exigindo JDBC_EXECUTE. Chamada sem usuário (S2S por X-Internal-Token) recebe uma credencial de serviço restrita à descoberta de fontes.

MétodoEndpointO que faz
GET/api/config/panelsCatálogo achatado dos painéis da plataforma (nativos, canvas e dashboards BI) — escopado à visibilidade de workspace do usuário
GET/api/config/workspacesLista os workspaces visíveis ao usuário (admin/S2S vê todos; workspace sem membros, ou só com administradores da plataforma, é público; com membro comum, só membros e owner). Cada membro traz adminPlataforma, decidido pelo servidor
GET/api/config/workspaces/{id}Detalhe de um workspace visível; workspace restrito de que o usuário não é membro responde 404
PUT/api/config/workspaces/{id}/panel-refsDefine os painéis vinculados por referência ({"panelRefs":[{"workspaceId","panelId"}]}; valida e deduplica; referência inválida → 400)
POST/api/config/workspaces/{id}/panelsCria painel de canvas / publica dashboard BI no workspace (kind: "dattabi-dashboard"). config.domain presente precisa ser o nome de um contexto cadastrado — senão 400 listando os válidos
PUT/api/config/workspaces/{id}/panels/{panelId}Salva título/configuração do painel (mesma conferência de config.domain)
GET/api/config/panel/{domain}/datasourcesFontes disponíveis no contexto (construtor de painéis) — cada fonte é descoberta com a identidade do chamador; fonte fora do alcance dele volta sem recursos
POST/api/config/panel/{domain}/fieldsCampos da fonte selecionada (_all_ como domínio na criação rápida)
POST/api/config/panel/{domain}/tablesTabelas da fonte selecionada
POST/api/config/panel/{domain}/aggregateDados agregados para renderização de painel (leitura via POST — parâmetros no corpo); exige PANEL_VIEW ou CONFIG_EDIT, e a fonte ainda cobra a permissão dela
POST/api/config/panel/{domain}/previewPreview de dados reais para tabelas
GET/api/datalayer-admin/kafka/topicsLista tópicos de streaming disponíveis (criação rápida)
GET/api/dattabi/workspacesLista workspaces do DATTA BI
GET/api/dattabi/workspaces/{id}/sharesLista usuários com acesso ao workspace + papel
PUT/api/dattabi/workspaces/{id}/shares/{userId}Define o papel do compartilhamento (`{role: "view"\
DELETE/api/dattabi/workspaces/{id}/shares/{userId}Remove o compartilhamento do workspace
GET/api/dattabi/workspaces/{id}/themesLista temas do workspace
GET/api/dattabi/dashboardsLista dashboards (?workspaceId=&includeArchived=; workspaceId vazio → [])
POST/api/dattabi/dashboardsCria dashboard
PATCH/api/dattabi/dashboards/{id}Atualização parcial (merge de campos não-nulos: título, descrição, layouts, modelo, filtros, páginas, tema); usada pelo auto-save
GET/api/dattabi/dashboards/{id}/versionsLista versões do dashboard
POST/api/dattabi/dashboards/{id}/restoreRestaura a última versão
GET/api/dattabi/dashboards/{id}/export.pdfExporta o dashboard (também .png, .csv, .svg)
POST/api/dattabi/dashboards/{id}/shareCria link de compartilhamento
GET/api/dattabi/shares/publicConsome link de compartilhamento (?t=<token>&p=)
DELETE/api/dattabi/shares/{id}Revoga link de compartilhamento
GET/api/dattabi/dashboards/{id}/thumbnail.pngMiniatura do dashboard (header `X-Thumb-Source: snapshot\
PUT/api/dattabi/dashboards/{id}/thumbnailPublica o screenshot real da miniatura
POST/api/dattabi/dashboards/{id}/renderRe-renderiza o dashboard (SSE). Corpo opcional: filtroCruzado ({origem, campo, valor}, o clique num visual) e overrides (LET @nome); ?pageId= escolhe a página
POST/api/dattabi/charts/{id}/render-drilledRenderiza um chart com drill ({overrides, bindingsOverride, filtroCruzado}), com os filtros salvos do visual
POST/api/dattabi/copilot/chatCopilot do editor (SSE)
POST/api/dattabi/copilot/quick-dashboardCriação rápida (precedência customQuery > sources[] > fonte única legada)
POST/api/dattabi/copilot/generate-dashboardGera dashboard por linguagem natural ({prompt, datasetIds?, persist?, workspaceId?})
GET/api/dattabi/datasetsLista datasets do workspace (?workspaceId=; filtrado por permissão)
GET/api/dattabi/datasets/{id}Consulta dataset (campo loadMode: IMPORT \
POST/api/dattabi/datasetsCria dataset (também usado pelo DATTA Prep para persistir cada consulta)
POST/api/dattabi/modelsCria modelo semântico agrupando consultas
POST/api/dattabi/models/{modelId}/datasets/{datasetId}Liga um dataset ao modelo
POST/api/dattabi/prep/profilePerfil estatístico por coluna ({datasetRef, steps, sample?})
POST/api/dattabi/copilot/r/suggestGera script R por linguagem natural
GET/api/dattabi/copilot/r/packagesLista pacotes R habilitados
POST/api/dattabi/r/executeExecuta script R sobre amostra do dataset
POST/api/dattabi/dattax/validateValida sintaxe DATTAX (aba Consulta personalizada)
POST/api/dattabi/refresh-jobs/{id}/run-nowDispara refresh imediato de dataset materializado
GET/api/config/maps-api-keyChave de mapas para visuais georreferenciados (compartilhada entre BI, Chat e Investigar)
bash
curl -X POST "$BASE/api/dattabi/copilot/generate-dashboard" \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-Requested-With: XMLHttpRequest" \
  -H "Content-Type: application/json" \
  -d '{"prompt": "Painel de processos por classe e por mês", "persist": true}'

Pipelines & Execuções

Execute scripts DATTAX, assine streams em tempo real, controle o ciclo de vida de pipelines e acompanhe qualquer execução em segundo plano.

MétodoEndpointO que faz
POST/api/dattax/executeExecuta script DATTAX avulso (progresso via SSE da própria chamada)
GET/api/dattax/stdlibCatálogo da biblioteca padrão DATTAX (alimenta o autocomplete do editor)
POST/api/dattax/stream/subscribeCria assinatura de stream DATTAX; retorna {subscriptionId, feasibility, sseUrl, wsUrl}
GET/api/dattax/streamLista assinaturas de stream ativas
GET/api/dattax/stream/{id}/eventsEventos da assinatura via SSE (fallback do WebSocket)
GET/api/dattax/stream/{id}/lagMétricas de atraso da assinatura de stream
DELETE/api/dattax/stream/{id}Cancela a assinatura de stream
WS/ws/dattax/stream/{id}Canal primário (WebSocket) de eventos do stream
GET/api/pipelines/summaryLista paginada dos pacotes de extração (24 por página) com facetas de origem, situação e integração
GET/api/pipelines/statsIndicadores agregados da galeria de pacotes (total, em execução, agendados, executados hoje, taxa de sucesso)
GET/api/pipelines/quick/capabilitiesCombinações de origem e destino que a Extração Rápida sabe executar diretamente
POST/api/pipelines/quick/previewConverte as escolhas do assistente rápido no desenho do pipeline, sem gravar nem executar
GET/api/pipelines/{id}/dattaxConverte a definição visual do pipeline em script DATTAX
POST/api/pipelines/{id}/{acao}Ciclo de vida do pipeline (acao: pause, resume, archive, activate)
GET/api/tasksExecuções em andamento do hub de tarefas (ingestões, uploads)
GET/api/tasks/allHistórico das últimas tarefas finalizadas (?limit=10)
GET/api/tasks/streamEstado vivo das execuções via SSE (atualização a cada 5 s)
POST/api/search/executionsGrava registro terminal de execução (servidor-a-servidor)
GET/api/search/executions/historyLê o histórico durável de execuções (?from=&to= em epoch ms, limit até 1000)

Processos BPM

Publique modelos de processo, crie instâncias e correlacione mensagens a eventos BPMN a partir dos seus sistemas.

Gerenciar modelos exige a permissão BPMN_DEPLOY (ou perfil administrador). Modelo publicado é imutável: para alterá-lo, abra uma nova versão.

MétodoEndpointO que faz
POST/api/bpmn/modelosCria/importa um modelo BPMN a partir do XML
PUT/api/bpmn/modelos/{id}Edita o modelo enquanto ele não foi publicado
DELETE/api/bpmn/modelos/{id}Remove o modelo
POST/api/bpmn/modelos/{id}/publicarPublica o modelo, tornando-o executável e imutável
POST/api/bpmn/modelos/{id}/nova-versaoAbre nova versão editável a partir do modelo publicado
POST/api/bpmn/modelos/{id}/auto-iniciarConfigura o início automático de instâncias do modelo
GET/api/bpmn/modelos/{id}/contexto/previaPrévia da troca de contexto (destino=): contagens (incluindo instanciasSeguindoContextoAtivo, que nunca são migradas) e os pares banco/label/propriedade dos dois lados; não escreve nada
PUT/api/bpmn/modelos/{id}/contextoReaponta o contexto do modelo e, com migrarInstancias, o das instâncias dele ({contexto, migrarInstancias, motivo}; motivo obrigatório)
POST/api/bpmn/instanciasCria instância de processo BPM ({modeloId, chaveNegocio, titulo, variaveis})
POST/api/bpmn/mensagensPublica mensagem correlacionada para eventos de mensagem BPMN ({nome, correlacao, variaveis} → {entregues})
DELETE/api/bpmn/instancias/por-contextoExclui as instâncias BPM de um contexto purgado (cancela as ativas)
GET/api/bpmn/instanciasLista instâncias; aceita modeloId, status, chaveNegocio, responsavel (use __sem__ para as sem responsável), pagina, tamanho
PUT/api/bpmn/instancias/{id}/responsavelDefine ou troca o responsável pela instância ({responsavel}; vazio libera). Exige BPMN_EXECUTE
PUT/api/bpmn/instancias/responsavel-por-chavePropaga o responsável para todas as instâncias de uma chave de negócio (?chave=, corpo {responsavel})
POST/api/bpmn/instancias/backfill-responsaveisPreenche o responsável das instâncias antigas a partir das atribuições vigentes (idempotente)
GET`/api/bpmn/relatorios/{resumo\fases\
bash
curl -X POST "$BASE/api/bpmn/instancias" \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-Requested-With: XMLHttpRequest" \
  -H "Content-Type: application/json" \
  -d '{"modeloId": "triagem-processo", "chaveNegocio": "0001234-56.2024.8.26.0100", "titulo": "Triagem do processo", "variaveis": {}}'

Usuários, Permissões & Contextos

Provisione contas, atribua perfis e permissões, administre contextos de domínio e execute limpezas controladas.

MétodoEndpointO que faz
POST/api/auth/usersCria usuário local já com a role inicial — o cadastro administrativo (USERS_MANAGE_ROLES). Corpo {email, password, displayName, login?, role?} (sem role, READ_ONLY); 201 com a conta, 400 para dado ou role inválida, 409 para e-mail ou login em uso
POST/api/auth/registerAuto-cadastro anônimo (login obrigatório, com validação de campos). Desligado por padrão (datta.auth.self-registration): responde 403 mesmo a quem está autenticado — para provisionar contas use POST /api/auth/users
POST/api/auth/loginAutentica por e-mail OU login no mesmo campo
GET/api/auth/users/{email}Consulta a conta (e-mail é a chave canônica)
PUT/api/auth/users/{email}Atualiza a conta
DELETE/api/auth/users/{email}Remove a conta
PUT/api/auth/users/{email}/roleDefine o perfil (role) do usuário
PUT/api/auth/users/{email}/permissionsConcede permissões diretas ao usuário
POST/api/auth/jupyter-cookieEmite cookie HttpOnly de sessão para o ambiente de Notebook
POST/api/users/atribuirAtribui o processo a um usuário (?processoNumero=; corpo {email}, contexto opcional). A gravação acontece no contexto em que o processo existe; 404 nomeia o contexto consultado e 409 pede o contexto quando o número existe em mais de um. Exige USERS_EDIT. Forma canônica — é a única que alcança número com barra
POST/api/users/atribuir/{processoNumero}Mesma atribuição com o número no endereço. Mantida para integrações já escritas; não alcança número com barra
GET/api/contextosLista os contextos cadastrados (forma enxuta: chave e rótulo); usada por instaladores e integrações para descobrir o que existe
GET/api/contextos/listLista os contextos com os detalhes completos de cada um
GET/api/contextos/activeContexto ativo no momento
GET/api/contextos/{nome}Detalhe de um contexto específico
GET/api/config/domain/listLista contextos configurados (chave, rótulo, tipo). Exige sessão — qualquer perfil; a estrutura completa (fontes de dados) fica em list-full, com CONFIG_VIEW
GET/api/config/domain/{nome}Contexto + fontes de dados + base de código processual (quando definida)
PUT/api/config/domain/{nome}Atualiza o contexto (fontes de dados, flag de consumo de ativos de conhecimento pelo chat; campo vazio limpa, ausente preserva)
POST/api/config/domain/legislacaoCria um contexto de legislação em uma chamada: corpo {name, displayName, urlDaLei, prompts, ingerir} — cadastro como Código Processual / Legislação Federal e corpus de regras, urlDaLei salva como origem, prompts (opcional, por tipo: system, user, ner, audit, extraction, investigation, process_type, `knowledge.doc
GET/api/config/rule-contexts-mergedContextos de regra + rótulos {contexts, labels}, já filtrados pela visibilidade
GET/api/prompts/domains/activeContexto ativo da plataforma (fallback do frontend para resolver domain)
GET/api/config/feature-visible-contextsMapa completo funcionalidade → contextos visíveis
GET/api/config/feature-visible-contexts/{feature}Contextos visíveis de uma funcionalidade (allowlist: rules, pdf, url, dattabi, extract, ontology, bpm)
POST/api/config/feature-visible-contexts/{feature}Grava a lista de contextos da funcionalidade (lista vazia = todos visíveis)
POST/api/documents/context/purgeOrquestra o purge completo do contexto (?domain=&reason=; permissão sensível)
POST/api/graph/context/purgePurge do grafo do contexto (?domain=; valida o alvo contra bases de sistema; cascateia ao BPM)
POST/api/search/admin/context/purgeApaga os índices de busca do contexto (?domain=)

MCP & Integrações Externas

Conecte agentes de IA externos às ferramentas do DATTA via protocolo MCP (JSON-RPC 2.0 + SSE), com observabilidade das invocações.

MétodoEndpointO que faz
GET/api/mcp/toolsLista as ferramentas MCP registradas (nome, schema, permissão)
GET/api/mcp/sessionsSessões SSE ativas
GET/api/mcp/invocationsInvocações recentes (?limit=200; usuário, ferramenta, duração, resultado)
GET/api/mcp/infoInventário das ferramentas MCP e a permissão que cada uma exige. Exige MCP_INVOKE (uso servidor-a-servidor com token interno)
POST/mcp/rpcCanal JSON-RPC 2.0 do MCP (Authorization: Bearer). Requisição (com id) → 200 com a resposta; notificação (sem id) → 202 sem corpo
GET/mcp/sseCanal SSE do MCP; o evento endpoint devolve a URL de mensagens da sessão (/mcp/sse/messages?sessionId=...)
bash
curl -X POST "$BASE/mcp/rpc" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}'

Exportação de Conhecimento & Contas de Serviço

Leve o conhecimento curado do DATTA para sistemas externos — assistentes próprios, portais, buscadores — por um canal com identidade própria, separada das contas de pessoas.

Contas de serviço

Integrações não usam a conta de um usuário: você cria uma conta de serviço com escopo de contextos e troca as credenciais por um token de acesso. O segredo é exibido uma única vez, na criação — guarde-o no seu cofre.

MétodoEndpointO que faz
POST/api/auth/service-accountsCria a conta com escopo de contextos ({nome, descricao, dominios[]}); devolve o identificador e o segredo, este último exibido só agora
GET/api/auth/service-accountsLista as contas de serviço existentes
DELETE/api/auth/service-accounts/{id}Revoga a conta; corpo {reason} obrigatório, idempotente, efeito propagado em até 60 s
POST/api/auth/service-accounts/tokenTroca identificador + segredo por um token com o escopo da conta; limite de 10 chamadas/minuto por identificador e origem
GET/api/auth/service-accounts/{id}/statusConsulta a situação da conta (uso servidor-a-servidor para checar revogação)

Credencial inválida e conta revogada devolvem a mesma resposta de erro no pedido de token — a diferença não é revelada de propósito. Para saber se uma conta foi revogada, consulte a listagem.

Exportação por contexto

Base: /api/knowledge/export/{contexto}/.... Só conteúdo aprovado é exportado. Comece pelo manifesto: ele traz o inventário por coleção e uma versão de snapshot que serve de validador de cache — repetindo a chamada com esse validador, você recebe "sem novidades" em vez do conteúdo inteiro.

MétodoEndpointO que faz
GET/api/knowledge/export/{contexto}/manifestInventário por coleção + versão do snapshot; devolve "não modificado" quando você informa a versão que já tem
GET/api/knowledge/export/{contexto}/documentosDocumentos otimizados aprovados (`?format=json\
GET/api/knowledge/export/{contexto}/faqPares de pergunta e resposta aprovados (?since=)
GET/api/knowledge/export/{contexto}/glossarioTermos de glossário aprovados (?since=)
GET/api/knowledge/export/{contexto}/chunksTrechos vigentes em fluxo contínuo, paginados por cursor (?includeEmbeddings=)
GET/api/knowledge/export/{contexto}/bundlePacote zip com manifesto, documentos, perguntas e glossário de uma vez

Para sincronização incremental, guarde o instante da última exportação e passe-o em since: as coleções devolvem apenas o que mudou desde então.

bash
TOKEN=$(curl -s -X POST "$BASE/api/auth/service-accounts/token" \
  -H "Content-Type: application/json" \
  -d '{"clientId": "'"$CLIENT_ID"'", "clientSecret": "'"$CLIENT_SECRET"'"}' | jq -r .accessToken)

curl -s "$BASE/api/knowledge/export/MEC/manifest" \
  -H "Authorization: Bearer $TOKEN"

Configuração & Utilitários

Ajustes de plataforma consumíveis por API: modelos de IA, chaves de fontes externas, documentação restrita e navegação no armazenamento de objetos.

MétodoEndpointO que faz
POST/api/config/thinking-modelGrava o modelo de raciocínio da etapa de seleção de ferramenta do chat (escolha de plataforma, vale para todos os contextos)
GET/POST/api/config/datajud-urlLê/grava a URL base do DataJud (dinâmico, sem reimplantação)
GET/POST/api/config/datajud-keyLê/grava a chave pública do CNJ (mascarada após salva)
GET/api/config/internal/datajud-keyLeitura servidor-a-servidor da chave DataJud
GET/api/docs/{caminho}Serve manifesto + conteúdo da seção restrita do Portal de Documentação (autenticado)
GET/api/platform/minio/browser/bucketsLista buckets do armazenamento de objetos ([{name, creationDate}])
GET/api/platform/minio/browser/objectsLista objetos/pastas (?bucket=&prefix=&recursive=&max=&startAfter= → {objects[], truncated, nextToken})
GET/api/platform/minio/browser/objectDetalhe do objeto (?bucket=&key=; tamanho, tipo, última modificação, etag, metadados)
GET/api/platform/minio/browser/summaryResumo do bucket (?bucket=; contagem e tamanho total, teto de 50.000 objetos)
GET/PUT/api/platform/minio/configLê/grava a configuração do armazenamento de objetos (chave secreta mascarada; escrita administrativa)
POST/api/platform/minio/testTesta a conectividade do armazenamento de objetos ({ok, message})

Os endpoints evoluem junto com a plataforma — novas rotas surgem e parâmetros são refinados a cada versão; em caso de divergência, o comportamento observado na versão instalada prevalece. Toda execução disparada via API (triagens, ingestões, gerações, sincronizações) aparece na área Execuções da interface, com a mesma trilha de auditoria das ações feitas pela tela.