📡 Lista Completa de Endpoints - ecosif-moviments
📋 Visão Geral
Este documento lista todos os endpoints REST disponíveis no serviço ecosif-moviments, organizados por funcionalidade.
Base URL: http://localhost:8082
Autenticação: JWT Bearer Token (obtido via ecosif-auth)
🏷️ Tags
Os endpoints estão organizados nas seguintes categorias:
- Lotes (Batches) - Gerenciamento de lotes contábeis
- Documentos - Gerenciamento de documentos contábeis
- Lançamentos (Entries) - Gerenciamento de lançamentos individuais
- Importação - Importação de arquivos IPL e CSV
- Consolidação - Consolidação contábil
- Abertura/Fechamento - Controle de períodos contábeis
- Calendário - Operações de calendário
- Cálculo de Cotas - Cálculo de cotas tributárias
- Purging - Limpeza e arquivamento de dados
- Admin - Operações administrativas
📦 Lotes (Batches)
Criar Lote
- Método:
POST - URL:
/batch - Descrição: Cria um novo lote contábil
- Autenticação: Obrigatória
- Request Body:
json { "lote": "001", "empresa": "00001", "filial": "00001", "ano": 2025, "mes": 11, "descricao": "Lote de Novembro" } - Response:
201 Createdjson { "id": 1, "lote": "001", "empresa": "00001", "filial": "00001", "ano": 2025, "mes": 11, "descricao": "Lote de Novembro" } - Erros:
400 Bad Request- Dados inválidos401 Unauthorized- Token ausente/inválido
Listar Lotes (Paginado)
- Método:
GET - URL:
/allbatch/{company}/{branch}/page - Descrição: Lista lotes de uma empresa/filial com paginação
- Parâmetros de Path:
company(String) - Código da empresabranch(String) - Código da filial- Parâmetros de Query:
page(int, opcional) - Número da página (padrão: 0)size(int, opcional) - Tamanho da página (padrão: 100)sort(String, opcional) - Campo de ordenação- Autenticação: Obrigatória
- Response:
200 OKjson { "content": [...], "totalElements": 50, "totalPages": 5, "size": 10, "number": 0 }
Listar Todos os Lotes
- Método:
GET - URL:
/allbatch/{company}/{branch} - Descrição: Lista todos os lotes de uma empresa/filial (sem paginação)
- Parâmetros de Path:
company(String) - Código da empresabranch(String) - Código da filial- Autenticação: Obrigatória
- Response:
200 OK(Array de BatchDTO)
Buscar Lote por ID
- Método:
GET - URL:
/batch/{id} - Descrição: Busca um lote específico por ID
- Parâmetros de Path:
id(Long) - ID do lote- Autenticação: Obrigatória
- Response:
200 OK(BatchDTO) - Erros:
404 Not Found- Lote não encontrado
Excluir Lote
- Método:
DELETE - URL:
/batch/{id} - Descrição: Exclui um lote e seus documentos/lançamentos associados
- Parâmetros de Path:
id(Long) - ID do lote- Autenticação: Obrigatória
- Response:
200 OK - Erros:
404 Not Found- Lote não encontrado400 Bad Request- Lote não pode ser excluído (dependências)
Excluir Múltiplos Lotes
- Método:
POST - URL:
/batch/delete-multiple - Descrição: Exclui múltiplos lotes de uma vez
- Request Body:
json { "ids": [1, 2, 3] } - Autenticação: Obrigatória
- Response:
200 OK
Resumo de Lotes
- Método:
GET - URL:
/batchsummary/{company}/{branch} - Descrição: Retorna resumo de lotes (total, valores, etc.)
- Parâmetros de Path:
company(String) - Código da empresabranch(String) - Código da filial- Autenticação: Obrigatória
- Response:
200 OK(BatchSummaryDTO)
📄 Documentos
Criar Documento
- Método:
POST - URL:
/document - Descrição: Cria um novo documento contábil dentro de um lote
- Autenticação: Obrigatória
- Request Body:
json { "batchId": 1, "documento": "000001", "diaref": "15", "texto": "Documento de teste", "cdpadronizado": "001" } - Response:
201 Created(DocumentDTO)
Listar Documentos (Paginado)
- Método:
GET - URL:
/alldocument/{batchId}/page - Descrição: Lista documentos de um lote com paginação
- Parâmetros de Path:
batchId(Long) - ID do lote- Parâmetros de Query:
page(int, opcional) - Número da páginasize(int, opcional) - Tamanho da página- Autenticação: Obrigatória
- Response:
200 OK(PageResponseDTO)
Listar Todos os Documentos
- Método:
GET - URL:
/alldocument/{batchId} - Descrição: Lista todos os documentos de um lote
- Parâmetros de Path:
batchId(Long) - ID do lote- Autenticação: Obrigatória
- Response:
200 OK(Array de DocumentDTO)
Buscar Documento por ID
- Método:
GET - URL:
/document/{id} - Descrição: Busca um documento específico por ID
- Parâmetros de Path:
id(Long) - ID do documento- Autenticação: Obrigatória
- Response:
200 OK(DocumentDTO)
Excluir Documento
- Método:
DELETE - URL:
/document/{id} - Descrição: Exclui um documento e seus lançamentos associados
- Parâmetros de Path:
id(Long) - ID do documento- Autenticação: Obrigatória
- Response:
200 OK
Excluir Múltiplos Documentos
- Método:
POST - URL:
/document/delete-multiple - Descrição: Exclui múltiplos documentos de uma vez
- Request Body:
json { "ids": [1, 2, 3] } - Autenticação: Obrigatória
- Response:
200 OK
Resumo de Documentos
- Método:
GET - URL:
/documentsummary/{batchId} - Descrição: Retorna resumo de documentos de um lote
- Parâmetros de Path:
batchId(Long) - ID do lote- Autenticação: Obrigatória
- Response:
200 OK(DocumentSummaryDTO)
📝 Lançamentos (Entries)
Criar Lançamento
- Método:
POST - URL:
/entry - Descrição: Cria um novo lançamento contábil
- Autenticação: Obrigatória
- Request Body:
json { "documentId": 1, "lancamento": "001", "debcre": "D", "day": "15", "contaId": 100, "contrapartida": 101, "valor": 1000.00, "historico": "Lançamento de teste", "cdhistorico": "001" } - Response:
201 Created(EntryDTO) - Validações:
- Partidas dobradas (soma de débitos = soma de créditos)
- Conta contábil deve existir e estar ativa
- Dia deve estar entre 01-31
Listar Lançamentos (Paginado)
- Método:
GET - URL:
/allentry/{documentId}/page - Descrição: Lista lançamentos de um documento com paginação
- Parâmetros de Path:
documentId(Long) - ID do documento- Parâmetros de Query:
page(int, opcional) - Número da páginasize(int, opcional) - Tamanho da página- Autenticação: Obrigatória
- Response:
200 OK(PageResponseDTO)
Listar Todos os Lançamentos
- Método:
GET - URL:
/allentry/{documentId} - Descrição: Lista todos os lançamentos de um documento
- Parâmetros de Path:
documentId(Long) - ID do documento- Autenticação: Obrigatória
- Response:
200 OK(Array de EntryDTO)
Buscar Lançamento por ID
- Método:
GET - URL:
/entry/{id} - Descrição: Busca um lançamento específico por ID
- Parâmetros de Path:
id(Long) - ID do lançamento- Autenticação: Obrigatória
- Response:
200 OK(EntryDTO)
Excluir Lançamento
- Método:
DELETE - URL:
/entry/{id} - Descrição: Exclui um lançamento
- Parâmetros de Path:
id(Long) - ID do lançamento- Autenticação: Obrigatória
- Response:
200 OK
Excluir Múltiplos Lançamentos
- Método:
POST - URL:
/entry/delete-multiple - Descrição: Exclui múltiplos lançamentos de uma vez
- Request Body:
json { "ids": [1, 2, 3] } - Autenticação: Obrigatória
- Response:
200 OK
Resumo de Lançamentos
- Método:
GET - URL:
/entrysummary/{batchId} - Descrição: Retorna resumo de lançamentos de um lote
- Parâmetros de Path:
batchId(Long) - ID do lote- Autenticação: Obrigatória
- Response:
200 OK(EntrySummaryDTO)
📥 Importação
Importar Arquivo CSV
- Método:
POST - URL:
/batch/{batchId}/import - Descrição: Importa lançamentos de um arquivo CSV para um lote
- Parâmetros de Path:
batchId(Long) - ID do lote- Parâmetros de Form:
file(File) - Arquivo CSV com lançamentosdryRun(boolean, opcional) - Executar sem salvar (padrão: false)- Autenticação: Obrigatória
- Content-Type:
multipart/form-data - Response:
200 OK(ImportResultDTO)json { "success": true, "totalRows": 100, "successRows": 95, "errorRows": 5, "errors": ["Linha 10: Conta inválida", ...], "message": "Importação concluída" }
Importar Arquivo IPL
- Método:
POST - URL:
/importMoviment/{company}/{branch}/{fname} - Descrição: Importa movimentações de um arquivo IPL (formato legado)
- Parâmetros de Path:
company(String) - Código da empresabranch(String) - Código da filialfname(String) - Nome do arquivo- Content-Type:
text/plain - Request Body: Conteúdo do arquivo IPL (texto)
- Autenticação: Obrigatória
- Response:
201 Created(BatchDTO) - Nota: Este endpoint processa arquivos no formato IPL antigo (156 caracteres por linha)
Importar Movimentação JSON
- Método:
POST - URL:
/importMovimentJson - Descrição: Importa movimentações via JSON
- Request Body: ImportReportJsonDTO
- Autenticação: Obrigatória
- Response:
201 Created(BatchDTO)
🔄 Consolidação
Executar Consolidação
- Método:
POST - URL:
/runconsolidation - Descrição: Executa consolidação contábil para empresa/filial/período
- Autenticação: Obrigatória
- Request Body:
json { "company": "00001", "branch": "00001", "year": "2025", "month": "11" } - Response:
200 OK(ConsolidationDTO) - Nota: Operação assíncrona - pode demorar para processar
📅 Abertura/Fechamento de Mês
Abrir Novo Mês
- Método:
POST - URL:
/monthOpening/{company}/{branch} - Descrição: Abre um novo mês contábil para empresa/filial
- Parâmetros de Path:
company(String) - Código da empresabranch(String) - Código da filial- Request Body:
json { "newyearmonth": "12/2025" } - Autenticação: Obrigatória
- Response:
201 Created(MonthOpeningDTO)
Obter Informações de Abertura
- Método:
GET - URL:
/monthOpening/{company}/{branch} - Descrição: Retorna informações sobre abertura de mês (mês atual, primeiro/último lançamento)
- Parâmetros de Path:
company(String) - Código da empresabranch(String) - Código da filial- Autenticação: Obrigatória
- Response:
200 OK(MonthOpeningDTO)json { "initialyearmonth": "01/2025", "endyearmonth": "11/2025", "newyearmonth": "12/2025", "firstPostingyearmonth": "01/2025", "lastPostingyearmonth": "11/2025" }
📆 Calendário
Fechar Dia
- Método:
GET - URL:
/calendar/closeday/{company}/{branch} - Descrição: Fecha o dia atual no calendário contábil
- Parâmetros de Path:
company(String) - Código da empresabranch(String) - Código da filial- Autenticação: Obrigatória
- Response:
200 OKjson { "msg": "Dia fechado com sucesso" }
💰 Cálculo de Cotas Tributárias
Calcular Cotas
- Método:
GET - URL:
/taxquotacalculation/{company}/{branch} - Descrição: Calcula valor de cotas tributárias para empresa/filial
- Parâmetros de Path:
company(String) - Código da empresabranch(String) - Código da filial- Parâmetros de Query:
confirmed(boolean, opcional) - Confirmar cálculo (padrão: false)- Autenticação: Obrigatória
- Response:
200 OKou302 Found(List) json [ "15/11/2025", // Data do cálculo "1250.50", // Valor da cota "1000000.00", // Patrimônio líquido "800000.00" // Número de cotas ] - Validações:
- Mês deve estar consolidado
- Deve ter dia livre no calendário
- Deve ter conta PL configurada
- Patrimônio líquido deve ser positivo
🗑️ Purging (Limpeza de Dados)
Executar Purging
- Método:
POST - URL:
/purging - Descrição: Executa purging (limpeza/arquivamento) de dados antigos
- Autenticação: Obrigatória
- Request Body:
json { "useRange": false, "alternate": true, "selectedBranchId": [1, 2, 3], "yearmonth": "10/2025", "doSend": true } - Response:
200 OK(List) - Lista de mensagens de erro (vazia se sucesso) - Operações:
doSend: true- Move dados para histórico (requer meses consolidados)doSend: false- Restaura dados do histórico
⚙️ Admin
Criar Lançamentos em Massa
- Método:
POST - URL:
/admin/create-entries - Descrição: Cria lançamentos em massa para testes/desenvolvimento
- Autenticação: Obrigatória (requer permissão admin)
- Request Body:
json { "company": "00001", "branch": "00001", "quantidadeLotes": 5, "quantidadeLancamentos": 100, "valorMinimo": 100.00, "valorMaximo": 10000.00, "usaTodoMes": true } - Response:
200 OK(CreateEntriesResponseDTO)json { "message": "Lançamentos criados com sucesso", "batchesCreated": 5, "entriesCreated": 500 } - Nota: Endpoint destinado apenas para desenvolvimento/testes
🔐 Autenticação
Todos os endpoints (exceto /actuator/**) requerem autenticação JWT.
Header necessário:
Authorization: Bearer <token>
Obter token:
1. Fazer login em ecosif-auth: POST /api/auth/signin
2. Copiar accessToken da resposta
3. Usar no header Authorization
📊 Códigos de Status HTTP
| Código | Descrição |
|---|---|
200 |
OK - Requisição bem-sucedida |
201 |
Created - Recurso criado com sucesso |
302 |
Found - Redirecionamento (cálculo de cotas - preview) |
400 |
Bad Request - Dados inválidos |
401 |
Unauthorized - Token ausente/inválido |
404 |
Not Found - Recurso não encontrado |
500 |
Internal Server Error - Erro interno |
📝 Notas Importantes
-
Paginação: Endpoints paginados usam tamanho padrão de 100 itens (configurável via
ECOSIF_PAGINATION_SIZE) -
Validações: - Partidas dobradas (débitos = créditos) são validadas automaticamente - Contas contábeis devem existir e estar ativas - Períodos devem estar abertos para lançamentos
-
Consolidação: - Consolidação é assíncrona e pode demorar - Meses consolidados não podem receber novos lançamentos
-
Importação: - Arquivos IPL: formato legado (156 caracteres por linha) - Arquivos CSV: formato moderno (campos separados por vírgula)
Última Atualização: 2025-11-27