openapi: 3.0.1
info:
  title: Empresa Api
  description: "# API de Gestão de Empresas\r\n\r\nA API de Gestão de Empresas da RGBtec foi desenvolvida para proporcionar controle total sobre as informações das empresas cadastradas e suas respectivas configurações de integração dentro do sistema. Com ela, você pode gerenciar o ciclo de vida das empresas, desde o cadastro até a alteração, e também administrar as integrações que as conectam a outros sistemas.\r\n\r\nSimplificando a administração e a conectividade das empresas com o poder e a flexibilidade de uma API de alta performance!\r\n\r\nA 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-empresa-api-desenvolvimento
paths:
  /api/v1/empresas:
    get:
      tags:
        - Empresas
      summary: Listar empresas
      description: Lista todas as empresas cadastradas no sistema.
      parameters:
        - name: id
          in: query
          description: Id de uma empresa.
          schema:
            type: string
        - name: nome
          in: query
          description: Nome ou parte do nome ou apelido da empresa
          schema:
            type: string
        - name: cnpj
          in: query
          description: Cnpj ou raiz do cnpj da empresa
          schema:
            type: string
        - name: tipo
          in: query
          description: Tipo da empresa
          schema:
            type: string
            default: null
        - name: ativo
          in: query
          description: Indica se está ativa ou não
          schema:
            type: boolean
            default: null
        - name: cadastroInicial
          in: query
          description: Data da criação inicial
          schema:
            type: string
            format: date-time
            default: null
        - name: cadastroFinal
          in: query
          description: Data da criação final
          schema:
            type: string
            format: date-time
            default: null
        - name: politicaLimiteId
          in: query
          description: Id da política de limite associada à empresa
          schema:
            type: string
            default: null
        - name: politicaTaxaId
          in: query
          description: Id da política de taxa associada à empresa
          schema:
            type: string
            default: null
        - name: politicaChecagemId
          in: query
          description: Id da política de checagem associada à empresa
          schema:
            type: string
            default: null
        - name: pagina
          in: query
          description: Indica o número da página solicitada da empresa
          schema:
            type: integer
            format: int32
            default: null
        - name: registros
          in: query
          description: Indica a quantidade máxima de registros que devem ser retornados
          schema:
            type: integer
            format: int32
            default: 10
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ListarEmpresasResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
    post:
      tags:
        - Empresas
      summary: Cadastrar empresa
      description: Cadastra uma nova empresa no sistema
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmpresaCadastrarRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/EmpresaCadastrarRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/EmpresaCadastrarResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/EmpresaCadastrarResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/EmpresaCadastrarResponse'
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                type: array
                items:
                  type: string
            application/json:
              schema:
                type: array
                items:
                  type: string
            text/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                type: array
                items:
                  type: string
            application/json:
              schema:
                type: array
                items:
                  type: string
            text/json:
              schema:
                type: array
                items:
                  type: string
  /api/v1/gerencial/politicas/limites/{id}/empresas:
    get:
      tags:
        - Empresas
      summary: Listar empresas pela politica limite Id
      description: >-
        Lista todas as empresas cadastradas que tenham a politica limite Id
        filtrada.
      parameters:
        - name: id
          in: path
          description: Id da política de limite associada à empresa
          required: true
          schema:
            type: string
            default: null
        - name: pagina
          in: query
          description: Indica o número da página solicitada da empresa
          schema:
            type: integer
            format: int32
            default: null
        - name: registros
          in: query
          description: Indica a quantidade máxima de registros que devem ser retornados
          schema:
            type: integer
            format: int32
            default: 10
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ListarEmpresasResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
  /api/v1/gerencial/politicas/taxas/{id}/empresas:
    get:
      tags:
        - Empresas
      summary: Listar empresas pela politica taxa.
      description: >-
        Lista todas as empresas cadastradas que tenham a politica taxa do Id
        filtrado.
      parameters:
        - name: id
          in: path
          description: Id da política de taxa associada à empresa
          required: true
          schema:
            type: string
            default: null
        - name: pagina
          in: query
          description: Indica o número da página solicitada da empresa
          schema:
            type: integer
            format: int32
            default: null
        - name: registros
          in: query
          description: Indica a quantidade máxima de registros que devem ser retornados
          schema:
            type: integer
            format: int32
            default: 10
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ListarEmpresasResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
  /api/v1/gerencial/politicas/checagens/{id}/empresas:
    get:
      tags:
        - Empresas
      summary: Listar empresas pela politica checagem.
      description: >-
        Lista todas as empresas cadastradas que tenham a politica checagem do Id
        filtrado.
      parameters:
        - name: id
          in: path
          description: Id da política de checagem associada à empresa
          required: true
          schema:
            type: string
            default: null
        - name: pagina
          in: query
          description: Indica o número da página solicitada da empresa
          schema:
            type: integer
            format: int32
            default: null
        - name: registros
          in: query
          description: Indica a quantidade máxima de registros que devem ser retornados
          schema:
            type: integer
            format: int32
            default: 10
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ListarEmpresasResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
  /api/v1/empresas/{id}:
    get:
      tags:
        - Empresas
      summary: Listar empresa por id
      description: Lista uma empresa cadastrada no sistema pelo id
      parameters:
        - name: id
          in: path
          description: Id da entidade empresa
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListarEmpresasPorIdResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
    put:
      tags:
        - Empresas
      summary: Alterar empresa
      description: Altera uma empresa cadastrada no sistema
      parameters:
        - name: id
          in: path
          description: Id da entidade empresa
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmpresaAlterarRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/EmpresaAlterarRequest'
        required: true
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                type: array
                items:
                  type: string
            application/json:
              schema:
                type: array
                items:
                  type: string
            text/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                type: array
                items:
                  type: string
            application/json:
              schema:
                type: array
                items:
                  type: string
            text/json:
              schema:
                type: array
                items:
                  type: string
        '403':
          description: Forbidden
          content:
            text/plain:
              schema:
                type: array
                items:
                  type: string
            application/json:
              schema:
                type: array
                items:
                  type: string
            text/json:
              schema:
                type: array
                items:
                  type: string
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                type: array
                items:
                  type: string
            application/json:
              schema:
                type: array
                items:
                  type: string
            text/json:
              schema:
                type: array
                items:
                  type: string
  /api/v1/empresas/ativas:
    get:
      tags:
        - Empresas
      summary: Listar empresas ativas
      description: Lista todas as empresas ativas cadastradas no sistema
      parameters:
        - name: nome
          in: query
          description: Nome ou parte do nome da empresa
          schema:
            type: string
            default: null
        - name: pagina
          in: query
          description: Indica o número da página solicitada da empresa
          schema:
            type: integer
            format: int32
            default: null
        - name: registros
          in: query
          description: Indica a quantidade máxima de registros que devem ser retornados
          schema:
            type: integer
            format: int32
            default: 10
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ListarEmpresasAtivasResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
  /api/v1/empresas/{empresaId}/integracoes/{empresaIntegracaoId}/desativar:
    patch:
      tags:
        - Integrações
      summary: Desativar integração
      description: Desativa uma integração da empresa
      parameters:
        - name: empresaId
          in: path
          description: Id da empresa
          required: true
          schema:
            type: string
        - name: empresaIntegracaoId
          in: path
          description: Id da empresa integração
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                type: array
                items:
                  type: string
            application/json:
              schema:
                type: array
                items:
                  type: string
            text/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                type: array
                items:
                  type: string
            application/json:
              schema:
                type: array
                items:
                  type: string
            text/json:
              schema:
                type: array
                items:
                  type: string
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                type: array
                items:
                  type: string
            application/json:
              schema:
                type: array
                items:
                  type: string
            text/json:
              schema:
                type: array
                items:
                  type: string
  /api/v1/empresas/{empresaId}/integracoes/{integracaoId}:
    put:
      tags:
        - Integrações
      summary: Alterar integração
      description: Altera uma integração da empresa
      parameters:
        - name: empresaId
          in: path
          description: Id da empresa
          required: true
          schema:
            type: string
        - name: integracaoId
          in: path
          description: Id da integração da empresa
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IntegracaoAlterarRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/IntegracaoAlterarRequest'
        required: true
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                type: array
                items:
                  type: string
            application/json:
              schema:
                type: array
                items:
                  type: string
            text/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                type: array
                items:
                  type: string
            application/json:
              schema:
                type: array
                items:
                  type: string
            text/json:
              schema:
                type: array
                items:
                  type: string
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                type: array
                items:
                  type: string
            application/json:
              schema:
                type: array
                items:
                  type: string
            text/json:
              schema:
                type: array
                items:
                  type: string
    get:
      tags:
        - Integrações
      summary: Recuperar integração por id
      description: Recupera uma integração da empresa pelo id
      parameters:
        - name: empresaId
          in: path
          description: Id da empresa
          required: true
          schema:
            type: string
        - name: integracaoId
          in: path
          description: Id da integração
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecuperarIntegracaoPorIdResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /api/v1/empresas/{empresaId}/integracoes:
    get:
      tags:
        - Integrações
      summary: Listar integrações
      description: Lista todas as integrações disponíveis para a empresa
      parameters:
        - name: empresaId
          in: path
          description: Id da empresa
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ListarIntegracoesResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
components:
  schemas:
    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
    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
    AgenciaResponse:
      type: object
      properties:
        numero:
          type: string
          description: Número da agência
          nullable: true
        digito:
          type: string
          description: Dígito verificador da agência
          nullable: true
      description: Informações da agência
      nullable: true
    AlterarConfiguracoes:
      required:
        - id
        - valor
      type: object
      properties:
        id:
          type: string
          description: Id da configuração
          nullable: true
        valor:
          type: string
          description: Valor da configuração
          nullable: true
    BancoResponse:
      type: object
      properties:
        id:
          type: integer
          description: Identificador único do banco
          format: int16
        nome:
          type: string
          description: Nome do banco
          nullable: true
      description: Informações do banco
      nullable: true
    ChavePix:
      type: object
      properties:
        tipo:
          $ref: '#/components/schemas/TipoChavePixEnum2'
        chave:
          type: string
          description: Valor da chave PIX
          nullable: true
    ChavesPix:
      required:
        - tipo
        - chave
      type: object
      properties:
        tipo:
          $ref: '#/components/schemas/TipoChavePixEnum'
        chave:
          type: string
          description: Chave Pix
          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
    ConfiguracaoResponse:
      required:
        - id
        - idIntegracaoConfiguracao
        - nome
        - descricao
        - valor
        - tipo
        - obrigatorio
      type: object
      properties:
        id:
          type: string
          description: Id único da entidade
          nullable: true
        idIntegracaoConfiguracao:
          type: string
          description: Id único da entidade GeralIntegracaoConfiguracao
          nullable: true
        nome:
          type: string
          description: Nome da configuração
          nullable: true
        descricao:
          type: string
          description: Descrição da configuração
          nullable: true
        valor:
          type: string
          description: Valor da configuração
          nullable: true
        tipo:
          $ref: '#/components/schemas/TipoDadoConfiguracaoEnum'
        obrigatorio:
          type: boolean
          description: Indica se é obrigatório ou nao
    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
    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
    ContaResponse:
      type: object
      properties:
        numero:
          type: string
          description: Número da conta
          nullable: true
        digito:
          type: string
          description: Dígito verificador da conta
          nullable: true
      description: Informações da conta
      nullable: true
    EmpresaAlterarRequest:
      required:
        - id
        - pessoaJuridica
        - dadosBancarios
        - apelido
        - tipo
        - observacao
        - principal
        - ativo
        - politicas
      type: object
      properties:
        id:
          type: string
          description: Identificador único da pessoa juridica
          nullable: true
        pessoaJuridica:
          $ref: '#/components/schemas/PessoaJuridicaAlterarRequest'
        dadosBancarios:
          $ref: '#/components/schemas/PessoaInformacaoBancariaAlterarRequest'
        apelido:
          type: string
          description: Apelido da empresa no tenant
          nullable: true
        tipo:
          $ref: '#/components/schemas/TipoEmpresaEnum2'
        observacao:
          type: string
          description: Texto de observação sobre a empresa
          nullable: true
        principal:
          type: boolean
          description: Indica se a empresa principal ou não do tenant
        ativo:
          type: boolean
          description: Indica se a empresa está ativa ou não
        politicas:
          $ref: '#/components/schemas/PoliticasAlterar'
    EmpresaCadastrarRequest:
      required:
        - pessoaJuridica
        - dadosBancarios
        - apelido
        - tipo
        - observacao
        - principal
        - ativo
        - politicas
      type: object
      properties:
        pessoaJuridica:
          $ref: '#/components/schemas/PessoaJuridicaCadastrarRequest'
        dadosBancarios:
          $ref: '#/components/schemas/PessoaFisicaInformacaoBancariaCadastrarRequest'
        apelido:
          type: string
          description: Apelido da empresa no tenant
          nullable: true
        tipo:
          $ref: '#/components/schemas/TipoEmpresaEnum2'
        observacao:
          type: string
          description: Texto de observação sobre a empresa
          nullable: true
        principal:
          type: boolean
          description: Indica se a empresa principal ou não do tenant
        ativo:
          type: boolean
          description: Indica se a empresa está ativa ou não
        politicas:
          $ref: '#/components/schemas/PoliticasCadastrar'
    EmpresaCadastrarResponse:
      required:
        - id
      type: object
      properties:
        id:
          type: string
          description: Id 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
    IntegracaoAlterarRequest:
      required:
        - ativo
        - configuracoes
      type: object
      properties:
        ativo:
          type: boolean
          description: Indica se a integração está ativa ou não
        configuracoes:
          type: array
          items:
            $ref: '#/components/schemas/AlterarConfiguracoes'
          description: Array de configurações
          nullable: true
    ListarEmpresasAtivasResponse:
      required:
        - id
        - nome
        - apelido
        - cnpj
      type: object
      properties:
        id:
          type: string
          description: Id da Pessoa Jurídica
          nullable: true
        nome:
          type: string
          description: Nome Fantasia
          nullable: true
        apelido:
          type: string
          description: Apelido da Empresa
          nullable: true
        cnpj:
          type: string
          description: Cnpj da empresa
          nullable: true
    ListarEmpresasPorIdResponse:
      required:
        - apelido
        - tipo
        - principal
        - observacao
        - criacao
        - ativo
      type: object
      properties:
        apelido:
          type: string
          description: Apelido da Empresa
          nullable: true
        tipo:
          $ref: '#/components/schemas/TipoEmpresaEnum'
        principal:
          type: boolean
          description: Indica se é a Empresa principal
        observacao:
          type: string
          description: Observações sobre a Empresa
          nullable: true
        criacao:
          type: string
          description: Data de criação da empresa
          format: date-time
        ativo:
          type: boolean
          description: Indica se a Empresa está ativa
        pessoaJuridica:
          $ref: '#/components/schemas/PessoaJuridicaResponse'
        informacaoBancaria:
          type: array
          items:
            $ref: '#/components/schemas/PessoaInformacaoBancariaResponse'
          description: Informações bancárias da empresa
          nullable: true
    ListarEmpresasResponse:
      required:
        - id
        - apelido
        - nomeFantasia
        - cnpj
        - tipo
        - ativo
        - principal
        - cadastro
      type: object
      properties:
        id:
          type: string
          description: Id da Pessoa Jurídica
          nullable: true
        apelido:
          type: string
          description: Apelido da Pessoa Jurídica
          nullable: true
        nomeFantasia:
          type: string
          description: Nome Fantasia
          nullable: true
        cnpj:
          type: string
          description: CNPJ
          nullable: true
        tipo:
          $ref: '#/components/schemas/TipoEmpresaEnum'
        ativo:
          type: boolean
          description: Determina se está Ativo
        principal:
          type: boolean
          description: Indica se é Empresa Princial
        cadastro:
          type: string
          description: Tipo Empresa
          format: date-time
    ListarIntegracoesResponse:
      required:
        - id
        - empresaIntegracaoId
        - nome
        - ativo
        - descricao
      type: object
      properties:
        id:
          type: string
          description: Id da integração
          nullable: true
        empresaIntegracaoId:
          type: string
          description: Id da empresa integração
          nullable: true
        nome:
          type: string
          description: Nome da integração
          nullable: true
        ativo:
          type: boolean
          description: Determina se a integração está ativa para a empresa
        descricao:
          type: string
          description: Descrição da integração
          nullable: true
        imagem:
          type: string
          description: Id da imagem que representa a integração
          default: null
          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
    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
    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
    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
    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
    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
      description: Dados bancários da pessoa jurídica
      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
    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
    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
      description: Dados bancários da pessoa jurídica
      nullable: true
    PessoaInformacaoBancariaResponse:
      required:
        - tipoConta
        - banco
        - agencia
        - conta
        - chavesPix
      type: object
      properties:
        tipoConta:
          $ref: '#/components/schemas/TipoContaBancariaEnum'
        banco:
          $ref: '#/components/schemas/BancoResponse'
        agencia:
          $ref: '#/components/schemas/AgenciaResponse'
        conta:
          $ref: '#/components/schemas/ContaResponse'
        chavesPix:
          type: array
          items:
            $ref: '#/components/schemas/ChavePix'
          description: Lista de chaves PIX associadas à conta
          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:
            $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
        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
    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:
            $ref: '#/components/schemas/PessoaFisicaEmailCadastrarRequest'
          description: Array com emails de pessoa jurídica
          nullable: true
        telefones:
          type: array
          items:
            $ref: '#/components/schemas/PessoaFisicaTelefoneCadastrarRequest'
          description: Array com telefones de pessoa jurídica
          nullable: true
        enderecos:
          type: array
          items:
            $ref: '#/components/schemas/PessoaFisicaEnderecoCadastrarRequest'
          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
    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: Informações da Pessoa Jurídica
      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
    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
    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
    RecuperarIntegracaoPorIdResponse:
      required:
        - id
        - nome
        - descricao
        - instrucoesAdicionais
        - configuracoes
        - ativo
      type: object
      properties:
        id:
          type: string
          description: Id da integração
          nullable: true
        nome:
          type: string
          description: Nome da integração
          nullable: true
        descricao:
          type: string
          description: Descrição da integração
          nullable: true
        instrucoesAdicionais:
          type: string
          description: >-
            Texto indicando os passos que devem ser feitos para o funcionamento
            da integração
          nullable: true
        configuracoes:
          type: array
          items:
            $ref: '#/components/schemas/ConfiguracaoResponse'
          description: Configurações da Integração
          nullable: true
        ativo:
          type: boolean
          description: Indica se a integração está ativo ou não
        imagem:
          type: string
          description: Id da imagem que representa a integração (opcional)
          default: null
          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
    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
    TipoChavePixEnum:
      type: integer
      description: Tipo da chave Pix
    TipoChavePixEnum2:
      type: integer
      description: Tipo da chave PIX (CPF, CNPJ, E-mail, Telefone, Aleatória)
    TipoContaBancariaEnum:
      type: integer
      description: Tipo da conta bancária
    TipoDadoConfiguracaoEnum:
      type: integer
      description: Tipo da configuração
    TipoEmpresaEnum:
      type: integer
      description: Tipo de Empresa
    TipoEmpresaEnum2:
      type: integer
      description: Tipo da empresa
    TipoPessoaJuridicaEnum:
      type: integer
      description: Tipo de pessoa jurídica
    TipoTelefoneEnum:
      type: integer
      description: Tipo de telefone
  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: Empresas
    description: "Este conjunto de recursos permite a manipulação e consulta de dados de empresas no sistema:\r\n\r\n                *   Listar Empresas:\r\n                    *   Obtenha uma lista completa de todas as empresas registradas.\r\n                    *   Consulte empresas ativas com opções de filtragem por nome, paginação e quantidade de registros.\r\n                *   Consultar Empresa por ID:\r\n                    *   Recupere os detalhes de uma empresa específica utilizando seu identificador único.\r\n                *   Cadastrar Empresa:\r\n                    *   Crie novos registros de empresas no sistema.\r\n                *   Alterar Empresa:\r\n                    *   Atualize as informações de uma empresa existente."
  - name: Integrações
    description: "Estes recursos são dedicados ao gerenciamento das configurações de integração vinculadas a cada empresa:\r\n\r\n                *   Listar Integrações:\r\n                    *   Visualize todas as integrações configuradas para uma empresa específica.\r\n                *   Consultar Integração por ID:\r\n                    *   Obtenha os detalhes de uma integração específica, fornecendo o ID da empresa e o ID da integração.\r\n                *   Alterar Integração:\r\n                    *   Modifique as configurações de uma integração existente para uma determinada empresa.\r\n                *   Desativar Integração:\r\n                    *   Desabilite uma integração específica de forma segura."
