openapi: 3.0.4
info:
  title: EloFiel API
  description: API de integração do sistema de pontos e cashback EloFiel.
  contact:
    name: EloFiel
    url: https://elofiel.com.br
    email: contato@elofiel.com.br
  version: v1
paths:
  /api/v1/admin/AdminDispositivo:
    post:
      tags:
        - AdminDispositivo
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegistrarDispositivoRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/RegistrarDispositivoRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/RegistrarDispositivoRequest'
      responses:
        "200":
          description: OK
    delete:
      tags:
        - AdminDispositivo
      requestBody:
        content:
          application/json:
            schema:
              type: string
          text/json:
            schema:
              type: string
          application/*+json:
            schema:
              type: string
      responses:
        "200":
          description: OK
  /api/v1/admin/AnalyticsAdmin/resumo:
    get:
      tags:
        - AnalyticsAdmin
      parameters:
        - name: dataInicio
          in: query
          schema:
            type: string
            format: date
        - name: dataFim
          in: query
          schema:
            type: string
            format: date
        - name: tenantId
          in: query
          schema:
            type: string
            format: uuid
      responses:
        "200":
          description: OK
  /api/v1/admin/AnalyticsAdmin/campanhas:
    get:
      tags:
        - AnalyticsAdmin
      parameters:
        - name: dataInicio
          in: query
          schema:
            type: string
            format: date
        - name: dataFim
          in: query
          schema:
            type: string
            format: date
        - name: tenantId
          in: query
          schema:
            type: string
            format: uuid
      responses:
        "200":
          description: OK
  /api/v1/admin/AnalyticsAdmin/creditos/historico:
    get:
      tags:
        - AnalyticsAdmin
      parameters:
        - name: periodo
          in: query
          schema:
            $ref: '#/components/schemas/PeriodoHistorico'
        - name: granularidade
          in: query
          schema:
            $ref: '#/components/schemas/GranularidadeHistorico'
        - name: tenantId
          in: query
          schema:
            type: string
            format: uuid
      responses:
        "200":
          description: OK
  /api/v1/admin/AnalyticsAdmin/lojas/ranking:
    get:
      tags:
        - AnalyticsAdmin
      parameters:
        - name: tenantId
          in: query
          schema:
            type: string
            format: uuid
      responses:
        "200":
          description: OK
  /api/v1/admin/AnalyticsAdmin/clientes/top:
    get:
      tags:
        - AnalyticsAdmin
      parameters:
        - name: limite
          in: query
          schema:
            type: integer
            format: int32
            default: 10
        - name: ordenarPor
          in: query
          schema:
            $ref: '#/components/schemas/OrdenarClientesPor'
        - name: tenantId
          in: query
          schema:
            type: string
            format: uuid
      responses:
        "200":
          description: OK
  /api/v1/admin/AnalyticsAdmin/expiracao/projecao:
    get:
      tags:
        - AnalyticsAdmin
      parameters:
        - name: tenantId
          in: query
          schema:
            type: string
            format: uuid
      responses:
        "200":
          description: OK
  /api/v1/assinatura/verificar:
    post:
      tags:
        - Assinatura
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VerificarDisponibilidadeRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/VerificarDisponibilidadeRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/VerificarDisponibilidadeRequest'
      responses:
        "200":
          description: OK
  /api/v1/assinatura/checkout:
    post:
      tags:
        - Assinatura
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CriarCheckoutRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/CriarCheckoutRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/CriarCheckoutRequest'
      responses:
        "200":
          description: OK
  /api/v1/assinatura/portal:
    post:
      tags:
        - Assinatura
      responses:
        "200":
          description: OK
  /api/v1/AuthAdmin/login:
    post:
      tags:
        - AuthAdmin
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LoginAdminRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/LoginAdminRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/LoginAdminRequest'
      responses:
        "200":
          description: OK
  /api/v1/AuthAdmin/primeiro-acesso:
    get:
      tags:
        - AuthAdmin
      parameters:
        - name: email
          in: query
          schema:
            type: string
      responses:
        "200":
          description: OK
    post:
      tags:
        - AuthAdmin
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PrimeiroAcessoRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/PrimeiroAcessoRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/PrimeiroAcessoRequest'
      responses:
        "200":
          description: OK
  /api/v1/AuthAdmin/recuperar-senha:
    post:
      tags:
        - AuthAdmin
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecuperarSenhaRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/RecuperarSenhaRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/RecuperarSenhaRequest'
      responses:
        "200":
          description: OK
  /api/v1/AuthAdmin/confirmar-redefinicao-senha:
    post:
      tags:
        - AuthAdmin
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConfirmarRedefinicaoSenhaRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/ConfirmarRedefinicaoSenhaRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/ConfirmarRedefinicaoSenhaRequest'
      responses:
        "200":
          description: OK
  /api/v1/admin/CampanhaAdmin:
    get:
      tags:
        - CampanhaAdmin
      parameters:
        - name: status
          in: query
          schema:
            type: string
        - name: tipo
          in: query
          schema:
            type: string
      responses:
        "200":
          description: OK
    post:
      tags:
        - CampanhaAdmin
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CriarCampanhaRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/CriarCampanhaRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/CriarCampanhaRequest'
      responses:
        "200":
          description: OK
  /api/v1/admin/CampanhaAdmin/{id}:
    get:
      tags:
        - CampanhaAdmin
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        "200":
          description: OK
    put:
      tags:
        - CampanhaAdmin
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AtualizarCampanhaRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/AtualizarCampanhaRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/AtualizarCampanhaRequest'
      responses:
        "200":
          description: OK
  /api/v1/admin/CampanhaAdmin/{id}/status:
    patch:
      tags:
        - CampanhaAdmin
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: status
          in: query
          schema:
            type: string
      responses:
        "200":
          description: OK
  /api/v1/campanha-lancamento:
    get:
      tags:
        - CampanhaLancamento
      responses:
        "200":
          description: OK
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/CampanhaLancamentoPublicaResponseApiResult'
            application/json:
              schema:
                $ref: '#/components/schemas/CampanhaLancamentoPublicaResponseApiResult'
            text/json:
              schema:
                $ref: '#/components/schemas/CampanhaLancamentoPublicaResponseApiResult'
  /api/v1/admin/ClienteAdmin:
    get:
      tags:
        - ClienteAdmin
      parameters:
        - name: tenantId
          in: query
          schema:
            type: string
            format: uuid
        - name: busca
          in: query
          schema:
            type: string
        - name: ativo
          in: query
          schema:
            type: boolean
        - name: pagina
          in: query
          schema:
            type: integer
            format: int32
            default: 1
        - name: tamanho
          in: query
          schema:
            type: integer
            format: int32
            default: 20
      responses:
        "200":
          description: OK
    post:
      tags:
        - ClienteAdmin
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CriarClienteAdminRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/CriarClienteAdminRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/CriarClienteAdminRequest'
      responses:
        "200":
          description: OK
  /api/v1/admin/ClienteAdmin/{id}:
    get:
      tags:
        - ClienteAdmin
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: tenantId
          in: query
          schema:
            type: string
            format: uuid
      responses:
        "200":
          description: OK
    put:
      tags:
        - ClienteAdmin
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: tenantId
          in: query
          schema:
            type: string
            format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AtualizarClienteAdminRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/AtualizarClienteAdminRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/AtualizarClienteAdminRequest'
      responses:
        "200":
          description: OK
  /api/v1/admin/ClienteAdmin/{id}/status:
    patch:
      tags:
        - ClienteAdmin
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: ativo
          in: query
          schema:
            type: boolean
        - name: tenantId
          in: query
          schema:
            type: string
            format: uuid
      responses:
        "200":
          description: OK
  /api/v1/admin/ClienteAdmin/{id}/saldo:
    get:
      tags:
        - ClienteAdmin
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: tenantId
          in: query
          schema:
            type: string
            format: uuid
      responses:
        "200":
          description: OK
  /api/v1/admin/ClienteAdmin/{id}/extrato:
    get:
      tags:
        - ClienteAdmin
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: tenantId
          in: query
          schema:
            type: string
            format: uuid
        - name: pagina
          in: query
          schema:
            type: integer
            format: int32
            default: 1
        - name: tamanho
          in: query
          schema:
            type: integer
            format: int32
            default: 20
      responses:
        "200":
          description: OK
  /api/v1/cliente/buscar:
    get:
      tags:
        - ClienteBusca
      parameters:
        - name: Cpf
          in: query
          schema:
            type: string
        - name: Qr
          in: query
          schema:
            type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClienteBuscaResponseApiResult'
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectApiResult'
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectApiResult'
        "422":
          description: Unprocessable Content
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectApiResult'
        "429":
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectApiResult'
  /api/v1/admin/cliente/identificar:
    get:
      tags:
        - ClienteIdentificar
      parameters:
        - name: qr
          in: query
          schema:
            type: string
            format: uuid
      responses:
        "200":
          description: OK
  /api/v1/cliente:
    post:
      tags:
        - ClientePdv
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CadastrarClientePdvRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/CadastrarClientePdvRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/CadastrarClientePdvRequest'
      responses:
        "200":
          description: OK
  /api/v1/clube/saldo:
    get:
      tags:
        - Clube
      responses:
        "200":
          description: OK
  /api/v1/clube/historico:
    get:
      tags:
        - Clube
      parameters:
        - name: pagina
          in: query
          schema:
            type: integer
            format: int32
            default: 1
        - name: tamanho
          in: query
          schema:
            type: integer
            format: int32
            default: 20
        - name: tenantId
          in: query
          schema:
            type: string
            format: uuid
      responses:
        "200":
          description: OK
  /api/v1/clube/historico/resumo:
    get:
      tags:
        - Clube
      parameters:
        - name: tenantId
          in: query
          schema:
            type: string
            format: uuid
      responses:
        "200":
          description: OK
  /api/v1/clube/perfil:
    get:
      tags:
        - Clube
      responses:
        "200":
          description: OK
    put:
      tags:
        - Clube
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AtualizarClubePerfilRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/AtualizarClubePerfilRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/AtualizarClubePerfilRequest'
      responses:
        "200":
          description: OK
  /api/v1/clube/auth/definir-senha:
    post:
      tags:
        - Clube
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DefinirSenhaClubeRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/DefinirSenhaClubeRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/DefinirSenhaClubeRequest'
      responses:
        "200":
          description: OK
  /api/v1/clube/cartao/renovar:
    post:
      tags:
        - Clube
      responses:
        "200":
          description: OK
  /api/v1/clube/perfil/email/solicitar-confirmacao:
    post:
      tags:
        - Clube
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SolicitarConfirmacaoEmailRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/SolicitarConfirmacaoEmailRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/SolicitarConfirmacaoEmailRequest'
      responses:
        "200":
          description: OK
  /api/v1/clube/perfil/email:
    put:
      tags:
        - Clube
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConfirmarEmailRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/ConfirmarEmailRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/ConfirmarEmailRequest'
      responses:
        "200":
          description: OK
  /api/v1/clube/auth/solicitar-pin:
    post:
      tags:
        - ClubeAuth
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClubeSolicitarPinRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/ClubeSolicitarPinRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/ClubeSolicitarPinRequest'
      responses:
        "200":
          description: OK
  /api/v1/clube/auth/login:
    post:
      tags:
        - ClubeAuth
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClubeLoginRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/ClubeLoginRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/ClubeLoginRequest'
      responses:
        "200":
          description: OK
  /api/v1/clube/auth/renovar:
    post:
      tags:
        - ClubeAuth
      responses:
        "200":
          description: OK
  /api/v1/clube/auth/handoff:
    post:
      tags:
        - ClubeAuth
      responses:
        "200":
          description: OK
  /api/v1/clube/auth/cadastrar/iniciar:
    post:
      tags:
        - ClubeAuth
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IniciarCadastroProprioRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/IniciarCadastroProprioRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/IniciarCadastroProprioRequest'
      responses:
        "200":
          description: OK
  /api/v1/clube/auth/cadastrar/reenviar:
    post:
      tags:
        - ClubeAuth
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReenviarPinCadastroRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/ReenviarPinCadastroRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/ReenviarPinCadastroRequest'
      responses:
        "200":
          description: OK
  /api/v1/clube/auth/cadastrar/confirmar:
    post:
      tags:
        - ClubeAuth
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConfirmarCadastroProprioRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/ConfirmarCadastroProprioRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/ConfirmarCadastroProprioRequest'
      responses:
        "200":
          description: OK
  /api/v1/clube/auth/google/login:
    post:
      tags:
        - ClubeAuth
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoogleLoginRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/GoogleLoginRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/GoogleLoginRequest'
      responses:
        "200":
          description: OK
  /api/v1/clube/auth/google/iniciar:
    post:
      tags:
        - ClubeAuth
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoogleIniciarRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/GoogleIniciarRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/GoogleIniciarRequest'
      responses:
        "200":
          description: OK
  /api/v1/clube/auth/google/confirmar:
    post:
      tags:
        - ClubeAuth
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoogleConfirmarRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/GoogleConfirmarRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/GoogleConfirmarRequest'
      responses:
        "200":
          description: OK
  /api/v1/clube/auth/google/cadastrar:
    post:
      tags:
        - ClubeAuth
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoogleCadastrarRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/GoogleCadastrarRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/GoogleCadastrarRequest'
      responses:
        "200":
          description: OK
  /api/v1/clube/auth/vincular/google:
    post:
      tags:
        - ClubeAuth
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoogleVincularRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/GoogleVincularRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/GoogleVincularRequest'
      responses:
        "200":
          description: OK
    delete:
      tags:
        - ClubeAuth
      responses:
        "200":
          description: OK
  /api/v1/clube/auth/vincular:
    get:
      tags:
        - ClubeAuth
      responses:
        "200":
          description: OK
  /api/v1/clube/dispositivo:
    post:
      tags:
        - ClubeDispositivo
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegistrarDispositivoRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/RegistrarDispositivoRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/RegistrarDispositivoRequest'
      responses:
        "200":
          description: OK
    delete:
      tags:
        - ClubeDispositivo
      requestBody:
        content:
          application/json:
            schema:
              type: string
          text/json:
            schema:
              type: string
          application/*+json:
            schema:
              type: string
      responses:
        "200":
          description: OK
  /api/v1/cnpj/{cnpj}:
    get:
      tags:
        - Cnpj
      parameters:
        - name: cnpj
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: OK
  /api/v1/Configuracao:
    get:
      tags:
        - Configuracao
      parameters:
        - name: cnpjLoja
          in: query
          schema:
            type: string
      responses:
        "200":
          description: OK
  /api/v1/contato:
    post:
      tags:
        - Contato
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContatoRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/ContatoRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/ContatoRequest'
      responses:
        "200":
          description: OK
  /api/v1/contato/banner-click:
    post:
      tags:
        - Contato
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BannerClickRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/BannerClickRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/BannerClickRequest'
      responses:
        "200":
          description: OK
  /api/v1/admin/LojaAdmin:
    get:
      tags:
        - LojaAdmin
      parameters:
        - name: tenantId
          in: query
          schema:
            type: string
            format: uuid
        - name: ativo
          in: query
          schema:
            type: boolean
      responses:
        "200":
          description: OK
    post:
      tags:
        - LojaAdmin
      parameters:
        - name: tenantId
          in: query
          schema:
            type: string
            format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CriarLojaRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/CriarLojaRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/CriarLojaRequest'
      responses:
        "200":
          description: OK
  /api/v1/admin/LojaAdmin/{id}:
    get:
      tags:
        - LojaAdmin
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: tenantId
          in: query
          schema:
            type: string
            format: uuid
      responses:
        "200":
          description: OK
    put:
      tags:
        - LojaAdmin
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: tenantId
          in: query
          schema:
            type: string
            format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AtualizarLojaRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/AtualizarLojaRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/AtualizarLojaRequest'
      responses:
        "200":
          description: OK
  /api/v1/admin/LojaAdmin/{id}/status:
    patch:
      tags:
        - LojaAdmin
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: ativo
          in: query
          schema:
            type: boolean
        - name: tenantId
          in: query
          schema:
            type: string
            format: uuid
      responses:
        "200":
          description: OK
  /api/v1/admin/LojaAdmin/{id}/logo:
    post:
      tags:
        - LojaAdmin
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: tenantId
          in: query
          schema:
            type: string
            format: uuid
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                arquivo:
                  type: string
                  format: binary
            encoding:
              arquivo:
                style: form
      responses:
        "200":
          description: OK
  /api/v1/admin/LojaAdmin/{id}/marketplace:
    get:
      tags:
        - LojaAdmin
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: tenantId
          in: query
          schema:
            type: string
            format: uuid
      responses:
        "200":
          description: OK
    put:
      tags:
        - LojaAdmin
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: tenantId
          in: query
          schema:
            type: string
            format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AtualizarAdesaoRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/AtualizarAdesaoRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/AtualizarAdesaoRequest'
      responses:
        "200":
          description: OK
  /api/v1/admin/marketplaceanalytics/resumo:
    get:
      tags:
        - MarketplaceAnalyticsAdmin
      parameters:
        - name: dataInicio
          in: query
          schema:
            type: string
            format: date
        - name: dataFim
          in: query
          schema:
            type: string
            format: date
        - name: tenantId
          in: query
          schema:
            type: string
            format: uuid
      responses:
        "200":
          description: OK
  /api/v1/admin/MarketplaceProdutoAdmin/marketplace/subcategorias:
    get:
      tags:
        - MarketplaceProdutoAdmin
      responses:
        "200":
          description: OK
  /api/v1/admin/MarketplaceProdutoAdmin/marketplace/produtos:
    get:
      tags:
        - MarketplaceProdutoAdmin
      parameters:
        - name: pagina
          in: query
          schema:
            type: integer
            format: int32
            default: 1
        - name: tamanho
          in: query
          schema:
            type: integer
            format: int32
            default: 20
      responses:
        "200":
          description: OK
    post:
      tags:
        - MarketplaceProdutoAdmin
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CriarProdutoAdminRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/CriarProdutoAdminRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/CriarProdutoAdminRequest'
      responses:
        "200":
          description: OK
  /api/v1/admin/MarketplaceProdutoAdmin/marketplace/produtos/{id}:
    get:
      tags:
        - MarketplaceProdutoAdmin
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        "200":
          description: OK
    put:
      tags:
        - MarketplaceProdutoAdmin
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AtualizarProdutoAdminRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/AtualizarProdutoAdminRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/AtualizarProdutoAdminRequest'
      responses:
        "200":
          description: OK
  /api/v1/admin/MarketplaceProdutoAdmin/catalogo/pedidos:
    get:
      tags:
        - MarketplaceProdutoAdmin
      parameters:
        - name: pagina
          in: query
          schema:
            type: integer
            format: int32
            default: 1
        - name: tamanho
          in: query
          schema:
            type: integer
            format: int32
            default: 20
      responses:
        "200":
          description: OK
  /api/v1/admin/MarketplaceProdutoAdmin/catalogo/pedidos/{itemId}/status:
    put:
      tags:
        - MarketplaceProdutoAdmin
      parameters:
        - name: itemId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AtualizarStatusItemAdminRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/AtualizarStatusItemAdminRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/AtualizarStatusItemAdminRequest'
      responses:
        "200":
          description: OK
  /api/v1/admin/MarketplaceUploadAdmin/marketplace/upload/produto/{produtoId}:
    post:
      tags:
        - MarketplaceUploadAdmin
      parameters:
        - name: produtoId
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: ordem
          in: query
          schema:
            type: integer
            format: int32
            default: 0
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                arquivo:
                  type: string
                  format: binary
            encoding:
              arquivo:
                style: form
      responses:
        "200":
          description: OK
  /api/v1/admin/notificacoes/badge:
    get:
      tags:
        - NotificacoesAdmin
      responses:
        "200":
          description: OK
  /api/v1/admin/notificacoes:
    get:
      tags:
        - NotificacoesAdmin
      parameters:
        - name: apenasNaoLidas
          in: query
          schema:
            type: boolean
        - name: pagina
          in: query
          schema:
            type: integer
            format: int32
            default: 1
        - name: tamanho
          in: query
          schema:
            type: integer
            format: int32
            default: 20
      responses:
        "200":
          description: OK
  /api/v1/admin/notificacoes/{id}/marcar-lida:
    post:
      tags:
        - NotificacoesAdmin
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        "200":
          description: OK
  /api/v1/admin/notificacoes/marcar-todas-lidas:
    post:
      tags:
        - NotificacoesAdmin
      responses:
        "200":
          description: OK
  /api/v1/planos:
    get:
      tags:
        - Plano
      responses:
        "200":
          description: OK
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/PlanoPublicoResponseIReadOnlyListApiResult'
            application/json:
              schema:
                $ref: '#/components/schemas/PlanoPublicoResponseIReadOnlyListApiResult'
            text/json:
              schema:
                $ref: '#/components/schemas/PlanoPublicoResponseIReadOnlyListApiResult'
  /api/v1/admin/PlanoAdmin:
    get:
      tags:
        - PlanoAdmin
      responses:
        "200":
          description: OK
  /api/v1/admin/PushCampanhaAdmin:
    get:
      tags:
        - PushCampanhaAdmin
      parameters:
        - name: status
          in: query
          schema:
            type: string
        - name: semVinculo
          in: query
          schema:
            type: boolean
      responses:
        "200":
          description: OK
    post:
      tags:
        - PushCampanhaAdmin
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CriarPushCampanhaRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/CriarPushCampanhaRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/CriarPushCampanhaRequest'
      responses:
        "200":
          description: OK
  /api/v1/admin/PushCampanhaAdmin/{id}:
    get:
      tags:
        - PushCampanhaAdmin
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        "200":
          description: OK
    delete:
      tags:
        - PushCampanhaAdmin
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        "200":
          description: OK
  /api/v1/admin/PushCampanhaAdmin/{id}/enviar:
    post:
      tags:
        - PushCampanhaAdmin
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        "200":
          description: OK
  /api/v1/admin/PushCampanhaAdmin/segmento/preview:
    post:
      tags:
        - PushCampanhaAdmin
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PushSegmentoFiltrosRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/PushSegmentoFiltrosRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/PushSegmentoFiltrosRequest'
      responses:
        "200":
          description: OK
  /api/v1/admin/PushCampanhaAdmin/por-campanha/{campanhaFidelidadeId}:
    get:
      tags:
        - PushCampanhaAdmin
      parameters:
        - name: campanhaFidelidadeId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        "200":
          description: OK
  /api/v1/admin/PushCampanhaAdmin/{id}/campanha-fidelidade:
    patch:
      tags:
        - PushCampanhaAdmin
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: campanhaFidelidadeId
          in: query
          schema:
            type: string
            format: uuid
      responses:
        "200":
          description: OK
  /api/v1/Resgate:
    post:
      tags:
        - Resgate
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResgatePdvRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/ResgatePdvRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/ResgatePdvRequest'
      responses:
        "200":
          description: OK
  /api/v1/Resgate/saldo:
    get:
      tags:
        - Resgate
      parameters:
        - name: cnpjLoja
          in: query
          schema:
            type: string
        - name: cpfCliente
          in: query
          schema:
            type: string
      responses:
        "200":
          description: OK
  /api/v1/admin/resgate-pontos:
    post:
      tags:
        - ResgateAdmin
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResgateAdminRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/ResgateAdminRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/ResgateAdminRequest'
      responses:
        "200":
          description: OK
  /api/v1/solicitacoes/badge:
    get:
      tags:
        - Solicitacoes
      responses:
        "200":
          description: OK
  /api/v1/solicitacoes:
    get:
      tags:
        - Solicitacoes
      parameters:
        - name: pagina
          in: query
          schema:
            type: integer
            format: int32
            default: 1
        - name: tamanho
          in: query
          schema:
            type: integer
            format: int32
            default: 20
      responses:
        "200":
          description: OK
    post:
      tags:
        - Solicitacoes
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CriarSolicitacaoRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/CriarSolicitacaoRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/CriarSolicitacaoRequest'
      responses:
        "200":
          description: OK
  /api/v1/solicitacoes/{id}:
    get:
      tags:
        - Solicitacoes
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        "200":
          description: OK
  /api/v1/solicitacoes/{id}/marcar-visualizado:
    post:
      tags:
        - Solicitacoes
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        "200":
          description: OK
  /api/v1/stripe/webhook:
    post:
      tags:
        - StripeWebhook
      responses:
        "200":
          description: OK
  /api/v1/admin/TenantAdmin:
    get:
      tags:
        - TenantAdmin
      parameters:
        - name: pagina
          in: query
          schema:
            type: integer
            format: int32
            default: 1
        - name: tamanho
          in: query
          schema:
            type: integer
            format: int32
            default: 20
        - name: ativo
          in: query
          schema:
            type: boolean
      responses:
        "200":
          description: OK
    post:
      tags:
        - TenantAdmin
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CriarTenantRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/CriarTenantRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/CriarTenantRequest'
      responses:
        "200":
          description: OK
  /api/v1/admin/TenantAdmin/{id}:
    get:
      tags:
        - TenantAdmin
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        "200":
          description: OK
    put:
      tags:
        - TenantAdmin
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AtualizarTenantRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/AtualizarTenantRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/AtualizarTenantRequest'
      responses:
        "200":
          description: OK
  /api/v1/admin/TenantAdmin/{id}/status:
    patch:
      tags:
        - TenantAdmin
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: ativo
          in: query
          schema:
            type: boolean
      responses:
        "200":
          description: OK
  /api/v1/admin/TenantAdmin/{id}/regenerar-token:
    post:
      tags:
        - TenantAdmin
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        "200":
          description: OK
  /api/v1/admin/TenantAdmin/limites:
    get:
      tags:
        - TenantAdmin
      parameters:
        - name: tenantId
          in: query
          schema:
            type: string
            format: uuid
      responses:
        "200":
          description: OK
  /api/v1/admin/UsuarioAdmin:
    get:
      tags:
        - UsuarioAdmin
      parameters:
        - name: tenantId
          in: query
          schema:
            type: string
            format: uuid
        - name: ativo
          in: query
          schema:
            type: boolean
      responses:
        "200":
          description: OK
    post:
      tags:
        - UsuarioAdmin
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CriarUsuarioAdminRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/CriarUsuarioAdminRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/CriarUsuarioAdminRequest'
      responses:
        "200":
          description: OK
  /api/v1/admin/UsuarioAdmin/{id}:
    get:
      tags:
        - UsuarioAdmin
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        "200":
          description: OK
    put:
      tags:
        - UsuarioAdmin
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AtualizarUsuarioAdminRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/AtualizarUsuarioAdminRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/AtualizarUsuarioAdminRequest'
      responses:
        "200":
          description: OK
  /api/v1/admin/UsuarioAdmin/{id}/status:
    patch:
      tags:
        - UsuarioAdmin
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: ativo
          in: query
          schema:
            type: boolean
      responses:
        "200":
          description: OK
  /api/v1/admin/UsuarioAdmin/{id}/redefinir-senha:
    post:
      tags:
        - UsuarioAdmin
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RedefinirSenhaAdminRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/RedefinirSenhaAdminRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/RedefinirSenhaAdminRequest'
      responses:
        "200":
          description: OK
  /api/v1/admin/UsuarioAdmin/alterar-senha:
    post:
      tags:
        - UsuarioAdmin
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AlterarSenhaRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/AlterarSenhaRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/AlterarSenhaRequest'
      responses:
        "200":
          description: OK
  /api/v1/Venda:
    post:
      tags:
        - Venda
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VendaPdvRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/VendaPdvRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/VendaPdvRequest'
      responses:
        "200":
          description: OK
  /api/v1/Venda/preview:
    post:
      tags:
        - Venda
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VendaPreviewRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/VendaPreviewRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/VendaPreviewRequest'
      responses:
        "200":
          description: OK
  /api/v1/Venda/cancelar:
    post:
      tags:
        - Venda
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CancelarVendaPdvRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/CancelarVendaPdvRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/CancelarVendaPdvRequest'
      responses:
        "200":
          description: OK
  /api/v1/admin/Venda/{id}/cancelar:
    post:
      tags:
        - Venda
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CancelarVendaAdminRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/CancelarVendaAdminRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/CancelarVendaAdminRequest'
      responses:
        "200":
          description: OK
  /api/v1/admin/VendaManual:
    post:
      tags:
        - VendaManual
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VendaManualRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/VendaManualRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/VendaManualRequest'
      responses:
        "200":
          description: OK
  /api/v1/admin/integracoes/whatsapp:
    get:
      tags:
        - WhatsAppTenant
      responses:
        "200":
          description: OK
  /api/v1/admin/integracoes/whatsapp/toggle:
    put:
      tags:
        - WhatsAppTenant
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WhatsAppToggleRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/WhatsAppToggleRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/WhatsAppToggleRequest'
      responses:
        "200":
          description: OK
  /api/v1/admin/integracoes/whatsapp/status:
    get:
      tags:
        - WhatsAppTenant
      responses:
        "200":
          description: OK
  /api/v1/admin/integracoes/whatsapp/qr:
    get:
      tags:
        - WhatsAppTenant
      responses:
        "200":
          description: OK
  /api/v1/admin/integracoes/whatsapp/solicitar-pin:
    post:
      tags:
        - WhatsAppTenant
      responses:
        "200":
          description: OK
  /api/v1/admin/integracoes/whatsapp/disconnect:
    post:
      tags:
        - WhatsAppTenant
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WhatsAppTenantPinRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/WhatsAppTenantPinRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/WhatsAppTenantPinRequest'
      responses:
        "200":
          description: OK
components:
  schemas:
    AcaoBannerClick:
      enum:
        - ConhecerEloFiel
        - FalarWhatsApp
        - ReceberContato
      type: string
    AlterarSenhaRequest:
      required:
        - novaSenha
        - senhaAtual
      type: object
      properties:
        senhaAtual:
          maxLength: 200
          minLength: 1
          type: string
        novaSenha:
          maxLength: 200
          minLength: 8
          type: string
      additionalProperties: false
    AtualizarAdesaoRequest:
      type: object
      properties:
        aderiu:
          type: boolean
      additionalProperties: false
    AtualizarCampanhaRequest:
      type: object
      properties:
        descricao:
          type: string
          nullable: true
        escopoLojas:
          type: string
          nullable: true
        lojaIds:
          type: array
          items:
            type: string
            format: uuid
          nullable: true
        modoCashback:
          type: string
          nullable: true
        diasCarencia:
          type: integer
          format: int32
          nullable: true
        regraArredondamento:
          type: string
          nullable: true
        dataInicio:
          type: string
          format: date
          nullable: true
        dataFim:
          type: string
          format: date
          nullable: true
        prioridade:
          type: integer
          format: int32
          nullable: true
        observacoes:
          type: string
          nullable: true
        regraAcumulo:
          $ref: '#/components/schemas/RegraAcumuloRequest'
        regraResgate:
          $ref: '#/components/schemas/RegraResgateRequest'
        validade:
          $ref: '#/components/schemas/ValidadeCampanhaRequest'
      additionalProperties: false
    AtualizarClienteAdminRequest:
      type: object
      properties:
        nome:
          maxLength: 150
          type: string
          nullable: true
        email:
          maxLength: 200
          type: string
          format: email
          nullable: true
        telefone:
          maxLength: 20
          type: string
          nullable: true
        dataNascimento:
          type: string
          format: date
          nullable: true
        cep:
          maxLength: 10
          type: string
          nullable: true
        logradouro:
          maxLength: 200
          type: string
          nullable: true
        numero:
          maxLength: 20
          type: string
          nullable: true
        complemento:
          maxLength: 100
          type: string
          nullable: true
        bairro:
          maxLength: 100
          type: string
          nullable: true
        cidade:
          maxLength: 100
          type: string
          nullable: true
        uf:
          maxLength: 2
          minLength: 2
          type: string
          nullable: true
      additionalProperties: false
    AtualizarClubePerfilRequest:
      type: object
      properties:
        email:
          type: string
          nullable: true
        telefone:
          type: string
          nullable: true
      additionalProperties: false
    AtualizarLojaRequest:
      type: object
      properties:
        nome:
          type: string
          nullable: true
        cidade:
          type: string
          nullable: true
        uf:
          type: string
          nullable: true
      additionalProperties: false
    AtualizarProdutoAdminRequest:
      required:
        - nome
        - subcategoriaId
      type: object
      properties:
        subcategoriaId:
          type: string
          format: uuid
        nome:
          maxLength: 200
          minLength: 1
          type: string
        descricao:
          maxLength: 2000
          type: string
          nullable: true
        precoPontos:
          maximum: 999999
          minimum: 0
          type: integer
          format: int32
        precoReais:
          maximum: 999999.99
          minimum: 0
          type: number
          format: double
        precoPontosOriginal:
          type: integer
          format: int32
          nullable: true
        precoReaisOriginal:
          type: number
          format: double
          nullable: true
        custoLojista:
          maximum: 999999.99
          minimum: 0
          type: number
          format: double
        estoque:
          type: integer
          format: int32
          nullable: true
        tipoEntrega:
          $ref: '#/components/schemas/TipoEntregaProduto'
        dataValidade:
          type: string
          format: date
          nullable: true
        ativo:
          type: boolean
        destaque:
          type: boolean
        tags:
          maxLength: 500
          type: string
          nullable: true
        ordem:
          type: integer
          format: int32
      additionalProperties: false
    AtualizarStatusItemAdminRequest:
      required:
        - acao
      type: object
      properties:
        acao:
          minLength: 1
          type: string
        motivo:
          type: string
          nullable: true
        observacao:
          type: string
          nullable: true
      additionalProperties: false
    AtualizarTenantRequest:
      type: object
      properties:
        planoId:
          type: string
          format: uuid
          nullable: true
        razaoSocial:
          type: string
          nullable: true
        nomeFantasia:
          type: string
          nullable: true
        email:
          type: string
          nullable: true
        telefone:
          type: string
          nullable: true
        dataContrato:
          type: string
          format: date
          nullable: true
        dataVencimento:
          type: string
          format: date
          nullable: true
      additionalProperties: false
    AtualizarUsuarioAdminRequest:
      type: object
      properties:
        nome:
          type: string
          nullable: true
        perfil:
          type: string
          nullable: true
      additionalProperties: false
    BannerClickRequest:
      required:
        - acaoEscolhida
        - cnpj
        - empresa
        - telefone
      type: object
      properties:
        empresa:
          maxLength: 150
          minLength: 1
          type: string
        cnpj:
          minLength: 1
          pattern: ^\d{14}$|^\d{2}\.\d{3}\.\d{3}/\d{4}-\d{2}$
          type: string
        telefone:
          minLength: 1
          pattern: ^\d{10,11}$|^\(\d{2}\)\s?\d{4,5}-\d{4}$
          type: string
        email:
          maxLength: 200
          type: string
          format: email
          nullable: true
        nome:
          maxLength: 150
          type: string
          nullable: true
        acaoEscolhida:
          $ref: '#/components/schemas/AcaoBannerClick'
        moduloTela:
          maxLength: 100
          type: string
          nullable: true
      additionalProperties: false
    CadastrarClientePdvRequest:
      required:
        - aceiteLgpd
        - cpf
        - email
        - nome
        - telefone
      type: object
      properties:
        cpf:
          maxLength: 14
          minLength: 11
          type: string
        nome:
          maxLength: 150
          minLength: 2
          type: string
        email:
          maxLength: 150
          minLength: 1
          type: string
          format: email
        telefone:
          maxLength: 20
          minLength: 1
          type: string
        dataNascimento:
          maxLength: 10
          type: string
          nullable: true
        aceiteLgpd:
          type: boolean
      additionalProperties: false
    CampanhaLancamentoPublicaResponse:
      type: object
      properties:
        ativa:
          type: boolean
        titulo:
          type: string
          nullable: true
        subtitulo:
          type: string
          nullable: true
        dataFim:
          type: string
          format: date-time
          nullable: true
        ctaLabel:
          type: string
          nullable: true
        ctaUrl:
          type: string
          nullable: true
        ocultarValores:
          type: boolean
      additionalProperties: false
    CampanhaLancamentoPublicaResponseApiResult:
      type: object
      properties:
        sucesso:
          type: boolean
          readOnly: true
        dados:
          $ref: '#/components/schemas/CampanhaLancamentoPublicaResponse'
        mensagem:
          type: string
          nullable: true
          readOnly: true
        erros:
          type: array
          items:
            type: string
          nullable: true
          readOnly: true
      additionalProperties: false
    CancelarVendaAdminRequest:
      required:
        - motivo
        - movimentacaoId
      type: object
      properties:
        movimentacaoId:
          type: string
          format: uuid
        motivo:
          maxLength: 200
          minLength: 3
          type: string
      additionalProperties: false
    CancelarVendaPdvRequest:
      required:
        - cnpjLoja
        - documentoExterno
      type: object
      properties:
        cnpjLoja:
          maxLength: 18
          minLength: 14
          type: string
        documentoExterno:
          maxLength: 100
          minLength: 1
          type: string
        motivo:
          maxLength: 200
          minLength: 0
          type: string
          nullable: true
      additionalProperties: false
    ClienteAutoRequest:
      required:
        - nome
      type: object
      properties:
        nome:
          maxLength: 150
          minLength: 2
          type: string
        email:
          maxLength: 200
          type: string
          format: email
          nullable: true
        telefone:
          maxLength: 20
          type: string
          nullable: true
      additionalProperties: false
    ClienteBuscaResponse:
      type: object
      properties:
        cpf:
          type: string
          nullable: true
        nome:
          type: string
          nullable: true
        email:
          type: string
          nullable: true
        telefone:
          type: string
          nullable: true
        dataNascimento:
          type: string
          format: date
          nullable: true
        whatsappJid:
          type: string
          nullable: true
        cadastradoEm:
          type: string
          format: date-time
      additionalProperties: false
    ClienteBuscaResponseApiResult:
      type: object
      properties:
        sucesso:
          type: boolean
          readOnly: true
        dados:
          $ref: '#/components/schemas/ClienteBuscaResponse'
        mensagem:
          type: string
          nullable: true
          readOnly: true
        erros:
          type: array
          items:
            type: string
          nullable: true
          readOnly: true
      additionalProperties: false
    ClubeLoginRequest:
      required:
        - cpf
      type: object
      properties:
        cpf:
          maxLength: 14
          minLength: 11
          type: string
        pin:
          maxLength: 6
          minLength: 0
          type: string
          nullable: true
        senha:
          maxLength: 100
          minLength: 0
          type: string
          nullable: true
      additionalProperties: false
    ClubeSolicitarPinRequest:
      required:
        - canal
        - cpf
      type: object
      properties:
        cpf:
          maxLength: 14
          minLength: 11
          type: string
        canal:
          minLength: 1
          type: string
      additionalProperties: false
    ConfirmarCadastroProprioRequest:
      required:
        - cpf
        - pin
      type: object
      properties:
        cpf:
          maxLength: 14
          minLength: 11
          type: string
        pin:
          maxLength: 6
          minLength: 6
          type: string
      additionalProperties: false
    ConfirmarEmailRequest:
      required:
        - codigo
        - novoEmail
      type: object
      properties:
        novoEmail:
          maxLength: 200
          minLength: 1
          type: string
          format: email
        codigo:
          maxLength: 6
          minLength: 6
          type: string
      additionalProperties: false
    ConfirmarRedefinicaoSenhaRequest:
      required:
        - novaSenha
        - token
      type: object
      properties:
        token:
          minLength: 1
          type: string
        novaSenha:
          minLength: 8
          type: string
      additionalProperties: false
    ContatoRequest:
      required:
        - email
        - mensagem
        - nome
        - telefone
      type: object
      properties:
        nome:
          maxLength: 150
          minLength: 1
          type: string
        email:
          maxLength: 200
          minLength: 1
          type: string
          format: email
        telefone:
          maxLength: 20
          minLength: 1
          type: string
        mensagem:
          maxLength: 1000
          minLength: 10
          type: string
      additionalProperties: false
    CriarCampanhaRequest:
      type: object
      properties:
        descricao:
          type: string
          nullable: true
        tipo:
          type: string
          nullable: true
        status:
          type: string
          nullable: true
        escopoLojas:
          type: string
          nullable: true
        lojaIds:
          type: array
          items:
            type: string
            format: uuid
          nullable: true
        modoCashback:
          type: string
          nullable: true
        diasCarencia:
          type: integer
          format: int32
        regraArredondamento:
          type: string
          nullable: true
        dataInicio:
          type: string
          format: date
          nullable: true
        dataFim:
          type: string
          format: date
          nullable: true
        prioridade:
          type: integer
          format: int32
        observacoes:
          type: string
          nullable: true
        regraAcumulo:
          $ref: '#/components/schemas/RegraAcumuloRequest'
        regraResgate:
          $ref: '#/components/schemas/RegraResgateRequest'
        validade:
          $ref: '#/components/schemas/ValidadeCampanhaRequest'
      additionalProperties: false
    CriarCheckoutRequest:
      required:
        - cancelUrl
        - cnpj
        - email
        - nomeFantasia
        - planoId
        - razaoSocial
        - successUrl
      type: object
      properties:
        planoId:
          minLength: 1
          type: string
        email:
          minLength: 1
          type: string
          format: email
        nomeFantasia:
          maxLength: 200
          minLength: 1
          type: string
        razaoSocial:
          maxLength: 200
          minLength: 1
          type: string
        cnpj:
          maxLength: 14
          minLength: 14
          type: string
        telefone:
          maxLength: 20
          type: string
          nullable: true
        trial:
          type: boolean
        successUrl:
          minLength: 1
          type: string
          format: uri
        cancelUrl:
          minLength: 1
          type: string
          format: uri
      additionalProperties: false
    CriarClienteAdminRequest:
      required:
        - cpf
        - email
        - nome
        - telefone
      type: object
      properties:
        tenantId:
          type: string
          format: uuid
          nullable: true
        cpf:
          maxLength: 14
          minLength: 11
          type: string
        nome:
          maxLength: 150
          minLength: 1
          type: string
        email:
          maxLength: 200
          minLength: 1
          type: string
          format: email
        telefone:
          maxLength: 20
          minLength: 1
          type: string
        dataNascimento:
          type: string
          format: date
        cep:
          maxLength: 10
          type: string
          nullable: true
        logradouro:
          maxLength: 200
          type: string
          nullable: true
        numero:
          maxLength: 20
          type: string
          nullable: true
        complemento:
          maxLength: 100
          type: string
          nullable: true
        bairro:
          maxLength: 100
          type: string
          nullable: true
        cidade:
          maxLength: 100
          type: string
          nullable: true
        uf:
          maxLength: 2
          minLength: 2
          type: string
          nullable: true
        aceiteLgpd:
          type: boolean
      additionalProperties: false
    CriarLojaRequest:
      required:
        - cnpj
        - nome
      type: object
      properties:
        nome:
          maxLength: 200
          minLength: 1
          type: string
        cnpj:
          maxLength: 18
          minLength: 14
          type: string
        cidade:
          maxLength: 100
          type: string
          nullable: true
        uf:
          maxLength: 2
          minLength: 2
          type: string
          nullable: true
      additionalProperties: false
    CriarProdutoAdminRequest:
      required:
        - lojaId
        - nome
        - subcategoriaId
      type: object
      properties:
        lojaId:
          type: string
          format: uuid
        subcategoriaId:
          type: string
          format: uuid
        nome:
          maxLength: 200
          minLength: 1
          type: string
        descricao:
          maxLength: 2000
          type: string
          nullable: true
        precoPontos:
          maximum: 999999
          minimum: 0
          type: integer
          format: int32
        precoReais:
          maximum: 999999.99
          minimum: 0
          type: number
          format: double
        precoPontosOriginal:
          type: integer
          format: int32
          nullable: true
        precoReaisOriginal:
          type: number
          format: double
          nullable: true
        custoLojista:
          maximum: 999999.99
          minimum: 0
          type: number
          format: double
        estoque:
          type: integer
          format: int32
          nullable: true
        tipoEntrega:
          $ref: '#/components/schemas/TipoEntregaProduto'
        dataValidade:
          type: string
          format: date
          nullable: true
        destaque:
          type: boolean
        tags:
          maxLength: 500
          type: string
          nullable: true
        ordem:
          type: integer
          format: int32
      additionalProperties: false
    CriarPushCampanhaRequest:
      type: object
      properties:
        titulo:
          type: string
          nullable: true
        corpo:
          type: string
          nullable: true
        urlAcao:
          type: string
          nullable: true
        modalidade:
          type: string
          nullable: true
        clubeClienteId:
          type: string
          format: uuid
          nullable: true
        filtros:
          $ref: '#/components/schemas/PushSegmentoFiltrosRequest'
        agendadaPara:
          type: string
          format: date-time
          nullable: true
        periodicidade:
          type: string
          nullable: true
        diasSemana:
          type: array
          items:
            type: integer
            format: int32
          nullable: true
        diaMes:
          type: integer
          format: int32
          nullable: true
        horarioEnvio:
          type: string
          nullable: true
        vigenciaFim:
          type: string
          format: date-time
          nullable: true
        campanhaFidelidadeId:
          type: string
          format: uuid
          nullable: true
        providerPush:
          type: boolean
        providerWhatsapp:
          type: boolean
        providerEmail:
          type: boolean
      additionalProperties: false
    CriarSolicitacaoRequest:
      required:
        - descricao
        - titulo
      type: object
      properties:
        titulo:
          maxLength: 200
          minLength: 5
          type: string
        descricao:
          maxLength: 10000
          minLength: 10
          type: string
      additionalProperties: false
    CriarTenantRequest:
      required:
        - cnpj
        - email
        - nomeFantasia
        - planoId
        - razaoSocial
      type: object
      properties:
        planoId:
          type: string
          format: uuid
        razaoSocial:
          maxLength: 200
          minLength: 1
          type: string
        nomeFantasia:
          maxLength: 200
          minLength: 1
          type: string
        cnpj:
          maxLength: 18
          minLength: 14
          type: string
        email:
          maxLength: 200
          minLength: 1
          type: string
          format: email
        telefone:
          maxLength: 20
          type: string
          nullable: true
        dataContrato:
          type: string
          format: date
          nullable: true
        dataVencimento:
          type: string
          format: date
          nullable: true
      additionalProperties: false
    CriarUsuarioAdminRequest:
      required:
        - email
        - nome
        - senha
      type: object
      properties:
        tenantId:
          type: string
          format: uuid
          nullable: true
        nome:
          maxLength: 150
          minLength: 1
          type: string
        email:
          maxLength: 200
          minLength: 1
          type: string
          format: email
        senha:
          maxLength: 200
          minLength: 8
          type: string
        perfil:
          maxLength: 50
          type: string
          nullable: true
      additionalProperties: false
    DefinirSenhaClubeRequest:
      required:
        - novaSenha
      type: object
      properties:
        senhaAtual:
          type: string
          nullable: true
        novaSenha:
          maxLength: 25
          minLength: 6
          type: string
      additionalProperties: false
    GoogleCadastrarRequest:
      required:
        - aceiteLgpd
        - cpf
        - idToken
        - nonce
        - telefone
      type: object
      properties:
        idToken:
          minLength: 1
          type: string
        nonce:
          minLength: 1
          type: string
        cpf:
          maxLength: 11
          minLength: 11
          type: string
        telefone:
          minLength: 1
          type: string
        dataNascimento:
          type: string
          format: date
          nullable: true
        aceiteLgpd:
          type: boolean
      additionalProperties: false
    GoogleConfirmarRequest:
      required:
        - cpf
        - pin
      type: object
      properties:
        cpf:
          minLength: 1
          type: string
        pin:
          maxLength: 6
          minLength: 6
          type: string
      additionalProperties: false
    GoogleIniciarRequest:
      required:
        - cpf
        - idToken
        - nonce
      type: object
      properties:
        idToken:
          minLength: 1
          type: string
        cpf:
          minLength: 1
          type: string
        nonce:
          minLength: 1
          type: string
      additionalProperties: false
    GoogleLoginRequest:
      required:
        - idToken
        - nonce
      type: object
      properties:
        idToken:
          minLength: 1
          type: string
        nonce:
          minLength: 1
          type: string
      additionalProperties: false
    GoogleVincularRequest:
      required:
        - idToken
        - nonce
      type: object
      properties:
        idToken:
          minLength: 1
          type: string
        nonce:
          minLength: 1
          type: string
      additionalProperties: false
    GranularidadeHistorico:
      enum:
        - Dia
        - Semana
        - Mes
      type: string
    IniciarCadastroProprioRequest:
      required:
        - aceiteLgpd
        - cpf
        - dataNascimento
        - nome
        - termosVersao
      type: object
      properties:
        cpf:
          maxLength: 14
          minLength: 11
          type: string
        nome:
          maxLength: 200
          minLength: 2
          type: string
        dataNascimento:
          type: string
          format: date
        email:
          maxLength: 200
          type: string
          format: email
          nullable: true
        telefone:
          maxLength: 20
          type: string
          nullable: true
        aceiteLgpd:
          type: boolean
        termosVersao:
          maxLength: 50
          minLength: 1
          type: string
      additionalProperties: false
    LoginAdminRequest:
      required:
        - email
        - senha
      type: object
      properties:
        email:
          maxLength: 200
          minLength: 1
          type: string
          format: email
        senha:
          maxLength: 200
          minLength: 1
          type: string
      additionalProperties: false
    ObjectApiResult:
      type: object
      properties:
        sucesso:
          type: boolean
          readOnly: true
        dados:
          nullable: true
          readOnly: true
        mensagem:
          type: string
          nullable: true
          readOnly: true
        erros:
          type: array
          items:
            type: string
          nullable: true
          readOnly: true
      additionalProperties: false
    OrdenarClientesPor:
      enum:
        - Saldo
        - TotalCompras
        - TotalResgates
      type: string
    PeriodoHistorico:
      enum:
        - Sete
        - Trinta
        - NoventaDias
        - SeiseMeses
        - UmAno
      type: string
    PlanoPublicoResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
        nome:
          type: string
          nullable: true
        descricao:
          type: string
          nullable: true
        limiteLojas:
          type: integer
          format: int32
          nullable: true
        limiteCampanhas:
          type: integer
          format: int32
          nullable: true
        limiteUsuarios:
          type: integer
          format: int32
          nullable: true
        precoMensal:
          type: number
          format: double
        precoPromocional:
          type: number
          format: double
          nullable: true
      additionalProperties: false
    PlanoPublicoResponseIReadOnlyListApiResult:
      type: object
      properties:
        sucesso:
          type: boolean
          readOnly: true
        dados:
          type: array
          items:
            $ref: '#/components/schemas/PlanoPublicoResponse'
          nullable: true
          readOnly: true
        mensagem:
          type: string
          nullable: true
          readOnly: true
        erros:
          type: array
          items:
            type: string
          nullable: true
          readOnly: true
      additionalProperties: false
    PrimeiroAcessoRequest:
      required:
        - confirmarSenha
        - novaSenha
        - token
      type: object
      properties:
        token:
          minLength: 1
          type: string
        novaSenha:
          maxLength: 200
          minLength: 8
          type: string
        confirmarSenha:
          minLength: 1
          type: string
      additionalProperties: false
    PushSegmentoFiltrosRequest:
      type: object
      properties:
        diasInativo:
          type: integer
          format: int32
          nullable: true
        saldoMinimoReais:
          type: number
          format: double
          nullable: true
        saldoMinimoPoints:
          type: integer
          format: int32
          nullable: true
        nuncaResgatou:
          type: boolean
          nullable: true
        lojaId:
          type: string
          format: uuid
          nullable: true
        cadastradoApos:
          type: string
          format: date
          nullable: true
      additionalProperties: false
    RecuperarSenhaRequest:
      required:
        - email
      type: object
      properties:
        email:
          maxLength: 200
          minLength: 1
          type: string
          format: email
      additionalProperties: false
    RedefinirSenhaAdminRequest:
      required:
        - novaSenha
      type: object
      properties:
        novaSenha:
          maxLength: 200
          minLength: 8
          type: string
      additionalProperties: false
    ReenviarPinCadastroRequest:
      required:
        - cpf
      type: object
      properties:
        cpf:
          maxLength: 14
          minLength: 11
          type: string
      additionalProperties: false
    RegistrarDispositivoRequest:
      type: object
      properties:
        fcmToken:
          type: string
          nullable: true
        plataforma:
          type: string
          nullable: true
      additionalProperties: false
    RegraAcumuloRequest:
      type: object
      properties:
        tipoRegra:
          type: string
          nullable: true
        valorBase:
          type: number
          format: double
          nullable: true
        pontosGerados:
          type: integer
          format: int32
          nullable: true
        percentualCashback:
          type: number
          format: double
          nullable: true
        valorFixoCashback:
          type: number
          format: double
          nullable: true
        pontosPorCompra:
          type: integer
          format: int32
          nullable: true
        cashbackPorCompra:
          type: number
          format: double
          nullable: true
        compraMinima:
          type: number
          format: double
        limiteMaximoVenda:
          type: number
          format: double
          nullable: true
      additionalProperties: false
    RegraResgateRequest:
      type: object
      properties:
        tipoResgate:
          type: string
          nullable: true
        conversaoPontos:
          type: number
          format: double
          nullable: true
        vendaMinima:
          type: number
          format: double
          nullable: true
        pontosMinimos:
          type: integer
          format: int32
          nullable: true
        cashbackMinimo:
          type: number
          format: double
          nullable: true
        limiteDescontoVenda:
          type: number
          format: double
          nullable: true
        permiteUsoParcial:
          type: boolean
        permiteCashbackEmResgate:
          type: boolean
        permiteDescontoSobreCashbackGerado:
          type: boolean
      additionalProperties: false
    ResgateAdminRequest:
      required:
        - cnpjLoja
        - cpfCliente
        - pontosResgatados
        - produtoDescricao
      type: object
      properties:
        cpfCliente:
          maxLength: 14
          minLength: 11
          type: string
        cnpjLoja:
          maxLength: 18
          minLength: 14
          type: string
        produtoDescricao:
          maxLength: 500
          minLength: 1
          type: string
        pontosResgatados:
          maximum: 10000000
          minimum: 1
          type: integer
          format: int32
        observacao:
          maxLength: 500
          type: string
          nullable: true
      additionalProperties: false
    ResgatePdvRequest:
      required:
        - cnpjLoja
        - cpfCliente
        - tipoBeneficio
      type: object
      properties:
        cnpjLoja:
          maxLength: 18
          minLength: 14
          type: string
        cpfCliente:
          maxLength: 14
          minLength: 11
          type: string
        tipoBeneficio:
          maxLength: 50
          minLength: 1
          type: string
        valorResgate:
          type: number
          format: double
          nullable: true
        pontosResgate:
          type: integer
          format: int32
          nullable: true
        documentoExterno:
          maxLength: 100
          type: string
          nullable: true
        observacao:
          maxLength: 500
          type: string
          nullable: true
        descricaoTroca:
          maxLength: 200
          type: string
          nullable: true
      additionalProperties: false
    SolicitarConfirmacaoEmailRequest:
      required:
        - novoEmail
      type: object
      properties:
        novoEmail:
          maxLength: 200
          minLength: 1
          type: string
          format: email
      additionalProperties: false
    TipoEntregaProduto:
      enum:
        - Retirada
        - Digital
        - Ambos
      type: string
    ValidadeCampanhaRequest:
      type: object
      properties:
        tipoValidade:
          type: string
          nullable: true
        dias:
          type: integer
          format: int32
          nullable: true
        dataFixa:
          type: string
          format: date
          nullable: true
      additionalProperties: false
    VendaManualRequest:
      required:
        - cnpjLoja
        - cpfCliente
        - valorVenda
      type: object
      properties:
        cpfCliente:
          maxLength: 14
          minLength: 11
          type: string
        cnpjLoja:
          maxLength: 18
          minLength: 14
          type: string
        valorVenda:
          maximum: 1.7976931348623157e+308
          minimum: 0.01
          type: number
          format: double
        observacao:
          maxLength: 500
          type: string
          nullable: true
        usarCashbackDisponivel:
          type: boolean
        usarCashbackGerado:
          type: boolean
      additionalProperties: false
    VendaPdvRequest:
      required:
        - cnpjLoja
        - cpfCliente
      type: object
      properties:
        cnpjLoja:
          maxLength: 18
          minLength: 14
          type: string
        cpfCliente:
          maxLength: 14
          minLength: 11
          type: string
        valorVenda:
          maximum: 1.7976931348623157e+308
          minimum: 0.01
          type: number
          format: double
        documentoExterno:
          maxLength: 100
          type: string
          nullable: true
        observacao:
          maxLength: 500
          type: string
          nullable: true
        cliente:
          $ref: '#/components/schemas/ClienteAutoRequest'
        usarCashbackDisponivel:
          type: boolean
        usarCashbackGerado:
          type: boolean
      additionalProperties: false
    VendaPreviewRequest:
      required:
        - cnpjLoja
      type: object
      properties:
        cnpjLoja:
          maxLength: 18
          minLength: 14
          type: string
        valorVenda:
          maximum: 1.7976931348623157e+308
          minimum: 0.01
          type: number
          format: double
      additionalProperties: false
    VerificarDisponibilidadeRequest:
      required:
        - cnpj
        - email
      type: object
      properties:
        cnpj:
          minLength: 1
          pattern: ^\d{14}$
          type: string
        email:
          maxLength: 150
          minLength: 1
          type: string
          format: email
      additionalProperties: false
    WhatsAppTenantPinRequest:
      type: object
      properties:
        pin:
          type: string
          nullable: true
      additionalProperties: false
    WhatsAppToggleRequest:
      type: object
      properties:
        ativar:
          type: boolean
      additionalProperties: false
  securitySchemes:
    Bearer:
      type: http
      description: 'Informe o token JWT. Ex: Bearer {seu_token}'
      scheme: bearer
      bearerFormat: JWT
    ApiKey:
      type: apiKey
      description: Token do tenant fornecido na contratação do EloFiel.
      name: X-Api-Key
      in: header
tags:
  - name: AdminDispositivo
  - name: AnalyticsAdmin
  - name: Assinatura
  - name: AuthAdmin
  - name: CampanhaAdmin
  - name: CampanhaLancamento
  - name: ClienteAdmin
  - name: ClienteBusca
  - name: ClienteIdentificar
  - name: ClientePdv
  - name: Clube
  - name: ClubeAuth
  - name: ClubeDispositivo
  - name: Cnpj
  - name: Configuracao
  - name: Contato
  - name: LojaAdmin
  - name: MarketplaceAnalyticsAdmin
  - name: MarketplaceProdutoAdmin
  - name: MarketplaceUploadAdmin
  - name: NotificacoesAdmin
  - name: Plano
  - name: PlanoAdmin
  - name: PushCampanhaAdmin
  - name: Resgate
  - name: ResgateAdmin
  - name: Solicitacoes
  - name: StripeWebhook
  - name: TenantAdmin
  - name: UsuarioAdmin
  - name: Venda
  - name: VendaManual
  - name: WhatsAppTenant
