📡 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:
{ "lote": "001", "empresa": "00001", "filial": "00001", "ano": 2025, "mes": 11, "descricao": "Lote de Novembro" } - Response:
201 Created{ "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 OK{ "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:
{ "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:
{ "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:
{ "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:
{ "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. O
contentda página é deduplicado por código lógico;totalElementspermanece o total de linhas físicas (D/C). - 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<EntryDTO>) totalElements— linhas físicas emct_lancamentologicalEntryCount—COUNT(DISTINCT lancamento)do documento (campo opcional, não breaking)
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:
{ "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){ "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:
{ "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:
{ "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){ "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 OK{ "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) [ "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:
{ "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:
{ "company": "00001", "branch": "00001", "quantidadeLotes": 5, "quantidadeLancamentos": 100, "valorMinimo": 100.00, "valorMaximo": 10000.00, "usaTodoMes": true } - Response:
200 OK(CreateEntriesResponseDTO){ "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