📁 Sistema
GET
/
Página inicial com documentação completa de todos os endpoints da API e status do sistema
💡 Exemplo de Resposta:
Página HTML com documentação interativa e indicador de saúde do sistema
⚠️ Instruções Importantes:
- Esta página que você está visualizando
- O cabeçalho mostra o status atual do sistema (Operacional/Degradado)
GET
/status
Página de status detalhado do sistema com configurações, funcionalidades ativas e informações de uptime
💡 Exemplo de Resposta:
Página HTML com painel de status do sistema
⚠️ Instruções Importantes:
- Mostra versão, uptime, ambiente e funcionalidades ativas
- Indica se o Modo de Teste está ativo e suas configurações
📁 API
GET
/api/analise
Executa análise customizada de IA (GPT-4o mini) com prompt livre
📝 Parâmetros:
codEscritorio
int
OBRIGATÓRIO
ID do escritório/cliente
prePrompt
string
OBRIGATÓRIO
Contexto inicial para o modelo
conteudo
string
OBRIGATÓRIO
Conteúdo a ser analisado
💡 Exemplo de Resposta:
{
"sucesso": true,
"resposta": "Análise gerada pela IA...",
"tokensConsumidos": 245,
"modelo": "gpt-4o-mini"
}
⚠️ Instruções Importantes:
- Forneça parâmetros na query string: /api/analise?codEscritorio=875&prePrompt=...&conteudo=...
GET
/api/metrics/easycase-replication
Retorna métricas de replicação para EasyCase PostgreSQL
💡 Exemplo de Resposta:
{
"timestamp": "2025-11-18T10:30:00Z",
"publicacoes": { "enfileiradas": 150, "processadas": 140, "falhas": 10 },
"andamentos": { "enfileirados": 300, "processados": 290, "falhas": 10 }
}
GET
/api/homonimo
Marca uma publicação como homônima (pessoa errada), desativando o monitoramento do processo
📝 Parâmetros:
idautPublicacao
int
OBRIGATÓRIO
ID da publicação no Sisea
token
string
OBRIGATÓRIO
Token de autenticação do usuário
💡 Exemplo de Resposta:
{
"sucesso": true,
"mensagem": "Processo marcado como homônimo com sucesso",
"numProcesso": "0825658-43.2024.8.12.0001"
}
⚠️ Instruções Importantes:
- Após marcar como homônimo, o sistema para de monitorar novas publicações deste processo
- Um email de confirmação é enviado ao usuário
📁 NFS-e Nacional
GET
/api/nfse/emitir
Emite uma NFS-e Nacional para uma parcela (vencimento) específica da fatura do Sisea
📝 Parâmetros:
sistema
string
OBRIGATÓRIO
Identificador do sistema ('s' para Sisea)
tenant
int
OBRIGATÓRIO
Código do cliente no Sisea
vencimento
int
OBRIGATÓRIO
ID da parcela no Sisea (Vencimentos.Idaut)
usarDataFatura
bool
OPCIONAL
Se true, usa Faturas.Emissao como data de competência (dCompet). Se false ou ausente, usa data atual.
🔗 Exemplo de Uso:
/api/nfse/emitir?sistema=s&tenant=3413&vencimento=12345
💡 Exemplo de Resposta:
"ok" em caso de sucesso, ou descrição do erro em caso de falha
⚠️ Instruções Importantes:
- O parâmetro 'vencimento' refere-se a Vencimentos.Idaut (parcela da fatura)
- Uma fatura pode gerar múltiplas NFS-e (uma por parcela/vencimento)
- Ao emitir com sucesso, grava: Faturas.CodVNFSe, Faturas.DataEmNFSE e Vencimentos.NrNFSe
- O ambiente (Teste/Produção) é determinado pelo campo Producao do certificado
- Requer certificado digital A1 (.pfx) previamente cadastrado
- O município do prestador deve ter aderido à NFS-e Nacional
- Data de Competência (dCompet): usa data atual por padrão. Use usarDataFatura=true para usar Faturas.Emissao
- Data de Emissão (dhEmi): sempre usa data/hora atual da emissão
GET
/api/nfse/consultar
Consulta uma NFS-e emitida através da chave de acesso
📝 Parâmetros:
tenant
int
OBRIGATÓRIO
Código do cliente no Sisea
chaveAcesso
string
OBRIGATÓRIO
Chave de acesso da NFS-e (44 dígitos)
🔗 Exemplo de Uso:
/api/nfse/consultar?tenant=3413&chaveAcesso=33041234567890123456789012345678901234567890
💡 Exemplo de Resposta:
{
"sucesso": true,
"status": "AUTORIZADA",
"numeroNfse": "2024000001234",
"dataEmissao": "2024-12-15T10:30:00",
"valorTotal": 1500.00,
"ambiente": "Produção"
}
⚠️ Instruções Importantes:
- A chave de acesso é retornada na resposta de emissão
- O ambiente é determinado pelo certificado do tenant
GET
/api/nfse/municipio/{codigoIbge}
Consulta parâmetros de um município aderente à NFS-e Nacional (requer certificado digital)
📝 Parâmetros:
codigoIbge
string
OBRIGATÓRIO
Código IBGE do município (7 dígitos) - informar NO CAMINHO da URL, não como query string
tenant
int
OBRIGATÓRIO
Código do cliente no Sisea (obrigatório para autenticação mTLS)
🔗 Exemplo de Uso:
/api/nfse/municipio/3304557?tenant=3413
💡 Exemplo de Resposta:
{
"sucesso": true,
"codigoIbge": 3304557,
"aderente": true,
"mensagem": "Município aderente à NFS-e Nacional"
}
⚠️ Instruções Importantes:
- IMPORTANTE: O código IBGE vai NO CAMINHO da URL (ex: /api/nfse/municipio/3304557)
- Requer certificado digital cadastrado para o tenant
- Consulta a API da SEFIN nos ambientes Testes e Produção (fallback automático)
- LIMITAÇÃO: Nem todos os municípios aderentes estão disponíveis na API
- Para lista completa de municípios aderentes, consulte: gov.br/nfse/pt-br/municipios
GET
/api/nfse/certificado/upload
Exibe formulário HTML para upload de certificado digital A1
📝 Parâmetros:
tenant
int
OPCIONAL
Código do cliente (pré-preenche o formulário)
cnpj
string
OPCIONAL
CNPJ do prestador (pré-preenche o formulário)
🔗 Exemplo de Uso:
/api/nfse/certificado/upload?tenant=3413&cnpj=12345678000199
💡 Exemplo de Resposta:
Página HTML com formulário de upload
⚠️ Instruções Importantes:
- Acesse diretamente no navegador para usar o formulário
- O certificado é criptografado antes de ser armazenado
- Requer variável de ambiente NFSE_ENCRYPTION_KEY configurada
POST
/api/nfse/certificado
Faz upload de um certificado digital A1 (.pfx) para um tenant
📝 Parâmetros:
tenantId
int
OBRIGATÓRIO
Código do cliente no Sisea
cnpj
string
OBRIGATÓRIO
CNPJ do prestador de serviço
certificado
file
OBRIGATÓRIO
Arquivo .pfx do certificado A1
senha
string
OBRIGATÓRIO
Senha do certificado
💡 Exemplo de Resposta:
{
"sucesso": true,
"mensagem": "Certificado cadastrado com sucesso",
"dataValidade": "2025-12-31T23:59:59",
"titular": "EMPRESA EXEMPLO LTDA"
}
⚠️ Instruções Importantes:
- Use Content-Type: multipart/form-data
- A senha é criptografada com AES-256 antes do armazenamento
- Por padrão, o certificado é cadastrado em modo Teste
GET
/api/nfse/certificado/modo
Consulta o modo de operação atual do tenant (Teste ou Produção) - Retorna TEXTO PURO
📝 Parâmetros:
tenant
int
OBRIGATÓRIO
Código do cliente no Sisea
🔗 Exemplo de Uso:
/api/nfse/certificado/modo?tenant=3413
💡 Exemplo de Resposta:
Produção Restrita (Testes) ou Produção ou Erro: [mensagem de erro]
⚠️ Instruções Importantes:
- Retorna texto puro (não JSON) para compatibilidade com Delphi 7
- Possíveis respostas: 'Produção', 'Produção Restrita (Testes)' ou 'Erro: [mensagem]'
PUT
/api/nfse/certificado/modo
Alterna o modo de operação do tenant entre Teste e Produção (REST padrão)
📝 Parâmetros:
tenant
int
OBRIGATÓRIO
Código do cliente no Sisea
producao
bool
OBRIGATÓRIO
true para Produção, false para Testes
🔗 Exemplo de Uso:
PUT /api/nfse/certificado/modo?tenant=3413&producao=true
💡 Exemplo de Resposta:
{
"sucesso": true,
"tenantId": 3413,
"producao": true,
"ambiente": "Produção",
"mensagem": "Modo alterado para: Produção"
}
⚠️ Instruções Importantes:
- ATENÇÃO: Em Produção, as NFS-e emitidas têm validade fiscal real
- Recomenda-se testar extensivamente em modo Teste antes de ativar Produção
- Para sistemas legados (Delphi 7), use GET /api/nfse/certificado/setmodo
GET
/api/nfse/certificado/setmodo
Alterna o modo de operação do tenant (compatibilidade Delphi 7 que só suporta GET)
📝 Parâmetros:
tenant
int
OBRIGATÓRIO
Código do cliente no Sisea
producao
bool
OBRIGATÓRIO
true para Produção, false para Testes
🔗 Exemplo de Uso:
/api/nfse/certificado/setmodo?tenant=3413&producao=true
💡 Exemplo de Resposta:
{
"sucesso": true,
"tenantId": 3413,
"producao": true,
"ambiente": "Produção",
"mensagem": "Modo alterado para: Produção"
}
⚠️ Instruções Importantes:
- Endpoint GET criado para compatibilidade com Delphi 7 (que só suporta GET)
- Funcionalidade idêntica ao PUT /api/nfse/certificado/modo
- ATENÇÃO: Em Produção, as NFS-e emitidas têm validade fiscal real
📁 Testes
GET
/test/verificar-pessoas-inconsistentes
Executa sincronização Sisea → EasyCase para detectar pessoas sem contatos vinculados
💡 Exemplo de Resposta:
{
"sucesso": true,
"mensagem": "Verificação de pessoas sem contatos executada com sucesso",
"instrucoes": {
"verificarLogs": "Verifique os logs do Worker para detalhes",
"verificarEmail": "Se houver pessoas sem contato, um email será enviado"
}
}
⚠️ Instruções Importantes:
- Verifique os logs do Worker para detalhes sobre pessoas sem contato detectadas
- Se houver pessoas sem contato, um email será enviado ao EmailSuporte configurado
GET
/test/diagnostico-escritorios
Lista todos os escritórios e suas capacidades de replicação para EasyCase
💡 Exemplo de Resposta:
{
"sucesso": true,
"total_escritorios": 2,
"com_easycase_valido": 1,
"escritorios": [
{
"idaut": 875,
"escritorio": "Fux Advogados",
"id_easycase": 6,
"pode_replicar": true
}
]
}
⚠️ Instruções Importantes:
- Use este endpoint primeiro para identificar escritórios válidos antes de testar replicação
GET
/test/reimport
Testa replicação EasyCase com publicações e andamentos recentes
📝 Parâmetros:
codEscritorio
int
OPCIONAL
ID do escritório para filtrar replicação (padrão: todos)
limit
int
OPCIONAL
(padrão: 10)
Quantidade máxima de registros a testar (padrão: 10)
💡 Exemplo de Resposta:
{
"sucesso": true,
"resumo": {
"publicacoes": { "encontradas": 10, "enfileiradas": 10 },
"andamentos": { "encontrados": 10, "enfileirados": 10 }
},
"instrucoes": {
"aviso": "⚠️ Este teste pode duplicar dados no PostgreSQL EasyCase"
}
}
⚠️ Instruções Importantes:
- Forneça parâmetros na URL: /test/reimport?codEscritorio=875&limit=20
- Verifique os logs do EasyCaseReplicationService para acompanhar o processamento
- Consulte a tabela 'publications' no PostgreSQL EasyCase para validar inserção
GET
/test/reimport-agenda-IA
Reimporta publicações históricas COM análise de IA de um escritório específico
📝 Parâmetros:
codEscritorio
int
OBRIGATÓRIO
ID do escritório para reimportar publicações
limit
int
OPCIONAL
(padrão: 100)
Quantidade máxima de publicações a reimportar (padrão: 100)
💡 Exemplo de Resposta:
{
"sucesso": true,
"totalProcessadas": 50,
"enfileiradas": 50,
"publicacoes": [
{
"idaut": 259,
"numProcesso": "0825658-43.2024.8.12.0001",
"status": "enfileirada"
}
],
"instrucoes": {
"proximosPasos": "Aguarde ~30 segundos para processamento"
}
}
⚠️ Instruções Importantes:
- Forneça parâmetros na URL: /test/reimport-agenda-IA?codEscritorio=875&limit=50
- Aguarde ~30 segundos para processamento completo
- Execute query de validação em EasyCase: SELECT id, num_processo, import_details, observacoes FROM publications WHERE origem IN ('SP', 'SA') ORDER BY created_at DESC LIMIT 10
🔄 Workflow Recomendado de Testes
- /test/diagnostico-escritorios → Identificar escritórios válidos com mapeamento EasyCase
- /test/verificar-pessoas-inconsistentes → Validar integridade de dados Sisea
- /test/reimport?codEscritorio=875&limit=20 → Testar replicação de dados recentes
- /test/reimport-agenda-IA?codEscritorio=875&limit=50 → Backfill de publicações históricas com análise IA