openapi: 3.0.3
info:
  title: Genius Returns - API reference
  version: 1.0.0
  description: Documentação e referências da api Genius Retuns.
  x-logo:
    url: https://front.geniusreturns.com.br/assets/logo-genius.png
    altText: Genius Returns
    backgroundColor: '#1C326F'
    href: https://apidocs.geniusreturns.com.br
servers:
  - url: https://integration.geniusreturns.com.br
    description: Produção
  - url: https://integration-qa.geniusreturns.com.br
    description: QA
tags:
  - name: Segurança
    description: Operações de autenticação e segurança (obtenção do Bearer JWT).
  - name: Processos
    description: >-
      Operações para obter, listar, filtrar e criar processos de troca ou
      devolução.
  - name: Notas de devolução
    description: Operações com notas fiscais de devolução.
  - name: Produtos
    description: >-
      Ações relativas aos produtos constantes em uma solicitação de troca ou
      devolução.
paths:
  /v1/pvt/seguranca/autenticar:
    post:
      tags:
        - Segurança
      summary: Autenticar
      description: >-
        Autentica a integração usando cabeçalhos `GeniusKey` e `GeniusToken` e
        retorna um JWT. O token deve ser enviado nos endpoints protegidos usando
        o header `Authorization: Bearer {token}`.
      operationId: Autenticar
      responses:
        '200':
          description: Autenticado com sucesso.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthTicketResponse'
              examples:
                success:
                  summary: Exemplo de sucesso
                  value:
                    ticket:
                      bearer: >-
                        eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6IkRlbmlzIiwiX0NsaWVudGVJZCI6IjIiLCJuYW1laWQiOiIyIiwicm9sZSI6ImNsaWVudCIsIm5iZiI6MTc1NTUxNzMyNSwiZXhwIjoxNzU1NTE4NTI1LCJpYXQiOjE3NTU1MTczMjV9.4_95wpCNfI4SUPKeT64A761hl-9Pd0AWrrvLGh2jM4I
                      data: '2025-08-18T08:42:05.6720641-03:00'
                      expirarEm: '2025-08-18T09:02:05.6721142-03:00'
        '401':
          description: Não autorizado.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
              examples:
                unauthorized:
                  summary: Exemplo de 401
                  value:
                    type: https://tools.ietf.org/html/rfc7235#section-3.1
                    title: Unauthorized
                    status: 401
                    traceId: 00-74983310ac126ebb6b3e8c115e0f462b-18bb9cfa8fbb182d-00
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl --location --request POST
            'https://integration.geniusreturns.com.br/v1/pvt/seguranca/autenticar'                
            --header 'GeniusKey: denis@denis.com.br'                 --header
            'GeniusToken: 1234'
      parameters:
        - name: GeniusKey
          in: header
          required: true
          description: Chave da integração fornecida pela Genius Returns.
          schema:
            type: string
        - name: GeniusToken
          in: header
          required: true
          description: Token da integração fornecido pela Genius Returns.
          schema:
            type: string
  /v3/pvt/processo/{id-processo}:
    get:
      tags:
        - Processos
      summary: Obtém um processo por ID
      operationId: GetProcessoById
      security:
        - BearerAuth: []
      parameters:
        - name: id-processo
          in: path
          required: true
          schema:
            type: string
          description: Identificador do processo.
      responses:
        '200':
          description: Sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProcessoGetResponse'
              examples:
                exemploSucesso:
                  value:
                    dataHoraResposta: '2025-08-16T00:59:29.9238822Z'
                    registros: 1
                    httpStatus: '200'
                    erroCodigo: null
                    erroDescricao: null
                    erroDetalhado: null
                    erroTipo: null
                    entidade:
                      tipo: 0
                      tipoFreteEstorno: 0
                      valorDiferenca: -20
                      mantenhaOItem: false
                      status: 1
                      numero: GR-000123
                      data: '2025-08-10T14:22:00Z'
                      tipoServicoLogistico: 0
                      tipoServicoLogisticoDescricao: Postagem em agência
                      marketplace: false
                      blocklist: false
                      valeCompra:
                        instanciaId: 123
                        definicaoId: 456
                        valor: 50
                        valorManual: null
                        valorPorcentagem: 0
                        data: '2025-08-12T10:00:00Z'
                        expirarEm: '2025-09-12T10:00:00Z'
                        redemptionToken: ABCDEF
                        gerado: true
                        DataGeracao: '2025-08-12T10:00:00Z'
                      notasDevolucao:
                        - numero: '12345'
                          serie: '1'
                          chave: '35190800000000000000550010000012345678901234'
                          xml: <xml>...</xml>
                          danfeLink: https://exemplo/danfe/12345
                          data: '2025-08-12T10:00:00Z'
                          arquivo: NFe_12345.xml
        '400':
          description: Requisição inválida
        '401':
          description: Não autorizado
        '404':
          description: Não encontrado
        '500':
          description: Erro interno
  /v3/pvt/Fiscal/{processoId}:
    post:
      tags:
        - Notas de devolução
      summary: Adiciona uma nota fiscal de devolução
      description: >-
        Adiciona uma nota fiscal de devolução ao processo informado. Retorna
        BadRequest caso o processo não seja encontrado ou já exista uma nota com
        o mesmo número.
      operationId: AddNotaDevolucao
      security:
        - BearerAuth: []
      parameters:
        - name: processoId
          in: path
          required: true
          schema:
            type: integer
            format: int64
          description: Id do processo relacionado à nota fiscal de devolução
      requestBody:
        required: true
        description: Dados da nota fiscal de devolução
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReturnNoteModel'
      responses:
        '200':
          description: Sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotaDevolucaoAddResponse'
              examples:
                exemploSucesso:
                  value:
                    dataHoraResposta: '2025-08-16T01:00:00Z'
                    entidade:
                      numero: '12345'
                      serie: '1'
                      chave: '35250213513325004530550010005043041184240508'
                      xml: <xml>...</xml>
                      danfeLink: ''
                      data: '2025-08-15T12:00:00Z'
                      arquivo: NFe_12345.xml
                      id: 1000
                      processoId: 12493
                    registros: 1
                    httpStatus: '200'
                    erroCodigo: null
                    erroDescricao: null
                    erroDetalhado: null
                    erroTipo: null
        '400':
          description: Requisição inválida
        '401':
          description: Não autorizado
        '404':
          description: Não encontrado
        '500':
          description: Erro interno
  /v3/pvt/Fiscal/{processoId}/{notaFiscalId}:
    put:
      tags:
        - Notas de devolução
      summary: Atualiza uma nota fiscal de devolução
      description: >-
        Atualiza uma nota fiscal de devolução. Retorna BadRequest caso não sejam
        encontrados o processo ou a nota, ou já exista outra nota com o mesmo
        número. A nota atualizada será automaticamente ativada, caso esteja
        inativa.
      operationId: UpdateNotaDevolucao
      security:
        - BearerAuth: []
      parameters:
        - name: processoId
          in: path
          required: true
          schema:
            type: integer
            format: int64
          description: Id do processo relacionado à nota fiscal de devolução
        - name: notaFiscalId
          in: path
          required: true
          schema:
            type: integer
            format: int64
          description: Id da nota de devolução que será atualizada
      requestBody:
        required: true
        description: Dados atualizados da nota fiscal de devolução
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReturnNoteModel'
      responses:
        '200':
          description: Sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotaDevolucaoUpdateResponse'
              examples:
                exemploSucesso:
                  value:
                    dataHoraResposta: '2025-08-16T02:00:00Z'
                    entidade:
                      numero: '12345'
                      serie: '1'
                      chave: '35250213513325004530550010005043041184240508'
                      xml: <xml>...</xml>
                      danfeLink: ''
                      data: '2025-08-15T12:00:00Z'
                      arquivo: NFe_12345.xml
                      id: 1000
                      processoId: 12493
                    registros: 1
                    httpStatus: '200'
                    erroCodigo: null
                    erroDescricao: null
                    erroDetalhado: null
                    erroTipo: null
        '400':
          description: Requisição inválida
        '401':
          description: Não autorizado
        '404':
          description: Não encontrado
        '500':
          description: Erro interno
    patch:
      tags:
        - Notas de devolução
      summary: Inativa uma nota fiscal de devolução
      description: >-
        Inativa uma nota fiscal de devolução. Retorna BadRequest caso o processo
        ou a nota não sejam encontrados pelos identificadores informados.
      operationId: InativarNotaDevolucao
      security:
        - BearerAuth: []
      parameters:
        - name: processoId
          in: path
          required: true
          schema:
            type: integer
            format: int64
          description: Id do processo relacionado à nota fiscal de devolução
        - name: notaFiscalId
          in: path
          required: true
          schema:
            type: integer
            format: int64
          description: Id da nota de devolução que será atualizada
      responses:
        '200':
          description: Sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotaDevolucaoInativarResponse'
              examples:
                exemploSucesso:
                  value:
                    dataHoraResposta: '2025-08-16T01:10:00Z'
                    entidade:
                      numero: '12345'
                      serie: '1'
                      chave: '35250213513325004530550010005043041184240508'
                      xml: <xml>...</xml>
                      danfeLink: ''
                      data: '2025-08-15T12:00:00Z'
                      arquivo: NFe_12345.xml
                      id: 1000
                      processoId: 12493
                    registros: 1
                    httpStatus: '200'
                    erroCodigo: null
                    erroDescricao: null
                    erroDetalhado: null
                    erroTipo: null
        '400':
          description: Requisição inválida
        '401':
          description: Não autorizado
        '404':
          description: Não encontrado
        '500':
          description: Erro interno
  /v3/pvt/fiscal:
    get:
      tags:
        - Notas de devolução
      summary: Lista as notas fiscais de devolução por processo
      operationId: ListarNotasDevolucaoPorProcesso
      security:
        - BearerAuth: []
      parameters:
        - name: processoId
          in: query
          required: true
          schema:
            type: integer
            format: int64
          description: Id do processo relacionado às notas fiscais de devolução
        - name: pageNumber
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
          description: Número da página (inicia em 1).
        - name: pageSize
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
          description: Quantidade de itens por página.
      responses:
        '200':
          description: Lista retornada com sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotaDevolucaoListarResponse'
        '401':
          description: Não autorizado
        '404':
          description: Não encontrado
  /v3/pvt/fiscal/{id}:
    get:
      tags:
        - Notas de devolução
      summary: Obtém uma nota de devolução por ID
      operationId: GetNotaDevolucaoPorId
      security:
        - BearerAuth: []
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
            format: int64
          description: Id da nota fiscal de devolução
      responses:
        '200':
          description: Sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotaDevolucaoGetResponse'
        '401':
          description: Não autorizado
        '404':
          description: Não encontrado
  /v3/pvt/processo:
    get:
      tags:
        - Processos
      summary: Listar processos
      description: >-
        Retorna uma lista paginada de processos conforme filtros informados.
        **Observação:** os filtros também podem ser enviados no corpo (JSON),
        conforme exemplo de curl, caso seu cliente HTTP suporte body em
        requisições GET.
      operationId: ListarProcessos
      security:
        - BearerAuth: []
      parameters:
        - name: pageNumber
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
          description: Número da página (inicia em 1).
        - name: pageSize
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
          description: Quantidade de itens por página.
        - name: de
          in: query
          required: false
          schema:
            type: string
            format: date
          description: Data inicial (YYYY-MM-DD).
        - name: ate
          in: query
          required: false
          schema:
            type: string
            format: date
          description: Data final (YYYY-MM-DD).
        - name: status
          in: query
          required: false
          schema:
            type: integer
          description: >-
            Status do processo (Todos = -1, Pendente = 1, Concluido = 2,
            Cancelado = 3).
        - name: textoBusca
          in: query
          required: false
          schema:
            type: string
          description: Número do pedido, nome/email do cliente ou nº de autorização.
        - name: lojaVirtualId
          in: query
          required: false
          schema:
            type: integer
            format: int64
          description: Id da loja virtual (sub account).
        - name: orderNumber
          in: query
          required: false
          schema:
            type: string
          description: Número do pedido original na loja virtual.
        - name: estagioLogistico
          in: query
          required: false
          schema:
            type: integer
          description: Estágio logístico do processo (EProcessLogisticStage).
        - name: estagioFinanceiro
          in: query
          required: false
          schema:
            type: integer
          description: Estágio financeiro do processo (EProcessFinancialStage).
        - name: estagioRating
          in: query
          required: false
          schema:
            type: integer
          description: Estágio rating do processo (EProcessRatingStage).
      responses:
        '200':
          description: Lista de processos retornada com sucesso.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProcessosListarResponse'
        '401':
          description: Não autorizado.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl --location --request GET
            'https://integration.geniusreturns.com.br/v3/pvt/processo/listar?pageNumber=1&pageSize=10'
            \

            --header 'Authorization: Bearer
            eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' \

            --header 'Content-Type: application/json' \

            --data '{
                "de": "2025-05-01",
                "ate": "2025-05-28",
                "textoBusca": "12372-52025",
                "estagioLogistico": 3
            }'
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CarregarProcessosRequest'
            examples:
              filtros:
                value:
                  de: '2025-05-01'
                  ate: '2025-05-28'
                  textoBusca: 12372-52025
                  estagioLogistico: 3
  /v3/pvt/processo/integrar/fluxo:
    post:
      tags:
        - Processos
      summary: Integração do pedido ao fluxo de devolução
      description: >-
        Endpoint utilizado para integrar um pedido da loja virtual à plataforma
        Genius Returns. Um link será disponibilizado pela API e poderá ser
        utilizado para redirecionar o usuário solicitante à interface Genius
        Returns de solicitação de troca ou devolução, diretamente ao estágio de
        seleção itens.
      operationId: IntegrateFlow
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IntegrateRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponseV2_string'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponseV2_string'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponseV2_string'
      security:
        - BearerAuth: []
  /v3/pvt/Produto/rating:
    post:
      tags:
        - Produtos
      summary: >-
        Informar o rating de um ou mais produtos de uma solicitação de troca ou
        devolução
      operationId: InformarRatingProduto
      security:
        - BearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RatingRequestModel'
            examples:
              exemploPerfeitoEstado:
                summary: Rating de item em perfeito estado
                value:
                  processoId: 12345
                  executarFluxoReembolso: false
                  ratingData:
                    - itemId: SKU-001
                      itemNome: Camiseta Polo Azul
                      ratingValor: 5
                      comentario: Produto em perfeito estado
                      estadoItem: 1
                      naoEstornar: false
                      naoEstornarQtd: 0
                      notificarClienteRating: true
                      qtd: 1
              exemploNaoRecebido:
                summary: Rating de item não recebido
                value:
                  processoId: 12345
                  executarFluxoReembolso: true
                  ratingData:
                    - itemId: SKU-002
                      itemNome: Tênis Esportivo
                      ratingValor: 1
                      comentario: Item não chegou junto ao pacote
                      estadoItem: 4
                      naoEstornar: true
                      naoEstornarQtd: 1
                      notificarClienteRating: false
                      qtd: 1
      responses:
        '200':
          description: Rating registrado com sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponseV2_string'
        '400':
          description: Requisição inválida
        '401':
          description: Não autorizado
        '500':
          description: Erro interno
  /v1/pvt/processo/enviar-solicitacao:
    post:
      tags:
        - Processos
      summary: Importa uma solicitação de troca ou devolução
      operationId: Processos_EnviarSolicitacao
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProcessoSolicitacaoParametros'
            examples:
              exemplo-minimo:
                summary: Solicitação simples com 1 SKU
                value:
                  Processo:
                    ClienteIP: 200.100.50.25
                    Marketplace: false
                    NotificarNovaSolicitacao: true
                    Pedido:
                      PedidoId: '123456'
                      Data: '2025-09-01T12:00:00Z'
                      Numero: PED-0001
                      Valor: 199.9
                      ValorFrete: 19.9
                      ValorDesconto: 0
                      ClienteEcommId: C123
                      ClienteNome: Maria Silva
                      ClienteEmail: maria@email.com
                      ClienteDocumento: '12345678901'
                      ClienteTelefone: '1130000000'
                      ClienteCelular: '11990000000'
                      Parcelas: 1
                      QuantidadeItens: 1
                      PossuiValeCompra: false
                      ClienteEndereco:
                        Logradouro: Rua A
                        Numero: '100'
                        Bairro: Centro
                        Cidade: São Paulo
                        Estado: SP
                        CEP: 01000-000
                      Skus:
                        - SkuId: SKU-1
                          SkuNome: Camiseta Preta M
                          ProdutoId: P-1
                          ProdutoNome: Camiseta Preta
                          Preco: 199.9
                          PrecoDeLista: 199.9
                          Estoque: 10
                          Quantidade: 1
                          QuantidadeTotal: 1
                          TipoProcesso: 0
                          Motivo:
                            Descricao: Ficou grande
                            NaoIncluirFreteNoValorADevolver: false
      responses:
        '200':
          description: >-
            Objeto ProcessoDTO que representa a solicitação de troca ou
            devolução.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse_ProcessoDTO'
        '400':
          description: Requisição inválida.
        '401':
          description: Não autorizado.
        '500':
          description: Erro inesperado no servidor.
components:
  securitySchemes:
    GeniusKey:
      type: apiKey
      in: header
      name: GeniusKey
      description: Chave da integração fornecida pela Genius Returns.
    GeniusToken:
      type: apiKey
      in: header
      name: GeniusToken
      description: Token da integração fornecido pela Genius Returns.
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Use o valor retornado em `ticket.bearer` como Bearer Token nos demais
        endpoints.
  schemas:
    ProcessoGetResponse:
      type: object
      description: Representa uma resposta da API Genius Returns
      required:
        - Date
        - HttpStatus
      properties:
        Date:
          type: string
          format: date-time
          description: Data e hora da resposta expressa em UTC
        Result:
          $ref: '#/components/schemas/ProcessModel'
          nullable: true
          description: Entidade relacionada
        Records:
          type: integer
          description: Registros retornados
        HttpStatus:
          type: string
          description: Status http da requisição
        Err:
          $ref: '#/components/schemas/ApiResponseErro'
          nullable: true
          description: Conterá detalhes de um eventual erro
    ProcessModel:
      type: object
      description: Objeto principal do processo
      properties:
        id:
          type: integer
          format: int64
        tipo:
          type: integer
          description: 'Tipo de Processo: Devolucao = 0, Troca = 1'
          enum:
            - 0
            - 1
        tipoFreteEstorno:
          type: integer
          description: >-
            Tipo de estorno do frete (EPedidoItemEstorno): 0 ValeCompras, 1
            Estorno, 2 Estorno automático
          enum:
            - 0
            - 1
            - 2
        valorDiferenca:
          type: number
          format: double
          description: >-
            0: não há diferença; >0: valor a receber do usuário; <0: valor a
            pagar ao usuário
        mantenhaOItem:
          type: boolean
          nullable: true
          description: >-
            True quando a solicitação faz jus à funcionalidade KeepTheItem; do
            contrário, False
        status:
          type: integer
          description: >-
            Indefinido = -1, Iniciado = 0, Pendente = 1, Concluido = 2,
            Cancelado = 3
          enum:
            - -1
            - 0
            - 1
            - 2
            - 3
        numero:
          type: string
          description: Número da solicitação
        data:
          type: string
          format: date-time
          description: Data da solicitação
        dadosBancariosDto:
          $ref: '#/components/schemas/DadosBancariosDTO'
        notaFiscalDevolucao:
          type: object
          nullable: true
          description: Nota fiscal de devolução
        pedido:
          $ref: '#/components/schemas/PedidoModel'
        lojaVirtual:
          $ref: '#/components/schemas/LojaVirtualModel'
        valeCompra:
          $ref: '#/components/schemas/ValeCompraModel'
        autorizacoesLR:
          type: array
          description: Coleção de autorizações de logística reversa
          items:
            $ref: '#/components/schemas/AutorizacaoLogisticaReversaModel'
        lojaFisica:
          $ref: '#/components/schemas/LojaFisicaModel'
        transportadora:
          $ref: '#/components/schemas/TransportadoraModel'
        tipoServicoLogistico:
          type: integer
          description: >-
            Tipo de remessa reversa (EDTipoEntregaReversa): -1 Indefinido, 0
            PostagemEmAgencia, 1 ColetaSimples, 2 ColetaSimultanea, 3 Expressa,
            4 PostoDeColeta
          enum:
            - -1
            - 0
            - 1
            - 2
            - 3
            - 4
        tipoServicoLogisticoDescricao:
          type: string
          description: Descrição do tipo de logística reversa
        locker:
          $ref: '#/components/schemas/LockerModel'
        valorLogisticaPremium:
          type: number
          nullable: true
          description: Quando logística premium fornecida, valor a ser pago
        agente:
          $ref: '#/components/schemas/AgenteModel'
          description: Dados do agente quando criado via SAC
        marketplace:
          type: boolean
          description: True se marketplace
        blocklist:
          type: boolean
          description: True se em Blocklist
        cashback:
          $ref: '#/components/schemas/CashbackDataModel'
        progress:
          $ref: '#/components/schemas/ProcessProgressModel'
        notasDevolucao:
          type: array
          description: Coleção de notas de devolução associadas ao processo
          items:
            $ref: '#/components/schemas/ReturnNoteModel'
    ReturnNoteModel:
      type: object
      description: Representa uma nota de devolução
      properties:
        numero:
          type: string
          description: Número da nota fiscal
        serie:
          type: string
          description: Série da nota fiscal
        chave:
          type: string
          description: Chave de acesso da nota fiscal
        xml:
          type: string
          description: XML da nota fiscal
        danfeLink:
          type: string
          description: Link do DANFE
        data:
          type: string
          format: date-time
          nullable: true
          description: Data da nota fiscal
        arquivo:
          type: string
          description: Arquivo da nota fiscal
    PedidoModel:
      type: object
      properties:
        id:
          type: integer
          format: int64
        numero:
          type: string
          description: Número do pedido
        pedidoId:
          type: string
          description: Id do pedido no ecommerce
        data:
          type: string
          format: date-time
          description: Data/hora do pedido
        dataEntrega:
          type: string
          format: date-time
          nullable: true
          description: Data em que os pacotes foram entregues
        valor:
          type: number
          format: double
          description: Valor do pedido
        valorFrete:
          type: number
          format: double
          description: Valor do frete
        valorDesconto:
          type: number
          format: double
          description: Valor de desconto
        clienteNome:
          type: string
          description: Nome do cliente
        clienteEmail:
          type: string
          description: Email do cliente
        clienteTelefone:
          type: string
          description: Telefone do cliente
        clienteCelular:
          type: string
          description: Celular do cliente
        parcelas:
          type: integer
          description: Número de parcelas
        status:
          type: string
          nullable: true
          description: Status do pedido
        clienteEndereco:
          $ref: '#/components/schemas/EnderecoDTO'
        skus:
          type: array
          description: Itens do pedido
          items:
            $ref: '#/components/schemas/EcommSkuModel'
        transacoes:
          type: array
          description: Transações de pagamento do pedido
          items:
            $ref: '#/components/schemas/TransacaoEcommDTO'
        notaNumero:
          type: string
          nullable: true
          description: Número da nota fiscal
        notaValor:
          type: number
          format: double
          nullable: true
          description: Valor da nota fiscal
        notaChave:
          type: string
          nullable: true
          description: Chave da nota fiscal
        notaSerie:
          type: string
          nullable: true
          description: Série da nota fiscal
        notaData:
          type: string
          format: date-time
          nullable: true
          description: Data da nota fiscal
    EcommSkuModel:
      type: object
      properties:
        id:
          type: integer
          format: int64
        skuId:
          type: string
          description: Id do SKU na loja virtual
        skuNome:
          type: string
          description: Nome do SKU
        skuRef:
          type: string
          description: Referência do SKU
        skuSellerReference:
          type: string
          description: Referência do SKU no seller
        produtoId:
          type: string
          description: Id do produto no ecommerce
        produtoNome:
          type: string
          description: Nome do produto
        productRef:
          type: string
        preco:
          type: number
          format: double
          description: Preço do SKU praticado no pedido
        quantidade:
          type: integer
          description: Quantidade do SKU na solicitação
        quantidadeTotal:
          type: integer
          description: Quantidade do SKU no pedido
        imagemUrl:
          type: string
          description: URL da imagem do SKU
        sellerId:
          type: string
          description: Id do vendedor (marketplace)
        docaId:
          type: string
          description: Id da doca
        estoqueId:
          type: string
          description: Id do estoque
        tipoProcesso:
          type: integer
          enum:
            - 0
            - 1
          description: 0=Devolução, 1=Troca
        tipoDescricao:
          type: string
          readOnly: true
          description: Descrição derivada de tipoProcesso
        motivo:
          $ref: '#/components/schemas/MotivoModel'
        peso:
          type: number
          format: double
          description: Peso (g)
        altura:
          type: number
          format: double
          description: Altura (cm)
        largura:
          type: number
          format: double
          description: Largura (cm)
        comprimento:
          type: number
          format: double
          description: Comprimento (cm)
        ratingDate:
          type: string
          format: date-time
          nullable: true
          description: Data do rating
        estadoDoItem:
          type: integer
          description: >-
            Estado do item: 0 Indefinido, 1 PerfeitoEstado, 2 PequenaAvaria, 3
            NaoPodeSerAProveitado, 4 NaoRecebido
          enum:
            - 0
            - 1
            - 2
            - 3
            - 4
        skusParaTroca:
          type: array
          description: SKUs para troca, quando houver
          items:
            $ref: '#/components/schemas/EcommSkuModel'
        packageDescription:
          type: string
          nullable: true
          description: 'Descrição do pacote (ex.: VTEX packages.description)'
        invoiceKey:
          type: string
          nullable: true
          description: Chave da NF vinculada ao item
    MotivoModel:
      type: object
      properties:
        id:
          type: integer
          format: int64
          nullable: true
        descricao:
          type: string
          description: Descrição do motivo
    TransacaoEcommDTO:
      type: object
      properties:
        id:
          type: integer
          format: int64
          nullable: true
        tid:
          type: string
          description: >-
            Id da transação (Se vtex, obter o valor de
            transactions[].transactionId)
        ativa:
          type: boolean
          description: Transação ativa?
        sellerNomeId:
          type: string
          description: >-
            Nome identificador do seller (Se vtex, obter o valor de
            transactions[].merchantName)
        pagamentos:
          type: array
          description: Coleção de pagamentos da transação
          items:
            $ref: '#/components/schemas/PagamentoEcommDTO'
        data:
          type: string
          format: date-time
          nullable: true
          description: Data do registro da transação
        verificado:
          type: boolean
          nullable: true
          description: Transação verificada em um estorno
        acaoManualRequerida:
          type: boolean
          description: True se o estorno automático falhou e exige ação manual
    PagamentoEcommDTO:
      type: object
      properties:
        id:
          type: integer
          format: int64
          nullable: true
        pId:
          type: string
          nullable: true
          description: >-
            Id do pagamento (Se vtex, obter o valor de
            transactions[].payments[].id)
        tipoPagamentoId:
          type: string
          description: >-
            Id do tipo de pagamento (Se vtex, obter o valor de
            transactions[].payments[].paymentSystem)
        tipoPagamentoDescricao:
          type: string
          description: >-
            Descrição do tipo de pagamento (Se vtex, obter o valor de
            transactions[].payments[].paymentSystemName)
        valor:
          type: number
          format: double
          description: Valor do pagamento
        parcelamento:
          type: integer
          description: Número de parcelas
        valorReferencia:
          type: number
          format: double
          description: Valor de referência
        valeCompraUtilizadoId:
          type: string
          nullable: true
          description: Se usado, id do vale-compra
        valeCompraUtilizadoNome:
          type: string
          nullable: true
          description: Se usado, nome do vale-compra
        giftCardProvider:
          type: string
          nullable: true
          description: 'Meio de vale/ gift-card (ex.: GiftcardLivelo)'
        tid:
          type: string
          nullable: true
          description: >-
            TID do adquirente (Se vtex, obter o valor de
            transactions[].payments[].connectorResponses.id)
        nsu:
          type: string
          nullable: true
          description: >-
            NSU do adquirente (Se vtex, obter o valor de
            transactions[].payments[].connectorResponses.nsu)
        adquirente:
          type: string
          nullable: true
          description: >-
            Adquirente (Se vtex, obter o valor de
            transactions[].payments[].connectorResponses.acquirer)
        grupo:
          type: string
          description: >-
            Grupo do meio de pagamento (Se vtex, obter o valor de
            transactions[].payments[].group - ex.: instantPayment | creditCard |
            giftCard | cashback)
        descricao:
          type: string
          readOnly: true
          description: Descrição calculada do pagamento
    DadosBancariosDTO:
      type: object
      description: >-
        Dados bancários do cliente para reembolso quando não for cartão de
        crédito
      properties:
        id:
          type: integer
          format: int64
          description: Identificador do DTO
        nomeTitular:
          type: string
          nullable: true
          description: Nome do titular
        cpfTitular:
          type: string
          nullable: true
          description: CPF do titular
        tipo:
          type: integer
          description: 0 ContaBancaria, 1 PIX, 2 Automático, 3 Estorno Manual
        tipoChavePix:
          type: integer
          description: 0 Aleatória, 1 CPF_CNPJ, 2 Celular, 3 Email
        tipoChavePixDesc:
          type: string
          readOnly: true
          description: Descrição da chave Pix fornecida
        tipoReembolsoDesc:
          type: string
          readOnly: true
          description: Descrição do tipo de reembolso
        chavePix:
          type: string
          nullable: true
          description: Chave Pix
        banco:
          type: string
          nullable: true
          description: Nome do banco
        agencia:
          type: string
          nullable: true
          description: Agência
        contaCorrente:
          type: string
          nullable: true
          description: Conta corrente
        tipoContaBancaria:
          type: string
          nullable: true
          description: Tipo de conta (corrente/poupança)
        pagamentoRealizado:
          type: boolean
          description: True se o estorno foi realizado
        DataGeracao:
          type: string
          format: date-time
          nullable: true
          description: Data de geração
        valorEstorno:
          type: number
          format: double
          nullable: true
          description: Valor estornado
        valorManualEstorno:
          type: number
          format: double
          nullable: true
          description: Valor manual estornado
    ValeCompraModel:
      type: object
      description: Informações do vale-compra quando a forma de reembolso for vale
      properties:
        instanciaId:
          type: integer
          format: int64
          nullable: true
        definicaoId:
          type: integer
          format: int64
          nullable: true
        valor:
          type: number
          format: double
          description: Valor em R$ atribuído quando já utilizado
        valorManual:
          type: number
          format: double
          nullable: true
          description: Valor manual
        valorPorcentagem:
          type: number
          format: double
          description: Percentual do vale-compra
        data:
          type: string
          format: date-time
          nullable: true
          description: Data em que a instância foi gerada
        expirarEm:
          type: string
          format: date-time
          nullable: true
          description: Data de expiração do vale
        redemptionToken:
          type: string
          nullable: true
          description: Token de resgate
        gerado:
          type: boolean
          description: True se o vale compra foi gerado. Do contrário, false
        DataGeracao:
          type: string
          format: date-time
          nullable: true
          description: Data de geração do vale
    CashbackDataModel:
      type: object
      description: Dados de cashback, quando cabível
      properties:
        valor:
          type: number
          format: double
          description: Valor do cashback
        DataGeracao:
          type: string
          format: date-time
          nullable: true
          description: Data de efetivação do cashback
        gerado:
          type: boolean
          description: True se gerado
    AutorizacaoLogisticaReversaModel:
      type: object
      description: Autorização de postagem ou coleta dos SKUs pela transportadora
      properties:
        data:
          type: string
          format: date-time
          description: Data da autorização
        descricao:
          type: string
          description: Descrição da postagem
        codigoAutorizacao:
          type: string
          description: Código de autorização de postagem
        codigoLogisticoIdentificador:
          type: string
          description: Código que identifica o objeto já postado
        prazoParaPostagem:
          type: string
          format: date-time
          nullable: true
          description: Prazo limite para postagem
        dataPostagemOuColeta:
          type: string
          format: date-time
          nullable: true
          description: Data da postagem ou coleta
        dataRecebimentoCD:
          type: string
          format: date-time
          nullable: true
          description: Data de recebimento no CD
        tipoDescricao:
          type: string
          description: Descrição do tipo de postagem
        tipo:
          type: integer
          description: >-
            Tipo de postagem: -1 Indefinido, 0 PostagemEmAgencia, 1
            ColetaSimples, 2 ColetaSwap, 3 Expressa, 4 PostoDeColeta
          enum:
            - -1
            - 0
            - 1
            - 2
            - 3
            - 4
        custo:
          type: number
          format: double
          nullable: true
          description: Valor efetivo da postagem/coleta
        destino:
          $ref: '#/components/schemas/EnderecoDTO'
        erroCodigo:
          type: string
          nullable: true
          description: Código de erro
        erroDescricao:
          type: string
          nullable: true
          description: Descrição do erro
        hubOrderId:
          type: string
          nullable: true
          description: Id do pedido no hub logístico
        transportadora:
          $ref: '#/components/schemas/TransportadoraModel'
    TransportadoraModel:
      type: object
      description: Dados da transportadora quando a forma de envio for transportadora
      properties:
        id:
          type: integer
          format: int64
          nullable: true
        nome:
          type: string
          description: Nome da transportadora
    LojaFisicaModel:
      type: object
      description: Dados da loja física quando a devolução ocorre em loja
      properties:
        id:
          type: integer
          format: int64
          nullable: true
        descricao:
          type: string
          description: Descrição/Nome da loja física
    LojaVirtualModel:
      type: object
      description: Loja virtual configurada na plataforma Genius
      properties:
        id:
          type: integer
          format: int64
          nullable: true
        lojaUrl:
          type: string
          description: URL da loja virtual
        ativo:
          type: boolean
          description: Loja ativa quando True; do contrário, False
    LockerModel:
      type: object
      description: Dados do locker quando a postagem é em armário inteligente
      properties:
        transportadoraId:
          type: integer
          format: int64
          description: Id da transportadora dona do posto
        nome:
          type: string
          description: Nome do locker
        instrucoesPostagem:
          type: string
          description: Instruções de postagem
        instrucoesRecebimento:
          type: string
          description: Instruções de recebimento
        instrucoesAdicionais:
          type: string
          description: Instruções adicionais
        endereco:
          $ref: '#/components/schemas/EnderecoDTO'
        imagens:
          type: array
          items:
            type: object
            description: ImagemPostoDTO
        horariosFuncionamento:
          type: array
          items:
            type: object
            description: HorarioFuncionamentoDTO
        qrCodes:
          type: array
          items:
            type: object
            description: QRCodeDTO
        tiposCompartimento:
          type: array
          items:
            type: object
            description: TipoCompartimentoDTO
    AgenteModel:
      type: object
      properties:
        id:
          type: integer
          format: int64
          nullable: true
        nome:
          type: string
          description: Nome do agente (SAC)
    ProcessProgressModel:
      type: object
      description: Estágios do processo
      properties:
        logisticStage:
          $ref: '#/components/schemas/EProcessLogisticStage'
          description: EProcessLogisticStage (progresso logístico).
        financialStage:
          $ref: '#/components/schemas/EProcessFinancialStage'
          description: EProcessFinancialStage (progresso financeiro).
        ratingStage:
          $ref: '#/components/schemas/EProcessRatingStage'
          description: EProcessRatingStage (progresso de rating).
        stage:
          $ref: '#/components/schemas/EProcessStage'
          description: EProcessStage (progresso geral).
        failures:
          type: array
          items:
            $ref: '#/components/schemas/EProcessFailures'
          description: Falhas (se houver) registradas durante o processo.
    EnderecoDTO:
      type: object
      description: Representa um endereço físico
      properties:
        logradouro:
          type: string
          description: Logradouro
        numero:
          type: string
          description: Número
        complemento:
          type: string
          description: Complemento
        bairro:
          type: string
          description: Bairro
        cidade:
          type: string
          description: Cidade
        estado:
          type: string
          description: Estado
        cep:
          type: string
          description: CEP
        latitude:
          type: string
          nullable: true
          description: Latitude
        longitude:
          type: string
          nullable: true
          description: Longitude
        obs:
          type: string
          nullable: true
          description: Observações gerais
    ProblemDetails:
      type: object
      description: Detalhes de erro no padrão RFC 7807.
      properties:
        type:
          type: string
          format: uri
        title:
          type: string
        status:
          type: integer
        detail:
          type: string
        instance:
          type: string
        traceId:
          type: string
      additionalProperties: true
    AuthTicket:
      type: object
      properties:
        bearer:
          type: string
          description: JWT a ser usado no header Authorization (Bearer).
        data:
          type: string
          format: date-time
          description: Data de criação do token.
        expirarEm:
          type: string
          format: date-time
          description: Data de expiração do token.
      required:
        - bearer
        - data
        - expirarEm
    AuthTicketResponse:
      type: object
      properties:
        ticket:
          $ref: '#/components/schemas/AuthTicket'
      required:
        - ticket
    CarregarProcessosRequest:
      type: object
      description: Parâmetros de filtro para listagem de processos.
      properties:
        de:
          type: string
          format: date
          description: Data inicial (YYYY-MM-DD).
        ate:
          type: string
          format: date
          description: Data final (YYYY-MM-DD).
        status:
          type: integer
          description: >-
            Status do processo (Todos = -1, Pendente = 1, Concluido = 2,
            Cancelado = 3).
        textoBusca:
          type: string
          description: >-
            Número do pedido (e-commerce), nome/email do cliente ou nº de
            autorização.
        lojaVirtualId:
          type: integer
          format: int64
          description: Id da loja virtual (sub account).
        orderNumber:
          type: string
          description: Número do pedido original na loja virtual.
        estagioLogistico:
          $ref: '#/components/schemas/EProcessLogisticStage'
        estagioFinanceiro:
          $ref: '#/components/schemas/EProcessFinancialStage'
        estagioRating:
          $ref: '#/components/schemas/EProcessRatingStage'
      additionalProperties: false
    ProcessosListarResponse:
      type: object
      description: Representa uma resposta da API Genius Returns (paginada)
      required:
        - Date
        - Result
      properties:
        PageSize:
          type: integer
          description: ''
        TotalPages:
          type: integer
          description: ''
        CurrentPage:
          type: integer
          description: ''
        TotalRecords:
          type: integer
          description: ''
        Date:
          type: string
          format: date-time
          description: Data e hora da resposta expressa em UTC
        Result:
          type: array
          items:
            $ref: '#/components/schemas/ProcessModel'
          description: Entidade relacionada
        Records:
          type: integer
          description: Registros retornados
        HttpStatus:
          type: string
          description: Status http da requisição
        Err:
          $ref: '#/components/schemas/ApiResponseErro'
          nullable: true
          description: Conterá detalhes de um eventual erro
    EProcessLogisticStage:
      type: integer
      format: int32
      description: Estágio logístico do processo.
      enum:
        - 0
        - 1
        - 2
        - 3
        - 4
        - 5
        - 6
        - 7
      oneOf:
        - const: 0
          title: Nenhum
        - const: 1
          title: Pendente
        - const: 2
          title: Erro
        - const: 3
          title: Loja física
        - const: 4
          title: Autorizado
        - const: 5
          title: Postado ou coletado
        - const: 6
          title: Entregue
        - const: 7
          title: Parcialmente Entregue
      x-enum-varnames:
        - Nothing
        - Pending
        - Error
        - PhysicalStore
        - Authorized
        - PostedOrCollected
        - Delivered
        - ParcialDelivered
      x-enumNames:
        - Nothing
        - Pending
        - Error
        - PhysicalStore
        - Authorized
        - PostedOrCollected
        - Delivered
        - ParcialDelivered
      x-enumDescriptions:
        - Nenhum
        - Pendente
        - Erro
        - Loja física
        - Autorizado
        - Postado ou coletado
        - Entregue
        - Parcialmente Entregue
      x-enum-descriptions:
        - Nenhum
        - Pendente
        - Erro
        - Loja física
        - Autorizado
        - Postado ou coletado
        - Entregue
        - Parcialmente Entregue
    EProcessFinancialStage:
      type: integer
      format: int32
      description: Estágio financeiro do processo.
      enum:
        - 0
        - 1
        - 2
        - 3
        - 4
      oneOf:
        - const: 0
          title: Nenhum
        - const: 1
          title: Pendente
        - const: 2
          title: Reembolso parcial
        - const: 3
          title: Reembolso efetuado
        - const: 4
          title: Erro
      x-enum-varnames:
        - Nothing
        - Pending
        - PartialFinancial
        - FullFinancial
        - Error
      x-enumNames:
        - Nothing
        - Pending
        - PartialFinancial
        - FullFinancial
        - Error
      x-enumDescriptions:
        - Nenhum
        - Pendente
        - Reembolso parcial
        - Reembolso efetuado
        - Erro
      x-enum-descriptions:
        - Nenhum
        - Pendente
        - Reembolso parcial
        - Reembolso efetuado
        - Erro
    EProcessRatingStage:
      type: integer
      format: int32
      description: Estágio de rating do processo.
      enum:
        - 0
        - 1
        - 2
      oneOf:
        - const: 0
          title: Pendente
        - const: 1
          title: Parcial
        - const: 2
          title: Completo
      x-enum-varnames:
        - Pending
        - PartialRating
        - FullRating
      x-enumNames:
        - Pending
        - PartialRating
        - FullRating
      x-enumDescriptions:
        - Pendente
        - Parcial
        - Completo
      x-enum-descriptions:
        - Pendente
        - Parcial
        - Completo
    EProcessStage:
      type: integer
      format: int32
      description: Estágio geral do processo.
      enum:
        - 0
        - 1
        - 2
        - 3
        - 4
        - 5
        - 6
        - 7
        - 8
        - 9
        - 10
        - 11
      oneOf:
        - const: 0
          title: Nenhum
        - const: 1
          title: Em Análise
        - const: 2
          title: Aguardando Envio
        - const: 3
          title: Em Trânsito
        - const: 4
          title: Entregue
        - const: 5
          title: Aguardando Reembolso
        - const: 6
          title: Aguardando NF Devolução
        - const: 7
          title: Aguardando finalização
        - const: 8
          title: Falha de reembolso
        - const: 9
          title: Falha Logística
        - const: 10
          title: Finalizado
        - const: 11
          title: Cancelado
      x-enum-varnames:
        - None
        - WaitingForShipment
        - Authorized
        - PostedOrCollected
        - Delivered
        - WaitingForRefund
        - WaitingForReturnInvoice
        - WaitingForFinalization
        - RefundFailed
        - LogisticsFailed
        - Finalized
        - Canceled
      x-enumNames:
        - None
        - WaitingForShipment
        - Authorized
        - PostedOrCollected
        - Delivered
        - WaitingForRefund
        - WaitingForReturnInvoice
        - WaitingForFinalization
        - RefundFailed
        - LogisticsFailed
        - Finalized
        - Canceled
      x-enumDescriptions:
        - Nenhum
        - Em Análise
        - Aguardando Envio
        - Em Trânsito
        - Entregue
        - Aguardando Reembolso
        - Aguardando NF Devolução
        - Aguardando finalização
        - Falha de reembolso
        - Falha Logística
        - Finalizado
        - Cancelado
      x-enum-descriptions:
        - Nenhum
        - Em Análise
        - Aguardando Envio
        - Em Trânsito
        - Entregue
        - Aguardando Reembolso
        - Aguardando NF Devolução
        - Aguardando finalização
        - Falha de reembolso
        - Falha Logística
        - Finalizado
        - Cancelado
    EProcessFailures:
      type: integer
      format: int32
      description: Falhas associadas ao processo.
      enum:
        - 0
        - 1
        - 2
      oneOf:
        - const: 0
          title: Nenhuma
        - const: 1
          title: Falha em troca
        - const: 2
          title: Falha em rastreio
      x-enum-varnames:
        - None
        - ExchangeFail
        - LogisticTrackingFail
      x-enumNames:
        - None
        - ExchangeFail
        - LogisticTrackingFail
      x-enumDescriptions:
        - Nenhuma
        - Falha em troca
        - Falha em rastreio
      x-enum-descriptions:
        - Nenhuma
        - Falha em troca
        - Falha em rastreio
    EPedidoItemEstorno:
      type: integer
      description: >-
        Tipo de estorno do item do pedido: ValeCompras = 0, Estorno = 1,
        EstornoAutomático = 2.
      enum:
        - 0
        - 1
        - 2
      x-enum-varnames:
        - ValeCompras
        - Estorno
        - EstornoAutomatico
      x-enum-descriptions:
        - ValeCompras
        - Estorno
        - Estorno automático
    EDTipoEntregaReversa:
      type: integer
      description: >-
        Tipo de entrega transportadora (0 para Postagem em agância, 1 ou 2 para
        coleta domiciliar, 3 para coleta expressa e 4 para postagem em lockers)
      enum:
        - -1
        - 0
        - 1
        - 2
        - 3
        - 4
      x-enum-varnames:
        - Indefinido
        - PostagemEmAgencia
        - ColetaSimples
        - ColetaSimultanea
        - Expressa
        - PostoDeColeta
      x-enum-descriptions:
        - Indefinido
        - Postagem em agência
        - Coleta simples
        - Coleta com troca (simultânea)
        - Expressa
        - Posto de coleta (Locker)
    SavedReturnNoteModel:
      allOf:
        - $ref: '#/components/schemas/ReturnNoteModel'
        - type: object
          description: Representa uma nota de devolução salva.
          properties:
            id:
              type: integer
              format: int64
              description: Id da nota de devolução
            processoId:
              type: integer
              format: int64
              description: Id do processo "owner" da nota de devolução
          required:
            - id
            - processoId
    NotaDevolucaoAddResponse:
      type: object
      required:
        - dataHoraResposta
        - registros
        - httpStatus
      properties:
        Date:
          type: string
          format: date-time
          description: Data e hora da resposta expressa em UTC
        Result:
          $ref: '#/components/schemas/SavedReturnNoteModel'
          description: Entidade relacionada
          nullable: false
        Records:
          type: integer
          description: Registros retornados
        HttpStatus:
          type: string
          description: Status http da requisição
        Err:
          $ref: '#/components/schemas/ApiResponseErro'
          description: Conterá detalhes de um eventual erro
          nullable: true
      description: Representa uma respota da API Genius Returns
    NotaDevolucaoUpdateResponse:
      type: object
      required:
        - dataHoraResposta
        - registros
        - httpStatus
      properties:
        Date:
          type: string
          format: date-time
          description: Data e hora da resposta expressa em UTC
        Result:
          $ref: '#/components/schemas/ReturnNoteModel'
          description: Entidade relacionada
          nullable: false
        Records:
          type: integer
          description: Registros retornados
        HttpStatus:
          type: string
          description: Status http da requisição
        Err:
          $ref: '#/components/schemas/ApiResponseErro'
          description: Conterá detalhes de um eventual erro
          nullable: true
      description: Representa uma respota da API Genius Returns
    NotaDevolucaoInativarResponse:
      type: object
      required:
        - dataHoraResposta
        - registros
        - httpStatus
      properties:
        Date:
          type: string
          format: date-time
          description: Data e hora da resposta expressa em UTC
        Result:
          $ref: '#/components/schemas/ReturnNoteModel'
          description: Entidade relacionada
          nullable: false
        Records:
          type: integer
          description: Registros retornados
        HttpStatus:
          type: string
          description: Status http da requisição
        Err:
          $ref: '#/components/schemas/ApiResponseErro'
          description: Conterá detalhes de um eventual erro
          nullable: true
      description: Representa uma respota da API Genius Returns
    NotaDevolucaoListarResponse:
      type: object
      description: Representa uma resposta da API Genius Returns
      properties:
        PageSize:
          type: integer
        TotalPages:
          type: integer
        CurrentPage:
          type: integer
        TotalRecords:
          type: integer
        Date:
          type: string
          format: date-time
          description: Data e hora da resposta expressa em UTC
        Result:
          type: array
          items:
            $ref: '#/components/schemas/ReturnNoteModel'
          description: Entidade relacionada
        Records:
          type: integer
          description: Registros retornados
        HttpStatus:
          type: string
          description: Status http da requisição
        Err:
          $ref: '#/components/schemas/ApiResponseErro'
          description: Conterá detalhes de um eventual erro
          nullable: true
      required:
        - dataHoraResposta
        - entidade
    NotaDevolucaoGetResponse:
      type: object
      required:
        - dataHoraResposta
        - registros
        - httpStatus
      properties:
        Date:
          type: string
          format: date-time
          description: Data e hora da resposta expressa em UTC
        Result:
          $ref: '#/components/schemas/ReturnNoteModel'
          description: Entidade relacionada
          nullable: true
        Records:
          type: integer
          description: Registros retornados
        HttpStatus:
          type: string
          description: Status http da requisição
        Err:
          $ref: '#/components/schemas/ApiResponseErro'
          description: Conterá detalhes de um eventual erro
          nullable: true
      description: Representa uma respota da API Genius Returns
    ApiResponseErro:
      type: object
      description: Conterá detalhes de um eventual erro
      properties:
        ErroCodigo:
          type: string
          nullable: true
          description: Código do erro, caso tenha ocorrido
        ErroDescricao:
          type: string
          nullable: true
          description: Descrição do erro, caso tenha ocorrido
    SkuVariacaoModel:
      type: object
      description: Representa um atributo, uma especificação de sku
      properties:
        Nome:
          type: string
          description: Nome do atributo. Ex. Cor
        Valores:
          type: array
          items:
            type: string
          description: Valores do atributo. Ex. Preto
      required:
        - Nome
        - Valores
      additionalProperties: false
    eTipoPagamento:
      type: integer
      format: int32
      description: Formas de pagamento
      enum:
        - 0
        - 1
        - 2
        - 3
        - 4
        - 5
        - 6
        - 7
      x-enumNames:
        - _INDEFINIDO
        - _CARTAO_CREDITO
        - _PIX
        - _GIFT_CARD
        - _CUPOM
        - _BOLETO
        - _DEPOSITO
        - _OUTROS
      x-enumDescriptions:
        - Indefinido
        - Cartão de crédito
        - Pix
        - Gift card
        - Cupom de descontos
        - Boleto bancário
        - Depósito bancário
        - Outras formas de pagamento
      x-enum-varnames:
        - _INDEFINIDO
        - _CARTAO_CREDITO
        - _PIX
        - _GIFT_CARD
        - _CUPOM
        - _BOLETO
        - _DEPOSITO
        - _OUTROS
    PaymentModel:
      type: object
      description: Representa um pagamento em uma transação financeira
      properties:
        PId:
          type: string
          description: Id do pagamento
        TipoPagamento:
          $ref: '#/components/schemas/eTipoPagamento'
          description: Identificação do tipo de pagamento
        TipoPagamentoDescricao:
          type: string
          description: Descrição do tipo do pagamento
        Valor:
          type: number
          format: decimal
          description: Valor do pagamento
        Parcelamento:
          type: integer
          format: int32
          description: >-
            Parcelamento do pagamento (installments). Se pagamento à vista,
            informe 1.
        ValorReferencia:
          type: number
          format: decimal
          description: >-
            Valor de refernecia do pagamento, utilizado em caso de
            parcelamentos. Do contrário, informe o mesmo que o informado em
            'Valor'.
        TID:
          type: string
          description: >-
            Tid. Se VTEX, deve conter o valor de
            paymentData.transactions[].payments[].connectorResponses.tid
        Nsu:
          type: string
          description: >-
            Nsu. Se VTEX, deve conter o valor de
            paymentData.transactions[].payments[].connectorResponses.nsu
        Adquirente:
          type: string
          description: >-
            Adquirente. Se VTEX, deve conter o valor de
            paymentData.transactions[].payments[].connectorResponses.acquirer
        Grupo:
          type: string
          description: >-
            Grupo do meio de pagamento. Se VTEX, deve conter o valor de
            paymentData.transactions[].payments[].group
      additionalProperties: false
    TransactionModel:
      type: object
      description: null
      properties:
        TID:
          type: string
          description: Id da transação
        SellerNomeId:
          type: string
          description: Nome identificador do seller dono da transação
        Data:
          type: string
          format: date-time
          description: Data do registro da transação na plataforma Genius
        Pagamentos:
          type: array
          items:
            $ref: '#/components/schemas/PaymentModel'
          description: Pagamentos
      additionalProperties: false
    FiscalNoteModel:
      type: object
      description: Representa uma nota fisca
      properties:
        Number:
          type: string
          description: Número da nota fiscal
        Series:
          type: string
          description: Série da nota fiscal
        AccessKey:
          type: string
          description: Chave de acesso da nota fiscal
        XML:
          type: string
          description: Xml da nota fiscal
        DanfeLink:
          type: string
          description: Link Danfe
        Data:
          type: string
          format: date-time
          description: Data da nota fiscal
        File:
          type: string
          description: Arquivo da nota fiscal
      additionalProperties: false
    IntegrateRequestCustomer:
      type: object
      description: >-
        Cliente do pedido para integração do fluxo de solicitação de troca ou
        devolução
      properties:
        ClienteNome:
          type: string
          description: Nome do cliente da loja virtual
        ClienteEmail:
          type: string
          description: Email do cliente da loja virtual
        ClienteTelefone:
          type: string
          description: Telefone do cliente da loja virtual
        ClienteCelular:
          type: string
          description: Celular do cliente da loja virtual
        ClienteDocumento:
          type: string
          description: CPF ou CNPJ do cliente na loja virtual
        ClienteEndereco:
          $ref: '#/components/schemas/EnderecoDTO'
          description: Dados de endereço do cliente da loja virtual
      additionalProperties: false
    IntegrateRequestSku:
      type: object
      description: >-
        Sku do pedido para integração do fluxo de solicitação de troca ou
        devolução
      properties:
        SkuId:
          type: string
          description: Id do SKU na loja virtual
        SkuNome:
          type: string
          description: Nome do SKU
        SkuReferencia:
          type: string
          description: Referencia do sku
        SkuSellerReference:
          type: string
          description: Sku seller reference
        ProdutoId:
          type: string
          description: Id do Produto na loja virtual
        ProductRef:
          type: string
          description: null
        ProdutoNome:
          type: string
          description: Nome do Produto na loja virtual
        Preco:
          type: number
          format: decimal
          description: Preço do sku praticado no pedido
        PrecoDeLista:
          type: number
          format: decimal
          description: Preço da lista do sku - opcional
        Quantidade:
          type: integer
          format: int32
          description: Quantidade total do sku no pedido
        Peso:
          type: number
          format: decimal
          description: Peso do sku em gramas
        Altura:
          type: number
          format: decimal
          description: Altura do sku em centímetros
        Largura:
          type: number
          format: decimal
          description: Largura do sku em centímetros
        Comprimento:
          type: number
          format: decimal
          description: Comprimento do sku em centímetros
        SellerId:
          type: string
          description: Id do vendedor, necessário em ambientes Mkt Place
        DocaId:
          type: string
          description: Id da doca
        EstoqueId:
          type: string
          description: Id do estoque
        ImagemAbsUrl:
          type: string
          description: Url absoluta da imagem do sku
        Variacoes:
          type: array
          items:
            $ref: '#/components/schemas/SkuVariacaoModel'
          description: Atributos do sku
        InvoiceKey:
          type: string
          description: >-
            Chave da nota fical - usado para cenários em que é necessário mapear
            um sku a uma nota fiscal específica.
      additionalProperties: false
    IntegrateRequestOrder:
      type: object
      description: Pedido para integração do fluxo de solicitação de troca ou devolução
      properties:
        PedidoNumero:
          type: string
          description: Número do pedido
        PedidoStatus:
          type: string
          description: Status do pedido
        PedidoId:
          type: string
          description: Id do pedido no ecommerce
        Cliente:
          $ref: '#/components/schemas/IntegrateRequestCustomer'
          description: Cliente do pedido na loja virtual
        PedidoData:
          type: string
          format: date-time
          description: Data Hora do pedido
        PedidoDataEntrega:
          type: string
          format: date-time
          nullable: true
          description: Data em que os pacotes do pedido foram entregues
        PedidoValorTotal:
          type: number
          format: decimal
          description: Valor do Pedido
        PedidoValorFrete:
          type: number
          format: decimal
          description: Valor do Frete do pedido
        PedidoValorDesconto:
          type: number
          format: decimal
          nullable: true
          description: Valor de desconto
        Skus:
          type: array
          items:
            $ref: '#/components/schemas/IntegrateRequestSku'
          description: Itens do pedido.
        Transacoes:
          type: array
          items:
            $ref: '#/components/schemas/TransactionModel'
          description: Transações de pagamento do pedido
        NotasFiscais:
          type: array
          items:
            $ref: '#/components/schemas/FiscalNoteModel'
          description: Notas fiscais
      additionalProperties: false
    IntegrateRequest:
      type: object
      description: >-
        Parâmetros necessários para a integração de pedidos e solicitações de
        troca ou devolução.
      properties:
        Pedido:
          $ref: '#/components/schemas/IntegrateRequestOrder'
          description: Pedido a ser integrado no fluxo de solicitação de troca ou devolução
      additionalProperties: false
    ApiResponseV2_string:
      type: object
      description: >-
        Representa uma resposta da API Genius Returns (especialização para
        string).
      properties:
        Date:
          type: string
          format: date-time
          description: Data e hora da resposta expressa em UTC
        Result:
          type: string
          description: Entidade relacionada
        Records:
          type: integer
          format: int32
          description: Registros retornados
        HttpStatus:
          type: string
          description: Status http da requisição
        Err:
          $ref: '#/components/schemas/ApiResponseErro'
          description: Conterá detalhes de um eventual erro
      additionalProperties: false
    RatingDataModel:
      type: object
      description: Dados do rating de um item recebido na solicitação.
      properties:
        itemId:
          type: string
          description: Identificador do item na plataforma Genius Returns.
        itemNome:
          type: string
          nullable: true
          description: >-
            Nome do item analisado. Opcional; se não informado, será auto
            preenchido.
        ratingValor:
          type: number
          format: double
          minimum: 1
          maximum: 5
          description: >-
            Nota atribuída pela análise (1 a 5), onde 5 significa "perfeito
            estado do item".
        comentario:
          type: string
          nullable: true
          description: Comentários livres sobre a análise do item.
        estadoItem:
          type: integer
          minimum: 1
          maximum: 4
          description: >-
            Estado do item após recebimento: 1=Perfeito, 2=Pequena avaria, 3=Não
            aproveitável, 4=Não recebido.
        naoEstornar:
          type: boolean
          description: Se verdadeiro, o item será removido do cálculo de reembolso.
        naoEstornarQtd:
          type: integer
          minimum: 0
          description: >-
            Quantidade a não estornar. Obrigatória (>0) quando 'naoEstornar' for
            verdadeiro; caso contrário, deve ser 0.
        notificarClienteRating:
          type: boolean
          description: Se verdadeiro, envia e-mail ao cliente com o resultado da análise.
        qtd:
          type: integer
          minimum: 1
          description: Quantidade do item que foi analisado.
      required:
        - itemId
        - ratingValor
        - estadoItem
        - qtd
    RatingRequestModel:
      type: object
      description: >-
        Request para geração de rating (análise) de produtos de uma solicitação
        de troca ou devolução.
      properties:
        processoId:
          type: integer
          format: int64
          minimum: 1
          description: Identificador do processo (solicitação de troca ou devolução).
        executarFluxoReembolso:
          type: boolean
          nullable: true
          description: Se verdadeiro, inicia o fluxo automático de reembolso do cliente.
        ratingData:
          type: array
          items:
            $ref: '#/components/schemas/RatingDataModel'
          minItems: 1
          description: Lista de dados de análise (rating) por item.
      required:
        - processoId
        - ratingData
    ApiResponse_ProcessoDTO:
      type: object
      description: Representa uma resposta da API Genius Returns com a entidade Processo.
      properties:
        DataHoraResposta:
          type: string
          format: date-time
          description: Data e hora da resposta expressa em UTC.
        HttpStatus:
          type: string
          description: Código HTTP no formato texto.
        Registros:
          type: integer
          description: Quantidade de registros retornados.
        Entidade:
          $ref: '#/components/schemas/ProcessModel'
      required:
        - DataHoraResposta
        - Entidade
    ProcessoSolicitacaoParametros:
      type: object
      description: Parâmetros de entrada de EnviarSolicitacao.
      properties:
        Processo:
          $ref: '#/components/schemas/ProcessoInputDTO'
        DadosCartao:
          type: object
          additionalProperties: true
          description: Dados do cartão, apenas se houver pagamento de entrega expressa.
        RotaEntregaExpressa:
          type: object
          additionalProperties: true
          description: Rota da entrega expressa, apenas se houver entrega expressa.
      required:
        - Processo
    ProcessoInputDTO:
      type: object
      description: Representa uma solicitação de troca ou devolução.
      properties:
        ClienteIP:
          type: string
          description: IP do cliente.
        LojaFisicaId:
          type: integer
          format: int64
          nullable: true
          description: Id da Loja Física.
        LojaFisicaResumo:
          type: string
          nullable: true
          description: Resumo Loja Física.
        TransportadoraId:
          type: integer
          format: int64
          nullable: true
          description: Id da Transportadora.
        ServicoLogisticoId:
          type: integer
          format: int64
          nullable: true
          description: >-
            Em caso de hub logístico, o id do serviço assinalado será
            armazenado.
        HubQuotationId:
          type: string
          nullable: true
        HubQuotationValue:
          type: number
          format: double
          nullable: true
        TransportadoraTipoEntrega:
          $ref: '#/components/schemas/EDTipoEntregaReversa'
          description: >-
            Tipo de entrega transportadora (0 para Postagem em agância, 1 ou 2
            para coleta domiciliar, 3 para coleta expressa e 4 para postagem em
            lockers)
        LogisticaPremiumValor:
          type: number
          format: double
          nullable: true
          description: >-
            Quando logística premium fornecido ao cliente, este campo conterá o
            valor a ser pago.
        MantenhaOItem:
          type: boolean
          nullable: true
          description: True quando a solicitação faz jus à funcionalidade KeepTheItem.
        ValorEstimadoLR:
          type: number
          format: double
          nullable: true
          description: Valor estimado de LR.
        DadosBancariosDto:
          $ref: '#/components/schemas/DadosBancariosDTO'
        Pedido:
          $ref: '#/components/schemas/PedidoInputDTO'
        ValeCompra:
          $ref: '#/components/schemas/ValeCompraInputDTO'
        Cashback:
          $ref: '#/components/schemas/CashbackDTO'
        PostoPostagem:
          $ref: '#/components/schemas/PostoPostagemBaseDTO'
        LojaVirtual:
          type: object
          additionalProperties: true
          description: Representa a loja virtual em que a solicitação foi feita.
        Agente:
          type: object
          additionalProperties: true
          description: Informado quando um usuário do admin cadastra o processo.
        NotificarNovaSolicitacao:
          type: boolean
          description: true ou false para notificar a nova solicitação.
        Marketplace:
          type: boolean
          description: true se marketplace; do contrário, false.
        TipoFreteEstorno:
          allOf:
            - $ref: '#/components/schemas/EPedidoItemEstorno'
          nullable: true
          description: >-
            Tipo de estorno do frete (0 para frete em vale-compra, 1 para
            estorno manual e 2 para estorno automático).
        ValeComprasBonus:
          type: boolean
          description: True se vale-compras bonus.
    PedidoInputDTO:
      type: object
      description: Representa um pedido realizado na loja virtual.
      properties:
        PedidoId:
          type: string
          description: Id do pedido no ecommerce.
        Data:
          type: string
          format: date-time
          description: Data Hora do pedido.
        Numero:
          type: string
          description: Número do pedido no e-commerce.
        Valor:
          type: number
          format: double
          description: Valor total do Pedido.
        ValorFrete:
          type: number
          format: double
          description: Valor do Frete.
        ValorDesconto:
          type: number
          format: double
          description: Valor de desconto.
        IdTransportadoraEcomm:
          type: string
          description: Id da transportadora.
        NomeTransportadoraEcomm:
          type: string
          description: Nome da transportadora.
        ClienteEcommId:
          type: string
          description: Id do cliente na loja virtual.
        ClienteNome:
          type: string
          description: Nome do cliente da loja virtual.
        ClienteEmail:
          type: string
          description: Email do cliente.
        ClienteDocumento:
          type: string
          description: Documento do cliente da loja virtual.
        ClienteTelefone:
          type: string
          description: Telefone do cliente da loja virtual.
        ClienteCelular:
          type: string
          description: Celular do cliente da loja virtual.
        Parcelas:
          type: integer
          description: Número de parcelas do pedido.
        QuantidadeItens:
          type: integer
          description: Quantidade total de itens de pedido.
        EstornoAutomaticoAte:
          type: string
          format: date-time
          nullable: true
          description: Data máxima para estorno automático.
        TransacaoCartaoCreditoId:
          type: string
          nullable: true
          description: Se for compra por cartão, id da transação.
        TransacaoCartaoCreditoValor:
          type: number
          format: double
          nullable: true
          description: Se for compra por cartão o valor da transação.
        Status:
          type: string
          description: Status do pedido.
        PossuiValeCompra:
          type: boolean
          description: Foi utilizado um vale compras no pedido?
        ClienteEndereco:
          $ref: '#/components/schemas/EnderecoDTO'
        Skus:
          type: array
          items:
            $ref: '#/components/schemas/SkuInputDTO'
          description: Itens do pedido.
        DataEntrega:
          type: string
          format: date-time
          nullable: true
          description: Data em que os pacotes do pedido foram entregues.
        SelectedSla:
          type: string
          nullable: true
          description: SLA de entrega praticado pela loja virtual no pedido.
        CustomerAddressId:
          type: string
          nullable: true
        Transacoes:
          type: array
          items:
            $ref: '#/components/schemas/TransacaoEcommDTO'
          description: Transações de pagamento do pedido.
        NotaNumero:
          type: string
          nullable: true
          description: Número da nota fiscal.
        NotaValor:
          type: number
          format: double
          nullable: true
          description: Valor da nota fiscal.
        NotaChave:
          type: string
          nullable: true
          description: Chave da nota fiscal.
        NotaSerie:
          type: string
          nullable: true
          description: Série da nota fiscal.
        NotaData:
          type: string
          format: date-time
          nullable: true
          description: Data da nota fiscal.
    SkuInputDTO:
      type: object
      description: Representa um SKU da loja virtual.
      properties:
        SkuId:
          type: string
          description: Id do SKU na loja virtual.
        SkuNome:
          type: string
          description: Nome do SKU.
        ProdutoId:
          type: string
          description: Id do Produto na loja virtual.
        ProductRef:
          type: string
          description: Product reference.
        SkuSellerReference:
          type: string
          description: Sku seller reference.
        ProdutoNome:
          type: string
          description: Nome do Produto.
        Referencia:
          type: string
          description: Referência do SKU.
        Preco:
          type: number
          format: double
          description: Preço do SKU praticado no pedido.
        PrecoDeLista:
          type: number
          format: double
          description: Preço de lista do SKU.
        Estoque:
          type: integer
          description: Quantidade atual em estoque.
        Quantidade:
          type: integer
          description: Quantidade do SKU no pedido.
        QuantidadeTotal:
          type: integer
          description: Quantidade total do SKU no pedido.
        ImagemUrl:
          type: string
          description: Url da imagem do SKU.
        DetalheUrl:
          type: string
          description: Url da página de detalhe do SKU.
        Justificativa:
          type: string
          description: Justificativa de troca ou devolução.
        Variacoes:
          type: array
          items:
            $ref: '#/components/schemas/ChaveValorDTO'
          description: Variações (atributos) do SKU.
        TipoProcesso:
          $ref: '#/components/schemas/EDTipoProcesso'
        Motivo:
          $ref: '#/components/schemas/MotivoInputDTO'
        Peso:
          type: number
          format: double
          description: Peso do SKU em gramas.
        Altura:
          type: number
          format: double
          description: Altura do SKU em centímetros.
        Largura:
          type: number
          format: double
          description: Largura do SKU em centímetros.
        Comprimento:
          type: number
          format: double
          description: Comprimento do SKU em centímetros.
        SkusParaTroca:
          type: array
          items:
            $ref: '#/components/schemas/SkuInputDTO'
          description: SKUs para troca, quando houver.
        FotosDoProduto:
          type: array
          items:
            $ref: '#/components/schemas/FotoUsuarioDTO'
          description: Fotos do produto enviadas pelo usuário.
        SubId:
          type: string
          description: Id interno Genius.
        SalesChannel:
          type: string
          description: ID do canal de vendas.
        SellerId:
          type: string
          description: Id do vendedor (marketplace).
        DocaId:
          type: string
          description: Id da doca.
        SelectedSla:
          type: string
        DeliveryChannel:
          type: string
          description: 'Tipo do canal de entrega: delivery, pickup, etc.'
        EstoqueId:
          type: string
          description: Id do estoque.
        TrocaPorTexto:
          type: string
          description: Texto para troca se estiver habilitada troca por texto.
        TipoEstorno:
          allOf:
            - $ref: '#/components/schemas/EPedidoItemEstorno'
          nullable: true
          description: Tipo do estorno.
        Marca:
          type: string
        Ean:
          type: string
    ChaveValorDTO:
      type: object
      description: Tipo genérico que representa valores no esquema chave-valor.
      properties:
        Chave:
          type: string
          description: Chave identificadora.
        Valores:
          type: array
          items:
            type: string
          description: Lista de valores atribuídos.
        Objetos:
          type: array
          items:
            type: object
          description: Lista de objetos relacionados.
    MotivoInputDTO:
      type: object
      description: Representa um motivo de troca ou devolução de um produto (SKU).
      properties:
        Descricao:
          type: string
          description: Descrição do motivo.
        NaoIncluirFreteNoValorADevolver:
          type: boolean
          description: Mantém a configuração da permissão associada ao motivo.
    FotoUsuarioDTO:
      type: object
      description: Representa as fotos de SKU enviadas pelo cliente final.
      properties:
        Descricao:
          type: string
          description: Descrição da foto.
        CaminhoImagem:
          type: string
          description: Caminho URL completo para a foto.
    EDTipoProcesso:
      type: integer
      description: Devolução (0) ou Troca (1).
      enum:
        - 0
        - 1
    ValeCompraInputDTO:
      type: object
      description: Representa um vale-compras.
      properties:
        ValeCompraOrigemID:
          type: integer
          format: int64
          description: Id do vale-compra original.
        Valor:
          type: number
          format: double
          description: Valor em R$ do vale compras.
        Email:
          type: string
          description: E-mail do usuário que utilizará o vale compras.
    CashbackDTO:
      type: object
      description: Representa um cashback.
      properties:
        Id:
          type: integer
          format: int64
          description: Identificador do DTO.
        Processo:
          $ref: '#/components/schemas/ProcessModel'
        Valor:
          type: number
          format: double
          description: Valor do cashback.
        GenerationDate:
          type: string
          format: date-time
          nullable: true
          description: Data de efetivação do cashback.
        Gerado:
          type: boolean
          description: Se o cashback já foi gerado.
    PostoPostagemBaseDTO:
      type: object
      description: >-
        Representa um posto para postagem de produtos a serem devolvidos ao
        lojista (lockers).
      properties:
        TransportadoraId:
          type: integer
          format: int64
          description: Id da transportadora a que pertence o posto.
        CorPin:
          type: string
          description: Cor do pin no mapa.
        ThirdID:
          type: string
          description: ID do posto na API terceira.
        Nome:
          type: string
          description: Nome do posto.
        InstrucoesPostagem:
          type: string
          description: Instruções de postagem.
        InstrucoesRecebimento:
          type: string
          description: Instruções de recebimento.
        InstrucoesAdicionais:
          type: string
          description: Instruções adicionais.
        Endereco:
          $ref: '#/components/schemas/EnderecoDTO'
        Imagens:
          type: array
          items:
            $ref: '#/components/schemas/ImagemPostoDTO'
          description: Imagens ilustrativas do posto.
        HorariosFuncionamento:
          type: array
          items:
            $ref: '#/components/schemas/HorarioFuncionamentoDTO'
          description: Horários de funcionamento do posto.
        QRCodes:
          type: array
          items:
            $ref: '#/components/schemas/QRCodeDTO'
          description: Lista de QRCodes que dão acesso aos armários inteligentes.
        TiposCompartimento:
          type: array
          items:
            $ref: '#/components/schemas/TipoCopartimentoDTO'
          description: Tipos de compartimento disponíveis.
    PostoPostagemJadLogDTO:
      allOf:
        - $ref: '#/components/schemas/PostoPostagemBaseDTO'
        - type: object
          description: 'Posto para postagem via JAD LOG (cor padrão do pin: #1E90FF).'
    PostoPostagemClickRetireDTO:
      allOf:
        - $ref: '#/components/schemas/PostoPostagemBaseDTO'
        - type: object
          description: >-
            Posto de postagem para transportadoras que utilizam Poodles (cor
            padrão do pin: #FF0000).
    ImagemPostoDTO:
      type: object
      description: Representa uma imagem ilustrativa do posto de postagem.
      properties:
        Url:
          type: string
          description: Url completa da imagem.
    QRCodeDTO:
      type: object
      description: Representa um QRCode que dá acesso ao armário inteligente.
      properties:
        SkuId:
          type: string
          description: Id do SKU que será postado.
        SkuNome:
          type: string
          description: Nome do SKU que será postado.
        QrCodeImagemPath:
          type: string
          description: Url para a imagem do QRCode.
        Digitavel:
          type: string
          description: Código digitável que representa o QR Code.
    TipoCopartimentoDTO:
      type: object
      description: Representa um tipo de compartimento no armário inteligente.
      properties:
        Largura:
          type: string
          description: Largura da gaveta.
        Profundidade:
          type: string
          description: Profundidade da gaveta.
        Tipo:
          type: string
          description: Tipo da gaveta.
        Altura:
          type: string
          description: Altura da gaveta.
    HorarioFuncionamentoDTO:
      type: object
      description: Representa um horário de funcionamento do posto.
      properties:
        Dia:
          type: string
          description: Dia da semana.
        HoraInicio:
          type: string
          description: Horário de início.
        HoraTermino:
          type: string
          description: Horário de término.
x-tagGroups:
  - name: Endpoints
    tags:
      - Segurança
      - Processos
      - Produtos
      - Notas de devolução
security:
  - BearerAuth: []
