openapi: "3.0.3"
info:
  contact:
    email: "support@ecosif.net.br"
    name: "eCosif Team"
    url: "https://www.ecosif.net.br"
  description: "API de validação de conformidade contábil do sistema eCosif.\n\n## Visão geral\n\nEste serviço executa regras configuráveis sobre saldos e dados já persistidos (COSIF) e registra o resultado por processo (filial + documento + mês). Não altera lançamentos; apenas valida e reporta.\n\n- **Regras**: cadastro e atualização de scripts DSL\n- **Validação**: execução e teste de conformidade\n- **Consultas**: tipos de indício, sistemas, documentos, empresas e filiais\n- **Processos**: histórico e detalhe das execuções\n\n## Autenticação\n\nEste serviço exige token JWT no header `Authorization`.\n\n1. Autentique no ecosif-auth: `POST /api/auth/signin`\n2. Copie o campo `accessToken`\n3. Clique em **Authorize** no Swagger UI\n4. Informe `Bearer <token>`\n\n```bash\ncurl -X POST \"http://localhost:8080/api/auth/signin\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"username\":\"admin\",\"password\":\"senha\"}'\n```\n\nRotas públicas: `/health`, `/actuator/**`, `/docs/`, `/v3/api-docs` (quando `ECOSIF_COMPLIANCE_SWAGGER_ENABLED=true`).\n"
  license:
    name: "Commercial License"
    url: "https://www.ecosif.net.br/licenses/"
  title: "eCosif Compliance API"
  version: "0.7.07.202608112"
servers:
  - description: "Servidor de desenvolvimento local"
    url: "http://localhost:8021"
  - description: "Servidor de produção"
    url: "https://api.ecosif.net.br/ecosif-compliance"
tags:
  - description: "Cadastro e consulta de regras de validação"
    name: "Regras"
  - description: "Execução e teste de conformidade"
    name: "Validação"
  - description: "Dados auxiliares (indícios, documentos, empresas, filiais)"
    name: "Consultas"
  - description: "Histórico e detalhe das execuções"
    name: "Processos"
security:
  - bearer-jwt: []
paths:
  /api/compliance/branch/list:
    get:
      operationId: "get_list_branches"
      responses:
        200:
          description: "Success"
      tags:
        - "Consultas"
  /api/compliance/branch/list/{company_id}:
    get:
      operationId: "get_list_branches"
      responses:
        200:
          description: "Success"
      tags:
        - "Consultas"
    parameters:
      - in: "path"
        name: "company_id"
        required: true
        schema:
          type: "string"
  /api/compliance/businesssystem/list:
    get:
      operationId: "get_list_business_system"
      responses:
        200:
          description: "Success"
      tags:
        - "Consultas"
  /api/compliance/cluetype/list:
    get:
      operationId: "get_list_clue_type"
      responses:
        200:
          description: "Success"
      tags:
        - "Consultas"
  /api/compliance/company/list:
    get:
      operationId: "get_list_companies"
      responses:
        200:
          description: "Success"
      tags:
        - "Consultas"
  /api/compliance/company/list/{name}:
    get:
      operationId: "get_list_companies"
      responses:
        200:
          description: "Success"
      tags:
        - "Consultas"
    parameters:
      - in: "path"
        name: "name"
        required: true
        schema:
          type: "string"
  /api/compliance/document/list:
    get:
      operationId: "get_list_documents"
      responses:
        200:
          description: "Success"
      tags:
        - "Consultas"
  /api/compliance/process/result/get/{processid}:
    get:
      operationId: "get_get_process_result"
      responses:
        200:
          description: "Success"
      tags:
        - "Processos"
    parameters:
      - description: "id of process to list results"
        in: "path"
        name: "processid"
        required: true
        schema:
          type: "string"
  /api/compliance/process/result/list/:
    get:
      operationId: "get_get_process_result_list"
      responses:
        200:
          description: "Success"
      tags:
        - "Processos"
    parameters:
      - description: "start date from to list (YYYY-MM)"
        in: "query"
        name: "since"
        schema:
          type: "string"
      - description: "id of company to list"
        in: "query"
        name: "companyid"
        schema:
          type: "string"
  /api/compliance/process/result/list/{since}:
    get:
      operationId: "get_get_process_result_list"
      responses:
        200:
          description: "Success"
      tags:
        - "Processos"
    parameters:
      - description: "start date from to list (YYYY-MM)"
        in: "path"
        name: "since"
        required: true
        schema:
          type: "string"
      - description: "id of company to list"
        in: "query"
        name: "companyid"
        schema:
          type: "string"
  /api/compliance/process/result/list/{since}/{companyid}:
    get:
      operationId: "get_get_process_result_list"
      responses:
        200:
          description: "Success"
      tags:
        - "Processos"
    parameters:
      - description: "start date from to list (YYYY-MM)"
        in: "path"
        name: "since"
        required: true
        schema:
          type: "string"
      - description: "id of company to list"
        in: "path"
        name: "companyid"
        required: true
        schema:
          type: "string"
  /api/compliance/rule/add:
    parameters:
      - description: "id do tipo de indício"
        in: "query"
        name: "cluetypeid"
        schema:
          type: "string"
      - description: "id do sistema de negócio"
        in: "query"
        name: "businesssystemid"
        schema:
          type: "string"
      - description: "nome da regra"
        in: "query"
        name: "name"
        schema:
          type: "string"
      - description: "lista de documentos aos quais a regra se aplica"
        in: "query"
        name: "documentslist"
        schema:
          type: "string"
      - description: "data base início (YYYY-MM)"
        in: "query"
        name: "basebegin"
        schema:
          type: "string"
      - description: "database fim (YYYY-MM)"
        in: "query"
        name: "baseend"
        schema:
          type: "string"
      - description: "descrição da regra"
        in: "query"
        name: "description"
        schema:
          type: "string"
      - description: "validade inicial da regra (YYYY-MM-DD)"
        in: "query"
        name: "validitybegin"
        schema:
          type: "string"
      - description: "validade final da regra (YYYY-MM-DD)"
        in: "query"
        name: "validityfinal"
        schema:
          type: "string"
      - description: "script de validação"
        in: "query"
        name: "script"
        schema:
          type: "string"
    post:
      operationId: "post_add_rule"
      responses:
        200:
          description: "Success"
      tags:
        - "Regras"
  /api/compliance/rule/list:
    get:
      operationId: "get_list_rules"
      responses:
        200:
          description: "Success"
      tags:
        - "Regras"
  /api/compliance/rule/update:
    parameters:
      - description: "id do tipo de indício"
        in: "query"
        name: "cluetypeid"
        schema:
          type: "string"
      - description: "id do sistema de negócio"
        in: "query"
        name: "businesssystemid"
        schema:
          type: "string"
      - description: "nome da regra"
        in: "query"
        name: "name"
        schema:
          type: "string"
      - description: "lista de documentos aos quais a regra se aplica"
        in: "query"
        name: "documentslist"
        schema:
          type: "string"
      - description: "data base início (YYYY-MM)"
        in: "query"
        name: "basebegin"
        schema:
          type: "string"
      - description: "database fim (YYYY-MM)"
        in: "query"
        name: "baseend"
        schema:
          type: "string"
      - description: "descrição da regra"
        in: "query"
        name: "description"
        schema:
          type: "string"
      - description: "validade inicial da regra (YYYY-MM-DD)"
        in: "query"
        name: "validitybegin"
        schema:
          type: "string"
      - description: "validade final da regra (YYYY-MM-DD)"
        in: "query"
        name: "validityfinal"
        schema:
          type: "string"
      - description: "script de validação"
        in: "query"
        name: "script"
        schema:
          type: "string"
    post:
      operationId: "post_update_rule"
      responses:
        200:
          description: "Success"
      tags:
        - "Regras"
  /api/compliance/run:
    parameters:
      - description: "id da filial específica a validar (apenas se não for especificado id da empresa e intervalod de filiais)"
        in: "query"
        name: "branchid"
        schema:
          type: "string"
      - description: "id da empresa a validar o intervalo de filiais (apenas se não for especificada uma filial específica - branchid)"
        in: "query"
        name: "companyid"
        schema:
          type: "string"
      - description: "\"número\" da filial inicial da empresa a validar (apenas se não for especificada uma filial específica - branchid)"
        in: "query"
        name: "branchfrom"
        schema:
          type: "string"
      - description: "\"número\" da filial final da empresa a validar (apenas se não for especificada uma filial específica - branchid)"
        in: "query"
        name: "branchto"
        schema:
          type: "string"
      - description: "id do documento a validar (se não for especificado o código do documento - documentcode)"
        in: "query"
        name: "documentid"
        schema:
          type: "string"
      - description: "código do documento a validar (se não for especificado o id do documento - documentid)"
        in: "query"
        name: "documentcode"
        schema:
          type: "string"
      - description: "mês de referência a validar (YYYY-MM)"
        in: "query"
        name: "refmonth"
        schema:
          type: "string"
    post:
      operationId: "post_run_compliance"
      responses:
        200:
          description: "Success"
      tags:
        - "Validação"
  /api/compliance/test:
    post:
      operationId: "post_compliance_test"
      responses:
        200:
          description: "Success"
      tags:
        - "Validação"
components:
  responses:
    MaskError:
      description: "When any error occurs on mask"
    ParseError:
      description: "When a mask can't be parsed"
  securitySchemes:
    bearer-jwt:
      bearerFormat: "JWT"
      description: "JWT obtido no ecosif-auth. Informe `Bearer <token>` no header Authorization."
      scheme: "bearer"
      type: "http"
