openapi: 3.0.4
info:
  title: Operações Api
  description: "API de Operações\r\n\r\n            Esta API centraliza a gestão do ciclo de vida de operações e seus ativos, oferecendo funcionalidades completas para:\r\n\r\n                * Criação, listagem, consulta, alteração e exclusão de operações.\r\n                * Gerenciamento de ativos, tanto individualmente quanto em massa, por meio de importação.\r\n                * Controle de status, situação e acompanhamento do progresso das importações.\r\n                * Consultas detalhadas, extração de informações e registro de erros no processo.\r\n\r\n            Todas as operações são protegidas por autenticação e autorização robustas, garantindo segurança, organização e rastreabilidade em todas as etapas do gerenciamento das informações."
  contact:
    name: rgbtec
    email: support@rgbtec.com.br
  version: v1.0.0
servers:
  - url: http://rgbsys.dyndns.info/ger2025-operacao-api-desenvolvimento
paths:
  /api/v1/operacoes/{id}/ativos:
    post:
      tags:
        - Operações Ativos
      summary: Incluir ativos arquivos
      description: Efetua a inclusão de ativos
      parameters:
        - name: id
          in: path
          description: Id da operação
          required: true
          schema:
            type: string
      requestBody:
        description: Arquivos a serem importados
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CadastratAtivosDMRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/CadastratAtivosDMRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CadastrarOperacaoResponse'
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                type: array
                items:
                  type: string
            application/json:
              schema:
                type: array
                items:
                  type: string
            text/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    get:
      tags:
        - Operações
      summary: Lista as operações ativas
      description: Fluxo para listar as operações ativas
      parameters:
        - name: id
          in: path
          description: Id da operação
          required: true
          schema:
            type: string
        - name: pagina
          in: query
          description: Número da página a ser retornada
          schema:
            type: integer
            format: int32
            default: null
        - name: quantidade
          in: query
          description: Quantidade de registros a serem retornados
          schema:
            type: integer
            format: int32
            default: null
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListarOperacaoAtivaResponse'
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                type: array
                items:
                  type: string
            application/json:
              schema:
                type: array
                items:
                  type: string
            text/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /api/v1/operacoes:
    get:
      tags:
        - Operações
      summary: Lista as operações
      description: Lista as operações de acordo com os filtros passados
      parameters:
        - name: dataCadastroInicial
          in: query
          description: Data de cadastro inicial
          schema:
            type: string
            format: date-time
        - name: dataCadastroFinal
          in: query
          description: Data de cadastro final
          schema:
            type: string
            format: date-time
        - name: dataSituacaoInicial
          in: query
          description: Data da alteração da situação inicial
          schema:
            type: string
            format: date-time
            default: null
        - name: dataSituacaoFinal
          in: query
          description: Data da alteração da situação final
          schema:
            type: string
            format: date-time
            default: null
        - name: numero
          in: query
          description: Número da operação
          schema:
            type: integer
            format: int32
            default: null
        - name: aditivo
          in: query
          description: Número do aditivo
          schema:
            type: integer
            format: int32
            default: null
        - name: cedenteId
          in: query
          description: Id(s) do(s) cedente(s)
          schema:
            type: array
            items:
              type: string
            default: null
        - name: empresaId
          in: query
          description: Id(s) do(s) empresa(s)
          schema:
            type: array
            items:
              type: string
            default: null
        - name: grupoId
          in: query
          description: Id(s) do(s) grupo(s)
          schema:
            type: array
            items:
              type: string
            default: null
        - name: agenteId
          in: query
          description: Id(s) do(s) agente(s)
          schema:
            type: array
            items:
              type: string
            default: null
        - name: usuarioOriginadorId
          in: query
          description: Id(s) do(s) usuário(s)
          schema:
            type: array
            items:
              type: string
            default: null
        - name: statusId
          in: query
          description: Id(s) do(s) status
          schema:
            type: array
            items:
              type: string
            default: null
        - name: tipoUsuarioOriginador
          in: query
          description: Id(s) do(s) tipo(s) dos usuário(s) originador(es)
          schema:
            type: array
            items:
              $ref: '#/components/schemas/TipoPessoaFisicaEnum'
            default: null
        - name: situacao
          in: query
          description: Id(s) da(s) situação(ões)
          schema:
            type: array
            items:
              $ref: '#/components/schemas/SituacaoOperacaoEnum2'
            default: null
        - name: tipoOperacao
          in: query
          description: Id(s) do(s) tipo(s) de operação
          schema:
            type: array
            items:
              $ref: '#/components/schemas/TipoOperacaoEnum3'
            default: null
        - name: pagina
          in: query
          description: Número da página a ser retornada
          schema:
            type: integer
            format: int32
            default: null
        - name: quantidade
          in: query
          description: Quantidade de registros a serem retornados
          schema:
            type: integer
            format: int32
            default: null
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListarOperacaoResponse'
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                type: array
                items:
                  type: string
            application/json:
              schema:
                type: array
                items:
                  type: string
            text/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    post:
      tags:
        - Operações
      summary: Cadastra uma operação
      description: >-
        Efetua o cadastramento de uma operação setando o status dela como
        Incluindo e a situação Pendente. Retorna o identificador e o sequencial
      requestBody:
        description: Dados para cadastrar a operação
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CadastrarOperacaoRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/CadastrarOperacaoRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CadastrarOperacaoResponse'
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                type: array
                items:
                  type: string
            application/json:
              schema:
                type: array
                items:
                  type: string
            text/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    put:
      tags:
        - Operações
      summary: Altera uma operação
      description: Efetua a alteração de uma operação
      requestBody:
        description: Dados para alterar a operação
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AlterarOperacaoRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/AlterarOperacaoRequest'
        required: true
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                type: array
                items:
                  type: string
            application/json:
              schema:
                type: array
                items:
                  type: string
            text/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /api/v1/operacoes/{id}:
    get:
      tags:
        - Operações
      summary: Recupera os dados de uma operação
      description: Recupera todas as informações de uma operação, inclusive seus ativos
      parameters:
        - name: id
          in: path
          description: Id da operação
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecuperarPorIdResponse'
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                type: array
                items:
                  type: string
            application/json:
              schema:
                type: array
                items:
                  type: string
            text/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    delete:
      tags:
        - Operações
      summary: Exclui uma operação
      description: Exclui uma operação e todos os seus ativos
      parameters:
        - name: id
          in: path
          description: Id da operação
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /api/v1/operacoes/{id}/situacao/{situacao}:
    patch:
      tags:
        - Operações
      summary: Altera a situação de uam operação
      description: Alterar a situção de uam operação e o status dos seus ativos
      parameters:
        - name: id
          in: path
          description: Id da operação
          required: true
          schema:
            type: string
        - name: situacao
          in: path
          description: Nova situação
          required: true
          schema:
            $ref: '#/components/schemas/SituacaoOperacaoEnum2'
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                type: string
            application/json:
              schema:
                type: string
            text/json:
              schema:
                type: string
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /api/v1/operacoes/{id}/status/{statusId}:
    patch:
      tags:
        - Operações
      summary: Altera o status de uma operação
      description: Altera o status de uma operação
      parameters:
        - name: id
          in: path
          description: Id da operação
          required: true
          schema:
            type: string
        - name: statusId
          in: path
          description: Id do novo status
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/AlterarStatusOperacaoResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/AlterarStatusOperacaoResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/AlterarStatusOperacaoResponse'
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /api/v1/operacoes/{id}/importacoes:
    post:
      tags:
        - Operações Importação
      summary: Incluir ativos via upload de arquivos
      description: >-
        Efetua a inclusão de ativos via upload de arquivos e retorna o id da
        importação
      parameters:
        - name: id
          in: path
          description: Id da operação
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdResponse'
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                type: array
                items:
                  type: string
            application/json:
              schema:
                type: array
                items:
                  type: string
            text/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /api/v1/operacoes/{id}/importacoes/{importacaoId}/arquivos:
    get:
      tags:
        - Operações Importação
      summary: Recuperar a lista de arquivos da importação
      description: Retorna a lista de arquivos informando se ouve erro ou nõ
      parameters:
        - name: id
          in: path
          description: Id da operação
          required: true
          schema:
            type: string
        - name: importacaoId
          in: path
          description: Id da importação
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ListarArquivosImportacaoResponse'
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                type: array
                items:
                  type: string
            application/json:
              schema:
                type: array
                items:
                  type: string
            text/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /api/v1/operacoes/{id}/importacoes/{importacaoId}/arquivos/{arquivoId}:
    get:
      tags:
        - Operações Importação
      summary: Recuperar o resultado das importação de um arquivo
      description: >-
        Retorna a lista de ativos importados em um arquivo e se houve erro ou
        não
      parameters:
        - name: id
          in: path
          description: Id da operação
          required: true
          schema:
            type: string
        - name: importacaoId
          in: path
          description: Id da importação
          required: true
          schema:
            type: string
        - name: arquivoId
          in: path
          description: Id do arquivo
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ListarAtivosImportacaoResponse'
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                type: array
                items:
                  type: string
            application/json:
              schema:
                type: array
                items:
                  type: string
            text/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /api/v1/operacoes/{id}/importacoes/{importacaoId}/andamento:
    get:
      tags:
        - Operações Importação
      summary: Recuperar o andamento da importação
      description: Retorna o andamento da importação
      parameters:
        - name: id
          in: path
          description: Id da operação
          required: true
          schema:
            type: string
        - name: importacaoId
          in: path
          description: Id da importação
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AndamentoImportacaoResponse'
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                type: array
                items:
                  type: string
            application/json:
              schema:
                type: array
                items:
                  type: string
            text/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /api/v1/operacoes/{id}/importacoes/{importacaoId}/quantidade:
    patch:
      tags:
        - Operações Importação
      summary: Atualiza a quantidade de arquivos
      description: >-
        Atualiza a informação da quantidade de arquivos totais que serão
        importados
      parameters:
        - name: id
          in: path
          description: Id da operação
          required: true
          schema:
            type: string
        - name: importacaoId
          in: path
          description: Id da importação
          required: true
          schema:
            type: string
      requestBody:
        description: Erro da importação
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImportacaoQuantidadeRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/ImportacaoQuantidadeRequest'
        required: true
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                type: array
                items:
                  type: string
            application/json:
              schema:
                type: array
                items:
                  type: string
            text/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /api/v1/operacoes/{id}/importacoes/{importacaoId}/finalizada:
    patch:
      tags:
        - Operações Importação
      summary: Atualiza a quantidade de arquivos
      description: >-
        Atualiza a informação da quantidade de arquivos totais que serão
        importados
      parameters:
        - name: id
          in: path
          description: Id da operação
          required: true
          schema:
            type: string
        - name: importacaoId
          in: path
          description: Id da importação
          required: true
          schema:
            type: string
      requestBody:
        description: Erro da importação
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImportacaoFinalizadaRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/ImportacaoFinalizadaRequest'
        required: true
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                type: array
                items:
                  type: string
            application/json:
              schema:
                type: array
                items:
                  type: string
            text/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /api/v1/operacoes/{id}/importacoes/{importacaoId}/status:
    post:
      tags:
        - Operações Importação
      summary: Registra os erros da importação em ativos
      description: Registra os erros da importação em ativos
      parameters:
        - name: id
          in: path
          description: Id da operação
          required: true
          schema:
            type: string
        - name: importacaoId
          in: path
          description: Id da importação
          required: true
          schema:
            type: string
      requestBody:
        description: Erro da importação
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImportacaoAtivoRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/ImportacaoAtivoRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CadastrarOperacaoResponse'
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                type: array
                items:
                  type: string
            application/json:
              schema:
                type: array
                items:
                  type: string
            text/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /api/v1/operacoes-status:
    get:
      tags:
        - Operações Status
      summary: Lista os status das operações
      description: Lista os status das operações definidos no tenant
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListarOperacaoStatusResponse'
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                type: array
                items:
                  type: string
            application/json:
              schema:
                type: array
                items:
                  type: string
            text/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    post:
      tags:
        - Operações Status
      summary: Fluxo para criação de um status
      description: Fluxo para criação de um status
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OperacaoStatusCadastrarRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/OperacaoStatusCadastrarRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdResponse'
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                type: array
                items:
                  type: string
            application/json:
              schema:
                type: array
                items:
                  type: string
            text/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /api/v1/operacoes-status/{id}:
    put:
      tags:
        - Operações Status
      summary: Fluxo para alteração de um status
      description: Fluxo para alteração de um status
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OperacaoStatusAlterarRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/OperacaoStatusAlterarRequest'
        required: true
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                type: array
                items:
                  type: string
            application/json:
              schema:
                type: array
                items:
                  type: string
            text/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    delete:
      tags:
        - Operações Status
      summary: Fluxo para alteração de um status
      description: Fluxo para alteração de um status
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                type: array
                items:
                  type: string
            application/json:
              schema:
                type: array
                items:
                  type: string
            text/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
components:
  schemas:
    AlarmeAlterarRequest:
      required:
        - id
        - ativo
        - tempo
        - cor
      type: object
      properties:
        id:
          type: string
          nullable: true
        ativo:
          type: boolean
        tempo:
          type: integer
          format: int32
        cor:
          type: string
          nullable: true
    AlarmeCadastrarRequest:
      required:
        - ativo
        - tempo
        - cor
      type: object
      properties:
        ativo:
          type: boolean
        tempo:
          type: integer
          format: int32
        cor:
          type: string
          nullable: true
    AlterarOperacaoRequest:
      required:
        - id
        - empresaId
        - tipoOperacao
        - tipoAtivo
        - antecipacao
      type: object
      properties:
        id:
          type: string
          description: Id da operação
          nullable: true
        empresaId:
          type: string
          description: Id da Empresa
          nullable: true
        tipoOperacao:
          $ref: '#/components/schemas/TipoOperacaoEnum2'
        tipoAtivo:
          $ref: '#/components/schemas/TipoAtivoEnum'
        antecipacao:
          $ref: '#/components/schemas/AntecipacaoRequest'
    AlterarStatusOperacaoResponse:
      required:
        - sequencialAditivo
        - situacao
      type: object
      properties:
        sequencialAditivo:
          type: integer
          format: int32
          nullable: true
        situacao:
          $ref: '#/components/schemas/SituacaoOperacaoEnum2'
    AndamentoImportacaoResponse:
      required:
        - quantidadeArquivos
        - quantidadeProcessados
        - finalizada
      type: object
      properties:
        quantidadeArquivos:
          type: integer
          format: int32
          nullable: true
        quantidadeProcessados:
          type: integer
          format: int32
          nullable: true
        finalizada:
          type: boolean
    AntecipacaoRequest:
      required:
        - cedenteId
        - politicaTaxaId
        - taxa
        - float
      type: object
      properties:
        cedenteId:
          type: string
          description: Id do cedente
          nullable: true
        politicaTaxaId:
          type: string
          description: Id da Política de Taxa
          nullable: true
        taxa:
          type: number
          description: Taxa
          format: double
        float:
          type: integer
          description: Float
          format: int32
      nullable: true
    AntecipacaoResponse:
      required:
        - cedente
        - politicaTaxa
        - taxa
        - adValorem
        - totalDespesas
        - float
      type: object
      properties:
        cedente:
          $ref: '#/components/schemas/CedenteResponse'
        politicaTaxa:
          $ref: '#/components/schemas/PoliticaTaxaResponse'
        taxa:
          type: number
          description: Taxa da operação
          format: double
          nullable: true
        adValorem:
          type: number
          description: AdValorem da operação
          format: double
          nullable: true
        totalDespesas:
          type: number
          description: Total de despesas da operação
          format: double
          nullable: true
        float:
          type: integer
          description: Float da operação
          format: int32
      description: Dados da operação do tipo antecipação
      nullable: true
    AtivosDMResponse:
      required:
        - id
        - numero
        - valorFace
        - vencimento
        - vencimentoUtil
        - vencimentoFloat
        - vencimentoFloatUtil
        - chaveNfe
        - situacao
        - sacado
      type: object
      properties:
        id:
          type: string
          description: Id do ativo
          nullable: true
        numero:
          type: string
          description: Número do ativo
          nullable: true
        valorFace:
          type: number
          description: Valor de face do ativo
          format: double
        vencimento:
          type: string
          description: Vencimento do ativo
          format: date-time
        vencimentoUtil:
          type: string
          description: Vencimento útil do ativo
          format: date-time
          nullable: true
        vencimentoFloat:
          type: string
          description: Vencimento com float do ativo
          format: date-time
          nullable: true
        vencimentoFloatUtil:
          type: string
          description: Vencimento útil com float do ativo
          format: date-time
          nullable: true
        chaveNfe:
          type: string
          description: Chave NFE do ativo
          nullable: true
        situacao:
          $ref: '#/components/schemas/SituacaoAtivoEnum3'
        sacado:
          $ref: '#/components/schemas/SacadoResponse'
    CadastrarOperacaoRequest:
      required:
        - empresaId
        - tipoOperacao
        - tipoAtivo
        - antecipacao
      type: object
      properties:
        empresaId:
          type: string
          description: Id da Empresa
          nullable: true
        tipoOperacao:
          $ref: '#/components/schemas/TipoOperacaoEnum2'
        tipoAtivo:
          $ref: '#/components/schemas/TipoAtivoEnum'
        antecipacao:
          $ref: '#/components/schemas/AntecipacaoRequest'
    CadastrarOperacaoResponse:
      required:
        - id
        - sequencialDiario
        - cadastro
      type: object
      properties:
        id:
          type: string
          description: Id da operação criada
          nullable: true
        sequencialDiario:
          type: integer
          description: Sequencial diário da operação
          format: int32
        cadastro:
          type: string
          description: Data da criação da operação
          format: date-time
    CadastratAtivosDMRequest:
      required:
        - operacaoId
        - numero
        - valorFace
        - vencimento
        - vencimentoUtil
        - vencimentoFloat
        - vencimentoFloatUtil
        - sacadoId
        - chaveNfe
        - situacao
      type: object
      properties:
        operacaoId:
          type: string
          description: Id da operação
          nullable: true
        numero:
          type: string
          nullable: true
        valorFace:
          type: number
          format: double
        vencimento:
          type: string
          format: date-time
        vencimentoUtil:
          type: string
          format: date-time
          nullable: true
        vencimentoFloat:
          type: string
          format: date-time
          nullable: true
        vencimentoFloatUtil:
          type: string
          format: date-time
          nullable: true
        sacadoId:
          type: string
          nullable: true
        chaveNfe:
          type: string
          nullable: true
        situacao:
          $ref: '#/components/schemas/SituacaoAtivoEnum'
    CedenteResponse:
      required:
        - id
        - apelido
      type: object
      properties:
        id:
          type: string
          description: Id do cedente
          nullable: true
        apelido:
          type: string
          description: Apelido do cedente
          nullable: true
      description: Cendente da operação
      nullable: true
    EmpresaResponse:
      required:
        - id
        - apelido
      type: object
      properties:
        id:
          type: string
          description: Id da empresa
          nullable: true
        apelido:
          type: string
          description: Apelido da empresa
          nullable: true
      description: Empresa da operação
      nullable: true
    IdResponse:
      required:
        - id
      type: object
      properties:
        id:
          type: string
          nullable: true
    ImportacaoAtivoRequest:
      required:
        - arquivoId
        - arquivoZip
        - arquivo
        - erro
        - ativos
      type: object
      properties:
        arquivoId:
          type: string
          nullable: true
        importacaoId:
          type: string
          nullable: true
        arquivoZip:
          type: string
          nullable: true
        arquivo:
          type: string
          nullable: true
        erro:
          type: string
          nullable: true
        ativos:
          type: array
          items:
            $ref: '#/components/schemas/ImportacaoStatusAtivoRequest'
          nullable: true
    ImportacaoFinalizadaRequest:
      required:
        - valorBruto
      type: object
      properties:
        importacaoId:
          type: string
          nullable: true
        valorBruto:
          type: number
          format: double
    ImportacaoQuantidadeRequest:
      required:
        - quantidade
      type: object
      properties:
        importacaoId:
          type: string
          nullable: true
        quantidade:
          type: integer
          format: int32
    ImportacaoStatusAtivoRequest:
      required:
        - ativo
        - vencimento
        - valor
        - sacado
        - cpfCnpj
      type: object
      properties:
        ativo:
          type: string
          nullable: true
        vencimento:
          type: string
          format: date-time
        valor:
          type: number
          format: double
        sacado:
          type: string
          nullable: true
        cpfCnpj:
          type: string
          nullable: true
        erro:
          type: string
          nullable: true
    ListarArquivosImportacaoResponse:
      required:
        - id
        - arquivoZip
        - arquivo
        - erro
      type: object
      properties:
        id:
          type: string
          nullable: true
        arquivoZip:
          type: string
          nullable: true
        arquivo:
          type: string
          nullable: true
        erro:
          type: string
          nullable: true
    ListarAtivosImportacaoResponse:
      required:
        - ativo
        - vencimento
        - valor
        - sacado
        - cpfCnpj
        - erro
      type: object
      properties:
        ativo:
          type: string
          nullable: true
        vencimento:
          type: string
          format: date-time
        valor:
          type: number
          format: double
        sacado:
          type: string
          nullable: true
        cpfCnpj:
          type: string
          nullable: true
        erro:
          type: string
          nullable: true
    ListarOperacaoAtivaResponse:
      required:
        - id
        - numero
        - valorFace
        - vencimento
        - vencimentoUtil
        - vencimentoFloat
        - vencimentoFloatUtil
        - chaveNfe
        - situacao
        - sacado
      type: object
      properties:
        id:
          type: string
          description: Id da operação ativa
          nullable: true
        numero:
          type: string
          description: Número da operação ativa
          nullable: true
        valorFace:
          type: number
          description: Valor de face do ativo
          format: double
        vencimento:
          type: string
          description: Data de vencimento do ativo
          format: date-time
        vencimentoUtil:
          type: string
          description: Data útil de vencimento
          format: date-time
          nullable: true
        vencimentoFloat:
          type: string
          description: Data de vencimento considerando float
          format: date-time
          nullable: true
        vencimentoFloatUtil:
          type: string
          description: Data útil do vencimento considerando float
          format: date-time
          nullable: true
        chaveNfe:
          type: string
          description: Chave da nota fiscal eletrônica associada
          nullable: true
        situacao:
          $ref: '#/components/schemas/SituacaoAtivoEnum2'
        sacado:
          $ref: '#/components/schemas/ListarOperacaoAtivaSacadoResponse'
    ListarOperacaoAtivaSacadoResponse:
      required:
        - id
        - nome
        - cpfCnpj
      type: object
      properties:
        id:
          type: string
          description: Id do sacado
          nullable: true
        nome:
          type: string
          description: Nome do sacado
          nullable: true
        cpfCnpj:
          type: string
          description: Cpf ou Cnpj do sacado
          nullable: true
      description: Informações do sacado
      nullable: true
    ListarOperacaoResponse:
      required:
        - id
        - sequencialDiario
        - sequencialAditivo
        - valorBruto
        - valorLiquido
        - valorAprovado
        - cadastro
        - status
        - situacao
        - cedente
        - empresa
        - usuario
        - tipoOperacao
      type: object
      properties:
        id:
          type: string
          description: Id da operação
          nullable: true
        sequencialDiario:
          type: integer
          description: Sequencial diário da operação
          format: int32
        sequencialAditivo:
          type: integer
          description: Sequecial do aditivo
          format: int32
          nullable: true
        valorBruto:
          type: number
          description: Valor bruto da operação
          format: double
          nullable: true
        valorLiquido:
          type: number
          description: Valor liquido da operação
          format: double
          nullable: true
        valorAprovado:
          type: number
          description: Valor aprovado da operação
          format: double
          nullable: true
        cadastro:
          type: string
          description: Data de cadastro da operação
          format: date-time
        status:
          $ref: '#/components/schemas/StatusResponse'
        situacao:
          $ref: '#/components/schemas/SituacaoResponse'
        cedente:
          $ref: '#/components/schemas/CedenteResponse'
        empresa:
          $ref: '#/components/schemas/EmpresaResponse'
        usuario:
          $ref: '#/components/schemas/UsuarioResponse'
        tipoOperacao:
          $ref: '#/components/schemas/TipoOperacaoEnum'
    ListarOperacaoStatusAlarmeResponse:
      required:
        - id
        - tempo
        - cor
        - ativo
      type: object
      properties:
        id:
          type: string
          description: Id do alarme
          nullable: true
        tempo:
          type: integer
          description: Tempo máximo do alarme
          format: int32
        cor:
          type: string
          description: Cor do alarme
          nullable: true
        ativo:
          type: boolean
          description: Indica se está ativo ou não
    ListarOperacaoStatusResponse:
      required:
        - id
        - nome
        - descricao
        - statusIdPredecessor
        - idInterno
        - cor
        - enviarPara
        - alarmes
      type: object
      properties:
        id:
          type: string
          description: Id do status
          nullable: true
        nome:
          type: string
          description: Descrição resumida do status
          nullable: true
        descricao:
          type: string
          description: Descrição do status
          nullable: true
        statusIdPredecessor:
          type: string
          description: Indica o id do status predecessor
          nullable: true
        idInterno:
          $ref: '#/components/schemas/NullableOfStatusOperacaoEnum2'
        cor:
          type: string
          description: Cor do status
          nullable: true
        enviarPara:
          type: array
          items:
            type: string
          description: Fluxo do status
          nullable: true
        alarmes:
          type: array
          items:
            $ref: '#/components/schemas/ListarOperacaoStatusAlarmeResponse'
          description: Alarmes do status
          nullable: true
    NullableOfStatusOperacaoEnum:
      type: integer
      description: Id interno do sistema
      nullable: true
    NullableOfStatusOperacaoEnum2:
      type: integer
      description: Indica o id interno
      nullable: true
    OperacaoStatusAlterarRequest:
      required:
        - id
        - alarmes
        - nome
        - descricao
        - statusIdPredecessor
        - cor
        - enviarPara
      type: object
      properties:
        id:
          type: string
          nullable: true
        alarmes:
          type: array
          items:
            $ref: '#/components/schemas/AlarmeAlterarRequest'
          nullable: true
        nome:
          type: string
          nullable: true
        descricao:
          type: string
          nullable: true
        statusIdPredecessor:
          type: string
          nullable: true
        cor:
          type: string
          nullable: true
        enviarPara:
          type: array
          items:
            type: string
          nullable: true
    OperacaoStatusCadastrarRequest:
      required:
        - alarmes
        - nome
        - descricao
        - statusIdPredecessor
        - cor
        - enviarPara
      type: object
      properties:
        alarmes:
          type: array
          items:
            $ref: '#/components/schemas/AlarmeCadastrarRequest'
          nullable: true
        nome:
          type: string
          nullable: true
        descricao:
          type: string
          nullable: true
        statusIdPredecessor:
          type: string
          nullable: true
        cor:
          type: string
          nullable: true
        enviarPara:
          type: array
          items:
            type: string
          nullable: true
    PoliticaTaxaResponse:
      required:
        - id
        - nome
      type: object
      properties:
        id:
          type: string
          description: Id da política de taxa
          nullable: true
        nome:
          type: string
          description: Nome da política de taxa
          nullable: true
      description: Política de taxa da operação
      nullable: true
    ProblemDetails:
      type: object
      properties:
        type:
          type: string
          nullable: true
        title:
          type: string
          nullable: true
        status:
          type: integer
          format: int32
          nullable: true
        detail:
          type: string
          nullable: true
        instance:
          type: string
          nullable: true
    RecuperarPorIdResponse:
      required:
        - id
        - sequencialDiario
        - sequencialAditivo
        - valorBruto
        - valorLiquido
        - valorAprovado
        - cadastro
        - status
        - situacao
        - empresa
        - usuario
        - tipoOperacao
        - tipoAtivo
        - antecipacao
        - ativos
      type: object
      properties:
        id:
          type: string
          description: Id da operação
          nullable: true
        sequencialDiario:
          type: integer
          description: Sequencial diário da operação
          format: int32
        sequencialAditivo:
          type: integer
          description: Sequecial do aditivo
          format: int32
          nullable: true
        valorBruto:
          type: number
          description: Valor bruto da operação
          format: double
          nullable: true
        valorLiquido:
          type: number
          description: Valor liquido da operação
          format: double
          nullable: true
        valorAprovado:
          type: number
          description: Valor aprovado da operação
          format: double
          nullable: true
        cadastro:
          type: string
          description: Data de cadastro da operação
          format: date-time
        status:
          $ref: '#/components/schemas/StatusResponse'
        situacao:
          $ref: '#/components/schemas/SituacaoResponse'
        empresa:
          $ref: '#/components/schemas/EmpresaResponse'
        usuario:
          $ref: '#/components/schemas/UsuarioResponse'
        tipoOperacao:
          $ref: '#/components/schemas/TipoOperacaoEnum'
        tipoAtivo:
          $ref: '#/components/schemas/TipoAtivoEnum2'
        antecipacao:
          $ref: '#/components/schemas/AntecipacaoResponse'
        ativos:
          type: array
          items:
            $ref: '#/components/schemas/AtivosDMResponse'
          description: Ativos de duplicata mercantil da operação
          nullable: true
    SacadoResponse:
      required:
        - id
        - nome
        - cpfCnpj
      type: object
      properties:
        id:
          type: string
          description: Id do sacado
          nullable: true
        nome:
          type: string
          description: Nome do sacado
          nullable: true
        cpfCnpj:
          type: string
          description: Cpf ou Cnpj do sacado
          nullable: true
      description: Dados do sacado
      nullable: true
    SituacaoAtivoEnum:
      type: integer
    SituacaoAtivoEnum2:
      type: integer
      description: Situação atual do ativo
    SituacaoAtivoEnum3:
      type: integer
      description: Situação do ativo
    SituacaoOperacaoEnum:
      type: integer
      description: Id
    SituacaoOperacaoEnum2:
      type: integer
    SituacaoResponse:
      required:
        - id
        - data
      type: object
      properties:
        id:
          $ref: '#/components/schemas/SituacaoOperacaoEnum'
        data:
          type: string
          description: Data da alteração
          format: date-time
      description: Situação da operação
      nullable: true
    StatusResponse:
      required:
        - id
        - nome
        - idInterno
        - data
      type: object
      properties:
        id:
          type: string
          description: Id
          nullable: true
        nome:
          type: string
          description: Nome
          nullable: true
        idInterno:
          $ref: '#/components/schemas/NullableOfStatusOperacaoEnum'
        data:
          type: string
          description: Data da alteração
          format: date-time
      description: Status da operação
      nullable: true
    TipoAtivoEnum:
      type: integer
      description: ID do Tipo de Ativo
    TipoAtivoEnum2:
      type: integer
      description: Tipo de ativo
    TipoOperacaoEnum:
      type: integer
      description: Tipo da operação
    TipoOperacaoEnum2:
      type: integer
      description: ID do Tipo de Operação
    TipoOperacaoEnum3:
      type: integer
    TipoPessoaFisicaEnum:
      type: integer
    UsuarioResponse:
      required:
        - id
        - nome
      type: object
      properties:
        id:
          type: string
          description: Id do usuário
          nullable: true
        nome:
          type: string
          description: Nome do usuário no tenant
          nullable: true
      description: Usuário originador da operação
      nullable: true
  headers:
    Authorization:
      required: true
      schema:
        type: string
        description: Token necessário para autenticação
    x-tenant-id:
      required: true
      schema:
        type: string
        description: ID do locatário para identificação
tags:
  - name: Operações Importação
    description: "Principais funcionalidades disponíveis:\r\n\r\n                        * Importação de Ativos:\r\n                            - Permite o upload de arquivos em lote, vinculando-os a uma operação específica do sistema.\r\n                            - Possibilita o acompanhamento detalhado do status e andamento da importação, bem como a consulta de arquivos e itens importados.\r\n                            - Permite ajustar metadados da importação, como quantidade de arquivos e finalização do processo.\r\n                            - Oferece mecanismos para registrar e consultar eventuais erros ocorridos durante a importação.\r\n                            - Todas as operações são restritas a usuários autenticados e com permissões adequadas para consulta ou alteração."
  - name: Operações Ativos
    description: "Principais funcionalidades disponíveis:\r\n\r\n                        * Inclusão de Ativos em Operações:\r\n                            - Possibilita importar e vincular arquivos ou registros de ativos a uma operação específica, garantindo que toda a documentação necessária fique centralizada no contexto da operação.\r\n                            - Função disponível apenas para usuários devidamente autorizados, cumprindo os critérios de permissão estabelecidos pelo sistema.\r\n                            - Geração de respostas padronizadas para sucesso, validação de dados, falhas de autenticação/autorização e casos em que a operação não é localizada."
  - name: Operações
    description: "Principais funcionalidades disponíveis:\r\n\r\n                        * Consulta de Operações:\r\n                            - Listagem de operações com múltiplos filtros (datas, status, tipos, ids, etc.).\r\n                            - Busca de detalhes completos de uma operação específica.\r\n                        * Cadastro e Alteração:\r\n                            - Permite cadastrar novas operações.\r\n                            - Altera dados das operações existentes.\r\n                        * Exclusão:\r\n                            - Remove uma operação e todos os ativos associados.\r\n                        * Alteração de Status e Situação:\r\n                            - Modifica o status ou situação da operação e de seus ativos relacionados."
  - name: Operações Status
    description: "Principais funcionalidades disponíveis:\r\n\r\n                    * Listar Status de Operação:\r\n                        - Consultar todos os status de operação registrados no sistema, facilitando análise e integração com outros módulos.\r\n                    * Consultar Detalhes de Status de Operação:\r\n                        - Obter informações detalhadas de um status específico, utilizando seu identificador único.\r\n                    * Cadastrar Novo Status de Operação:\r\n                        - Adicionar um novo status de operação, aumentando a flexibilidade nos fluxos de trabalho.\r\n                    * Atualizar Status de Operação:\r\n                        - Modificar dados de um status existente, permitindo ajustes conforme regras de negócio.\r\n                    * Excluir Status de Operação:\r\n                        - Remover um status de operação, ação restrita a usuários autorizados e auditada para garantir segurança."
