openapi: 3.0.4
info:
  title: Cedente Api
  description: "# API Cedente\r\n\r\n    A API Cedente foi desenvolvida para oferecer um controle abrangente e eficiente sobre o gerenciamento de cedentes no sistema. Com ela, é possível realizar operações completas de CRUD (Create, Read, Update, Delete) para cedentes, incluindo funcionalidades avançadas de filtragem por diversos critérios como nome, apelido, status, visibilidade, grupos empresariais e políticas de limites. Esta API também permite a consulta de cedentes vinculados a agentes específicos e a recuperação de cedentes ativos, garantindo flexibilidade e precisão no acesso aos dados.\r\n\r\n    Simplificando o gerenciamento de cedentes com o poder e a flexibilidade de uma API de alta performance!\r\n\r\n    A seguir, detalhamos as principais funcionalidades oferecidas por cada um dos endpoints."
  contact:
    name: rgbtec
    email: support@rgbtec.com.br
  version: v1.0.0
servers:
  - url: http://rgbsys.dyndns.info/ger2025-cedente-api-desenvolvimento
paths:
  /api/v1/cedentes/{id}/politicas/checagens:
    get:
      tags:
        - Politicas Checagens
      summary: Listar as políticas de checagem do cedente
      description: Retorna uma lista paginada de políticas de checagem do cedente
      parameters:
        - name: id
          in: path
          description: Id do cedente 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/cedentes/{id}/politicas/limites:
    get:
      tags:
        - Politicas Limites
      summary: Listar as políticas de limite do cedente
      description: Retorna uma lista paginada de políticas de limite do cedente
      parameters:
        - name: id
          in: path
          description: Id do cedente 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/cedentes/{id}/politicas/taxas:
    get:
      tags:
        - Politicas Taxas
      summary: Listar as políticas de taxa do cedente
      description: Retorna uma lista paginada de políticas de taxa do cedente
      parameters:
        - name: id
          in: path
          description: Id do cedente 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/agentes:
    get:
      tags:
        - Agentes
      summary: Listar agentes
      description: Lista todos os agentes de um tenant específico
      parameters:
        - name: nome
          in: query
          description: Nome ou parte do nome do agente
          schema:
            type: string
            default: null
        - name: nivel
          in: query
          description: Níveis de agente
          schema:
            type: string
            default: null
        - name: status
          in: query
          description: Status do agente
          schema:
            type: string
            default: null
        - name: possuiEmail
          in: query
          description: Indica se o usuário possui ou não email
          schema:
            type: boolean
            default: null
        - name: possuiEndereco
          in: query
          description: Indica se o usuário possui ou não endereço
          schema:
            type: boolean
            default: null
        - name: possuiDadoBancario
          in: query
          description: Indica se o usuário possui ou não dados bancários
          schema:
            type: boolean
            default: null
        - name: politicaComissaoAgenteId
          in: query
          description: Id da politica de comissão de agentes
          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: ascendente
          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/AgenteResponse'
        '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:
        - Agentes
      summary: Cadastrar agente
      description: Cadastrar um agente no sistema
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TenantAgenteCadastrarRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/TenantAgenteCadastrarRequest'
        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/comissoes-agentes/{id}/agentes:
    get:
      tags:
        - Agentes
      summary: Listar agentes de uma politica de comissao
      description: >-
        Lista todos os agentes de uma politica de comissao e um tenant
        específico
      parameters:
        - name: id
          in: path
          description: Id da politica de comissão de agentes
          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: ascendente
          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/AgenteResponse'
        '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/agentes/ativos:
    get:
      tags:
        - Agentes
      summary: Listar agentes ativos
      description: Lista todos os agentes ativos de um tenant específico
      parameters:
        - name: nome
          in: query
          description: Nome ou parte do nome do agente
          schema:
            type: string
            default: null
        - name: nivel
          in: query
          description: Níveis de agente
          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/TenantAgenteAtivoResponse'
        '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/agentes/{id}:
    get:
      tags:
        - Agentes
      summary: Recuperar agente por ID
      description: Recuperar agente 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/TenantAgentePorIdResponse'
        '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:
        - Agentes
      summary: Alterar agente
      description: Alterar um agente no sistema
      parameters:
        - name: id
          in: path
          description: PessoaId do agente
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TenantAgenteAlterarRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/TenantAgenteAlterarRequest'
        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'
    delete:
      tags:
        - Agentes
      summary: Excluir agente
      description: Excluir um agente no sistema por id
      parameters:
        - name: id
          in: path
          description: PessoaId do agente
          required: true
          schema:
            type: string
      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'
  /api/v1/agentes/{id}/politicas/comissoes-agentes:
    patch:
      tags:
        - Agentes
      summary: Alterar politicia de comissao de um agente
      description: Alterar um agente no sistema
      parameters:
        - name: id
          in: path
          description: PessoaId do agente
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CedentePoliticaComissaoAgenteAlterarRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/CedentePoliticaComissaoAgenteAlterarRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CedentePoliticaComissaoAgenteResponse'
        '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/cedentes:
    get:
      tags:
        - Cedentes
      summary: Listar cedentes
      description: Listar cedentes do sistema
      parameters:
        - name: nome
          in: query
          description: Nome ou parte do nome do usuário
          schema:
            type: string
            default: null
        - name: apelido
          in: query
          description: Apelido ou parte do apelido
          schema:
            type: string
            default: null
        - name: status
          in: query
          description: Lista de Status
          schema:
            type: string
            default: null
        - name: visibilidadeIds
          in: query
          description: Array ids da pessoa física com visibilidade
          schema:
            type: array
            items:
              type: string
            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: 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: ascendente
          in: query
          description: Ordenação da query
          schema:
            type: boolean
            default: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CedenteResponse'
        '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:
        - Cedentes
      summary: Cadastrar cedente
      description: Cadastrar um cedente no sistema
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CedenteCadastrarRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/CedenteCadastrarRequest'
        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/agentes/{id}/cedentes:
    get:
      tags:
        - Cedentes
      summary: Listar cedentes do agente filtrado
      description: Listar cedentes do agente filtrado
      parameters:
        - name: id
          in: path
          description: Id do agente
          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: ascendente
          in: query
          description: Ordenação da query
          schema:
            type: boolean
            default: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CedenteResponse'
        '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/cedentes/ativos:
    get:
      tags:
        - Cedentes
      summary: Listar cedentes ativos
      description: Listar cedentes ativos do sistema
      parameters:
        - name: nome
          in: query
          description: Nome ou parte do nome do usuário
          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/CedenteAtivoResponse'
        '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/cedentes/{id}:
    get:
      tags:
        - Cedentes
      summary: Recuperar cedente por ID
      description: Recuperar cedente 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/CedenteDadosResponse'
        '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:
        - Cedentes
      summary: Alterar cedente
      description: Alterar um cedente do sistema
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CedenteAlterarRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/CedenteAlterarRequest'
        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'
    delete:
      tags:
        - Cedentes
      summary: Excluir cedente
      description: Excluir um cedente
      parameters:
        - name: id
          in: path
          description: Id do registro a ser excluído
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json: {}
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
components:
  schemas:
    NivelAgenteEnum:
      type: integer
      description: Nivel do agente
    StatusAgenteEnum:
      type: integer
      description: Status do agente
    AgenteResponse:
      required:
        - id
        - nome
        - nivel
        - status
        - whatsapp
        - possuiEmail
        - possuiEndereco
        - possuiDadoBancario
      type: object
      properties:
        id:
          type: string
          description: ID do agente
          nullable: true
        nome:
          type: string
          description: Nome do agente
          nullable: true
        nivel:
          $ref: '#/components/schemas/NivelAgenteEnum'
        status:
          $ref: '#/components/schemas/StatusAgenteEnum'
        whatsapp:
          type: string
          description: Whatsapp do agente
          nullable: true
        possuiEmail:
          type: boolean
          description: Indica se o agente possui ou não email
        possuiEndereco:
          type: boolean
          description: Indica se o agente possui ou não endereço
        possuiDadoBancario:
          type: boolean
          description: Indica se o agente possui ou não dados bancários
    TipoPessoaEnum:
      type: integer
      description: Indica o tipo de pessoa
    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
    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
    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
    TipoPessoaFisicaEnum:
      type: integer
      description: Tipo de pessoa física
    AcessoUsuarioCadastrarRequest:
      required:
        - empresaId
        - tipoPessoaFisica
        - ativo
      type: object
      properties:
        empresaId:
          type: string
          description: Id da empresa a ser enxergada pela pessoa física
          nullable: true
        tipoPessoaFisica:
          $ref: '#/components/schemas/TipoPessoaFisicaEnum'
        ativo:
          type: boolean
          description: Indica se o acesso está ativo ou não
    PessoaSetorRequest:
      required:
        - id
      type: object
      properties:
        id:
          type: string
          description: Id da entidade pessoa setor
          nullable: true
    UsuarioIdentidadeRequest:
      required:
        - numero
        - emissao
      type: object
      properties:
        numero:
          type: string
          description: Número da Identidade do Usuário
          nullable: true
        emissao:
          type: string
          description: Data de Emissão da Identidade do Usuário
          format: date-time
          nullable: true
      description: Número da Identidade do Usuário
      nullable: true
    TipoAutenticacaoDoisFatoresEnum:
      type: integer
    UsuarioCadastrarRequest:
      required:
        - cpf
        - telefones
        - emails
        - enderecos
        - acessos
        - setores
        - nome
        - login
        - perfilsId
        - identidade
        - nascimento
        - site
        - tipoAutenticacaoDoisFatores
      type: object
      properties:
        cpf:
          type: string
          description: CPF do Usuário
          nullable: true
        telefones:
          type: array
          items:
            $ref: '#/components/schemas/PessoaFisicaTelefoneCadastrarRequest'
          description: Array de Telefones do Usuário
          nullable: true
        emails:
          type: array
          items:
            $ref: '#/components/schemas/PessoaFisicaEmailCadastrarRequest'
          description: Array de E-mails do Usuário
          nullable: true
        enderecos:
          type: array
          items:
            $ref: '#/components/schemas/PessoaFisicaEnderecoCadastrarRequest'
          description: Array com Endereços do Usuário
          nullable: true
        acessos:
          type: array
          items:
            $ref: '#/components/schemas/AcessoUsuarioCadastrarRequest'
          description: Array com Acessos do Usuário
          nullable: true
        setores:
          type: array
          items:
            $ref: '#/components/schemas/PessoaSetorRequest'
          description: Array com os setores do usuário
          nullable: true
        nome:
          type: string
          description: Nome do Usuário
          nullable: true
        login:
          type: string
          description: E-mail do Usuário
          nullable: true
        perfilsId:
          type: array
          items:
            type: string
          description: Id do Perfil para o Tenant Selecionado
          nullable: true
        identidade:
          $ref: '#/components/schemas/UsuarioIdentidadeRequest'
        nascimento:
          type: string
          description: Data de Nascimento do Usuário
          format: date-time
          nullable: true
        site:
          type: string
          description: Url do Site do Usuário
          nullable: true
        tipoAutenticacaoDoisFatores:
          type: array
          items:
            $ref: '#/components/schemas/TipoAutenticacaoDoisFatoresEnum'
          description: Tipo de Autenticação de Dois Fatores
          nullable: true
      description: Dados da pessoa fisica + usuário
      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
        - principal
        - 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'
        principal:
          type: boolean
          description: Indica se é a conta principal
        chavesPix:
          type: array
          items:
            $ref: '#/components/schemas/ChavesPix'
          description: Array de chaves Pix
          nullable: true
    NivelAgenteEnum2:
      type: integer
      description: Nível hierárquico do agente
    TenantAgenteCadastrarRequest:
      required:
        - tipoPessoa
        - pessoaFisica
        - pessoaJuridica
        - dadosBancarios
        - apelido
        - comissao
        - status
        - nivelHierarquico
        - agentesAssociados
        - usuarioIdAcessoSistema
        - politicaComissaoAgenteId
        - cedentes
        - usuariosVisaoCarteira
      type: object
      properties:
        tipoPessoa:
          $ref: '#/components/schemas/TipoPessoaEnum'
        pessoaFisica:
          $ref: '#/components/schemas/UsuarioCadastrarRequest'
        pessoaJuridica:
          $ref: '#/components/schemas/PessoaJuridicaCadastrarRequest'
        dadosBancarios:
          type: array
          items:
            $ref: >-
              #/components/schemas/PessoaFisicaInformacaoBancariaCadastrarRequest
          description: Dados bancários do agente
          nullable: true
        apelido:
          type: string
          description: Apelido do agente
          nullable: true
        comissao:
          type: number
          description: Comissão padrão do agente
          format: double
        status:
          $ref: '#/components/schemas/StatusAgenteEnum'
        nivelHierarquico:
          $ref: '#/components/schemas/NivelAgenteEnum2'
        agentesAssociados:
          type: array
          items:
            type: string
          description: Array de ids dos agentes associados
          nullable: true
        usuarioIdAcessoSistema:
          type: string
          description: Id do usuário principal
          nullable: true
        politicaComissaoAgenteId:
          type: string
          description: Id da política de comissão do agente
          nullable: true
        cedentes:
          type: array
          items:
            type: string
          description: Array de ids dos cedentes
          nullable: true
        usuariosVisaoCarteira:
          type: array
          items:
            type: string
          description: Array de ids dos usuários com acesso a carteira
          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
    NivelAgenteEnum3:
      type: integer
      description: Nível do agente
    TenantAgenteAtivoResponse:
      required:
        - id
        - nome
        - apelido
        - nivel
        - politicaComissaoAgenteId
      type: object
      properties:
        id:
          type: string
          description: ID do agente
          nullable: true
        nome:
          type: string
          description: Nome do agente
          nullable: true
        apelido:
          type: string
          description: Apelido do agente
          nullable: true
        nivel:
          $ref: '#/components/schemas/NivelAgenteEnum3'
        politicaComissaoAgenteId:
          type: string
          description: Id da política de comissão do agente
          nullable: true
    TenantAgenteAgentesAssociadosResponse:
      required:
        - id
        - nome
        - cpfCnpj
      type: object
      properties:
        id:
          type: string
          description: ID do agente associado
          nullable: true
        nome:
          type: string
          description: Nome do agente associado
          nullable: true
        cpfCnpj:
          type: string
          description: CPF/CNPJ do agente associado
          nullable: true
    TenantAgentePoliticaComissaoAgenteResponse:
      required:
        - id
        - nome
      type: object
      properties:
        id:
          type: string
          description: ID da política de comissão
          nullable: true
        nome:
          type: string
          description: Nome da política de comissão
          nullable: true
      description: Politica de comissao do agente
      nullable: true
    PerfilResponse:
      required:
        - id
        - nome
      type: object
      properties:
        id:
          type: string
          description: Id do perfil cadastrado
          nullable: true
        nome:
          type: string
          description: Nome do perfil cadastrado
          nullable: true
    IdentidadeResponse:
      required:
        - numero
        - emissao
      type: object
      properties:
        numero:
          type: string
          description: Número da identidade
          nullable: true
        emissao:
          type: string
          description: Data de emissão da identidade
          format: date-time
          nullable: true
      description: Identidade do usuário
      nullable: true
    TipoAutenticacaoDoisFatoresEnum2:
      type: integer
      description: Tipo de autenticação dois fatores
    TipoTelefoneEnum2:
      type: integer
      description: Tipo do telefone
    PessoaTelefoneResponse:
      required:
        - id
        - tipo
        - numero
        - principal
        - whatsapp
        - sms
      type: object
      properties:
        id:
          type: string
          description: Id do telefone
          nullable: true
        tipo:
          $ref: '#/components/schemas/TipoTelefoneEnum2'
        numero:
          type: string
          description: Número do telefone
          nullable: true
        principal:
          type: boolean
          description: Indica se é o telefone principal
        whatsapp:
          type: boolean
          description: Indica se o telefone tem WhatsApp
        sms:
          type: boolean
          description: Indica se o telefone tem SMS
    PessoaEmailResponse:
      required:
        - id
        - email
        - principal
      type: object
      properties:
        id:
          type: string
          description: Id do email
          nullable: true
        email:
          type: string
          description: Email
          nullable: true
        principal:
          type: boolean
          description: Indica se é o email principal
    PessoaEnderecoResponse:
      required:
        - id
        - principal
        - logradouro
        - numero
        - semNumero
        - complemento
        - cep
        - bairro
        - municipio
        - uf
      type: object
      properties:
        id:
          type: string
          description: Id do endereço
          nullable: true
        principal:
          type: boolean
          description: Indica se é o endereço principal
        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
    TipoPessoaFisicaEnum2:
      type: integer
    AcessoResponse:
      required:
        - id
        - empresaId
        - tipoPessoaFisica
        - ativo
      type: object
      properties:
        id:
          type: string
          nullable: true
        empresaId:
          type: string
          nullable: true
        tipoPessoaFisica:
          $ref: '#/components/schemas/TipoPessoaFisicaEnum2'
        ativo:
          type: boolean
    PessoaSetorResponse:
      required:
        - id
        - nome
      type: object
      properties:
        id:
          type: string
          nullable: true
        nome:
          type: string
          nullable: true
    UsuarioDadosResponse:
      required:
        - id
        - nome
        - cpf
        - login
        - perfis
        - identidade
        - nascimento
        - site
        - tipoAutenticacaoDoisFatores
        - telefones
        - emails
        - enderecos
        - acessos
        - setores
      type: object
      properties:
        id:
          type: string
          description: Id do usuário
          nullable: true
        nome:
          type: string
          description: Nome do usuário
          nullable: true
        cpf:
          type: string
          description: CPF do usuário
          nullable: true
        login:
          type: string
          description: Login do usuário
          nullable: true
        perfis:
          type: array
          items:
            $ref: '#/components/schemas/PerfilResponse'
          description: Perfis associados ao usuário
          nullable: true
        identidade:
          $ref: '#/components/schemas/IdentidadeResponse'
        nascimento:
          type: string
          description: Data de nascimento do usuário
          format: date-time
          nullable: true
        site:
          type: string
          description: Site do usuário
          nullable: true
        tipoAutenticacaoDoisFatores:
          $ref: '#/components/schemas/TipoAutenticacaoDoisFatoresEnum2'
        telefones:
          type: array
          items:
            $ref: '#/components/schemas/PessoaTelefoneResponse'
          description: Telefones do usuário
          nullable: true
        emails:
          type: array
          items:
            $ref: '#/components/schemas/PessoaEmailResponse'
          description: Emails do usuário
          nullable: true
        enderecos:
          type: array
          items:
            $ref: '#/components/schemas/PessoaEnderecoResponse'
          description: Endereços do usuário
          nullable: true
        acessos:
          type: array
          items:
            $ref: '#/components/schemas/AcessoResponse'
          description: Acessos do usuário
          nullable: true
        setores:
          type: array
          items:
            $ref: '#/components/schemas/PessoaSetorResponse'
          description: Setores do usuário
          nullable: true
      description: Dados do usuário
      nullable: true
    TenantAgenteUsuarioVisaoAcesso:
      required:
        - id
        - nome
        - cpf
      type: object
      properties:
        id:
          type: string
          description: ID do usuário
          nullable: true
        nome:
          type: string
          description: Nome do usuário
          nullable: true
        cpf:
          type: string
          description: CPF do usuário
          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
    TenantAgentePorIdResponse:
      required:
        - apelido
        - status
        - nivelHierarquico
        - comissao
        - politicaComissaoAgente
      type: object
      properties:
        apelido:
          type: string
          description: Apelido do agente
          nullable: true
        status:
          $ref: '#/components/schemas/StatusAgenteEnum'
        nivelHierarquico:
          $ref: '#/components/schemas/NivelAgenteEnum3'
        comissao:
          type: number
          description: Comissão do agente
          format: double
          nullable: true
        agentesAssociados:
          type: array
          items:
            $ref: '#/components/schemas/TenantAgenteAgentesAssociadosResponse'
          description: Array de agentes associados
          nullable: true
        politicaComissaoAgente:
          $ref: '#/components/schemas/TenantAgentePoliticaComissaoAgenteResponse'
        usuario:
          $ref: '#/components/schemas/UsuarioDadosResponse'
        usuariosAcessoSistema:
          type: array
          items:
            $ref: '#/components/schemas/TenantAgenteUsuarioVisaoAcesso'
          description: Usuários com acesso ao sistema
          nullable: true
        usuariosVisaoCarteira:
          type: array
          items: {}
          description: Usuários com visibilidade a carteira do cliente
          nullable: true
        pessoaFisica:
          $ref: '#/components/schemas/PessoaFisicaCompletoResponse'
        pessoaJuridica:
          $ref: '#/components/schemas/PessoaJuridicaResponse'
        emails:
          type: array
          items: {}
          description: Array de emails
          nullable: true
        enderecos:
          type: array
          items: {}
          description: Array de endereços
          nullable: true
        telefones:
          type: array
          items: {}
          description: Array de telefones
          nullable: true
    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 física
      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
        - principal
        - 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'
        principal:
          type: boolean
          description: Indica se é a conta principal
        chavesPix:
          type: array
          items:
            $ref: '#/components/schemas/ChavesPixAlterar'
          description: Array de chaves Pix
          nullable: true
    TenantAgenteAlterarRequest:
      required:
        - tipoPessoa
        - pessoaFisica
        - pessoaJuridica
        - dadosBancarios
        - usuariosAcesso
        - apelido
        - comissao
        - status
        - nivelHierarquico
        - agentesAssociados
        - usuarioIdAcessoSistema
        - politicaComissaoAgenteId
        - cedentes
        - usuariosVisaoCarteira
      type: object
      properties:
        tipoPessoa:
          $ref: '#/components/schemas/TipoPessoaEnum'
        id:
          type: string
          description: Id do agente
          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
        usuariosAcesso:
          type: array
          items:
            type: string
          description: Array de ids dos usuários com acesso ao sistema
          nullable: true
        apelido:
          type: string
          description: Apelido do agente
          nullable: true
        comissao:
          type: number
          description: Comissão padrão do agente
          format: double
        status:
          $ref: '#/components/schemas/StatusAgenteEnum'
        nivelHierarquico:
          $ref: '#/components/schemas/NivelAgenteEnum2'
        agentesAssociados:
          type: array
          items:
            type: string
          description: Array de ids dos agentes associados
          nullable: true
        usuarioIdAcessoSistema:
          type: string
          description: Id do usuário principal
          nullable: true
        politicaComissaoAgenteId:
          type: string
          description: Id da política de comissão do agente
          nullable: true
        cedentes:
          type: array
          items:
            type: string
          description: Array de ids dos cedentes
          nullable: true
        usuariosVisaoCarteira:
          type: array
          items:
            type: string
          description: Array de ids dos usuários com acesso a carteira
          nullable: true
    CedentePoliticaComissaoAgenteAlterarRequest:
      required:
        - id
        - politicaComissaoAgenteId
      type: object
      properties:
        id:
          type: string
          description: PessoaId do agente
          nullable: true
        politicaComissaoAgenteId:
          type: string
          description: Id da política de comissão do agente
          nullable: true
    CedentePoliticaComissaoAgenteResponse:
      required:
        - politicaComissaoAgenteId
      type: object
      properties:
        politicaComissaoAgenteId:
          type: string
          description: PoliticaComissaoAgenteId
          nullable: true
    TipoPessoaEnum2:
      type: integer
      description: Tipo de Pessoa
    StatusCedenteEnum:
      type: integer
      description: Status do Cedente
    CedenteResponse:
      required:
        - id
        - tipoPessoa
        - cnpjCpf
        - nome
        - apelido
        - status
      type: object
      properties:
        id:
          type: string
          description: Id do Cedente
          nullable: true
        tipoPessoa:
          $ref: '#/components/schemas/TipoPessoaEnum2'
        cnpjCpf:
          type: string
          description: CNPJ ou CPF
          nullable: true
        nome:
          type: string
          description: Nome do Cedente
          nullable: true
        apelido:
          type: string
          description: Apelido do Cedente
          nullable: true
        status:
          $ref: '#/components/schemas/StatusCedenteEnum'
    TipoPessoaEnum3:
      type: integer
      description: Tipo de pessoa
    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
    PessoaJuridicaCadastrarRequest2:
      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 Juridica
      nullable: true
    StatusCedenteEnum2:
      type: integer
      description: Status do cedente
    CedenteCadastrarRequest:
      required:
        - tipoPessoa
        - pessoaFisica
        - pessoaJuridica
        - emails
        - telefones
        - enderecos
        - apelido
        - status
      type: object
      properties:
        tipoPessoa:
          $ref: '#/components/schemas/TipoPessoaEnum3'
        pessoaFisica:
          $ref: '#/components/schemas/PessoaFisicaCadastrarRequest'
        pessoaJuridica:
          $ref: '#/components/schemas/PessoaJuridicaCadastrarRequest2'
        emails:
          type: array
          items: {}
          description: Array com os emails do cedente
          nullable: true
        telefones:
          type: array
          items: {}
          description: Array com os telefones do cedente
          nullable: true
        enderecos:
          type: array
          items: {}
          description: Array com os endereços do cedente
          nullable: true
        apelido:
          type: string
          description: Apelido do cedente
          nullable: true
        status:
          $ref: '#/components/schemas/StatusCedenteEnum2'
    CedenteAtivoResponse:
      required:
        - id
        - nome
        - apelido
      type: object
      properties:
        id:
          type: string
          description: Id do Cedente
          nullable: true
        nome:
          type: string
          description: Nome do Cedente
          nullable: true
        apelido:
          type: string
          description: Apelido do Cedente
          nullable: true
    TipoPessoaEnum4:
      type: integer
      description: Tipo de Pessoa do Cedente
    PessoaFisicaCompletoResponse2:
      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 do Cedente
      nullable: true
    PessoaJuridicaResponse2:
      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 do Cedente
      nullable: true
    CedenteDadosResponse:
      required:
        - id
        - tipoPessoa
        - apelido
        - status
        - pessoaFisica
        - pessoaJuridica
        - emails
        - enderecos
        - telefones
      type: object
      properties:
        id:
          type: string
          description: Id do Cedente
          nullable: true
        tipoPessoa:
          $ref: '#/components/schemas/TipoPessoaEnum4'
        apelido:
          type: string
          description: Apelido do Cedente
          nullable: true
        status:
          $ref: '#/components/schemas/StatusCedenteEnum'
        pessoaFisica:
          $ref: '#/components/schemas/PessoaFisicaCompletoResponse2'
        pessoaJuridica:
          $ref: '#/components/schemas/PessoaJuridicaResponse2'
        emails:
          type: array
          items:
            $ref: '#/components/schemas/PessoaEmailResponse'
          description: Lista de Emails do Cedente
          nullable: true
        enderecos:
          type: array
          items:
            $ref: '#/components/schemas/PessoaEnderecoResponse'
          description: Lista de Endereços do Cedente
          nullable: true
        telefones:
          type: array
          items:
            $ref: '#/components/schemas/PessoaTelefoneResponse'
          description: Lista de Telefones do Cedente
          nullable: true
    PessoaFisicaAlterarRequest2:
      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
    PessoaJuridicaAlterarRequest2:
      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 Juridica
      nullable: true
    CedenteAlterarRequest:
      required:
        - id
        - pessoaFisica
        - pessoaJuridica
        - emails
        - telefones
        - enderecos
        - apelido
        - status
      type: object
      properties:
        id:
          type: string
          description: Id do cedente
          nullable: true
        pessoaFisica:
          $ref: '#/components/schemas/PessoaFisicaAlterarRequest2'
        pessoaJuridica:
          $ref: '#/components/schemas/PessoaJuridicaAlterarRequest2'
        emails:
          type: array
          items: {}
          description: Array com os emails do cedente
          nullable: true
        telefones:
          type: array
          items: {}
          description: Array com os telefones do cedente
          nullable: true
        enderecos:
          type: array
          items: {}
          description: Array com os endereços do cedente
          nullable: true
        apelido:
          type: string
          description: Apelido do cedente
          nullable: true
        status:
          $ref: '#/components/schemas/StatusCedenteEnum2'
    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: Agentes
    description: "Este conjunto de recursos permite a manipulação e consulta de dados de agentes no sistema:\r\n\r\n                *   **Cadastrar Agente:**\r\n                    *   Cria um novo agente no sistema com todas as informações necessárias.\r\n                *   **Alterar Agente:**\r\n                    *   Atualiza os dados de um agente existente pelo seu identificador.\r\n                *   **Listar Agentes:**\r\n                    *   Recupera todos os agentes com opções de filtragem por nome, nível, status, e outras propriedades, além de paginação.\r\n                *   **Listar Agentes de uma Política de Comissão:**\r\n                    *   Recupera todos os agentes vinculados a uma política de comissão específica.\r\n                *   **Listar Agentes Ativos:**\r\n                    *   Recupera somente os agentes que estão ativos no sistema.\r\n                *   **Consultar Agente por ID:**\r\n                    *   Busca um agente específico pelo seu identificador único.\r\n                *   **Excluir Agente:**\r\n                    *   Remove um agente do sistema pelo seu identificador.\r\n                *   **Alterar Política de Comissão de Agente:**\r\n                    *   Atualiza a política de comissão vinculada a um agente específico."
  - name: Cedentes
    description: "Este conjunto de recursos permite a manipulação e consulta de dados de cedentes no sistema:\r\n\r\n                *   **Cadastrar Cedente:**\r\n                    *   Cria um novo cedente no sistema.\r\n                *   **Alterar Cedente:**\r\n                    *   Atualiza os dados de um cedente existente pelo seu identificador.\r\n                *   **Listar Cedentes:**\r\n                    *   Recupera todos os cedentes com opções de filtragem por nome, apelido, status, visibilidade, grupo empresarial, política de limites e paginação.\r\n                *   **Listar Cedentes do Agente:**\r\n                    *   Recupera todos os cedentes vinculados a um agente específico.\r\n                *   **Listar Cedentes Ativos:**\r\n                    *   Recupera somente os cedentes que estão ativos no sistema.\r\n                *   **Consultar Cedente por ID:**\r\n                    *   Busca um cedente específico pelo seu identificador único.\r\n                *   **Excluir Cedente:**\r\n                    *   Remove um cedente do sistema pelo seu identificador."
