openapi: 3.0.4
info:
  title: Sacado Api
  description: "# API Sacado\r\n\r\n        A API Sacado foi desenvolvida para oferecer um controle abrangente e eficiente sobre os dados de sacados no sistema. Com ela, é possível gerenciar todas as informações relacionadas aos sacados, incluindo cadastro, alteração, consulta e exclusão, além de funcionalidades específicas para consultas por políticas associadas.\r\n\r\n        Simplificando a gestão de dados de sacados com o poder e a flexibilidade de uma API de alta performance!\r\n\r\n        A seguir, detalhamos as principais funcionalidades oferecidas pelos endpoints."
  contact:
    name: rgbtec
    email: support@rgbtec.com.br
  version: v1.0.0
servers:
  - url: http://rgbsys.dyndns.info/ger2025-sacado-api-desenvolvimento
paths:
  /api/v1/sacados/{id}/politicas/checagens:
    get:
      tags:
        - Politicas Checagens
      summary: Listar as políticas de checagem do sacados
      description: Retorna uma lista paginada de políticas de checagem do sacados
      parameters:
        - name: id
          in: path
          description: Id do sacados associado a política de checagem
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PoliticaChecagemRecuperarResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
  /api/v1/sacados/{id}/politicas/limites:
    get:
      tags:
        - Politicas Limites
      summary: Listar as políticas de limite do sacados
      description: Retorna uma lista paginada de políticas de limite do sacados
      parameters:
        - name: id
          in: path
          description: Id do sacados associado a política de limite
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PoliticaLimiteRecuperarResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
  /api/v1/sacados/{id}/politicas/taxas:
    get:
      tags:
        - Politicas Taxas
      summary: Listar as políticas de taxa do sacados
      description: Retorna uma lista paginada de políticas de taxa do sacados
      parameters:
        - name: id
          in: path
          description: Id do sacados associado a política de taxa
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PoliticaTaxaRecuperarResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
  /api/v1/sacados:
    get:
      tags:
        - Sacados
      summary: Listar sacados
      description: Lista todos os sacados de um tenant específico
      parameters:
        - name: nome
          in: query
          description: Nome ou parte do nome ou apelido do sacado
          schema:
            type: string
            default: null
        - name: tipoPessoa
          in: query
          description: Tipo de pessoa
          schema:
            type: string
            default: null
        - name: cpfCnpj
          in: query
          description: Cpf ou cnpj ou raiz do cnpj do sacado
          schema:
            type: string
            default: null
        - name: ativo
          in: query
          description: Indica se o sacado está ativo ou não
          schema:
            type: boolean
            default: null
        - name: cadastroInicial
          in: query
          description: Data da criação do sacado
          schema:
            type: string
            format: date-time
            default: null
        - name: cadastroFinal
          in: query
          description: Data da criação do sacado
          schema:
            type: string
            format: date-time
            default: null
        - name: grupoEmpresarialId
          in: query
          description: Id do grupo empresarial
          schema:
            type: string
            default: null
        - name: politicaLimiteId
          in: query
          description: Id da politica de limites
          schema:
            type: string
            default: null
        - name: politicaTaxaId
          in: query
          description: Id da politica de taxas
          schema:
            type: string
            default: null
        - name: politicaChecagemId
          in: query
          description: Id da politica de checagem
          schema:
            type: string
            default: null
        - name: pagina
          in: query
          description: Número da páginação
          schema:
            type: integer
            format: int32
            default: 1
        - name: quantidade
          in: query
          description: Quantidade de registros a serem retornados
          schema:
            type: integer
            format: int32
            default: 10
        - name: ordem
          in: query
          description: Indica se a ordenação da coluna nome será ascendete ou nao
          schema:
            type: boolean
            default: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/TenantSacadoRecuperarResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
    post:
      tags:
        - Sacados
      summary: Cadastrar sacado
      description: Cadastrar um sacado no sistema
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TenantSacadoCadastrarRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/TenantSacadoCadastrarRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /api/v1/gerencial/politicas/limites/{id}/sacados:
    get:
      tags:
        - Sacados
      summary: Listar sacados pela politica de limites
      description: Lista todos os sacados de um tenant específico pela politica de limites
      parameters:
        - name: id
          in: path
          description: Id da politica de limites
          required: true
          schema:
            type: string
            default: null
        - name: pagina
          in: query
          description: Número da páginação
          schema:
            type: integer
            format: int32
            default: null
        - name: quantidade
          in: query
          description: Quantidade de registros a serem retornados
          schema:
            type: integer
            format: int32
            default: 10
        - name: ordem
          in: query
          description: Indica se a ordenação da coluna nome será ascendete ou nao
          schema:
            type: boolean
            default: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/TenantSacadoRecuperarResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
  /api/v1/gerencial/politicas/taxas/{id}/sacados:
    get:
      tags:
        - Sacados
      summary: Listar sacados pela politica de taxas
      description: Lista todos os sacados de um tenant específico pela politica de taxas
      parameters:
        - name: id
          in: path
          description: Id da politica de taxas
          required: true
          schema:
            type: string
            default: null
        - name: pagina
          in: query
          description: Número da páginação
          schema:
            type: integer
            format: int32
            default: null
        - name: quantidade
          in: query
          description: Quantidade de registros a serem retornados
          schema:
            type: integer
            format: int32
            default: 10
        - name: ordem
          in: query
          description: Indica se a ordenação da coluna nome será ascendete ou nao
          schema:
            type: boolean
            default: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/TenantSacadoRecuperarResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
  /api/v1/gerencial/politicas/checagens/{id}/sacados:
    get:
      tags:
        - Sacados
      summary: Listar sacados pela politica de checagens
      description: >-
        Lista todos os sacados de um tenant específico pela politica de
        checagens
      parameters:
        - name: id
          in: path
          description: Id da politica de checagens
          required: true
          schema:
            type: string
            default: null
        - name: pagina
          in: query
          description: Número da páginação
          schema:
            type: integer
            format: int32
            default: null
        - name: quantidade
          in: query
          description: Quantidade de registros a serem retornados
          schema:
            type: integer
            format: int32
            default: 10
        - name: ordem
          in: query
          description: Indica se a ordenação da coluna nome será ascendete ou nao
          schema:
            type: boolean
            default: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/TenantSacadoRecuperarResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
  /api/v1/sacados/ativos:
    get:
      tags:
        - Sacados
      summary: Listar sacados ativos
      description: Lista todos os sacados ativos de um tenant específico
      parameters:
        - name: nome
          in: query
          description: Nome ou parte do nome ou apelido do sacado
          schema:
            type: string
            default: null
        - name: pagina
          in: query
          description: Número da páginação
          schema:
            type: integer
            format: int32
            default: null
        - name: quantidade
          in: query
          description: Quantidade de registros a serem retornados
          schema:
            type: integer
            format: int32
            default: 10
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/TenantSacadoRecuperarAtivoResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
  /api/v1/sacados/{id}:
    get:
      tags:
        - Sacados
      summary: Recuperar sacado por ID
      description: Recuperar sacado do sistema por id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TenantSacadoPorIdResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
    put:
      tags:
        - Sacados
      summary: Alterar sacado
      description: Alterar um sacado no sistema
      parameters:
        - name: id
          in: path
          description: Id do sacado
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TenantSacadoAlterarRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/TenantSacadoAlterarRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    delete:
      tags:
        - Sacados
      summary: Excluir sacado
      description: Excluir um sacado no sistema
      parameters:
        - name: id
          in: path
          description: Id do sacado
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TenantSacadoExcluirRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/TenantSacadoExcluirRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json: {}
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
components:
  schemas:
    TipoPessoaEnum:
      type: integer
      description: Indica o tipo de pessoa
    TenantSacadoRecuperarResponse:
      required:
        - tipo
        - cpfCnpj
        - ativo
        - dataCadastro
        - id
        - nome
        - apelido
      type: object
      properties:
        tipo:
          $ref: '#/components/schemas/TipoPessoaEnum'
        cpfCnpj:
          type: string
          description: Cpf ou Cnpj do sacado
          nullable: true
        ativo:
          type: boolean
          description: Indica se o sacado está ativo ou não
        dataCadastro:
          type: string
          description: Data da criação do sacado
          format: date-time
        id:
          type: string
          description: Id do sacado
          nullable: true
        nome:
          type: string
          description: Nome do sacado
          nullable: true
        apelido:
          type: string
          description: Apelido do sacado
          nullable: true
    PessoaFisicaEmailCadastrarRequest:
      required:
        - email
        - principal
      type: object
      properties:
        email:
          type: string
          description: Endereço de email
          nullable: true
        principal:
          type: boolean
          description: Indica se é o email principal
        pessoaId:
          type: string
          description: Id da entidade pessoa
          nullable: true
    TipoTelefoneEnum:
      type: integer
      description: Tipo de telefone
    PessoaFisicaTelefoneCadastrarRequest:
      required:
        - numero
        - tipo
        - principal
        - whatsapp
        - sms
      type: object
      properties:
        numero:
          type: string
          description: Número do telefone
          nullable: true
        tipo:
          $ref: '#/components/schemas/TipoTelefoneEnum'
        principal:
          type: boolean
          description: Indica se o telefone é o principal ou não
        whatsapp:
          type: boolean
          description: Indica se o telefone recebe whatsapp ou não
        sms:
          type: boolean
          description: Indica se o telefone recebe sms ou não
        pessoaId:
          type: string
          description: Id da entidade pessoa
          nullable: true
    PessoaFisicaEnderecoCadastrarRequest:
      required:
        - logradouro
        - numero
        - semNumero
        - complemento
        - cep
        - bairro
        - municipio
        - uf
        - principal
      type: object
      properties:
        logradouro:
          type: string
          description: Logradouro do endereço
          nullable: true
        numero:
          type: string
          description: Número do endereço
          nullable: true
        semNumero:
          type: boolean
          description: Indica se o endereço possui número ou não
        complemento:
          type: string
          description: Complemento do endereço
          nullable: true
        cep:
          type: string
          description: Cep do endereço
          nullable: true
        bairro:
          type: string
          description: Bairro do endereço
          nullable: true
        municipio:
          type: string
          description: Município do endereço
          nullable: true
        uf:
          type: string
          description: Uf do endereço
          nullable: true
        principal:
          type: boolean
          description: Indica se é o endereço principal
        pessoaId:
          type: string
          description: Id da entidade pessoa
          nullable: true
    PessoaFisicaCadastrarRequest:
      required:
        - cpf
        - emails
        - telefones
        - enderecos
        - nome
        - identidade
        - emissaoIdentidade
        - nascimento
        - site
      type: object
      properties:
        cpf:
          type: string
          description: Cpf da pessoa física
          nullable: true
        emails:
          type: array
          items:
            $ref: '#/components/schemas/PessoaFisicaEmailCadastrarRequest'
          description: Array com os emails da pessoa física
          nullable: true
        telefones:
          type: array
          items:
            $ref: '#/components/schemas/PessoaFisicaTelefoneCadastrarRequest'
          description: Array com os telefones da pessoa física
          nullable: true
        enderecos:
          type: array
          items:
            $ref: '#/components/schemas/PessoaFisicaEnderecoCadastrarRequest'
          description: Array com os endereços da pessoa física
          nullable: true
        nome:
          type: string
          description: Nome da pessoa física
          nullable: true
        identidade:
          type: string
          description: Identidade da pessoa física
          nullable: true
        emissaoIdentidade:
          type: string
          description: Data da emissão da identidade da pessoa física
          format: date-time
          nullable: true
        nascimento:
          type: string
          description: Data de nascimento da pessoa física
          format: date-time
          nullable: true
        site:
          type: string
          description: Site da pessa física
          nullable: true
      description: Dados da pessoa fisica
      nullable: true
    SituacaoCadastralRequest:
      required:
        - descricao
        - data
        - motivo
      type: object
      properties:
        descricao:
          type: string
          description: Situação cadastral da pessoa jurídica
          nullable: true
        data:
          type: string
          description: Data da atualização da situação cadastral da pessoa jurídica
          format: date-time
          nullable: true
        motivo:
          type: string
          description: Motivo da situação cadastral da pessoa jurídica
          nullable: true
      description: Situacao Cadastral da pessoa jurídica
      nullable: true
    EnderecoReceitaFederalRequest:
      required:
        - logradouro
        - numero
        - semNumero
        - complemento
        - cep
        - bairro
        - municipio
        - uf
      type: object
      properties:
        logradouro:
          type: string
          description: Endereço da pessoa
          nullable: true
        numero:
          type: string
          description: Número do endereço da pessoa
          nullable: true
        semNumero:
          type: boolean
          description: Indica se o endereço possui número ou não
        complemento:
          type: string
          description: Complemento do endereço da pessoa
          nullable: true
        cep:
          type: string
          description: Cep do endereço da pessoa
          nullable: true
        bairro:
          type: string
          description: Bairro do endereço da pessoa
          nullable: true
        municipio:
          type: string
          description: Município do endereço da pessoa
          nullable: true
        uf:
          type: string
          description: Uf do endereço da pessoa
          nullable: true
      description: Endereço Receita Federal da pessoa jurídica
      nullable: true
    TipoPessoaJuridicaEnum:
      type: integer
      description: Tipo de pessoa jurídica
    PessoaJuridicaCadastrarRequest:
      required:
        - cnpj
        - dataAbertura
        - nomeEmpresarial
        - nomeFantasia
        - naturezaJuridica
        - situacaoCadastral
        - enderecoReceitaFederal
        - emails
        - telefones
        - enderecos
        - inscricaoEstadual
        - inscricaoMunicipal
        - matriz
        - nire
        - site
        - tipoRegimeTributarioId
        - tipoPessoaJuridica
        - registroJuntaComercial
      type: object
      properties:
        cnpj:
          type: string
          description: Cnpj da pessoa jurídica
          nullable: true
        dataAbertura:
          type: string
          description: Data da abertura da pessoa jurídica
          format: date-time
        nomeEmpresarial:
          type: string
          description: Nome empresarial da pessoa jurídica
          nullable: true
        nomeFantasia:
          type: string
          description: Nome fantasia da pessoa jurídica
          nullable: true
        naturezaJuridica:
          type: string
          description: Natureza jurídica da pessoa jurídica
          nullable: true
        situacaoCadastral:
          $ref: '#/components/schemas/SituacaoCadastralRequest'
        enderecoReceitaFederal:
          $ref: '#/components/schemas/EnderecoReceitaFederalRequest'
        emails:
          type: array
          items: {}
          description: Array com emails de pessoa jurídica
          nullable: true
        telefones:
          type: array
          items: {}
          description: Array com telefones de pessoa jurídica
          nullable: true
        enderecos:
          type: array
          items: {}
          description: Array com endereços de pessoa jurídica
          nullable: true
        inscricaoEstadual:
          type: string
          description: Inscrição estadual da pessoa jurídica
          nullable: true
        inscricaoMunicipal:
          type: string
          description: Inscrição municipal da pessoa jurídica
          nullable: true
        matriz:
          type: boolean
          description: Indica se a empesa é matriz ou não
        nire:
          type: string
          description: Número de identificação do registro de empresas
          nullable: true
        site:
          type: string
          description: Url do site da empresa
          nullable: true
        tipoRegimeTributarioId:
          type: string
          description: Tipo do regime trubutário
          nullable: true
        tipoPessoaJuridica:
          $ref: '#/components/schemas/TipoPessoaJuridicaEnum'
        registroJuntaComercial:
          type: string
          description: Registro da junta comercial
          nullable: true
      description: Dados da pessoa jurídica
      nullable: true
    TipoContaBancariaEnum:
      type: integer
      description: Tipo da conta bancária
    Agencia:
      required:
        - numero
        - digito
      type: object
      properties:
        numero:
          type: string
          description: Código da agência
          nullable: true
        digito:
          type: string
          description: Dígito da agência
          nullable: true
      description: Informações da Agência
      nullable: true
    Conta:
      required:
        - numero
        - digito
      type: object
      properties:
        numero:
          type: string
          description: Código da conta
          nullable: true
        digito:
          type: string
          description: Dígito da conta
          nullable: true
      description: Informações da Conta
      nullable: true
    TipoChavePixEnum:
      type: integer
      description: Tipo da chave Pix
    ChavesPix:
      required:
        - tipo
        - chave
      type: object
      properties:
        tipo:
          $ref: '#/components/schemas/TipoChavePixEnum'
        chave:
          type: string
          description: Chave Pix
          nullable: true
    PessoaFisicaInformacaoBancariaCadastrarRequest:
      required:
        - tipoConta
        - bancoId
        - agencia
        - conta
        - chavesPix
      type: object
      properties:
        tipoConta:
          $ref: '#/components/schemas/TipoContaBancariaEnum'
        bancoId:
          type: integer
          description: Código do banco
          format: int16
        agencia:
          $ref: '#/components/schemas/Agencia'
        conta:
          $ref: '#/components/schemas/Conta'
        chavesPix:
          type: array
          items:
            $ref: '#/components/schemas/ChavesPix'
          description: Array de chaves Pix
          nullable: true
    PoliticasCadastrar:
      required:
        - limite
        - taxa
        - checagem
      type: object
      properties:
        limite:
          type: array
          items:
            type: string
          description: Array com os ids das políticas de limite
          nullable: true
        taxa:
          type: array
          items:
            type: string
          description: Array com os ids das políticas de taxa
          nullable: true
        checagem:
          type: array
          items:
            type: string
          description: Array com os ids das políticas de checagem
          nullable: true
      description: Políticas associadas à empresa
      nullable: true
    IFormFile:
      type: string
      format: binary
    TenantSacadoCadastrarRequest:
      required:
        - tipoPessoa
        - pessoaFisica
        - pessoaJuridica
        - dadosBancarios
        - politicas
        - apelido
        - observacao
        - ativo
        - arquivos
      type: object
      properties:
        tipoPessoa:
          $ref: '#/components/schemas/TipoPessoaEnum'
        pessoaFisica:
          $ref: '#/components/schemas/PessoaFisicaCadastrarRequest'
        pessoaJuridica:
          $ref: '#/components/schemas/PessoaJuridicaCadastrarRequest'
        dadosBancarios:
          type: array
          items:
            $ref: >-
              #/components/schemas/PessoaFisicaInformacaoBancariaCadastrarRequest
          description: Dados bancários do agente
          nullable: true
        politicas:
          $ref: '#/components/schemas/PoliticasCadastrar'
        apelido:
          type: string
          description: Apelido do sacado
          nullable: true
        observacao:
          type: string
          description: Observação do sacado
          nullable: true
        ativo:
          type: boolean
          description: Indica se o sacado está ativo ou não
        arquivos:
          type: array
          items:
            $ref: '#/components/schemas/IFormFile'
          description: Arquivos do sacado
          nullable: true
    IdResponse:
      required:
        - id
      type: object
      properties:
        id:
          type: string
          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
    TenantSacadoRecuperarAtivoResponse:
      required:
        - id
        - nome
        - apelido
      type: object
      properties:
        id:
          type: string
          description: Id do sacado
          nullable: true
        nome:
          type: string
          description: Nome do sacado
          nullable: true
        apelido:
          type: string
          description: Apelido do sacado
          nullable: true
    PessoaFisicaCompletoResponse:
      required:
        - identidade
        - emissaoIdentidade
        - nascimento
        - cpf
        - nome
        - site
      type: object
      properties:
        identidade:
          type: string
          description: Identidade da pessoa
          nullable: true
        emissaoIdentidade:
          type: string
          description: Data de emissão da identidade
          format: date-time
          nullable: true
        nascimento:
          type: string
          description: Data de nascimento da pessoa
          format: date-time
          nullable: true
        cpf:
          type: string
          description: CPF da pessoa
          nullable: true
        nome:
          type: string
          description: Nome da pessoa
          nullable: true
        site:
          type: string
          description: Site da pessoa
          nullable: true
      description: Dados da pessoa física
      nullable: true
    SituacaoCadastralResponse:
      required:
        - descricao
        - data
        - motivo
      type: object
      properties:
        descricao:
          type: string
          description: Descrição da situação cadastral
          nullable: true
        data:
          type: string
          description: Data da situação cadastral
          format: date-time
          nullable: true
        motivo:
          type: string
          description: Motivo da situação cadastral
          nullable: true
      description: Situação cadastral da pessoa jurídica
      nullable: true
    PessoaEnderecoReceitaFederalResponse:
      required:
        - logradouro
        - numero
        - semNumero
        - complemento
        - cep
        - bairro
        - municipio
        - uf
      type: object
      properties:
        logradouro:
          type: string
          description: Endereço da pessoa
          nullable: true
        numero:
          type: string
          description: Número do endereço da pessoa
          nullable: true
        semNumero:
          type: boolean
          description: Indica se o endereço não possui número
        complemento:
          type: string
          description: Complemento do endereço da pessoa
          nullable: true
        cep:
          type: string
          description: CEP do endereço da pessoa
          nullable: true
        bairro:
          type: string
          description: Bairro do endereço da pessoa
          nullable: true
        municipio:
          type: string
          description: Município do endereço da pessoa
          nullable: true
        uf:
          type: string
          description: UF do endereço da pessoa
          nullable: true
      description: Endereço da Receita Federal da pessoa jurídica
      nullable: true
    PessoaJuridicaResponse:
      required:
        - cnpj
        - abertura
        - nomeEmpresarial
        - nomeFantasia
        - naturezaJuridica
        - situacaoCadastral
        - inscricaoEstadual
        - inscricaoMunicipal
        - enderecoReceitaFederal
        - matriz
        - nire
        - site
        - tipoRegimeTributarioId
        - tipoPessoaJuridica
        - registroJuntaComercial
      type: object
      properties:
        cnpj:
          type: string
          description: CNPJ da pessoa jurídica
          nullable: true
        abertura:
          type: string
          description: Data de abertura da pessoa jurídica
          format: date-time
        nomeEmpresarial:
          type: string
          description: Nome empresarial da pessoa jurídica
          nullable: true
        nomeFantasia:
          type: string
          description: Nome fantasia da pessoa jurídica
          nullable: true
        naturezaJuridica:
          type: string
          description: Natureza jurídica da pessoa jurídica
          nullable: true
        situacaoCadastral:
          $ref: '#/components/schemas/SituacaoCadastralResponse'
        inscricaoEstadual:
          type: string
          description: Inscrição estadual da pessoa jurídica
          nullable: true
        inscricaoMunicipal:
          type: string
          description: Inscrição municipal da pessoa jurídica
          nullable: true
        enderecoReceitaFederal:
          $ref: '#/components/schemas/PessoaEnderecoReceitaFederalResponse'
        matriz:
          type: boolean
          description: Indica se a pessoa jurídica é matriz
        nire:
          type: string
          description: >-
            Número de Inscrição do Registro de Empresas (NIRE) da pessoa
            jurídica
          nullable: true
        site:
          type: string
          description: Site da pessoa jurídica
          nullable: true
        tipoRegimeTributarioId:
          type: string
          description: Tipo de regime tributário da pessoa jurídica
          nullable: true
        tipoPessoaJuridica:
          $ref: '#/components/schemas/TipoPessoaJuridicaEnum'
        registroJuntaComercial:
          type: string
          description: Registro na Junta Comercial da pessoa jurídica
          nullable: true
        ultimaAtualizacaoReceitaFederal:
          type: string
          description: Data da última atualização na Receita Federal
          format: date-time
          default: null
          nullable: true
      description: Dados da pessoa jurídica
      nullable: true
    TenantSacadoPorIdResponse:
      required:
        - apelido
        - ativo
        - observacao
      type: object
      properties:
        apelido:
          type: string
          description: Apelido do sacado
          nullable: true
        ativo:
          type: boolean
          description: Indica se o sacado está ativo ou não
        observacao:
          type: string
          description: Observação do sacado
          nullable: true
        arquivos:
          type: array
          items:
            $ref: '#/components/schemas/IFormFile'
          description: Arquivos do sacado
          nullable: true
        pessoaFisica:
          $ref: '#/components/schemas/PessoaFisicaCompletoResponse'
        pessoaJuridica:
          $ref: '#/components/schemas/PessoaJuridicaResponse'
    PessoaFisicaEmailAlterarRequest:
      required:
        - id
        - email
        - principal
      type: object
      properties:
        id:
          type: string
          description: Id da entidade PessoaEmail
          nullable: true
        email:
          type: string
          description: Endereço de email
          nullable: true
        principal:
          type: boolean
          description: Indica se é o email principal
        pessoaId:
          type: string
          description: Id da entidade pessoa
          nullable: true
    PessoaFisicaTelefoneAlterarRequest:
      required:
        - id
        - numero
        - tipo
        - principal
        - whatsapp
        - sms
      type: object
      properties:
        id:
          type: string
          description: Id da entidade PessoaTelefone
          nullable: true
        numero:
          type: string
          description: Número do telefone
          nullable: true
        tipo:
          $ref: '#/components/schemas/TipoTelefoneEnum'
        principal:
          type: boolean
          description: Indica se o telefone é o principal ou não
        whatsapp:
          type: boolean
          description: Indica se o telefone recebe whatsapp ou não
        sms:
          type: boolean
          description: Indica se o telefone recebe sms ou não
        pessoaId:
          type: string
          description: Id da entidade pessoa
          nullable: true
    PessoaFisicaEnderecoAlterarRequest:
      required:
        - id
        - logradouro
        - numero
        - semNumero
        - complemento
        - cep
        - bairro
        - municipio
        - uf
        - principal
      type: object
      properties:
        id:
          type: string
          description: Id da entidade PessoaEndereco
          nullable: true
        logradouro:
          type: string
          description: Logradouro do endereço
          nullable: true
        numero:
          type: string
          description: Número do endereço
          nullable: true
        semNumero:
          type: boolean
          description: Indica se o endereço possui número ou não
        complemento:
          type: string
          description: Complemento do endereço
          nullable: true
        cep:
          type: string
          description: Cep do endereço
          nullable: true
        bairro:
          type: string
          description: Bairro do endereço
          nullable: true
        municipio:
          type: string
          description: Município do endereço
          nullable: true
        uf:
          type: string
          description: Uf do endereço
          nullable: true
        principal:
          type: boolean
          description: Indica se é o endereço principal
        pessoaId:
          type: string
          description: Id da entidade pessoa
          nullable: true
    PessoaFisicaAlterarRequest:
      required:
        - pessoaId
        - emails
        - telefones
        - enderecos
        - nome
        - identidade
        - emissaoIdentidade
        - nascimento
        - site
      type: object
      properties:
        pessoaId:
          type: string
          description: Id da pessoa física
          nullable: true
        emails:
          type: array
          items:
            $ref: '#/components/schemas/PessoaFisicaEmailAlterarRequest'
          description: Array com os emails da pessoa física
          nullable: true
        telefones:
          type: array
          items:
            $ref: '#/components/schemas/PessoaFisicaTelefoneAlterarRequest'
          description: Array com os telefones da pessoa física
          nullable: true
        enderecos:
          type: array
          items:
            $ref: '#/components/schemas/PessoaFisicaEnderecoAlterarRequest'
          description: Array com os endereços da pessoa física
          nullable: true
        nome:
          type: string
          description: Nome da pessoa física
          nullable: true
        identidade:
          type: string
          description: Identidade da pessoa física
          nullable: true
        emissaoIdentidade:
          type: string
          description: Data da emissão da identidade da pessoa física
          format: date-time
          nullable: true
        nascimento:
          type: string
          description: Data de nascimento da pessoa física
          format: date-time
          nullable: true
        site:
          type: string
          description: Site da pessa física
          nullable: true
      description: Dados da pessoa fisica
      nullable: true
    PessoaJuridicaAlterarRequest:
      required:
        - id
        - emails
        - telefones
        - enderecos
        - inscricaoEstadual
        - inscricaoMunicipal
        - matriz
        - nire
        - site
        - tipoRegimeTributarioId
        - tipoPessoaJuridica
        - registroJuntaComercial
      type: object
      properties:
        id:
          type: string
          description: Id da pessoa jurídica
          nullable: true
        emails:
          type: array
          items: {}
          description: Array com os emails da pessoa física
          nullable: true
        telefones:
          type: array
          items: {}
          description: Array com os telefones da pessoa física
          nullable: true
        enderecos:
          type: array
          items: {}
          description: Array com os endereços da pessoa física
          nullable: true
        inscricaoEstadual:
          type: string
          description: Inscrição estadual da pessoa jurídica
          nullable: true
        inscricaoMunicipal:
          type: string
          description: Inscrição municipal da pessoa jurídica
          nullable: true
        matriz:
          type: boolean
          description: Indica se a empesa é matriz ou não
        nire:
          type: string
          description: Número de identificação do registro de empresas
          nullable: true
        site:
          type: string
          description: Url do site da empresa
          nullable: true
        tipoRegimeTributarioId:
          type: string
          description: Tipo do regime trubutário
          nullable: true
        tipoPessoaJuridica:
          $ref: '#/components/schemas/TipoPessoaJuridicaEnum'
        registroJuntaComercial:
          type: string
          description: Registro da junta comercial
          nullable: true
      description: Dados da pessoa jurídica
      nullable: true
    AgenciaAlterar:
      required:
        - numero
        - digito
      type: object
      properties:
        numero:
          type: string
          description: Código da agência
          nullable: true
        digito:
          type: string
          description: Dígito da agência
          nullable: true
      description: Informações da Agência
      nullable: true
    ContaAlterar:
      required:
        - numero
        - digito
      type: object
      properties:
        numero:
          type: string
          description: Código da conta
          nullable: true
        digito:
          type: string
          description: Dígito da conta
          nullable: true
      description: Informações da Conta
      nullable: true
    ChavesPixAlterar:
      required:
        - id
        - tipo
        - chave
      type: object
      properties:
        id:
          type: string
          description: Id da chave Pix
          nullable: true
        tipo:
          $ref: '#/components/schemas/TipoChavePixEnum'
        chave:
          type: string
          description: Chave Pix
          nullable: true
    PessoaInformacaoBancariaAlterarRequest:
      required:
        - id
        - tipoConta
        - bancoId
        - agencia
        - conta
        - chavesPix
      type: object
      properties:
        id:
          type: string
          description: Id da entidade pessoa informação bancaria
          nullable: true
        tipoConta:
          $ref: '#/components/schemas/TipoContaBancariaEnum'
        bancoId:
          type: integer
          description: Código do banco
          format: int16
        agencia:
          $ref: '#/components/schemas/AgenciaAlterar'
        conta:
          $ref: '#/components/schemas/ContaAlterar'
        chavesPix:
          type: array
          items:
            $ref: '#/components/schemas/ChavesPixAlterar'
          description: Array de chaves Pix
          nullable: true
    PoliticasAlterar:
      required:
        - limite
        - taxa
        - checagem
      type: object
      properties:
        limite:
          type: array
          items:
            type: string
          description: Array com os ids das políticas de limite
          nullable: true
        taxa:
          type: array
          items:
            type: string
          description: Array com os ids das políticas de taxa
          nullable: true
        checagem:
          type: array
          items:
            type: string
          description: Array com os ids das políticas de checagem
          nullable: true
      description: Políticas associadas à empresa
      nullable: true
    TenantSacadoAlterarRequest:
      required:
        - pessoaFisica
        - pessoaJuridica
        - dadosBancarios
        - politicas
        - apelido
        - observacao
        - ativo
        - arquivos
      type: object
      properties:
        id:
          type: string
          description: Id do sacado
          nullable: true
        pessoaFisica:
          $ref: '#/components/schemas/PessoaFisicaAlterarRequest'
        pessoaJuridica:
          $ref: '#/components/schemas/PessoaJuridicaAlterarRequest'
        dadosBancarios:
          type: array
          items:
            $ref: '#/components/schemas/PessoaInformacaoBancariaAlterarRequest'
          description: Dados bancários do agente
          nullable: true
        politicas:
          $ref: '#/components/schemas/PoliticasAlterar'
        apelido:
          type: string
          description: Apelido do sacado
          nullable: true
        observacao:
          type: string
          description: Observação do sacado
          nullable: true
        ativo:
          type: boolean
          description: Indica se o sacado está ativo ou não
        arquivos:
          type: array
          items:
            $ref: '#/components/schemas/IFormFile'
          description: Arquivos do sacado
          nullable: true
    TenantSacadoExcluirRequest:
      type: object
    PoliticaChecagemRecuperarResponse:
      required:
        - id
        - nome
        - limite
        - descricao
        - revisao
        - ativo
      type: object
      properties:
        id:
          type: string
          description: Id da política de checagem
          nullable: true
        nome:
          type: string
          description: Nome da política de checagem
          nullable: true
        limite:
          type: number
          description: Valor do limite do checagem da política de checagem
          format: double
        descricao:
          type: string
          description: Descrição da política de checagem
          nullable: true
        revisao:
          type: string
          description: Data da revisão da política de checagem
          format: date-time
          nullable: true
        ativo:
          type: boolean
          description: Indica se a política de checagem está ativo ou não
    PoliticaLimiteRecuperarResponse:
      required:
        - id
        - nome
        - valor
        - revisao
        - ativo
      type: object
      properties:
        id:
          type: string
          description: Id da política de limite
          nullable: true
        nome:
          type: string
          description: Nome da política de limite
          nullable: true
        valor:
          type: number
          description: Valor do limite da política de limite
          format: double
        revisao:
          type: string
          description: Data da revisão da política de limite
          format: date-time
          nullable: true
        ativo:
          type: boolean
          description: Indica se a política de limite está ativo ou não
    PoliticaTaxaRecuperarResponse:
      required:
        - id
        - nome
        - taxa
        - float
        - adValorem
        - revisao
        - ativo
      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
        taxa:
          type: number
          description: Valor da taxa da política de taxa
          format: double
        float:
          type: number
          description: Valor do float da política de taxa
          format: double
        adValorem:
          type: number
          description: Valor do ad valorem da política de taxa
          format: double
        revisao:
          type: string
          description: Data da revisão da política de taxa
          format: date-time
          nullable: true
        ativo:
          type: boolean
          description: Indica se a política de taxa está ativo ou não
  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: Sacados
    description: "Este conjunto de recursos permite a manipulação e consulta de dados de sacados no sistema:\r\n\r\n                *   **Cadastrar Sacado:**\r\n                    *   Cria um novo sacado no sistema.\r\n                *   **Alterar Sacado:**\r\n                    *   Atualiza os dados de um sacado existente pelo seu identificador.\r\n                *   **Excluir Sacado:**\r\n                    *   Remove um sacado do sistema pelo seu identificador.\r\n                *   **Listar Sacados:**\r\n                    *   Recupera todos os sacados com opções de filtragem por nome, tipo de pessoa, CPF/CNPJ, status ativo, datas de cadastro, políticas associadas e paginação.\r\n                *   **Consultar Sacado por ID:**\r\n                    *   Busca um sacado específico pelo seu identificador único.\r\n                *   **Listar Sacados Ativos:**\r\n                    *   Recupera somente os sacados que estão ativos no sistema com opções de filtragem por nome e paginação.\r\n                *   **Listar Sacados por Política de Limites:**\r\n                    *   Recupera sacados associados a uma política de limites específica.\r\n                *   **Listar Sacados por Política de Taxas:**\r\n                    *   Recupera sacados associados a uma política de taxas específica.\r\n                *   **Listar Sacados por Política de Checagens:**\r\n                    *   Recupera sacados associados a uma política de checagens específica."
