Pular para conteúdo

📡 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álidos
  • 401 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 empresa
  • branch (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 empresa
  • branch (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 encontrado
  • 400 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 empresa
  • branch (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ágina
  • size (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 content da página é deduplicado por código lógico; totalElements permanece 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ágina
  • size (int, opcional) - Tamanho da página
  • Autenticação: Obrigatória
  • Response: 200 OK (PageResponseDTO<EntryDTO>)
  • totalElements — linhas físicas em ct_lancamento
  • logicalEntryCountCOUNT(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çamentos
  • dryRun (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 empresa
  • branch (String) - Código da filial
  • fname (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 empresa
  • branch (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 empresa
  • branch (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 empresa
  • branch (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 empresa
  • branch (String) - Código da filial
  • Parâmetros de Query:
  • confirmed (boolean, opcional) - Confirmar cálculo (padrão: false)
  • Autenticação: Obrigatória
  • Response: 200 OK ou 302 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

  1. Paginação: Endpoints paginados usam tamanho padrão de 100 itens (configurável via ECOSIF_PAGINATION_SIZE)

  2. Validações:

  3. Partidas dobradas (débitos = créditos) são validadas automaticamente
  4. Contas contábeis devem existir e estar ativas
  5. Períodos devem estar abertos para lançamentos

  6. Consolidação:

  7. Consolidação é assíncrona e pode demorar
  8. Meses consolidados não podem receber novos lançamentos

  9. Importação:

  10. Arquivos IPL: formato legado (156 caracteres por linha)
  11. Arquivos CSV: formato moderno (campos separados por vírgula)

Última Atualização: 2025-11-27