{
  "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."
    },
    {
      "name": "Configuração",
      "description": "Consulta das configurações da conta na Genius Returns — em especial o **conector\nde e-commerce**, que informa quais recursos a plataforma integrada suporta\n(estorno automático, geração de vale-compra, busca de pedido por número/e-mail).\n\nNormalmente é a **primeira** chamada de uma integração: o resultado determina\nquais opções fazem sentido oferecer ao consumidor nas etapas seguintes.\n"
    },
    {
      "name": "Financeiro",
      "description": "Endpoints de **cálculo e elegibilidade financeira** de uma troca ou devolução:\nquanto será devolvido, em qual forma (estorno no meio de pagamento original\nou vale-compra) e se o estorno pode ser feito automaticamente.\n\nTodos são **consultivos (read-only)**: nenhum deles movimenta dinheiro, gera\nvale-compra ou altera o processo. Servem para montar a tela/resposta que o\nconsumidor vê **antes** de confirmar a solicitação. A execução financeira de\nfato acontece depois, no fluxo do processo.\n"
    },
    {
      "name": "Logística",
      "description": "Endpoints que alimentam a **etapa logística** do fluxo: por onde o consumidor\npode devolver o produto (transportadora, loja física ou entrega expressa) e\nquanto custa cada opção.\n\nSão consultivos: apenas listam as opções habilitadas na conta. A escolha do\nconsumidor é gravada depois, ao enviar a solicitação.\n"
    },
    {
      "name": "Vale-compra",
      "description": "Consulta das **definições de vale-compra** configuradas na conta (regras), e não\ndos vales já emitidos. É a partir delas que o front calcula e exibe frases como\n*\"receba 110% do valor em vale-compra\"*.\n"
    }
  ],
  "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' \\\n--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' \\\n--header 'Content-Type: application/json' \\\n--data '{\n    \"de\": \"2025-05-01\",\n    \"ate\": \"2025-05-28\",\n    \"textoBusca\": \"12372-52025\",\n    \"estagioLogistico\": 3\n}'"
          }
        ],
        "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."
          }
        }
      }
    },
    "/v2/pvt/ecommerce/obter-conector": {
      "get": {
        "tags": [
          "Configuração"
        ],
        "summary": "Obtém o conector de e-commerce da conta",
        "description": "Retorna o **conector de e-commerce** configurado para a conta autenticada, ou seja,\na ligação entre a Genius Returns e a plataforma de loja (VTEX, Shopify, AnyMarket,\nMagento etc.).\n\n### Para que serve\nO conector diz **o que a plataforma integrada é capaz de fazer**. Duas contas Genius\npodem ter comportamentos completamente diferentes conforme a plataforma e o que foi\ncontratado. Antes de oferecer qualquer opção ao consumidor, consulte este endpoint\ne use os campos `permiteEstorno`, `permiteGerarValeCompras`,\n`permiteBuscaPedidoPorNumero` e `permiteBuscaPedidoPorEmail` para decidir o que\nexibir.\n\n### Como o front Genius usa\nÉ uma das **primeiras** chamadas do fluxo, logo após a autenticação. O front:\n\n1. Consulta o conector e guarda o resultado na sessão;\n2. Habilita o campo de busca de pedido por número e/ou por e-mail conforme as flags;\n3. Esconde a opção \"receber em vale-compra\" quando `permiteGerarValeCompras` é `false`;\n4. Esconde a opção de estorno automático quando `permiteEstorno` é `false`;\n5. Usa `prazoEmDiasParaEstornoAutomatico` para calcular até quando o estorno\n   automático ainda é possível no meio de pagamento original.\n\n### Observações\n- Credenciais da plataforma (`apiKey`, `apiToken`) **nunca** são retornadas.\n- Se a conta não possui conector ativo para a loja informada, `entidade` volta `null`\n  com `registros: 0` — trate como \"integração não configurada\", e não como erro.\n",
        "operationId": "ObterConectorEcommerce",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "geniusVirtualStoreId",
            "in": "query",
            "required": false,
            "description": "Id da loja virtual (subconta) na Genius Returns. Informe **apenas** se a conta\nopera múltiplas lojas virtuais e você quer o conector de uma loja específica.\nOmitindo o parâmetro, retorna o conector da conta que não está atribuído a\nnenhuma loja virtual.\n",
            "schema": {
              "type": "integer",
              "format": "int64",
              "nullable": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Conector localizado (ou `entidade` nula quando não há conector).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_ConectorEcomm"
                },
                "examples": {
                  "vtex": {
                    "summary": "Conta integrada à VTEX, com estorno e vale-compra habilitados",
                    "value": {
                      "dataHoraResposta": "2026-09-18T13:20:11.4821Z",
                      "registros": 1,
                      "httpStatus": "200",
                      "entidade": {
                        "id": 42,
                        "nome": "VTEX - Loja Oficial",
                        "ativo": true,
                        "accountName": "lojaoficial",
                        "hostname": "lojaoficial.vtexcommercestable.com.br",
                        "statusPermitidos": "invoiced,handling",
                        "permiteEstorno": true,
                        "permiteGerarValeCompras": true,
                        "permiteBuscaPedidoPorNumero": true,
                        "permiteBuscaPedidoPorEmail": true,
                        "feedDePedidosConfigurado": true,
                        "valeCompraPossuiCodigo": true,
                        "prazoEmDiasParaEstornoAutomatico": 90,
                        "useStoreCredit": false,
                        "restrictedToOwnerGiftcard": true,
                        "lojaVirtual": {
                          "id": 7,
                          "lojaUrl": "https://lojaoficial.com.br",
                          "ativo": true
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado (token ausente, inválido ou expirado).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Erro interno."
          }
        }
      }
    },
    "/v1/pvt/processo/avaliar-regras-pedido": {
      "post": {
        "tags": [
          "Processos"
        ],
        "summary": "Avalia se um pedido pode abrir uma solicitação de troca ou devolução",
        "description": "Aplica as **regras de negócio configuradas na conta** sobre um pedido e devolve o\nveredito: o consumidor pode ou não seguir com a troca/devolução dos itens escolhidos,\ne qual mensagem deve ser exibida a ele.\n\nAs regras avaliadas incluem, entre outras: prazo de arrependimento/garantia, status do\npedido, categorias ou SKUs bloqueados, quantidade já devolvida anteriormente e\nnecessidade de gerar autorização de logística reversa.\n\n### Para que serve\nÉ o **\"posso prosseguir?\"** do fluxo. Em vez de replicar as regras da conta na sua\naplicação (que mudam por configuração, sem aviso), você envia o pedido com os itens\nselecionados e recebe a decisão já pronta, junto do texto a ser exibido.\n\n### Como o front Genius usa\nNa tela de seleção de itens, assim que o consumidor marca os produtos e os motivos,\no front chama este endpoint e:\n\n- Se `permitir` for `false`, **bloqueia o botão de continuar** e exibe `textoUsuario`\n  como mensagem de recusa (ex.: *\"O prazo para devolução deste pedido expirou\"*);\n- Se `permitir` for `true`, segue para as etapas de reembolso e logística;\n- Guarda `gerarAutorizacaoReversa` para saber se, ao final, o processo exigirá\n  autorização de logística reversa.\n\n### Observações\n- A `Configuracao` da conta **não** é enviada no corpo: ela é carregada no servidor a\n  partir do token autenticado (e de `lojaVirtualId`, quando informado). Isso garante que\n  as regras aplicadas sejam sempre as vigentes na conta.\n- O endpoint é **consultivo**: não cria processo nem reserva nada.\n",
        "operationId": "AvaliarRegrasPedido",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "lojaVirtualId",
            "in": "query",
            "required": false,
            "description": "Id da loja virtual (subconta). Informe apenas se a conta opera múltiplas lojas\nvirtuais — determina qual conjunto de regras será aplicado.\n",
            "schema": {
              "type": "integer",
              "format": "int64",
              "nullable": true
            }
          },
          {
            "name": "admin",
            "in": "query",
            "required": false,
            "description": "`true` avalia as regras em **contexto administrativo (SAC)**, em que parte das\nrestrições aplicadas ao consumidor final é relaxada (ex.: atendente pode abrir\nsolicitação fora do prazo). Use `false` (padrão) para o fluxo do consumidor.\n",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "requestBody": {
          "required": true,
          "description": "Pedido a ser avaliado, contendo pelo menos os itens (`Skus`) selecionados com seus\nmotivos e o tipo de processo (troca ou devolução). Use o mesmo objeto de pedido\nretornado pelos endpoints de consulta de pedido, preenchendo `Motivo` e\n`Quantidade` dos itens escolhidos.\n",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PedidoInputDTO"
              },
              "examples": {
                "devolucaoUmItem": {
                  "summary": "Devolução de 1 item por arrependimento",
                  "value": {
                    "PedidoId": "1234567890-01",
                    "Numero": "PED-0001",
                    "Data": "2026-09-01T12:00:00Z",
                    "Valor": 199.9,
                    "ValorFrete": 19.9,
                    "QuantidadeItens": 1,
                    "ClienteEmail": "maria@email.com",
                    "ClienteDocumento": "12345678901",
                    "Skus": [
                      {
                        "SkuId": "SKU-1",
                        "ProdutoId": "P-1",
                        "SkuNome": "Camiseta Preta M",
                        "Preco": 199.9,
                        "Quantidade": 1,
                        "QuantidadeTotal": 1,
                        "TipoProcesso": 1,
                        "Motivo": {
                          "Descricao": "Desisti da compra"
                        }
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Regras avaliadas com sucesso.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_ResultadoRegraPedido"
                },
                "examples": {
                  "permitido": {
                    "summary": "Pedido elegível",
                    "value": {
                      "dataHoraResposta": "2026-09-18T13:22:40.102Z",
                      "registros": 1,
                      "httpStatus": "200",
                      "entidade": {
                        "nome": "PrazoDevolucao",
                        "descricao": "Pedido dentro do prazo de devolução",
                        "permitir": true,
                        "gerarAutorizacaoReversa": true,
                        "textoUsuario": null
                      }
                    }
                  },
                  "recusado": {
                    "summary": "Pedido fora do prazo",
                    "value": {
                      "dataHoraResposta": "2026-09-18T13:22:40.102Z",
                      "registros": 1,
                      "httpStatus": "200",
                      "entidade": {
                        "nome": "PrazoDevolucao",
                        "descricao": "Prazo de 30 dias expirado",
                        "permitir": false,
                        "gerarAutorizacaoReversa": false,
                        "textoUsuario": "O prazo para solicitar a devolução deste pedido expirou em 01/09/2026."
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado."
          },
          "500": {
            "description": "Erro interno. Também retornado quando a configuração da conta não pôde ser\nlocalizada (`erroDescricao: \"Configuração da conta não localizada\"`).\n"
          }
        }
      }
    },
    "/v1/pvt/vale-compra/obter-vale-compras-do-cliente": {
      "get": {
        "tags": [
          "Vale-compra"
        ],
        "summary": "Obtém as definições de vale-compra da conta",
        "description": "Retorna as **regras de vale-compra** configuradas na conta — até duas, identificadas\npela ordem (`ValeCompra1` e `ValeCompra2`).\n\n> ⚠️ Este endpoint **não** lista vales já emitidos para consumidores. Ele devolve a\n> *configuração* usada para calcular o vale que **seria** gerado.\n\n### Como interpretar\n- `valorPorcentagem`: percentual aplicado sobre o valor devolvido. Ex.: `110` significa\n  que o consumidor recebe 110% do valor em vale-compra (bônus de 10% para incentivar a\n  retenção da venda).\n- `tipo`: `0` = **retenção** (vale oferecido no lugar do estorno em dinheiro);\n  `1` = **composição da diferença** a pagar pelo consumidor numa troca por item de\n  maior valor.\n- `expirarEmDias`: validade do vale a partir da emissão.\n- `ordem`: `1` é a definição principal; `2` costuma ser a variação com bônus.\n\n### Como o front Genius usa\nNa tela de escolha da forma de reembolso, o front usa `valorPorcentagem` para montar a\ncomparação que o consumidor vê:\n\n> *\"Receber R$ 199,90 de volta no cartão\"* × *\"Receber **R$ 219,89** em vale-compra\n> (110%), válido por 90 dias\"*\n\nTambém alimenta o cálculo de `calcular-valores-estorno-por-item`, que usa essas\ndefinições para compor os valores finais.\n\n### Observações\n- Retorna `404` quando a conta **não possui** nenhuma definição ativa de vale-compra —\n  nesse caso simplesmente não ofereça a opção de vale ao consumidor.\n",
        "operationId": "ObterValeComprasDoCliente",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "lojaVirtualId",
            "in": "query",
            "required": false,
            "description": "Id da loja virtual (subconta), quando a conta opera múltiplas lojas.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "nullable": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Definições de vale-compra localizadas.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_ValeComprasCliente"
                },
                "examples": {
                  "doisVales": {
                    "summary": "Conta com vale padrão (100%) e vale bônus (110%)",
                    "value": {
                      "dataHoraResposta": "2026-09-18T13:25:02.771Z",
                      "registros": 2,
                      "httpStatus": "200",
                      "entidade": {
                        "valeCompra1": {
                          "id": 15,
                          "descricao": "Vale-compra",
                          "ordem": 1,
                          "tipo": 0,
                          "valorPorcentagem": 100,
                          "expirarEmDias": 90,
                          "ativo": true
                        },
                        "valeCompra2": {
                          "id": 16,
                          "descricao": "Vale-compra com bônus",
                          "ordem": 2,
                          "tipo": 0,
                          "valorPorcentagem": 110,
                          "expirarEmDias": 90,
                          "ativo": true
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado."
          },
          "404": {
            "description": "A conta não possui definição de vale-compra ativa."
          },
          "500": {
            "description": "Erro interno."
          }
        }
      }
    },
    "/v1/pvt/financeiro/verificar-elegibilidade-manter-item": {
      "get": {
        "tags": [
          "Financeiro"
        ],
        "summary": "Verifica se o consumidor pode \"manter o item\" em vez de devolvê-lo",
        "description": "Informa se, para o e-mail consultado, a conta permite a modalidade **\"mantenha o\nitem\"** — o consumidor recebe o reembolso e **fica com o produto**, sem precisar\npostá-lo de volta.\n\n### Por que existe\nPara itens de baixo valor, o custo da logística reversa muitas vezes supera o valor do\nproduto. Nesses casos, compensa reembolsar e não recolher. A liberação depende de\nregras da conta (valor do item, categoria, histórico e reputação do consumidor), que\nsão avaliadas no servidor — por isso a consulta é por e-mail.\n\n### Como o front Genius usa\nAntes de apresentar as opções de envio, o front chama este endpoint com o e-mail do\ncomprador do pedido. Quando o retorno é `true`, a etapa logística é **substituída**\npela mensagem *\"Você não precisa devolver o produto\"* e o processo segue direto para o\nreembolso — nenhuma transportadora, etiqueta ou loja física é oferecida.\n\n### Observações\n- Resultado é cacheado por 5 minutos por combinação conta + loja virtual + e-mail.\n- `false` não é erro: significa apenas que o fluxo normal de devolução física se aplica.\n",
        "operationId": "VerificarElegibilidadeManterItem",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "email",
            "in": "query",
            "required": true,
            "description": "E-mail do consumidor (o mesmo do comprador no pedido original).",
            "schema": {
              "type": "string",
              "format": "email"
            }
          },
          {
            "name": "lojaVirtualId",
            "in": "query",
            "required": false,
            "description": "Id da loja virtual (subconta), quando a conta opera múltiplas lojas.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "nullable": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Verificação concluída.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_bool"
                },
                "examples": {
                  "permitido": {
                    "summary": "Consumidor pode ficar com o item",
                    "value": {
                      "dataHoraResposta": "2026-09-18T13:31:00.512Z",
                      "registros": 1,
                      "httpStatus": "200",
                      "entidade": true
                    }
                  },
                  "naoPermitido": {
                    "summary": "Devolução física necessária",
                    "value": {
                      "dataHoraResposta": "2026-09-18T13:31:00.512Z",
                      "registros": 1,
                      "httpStatus": "200",
                      "entidade": false
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado."
          },
          "500": {
            "description": "Erro interno."
          }
        }
      }
    },
    "/v1/pvt/financeiro/calcular-valor-etexto-estorno": {
      "post": {
        "tags": [
          "Financeiro"
        ],
        "summary": "Calcula o valor do reembolso e o texto a exibir ao consumidor",
        "description": "Calcula quanto será devolvido em um processo, **aplicando a regra de frete configurada\nna conta**, e devolve junto a frase pronta para exibição ao consumidor.\n\n### Por que existe\nA parte difícil do reembolso é o **frete**: dependendo da configuração, ele é devolvido\nintegralmente, proporcionalmente aos itens devolvidos, apenas quando o pedido inteiro é\ndevolvido, ou nunca. Reimplementar essas variações do lado do cliente gera divergência\nentre o valor prometido na tela e o valor efetivamente estornado. Este endpoint elimina\nesse risco: o mesmo cálculo que a Genius usará no estorno é o que você exibe.\n\nO campo `texto` já vem formatado e contextualizado (ex.: *\"R$ 219,89 (frete incluso)\"*),\npronto para renderizar sem pós-processamento.\n\n### Como o front Genius usa\nNa montagem do resumo do reembolso (`MontarDadosEstornoPorItem`), o front envia o\nprocesso em construção — com itens selecionados, valor do pedido, frete e a definição\nde vale-compra escolhida — e usa o `texto` retornado diretamente no rótulo\n*\"Valor total a receber\"*.\n\n### Parâmetro `tipoEstorno`\nDeve refletir a regra de frete da conta (campo `TipoFreteEstorno` da configuração).\nVeja os valores possíveis em `EnumTipoFreteEstorno`.\n",
        "operationId": "CalcularValorETextoEstorno",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "tipoEstorno",
            "in": "query",
            "required": true,
            "description": "Regra de estorno de frete a aplicar no cálculo. Use o valor configurado na conta\n(`TipoFreteEstorno`). Ver `EnumTipoFreteEstorno`.\n",
            "schema": {
              "$ref": "#/components/schemas/EnumTipoFreteEstorno"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "description": "Processo (em construção ou existente) sobre o qual o valor será calculado. Os campos\nrelevantes são o pedido associado, seus itens selecionados, o valor do frete e a\ndefinição de vale-compra, quando o reembolso for nessa modalidade.\n",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProcessoInputDTO"
              },
              "examples": {
                "devolucaoComFrete": {
                  "summary": "Devolução integral com frete proporcional",
                  "value": {
                    "Marketplace": false,
                    "Pedido": {
                      "Numero": "PED-0001",
                      "Valor": 199.9,
                      "ValorFrete": 19.9,
                      "QuantidadeItens": 1,
                      "Skus": [
                        {
                          "SkuId": "SKU-1",
                          "Preco": 199.9,
                          "Quantidade": 1,
                          "QuantidadeTotal": 1,
                          "TipoProcesso": 1
                        }
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Cálculo realizado.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_EstornoTextoValor"
                },
                "examples": {
                  "comFrete": {
                    "summary": "Valor com frete incluso",
                    "value": {
                      "dataHoraResposta": "2026-09-18T13:34:19.220Z",
                      "registros": 1,
                      "httpStatus": "200",
                      "entidade": {
                        "valor": 219.8,
                        "texto": "R$ 219,80 (frete incluso)"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado."
          },
          "500": {
            "description": "Erro interno."
          }
        }
      }
    },
    "/v1/pvt/financeiro/calcular-valores-estorno-por-item": {
      "post": {
        "tags": [
          "Financeiro"
        ],
        "summary": "Calcula a quebra do reembolso por forma de devolução (estorno × vale-compra)",
        "description": "Dado o conjunto de itens devolvidos e as **transações de pagamento** do pedido original,\ncalcula quanto vai para cada destino: estorno no meio de pagamento, estorno automático,\nvale-compra, frete e cashback.\n\n### Por que existe\nUm pedido pago com dois cartões + um vale-compra não tem \"um valor de reembolso\": tem\numa **distribuição**. As regras que definem essa distribuição (o que pode voltar\nautomaticamente ao cartão, qual o teto do estorno automático, o que sobra e vira vale,\ncomo o bônus percentual entra) são complexas e específicas de cada conta. Este endpoint\nentrega o resultado já calculado, no mesmo formato que a Genius usará ao executar o\nestorno.\n\n### Campos mais importantes da resposta\n| Campo | Significado |\n|---|---|\n| `estorno` | Total a devolver no meio de pagamento original |\n| `estornoAutomatico` | Parte do estorno que pode ser executada automaticamente |\n| `sobraEstornoAutomatico` | O que excede o teto automático e exigirá ação manual |\n| `valeCompras` | Total a ser convertido em vale-compra |\n| `frete` | Parcela de frete incluída no reembolso |\n| `possuiEstornoAutomatico` / `isAutoRefundAllowed` | Se o estorno automático se aplica |\n| `dataExpiracao` | Validade do vale-compra que seria gerado |\n\n### Como o front Genius usa\nÉ o endpoint que alimenta a tela de reembolso quando a conta opera com **estorno por\nitem** (`HabilitarEstornoPorItem`). O front monta o request a partir do pedido em\nsessão (`EstornoPorItemValores`) e usa a resposta para exibir, lado a lado, quanto o\nconsumidor recebe no cartão e quanto receberia em vale-compra.\n\n### Observações\n- Consultivo: **nada é estornado nem gerado** nesta chamada.\n- Envie em `Transacoes` as transações do pedido como retornadas pela consulta de pedido;\n  elas determinam o que é elegível a estorno automático.\n",
        "operationId": "CalcularValoresEstornoPorItem",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "lojaVirtualId",
            "in": "query",
            "required": false,
            "description": "Id da loja virtual (subconta), quando a conta opera múltiplas lojas.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EstornoPorItemValoresRequest"
              },
              "examples": {
                "umItemCartao": {
                  "summary": "Devolução de 1 item pago em cartão",
                  "value": {
                    "Skus": [
                      {
                        "SkuId": "SKU-1",
                        "Preco": 199.9,
                        "Quantidade": 1,
                        "QuantidadeTotal": 1,
                        "TipoProcesso": 1
                      }
                    ],
                    "Transacoes": [
                      {
                        "tid": "1234567890abc",
                        "ativa": true,
                        "pagamentos": [
                          {
                            "valor": 219.8,
                            "tipoPagamento": 1
                          }
                        ]
                      }
                    ],
                    "QuantidadeItens": 1,
                    "FreteTipoEstorno": 0,
                    "ValorFrete": 19.9,
                    "ValorPedido": 219.8,
                    "ValeComprasBonus": false,
                    "DataPermitida": "2026-11-30T00:00:00Z"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Valores calculados.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_TransactionSystemCalculations"
                },
                "examples": {
                  "calculo": {
                    "summary": "Estorno automático parcial + sobra em vale-compra",
                    "value": {
                      "dataHoraResposta": "2026-09-18T13:38:45.881Z",
                      "registros": 1,
                      "httpStatus": "200",
                      "entidade": {
                        "estorno": 219.8,
                        "estornoAutomatico": 200,
                        "sobraEstornoAutomatico": 19.8,
                        "valorMaximoEstornoAutomatico": 200,
                        "possuiEstornoAutomatico": true,
                        "isAutoRefundAllowed": true,
                        "valeCompras": 241.78,
                        "frete": 19.9,
                        "cashback": null,
                        "freteTipoEstorno": 0,
                        "dataExpiracao": "2026-12-17T00:00:00Z",
                        "ajusteCentavosAutoRefund": 0
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado."
          },
          "500": {
            "description": "Erro interno."
          }
        }
      }
    },
    "/v1/pvt/financeiro/verificar-permissao-estorno-automatico-por-item": {
      "post": {
        "tags": [
          "Financeiro"
        ],
        "summary": "Verifica se as transações do pedido permitem estorno automático",
        "description": "Analisa as **transações de pagamento** do pedido e informa se o estorno pode ser\nexecutado automaticamente na plataforma de e-commerce/adquirente, sem intervenção\nmanual do time de atendimento.\n\n### Por que existe\nEstorno automático não depende só da conta estar habilitada: depende do **meio de\npagamento** (boleto e Pix normalmente não permitem), do **prazo** desde a compra\n(adquirentes limitam o estorno no cartão a uma janela de dias) e do **valor**. Este\nendpoint concentra essas verificações.\n\n### Como o front Genius usa\nO front chama este endpoint (`EstornoPorItemVerificarAutomatico`) **antes** de calcular\nos valores, com `executarRegras: true`, e guarda o resultado. Quando é `false`, a\ninterface não promete \"estorno automático em até X dias\" — em vez disso informa que o\nreembolso passará por análise, evitando frustração e chamado no SAC.\n\n### Diferença para `verificar-elegibilidade-estorno-automatico`\n- **Este**: parte das **transações** já conhecidas (multi-pagamento, por item). É o\n  usado no fluxo de estorno por item.\n- **O outro**: parte do **pedido inteiro** e de um valor. É o usado no fluxo clássico.\n",
        "operationId": "VerificarPermissaoEstornoAutomaticoPorItem",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "lojaVirtualId",
            "in": "query",
            "required": false,
            "description": "Id da loja virtual (subconta), quando a conta opera múltiplas lojas.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EstornoPorItemPermiteEstornoAutomaticoRequest"
              },
              "examples": {
                "verificacaoPadrao": {
                  "summary": "Verificação aplicando regras de valor e prazo",
                  "value": {
                    "Transacoes": [
                      {
                        "tid": "1234567890abc",
                        "ativa": true,
                        "pagamentos": [
                          {
                            "valor": 219.8,
                            "tipoPagamento": 1
                          }
                        ]
                      }
                    ],
                    "ExecutarRegras": true,
                    "DataPermitida": "2026-11-30T00:00:00Z",
                    "ValorEstorno": 0
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Verificação concluída.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_bool"
                },
                "examples": {
                  "permitido": {
                    "value": {
                      "dataHoraResposta": "2026-09-18T13:41:07.003Z",
                      "registros": 1,
                      "httpStatus": "200",
                      "entidade": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado."
          },
          "500": {
            "description": "Erro interno."
          }
        }
      }
    },
    "/v1/pvt/financeiro/verificar-elegibilidade-estorno-automatico": {
      "post": {
        "tags": [
          "Financeiro"
        ],
        "summary": "Verifica se um pedido é elegível a estorno automático",
        "description": "Versão \"pedido inteiro\" da verificação de estorno automático: recebe o pedido e o valor\npretendido do reembolso e responde se ele pode ser estornado automaticamente, conforme\na configuração da conta e as características do pagamento.\n\n### Quando usar\nUse no **fluxo clássico** (sem estorno por item), quando você tem o pedido e um valor\núnico de reembolso. Se sua integração trabalha com múltiplos pagamentos e devolução\nitem a item, prefira `verificar-permissao-estorno-automatico-por-item`.\n\n### Como o front Genius usa\nO front consulta este endpoint ao montar a etapa de reembolso do fluxo tradicional,\npara decidir entre exibir *\"estorno automático\"* (com prazo estimado) ou *\"reembolso\nsujeito a análise\"*.\n",
        "operationId": "VerificarElegibilidadeEstornoAutomatico",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "valor",
            "in": "query",
            "required": true,
            "description": "Valor pretendido do reembolso, em reais (ex.: `219.80`).",
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "lojaVirtualId",
            "in": "query",
            "required": false,
            "description": "Id da loja virtual (subconta), quando a conta opera múltiplas lojas.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "required": true,
          "description": "Pedido original, como retornado pela consulta de pedidos.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PedidoInputDTO"
              },
              "examples": {
                "pedidoCartao": {
                  "summary": "Pedido pago em cartão de crédito",
                  "value": {
                    "PedidoId": "1234567890-01",
                    "Numero": "PED-0001",
                    "Data": "2026-09-01T12:00:00Z",
                    "Valor": 219.8,
                    "ValorFrete": 19.9,
                    "QuantidadeItens": 1,
                    "ClienteEmail": "maria@email.com"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Verificação concluída.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_bool"
                },
                "examples": {
                  "elegivel": {
                    "value": {
                      "dataHoraResposta": "2026-09-18T13:44:52.640Z",
                      "registros": 1,
                      "httpStatus": "200",
                      "entidade": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado."
          },
          "500": {
            "description": "Erro interno."
          }
        }
      }
    },
    "/v1/pvt/pedido/obter-produto-do-conector": {
      "post": {
        "tags": [
          "Produtos"
        ],
        "summary": "Consulta um produto na loja virtual, com SKUs, preço e estoque em tempo real",
        "description": "Busca um produto **diretamente na plataforma de e-commerce** integrada (via conector),\nretornando suas variações (SKUs), preços e disponibilidade no momento da consulta.\n\n### Para que serve\nÉ o endpoint que viabiliza a **troca por outra variação**. Numa devolução basta saber o\nque foi comprado; numa troca é preciso saber o que está disponível **agora**: a grade de\ntamanhos/cores, quais SKUs têm estoque e a que preço. Consultar a plataforma direto pela\nGenius evita que sua integração precise de credenciais próprias da loja e replicar as\nparticularidades de cada plataforma (VTEX, Shopify, Magento, AnyMarket…).\n\n### Como o front Genius usa\nQuando o consumidor escolhe \"trocar por outro tamanho/cor\", o front chama este endpoint\ncom o `produtoId` do item devolvido e o `mainSkuId` comprado originalmente, e monta o\nseletor de variações apenas com SKUs disponíveis. Informando `zipCodeTo`, o estoque é\navaliado para a região de entrega do consumidor — evitando oferecer uma variação que não\npode ser entregue no CEP dele.\n\n### Observações\n- `conectorId` deve pertencer à **conta autenticada**; caso contrário retorna `401`.\n  Obtenha-o em `/v2/pvt/ecommerce/obter-conector`.\n- Produto indisponível na plataforma retorna `500` com `erroTipo` de integração — trate\n  como \"variação não disponível para troca\", não como falha da API.\n- A plataforma de origem pode aplicar rate limit; nesse caso a resposta traz o código\n  `429` em `erroCodigo`.\n",
        "operationId": "ObterProdutoDoConector",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ObterProdutoConectorRequest"
              },
              "examples": {
                "trocaVariacao": {
                  "summary": "Consulta de grade para troca de tamanho",
                  "value": {
                    "ConectorId": 42,
                    "ProdutoId": "P-1",
                    "MainSkuId": "SKU-1",
                    "ZipCodeTo": "01310-100",
                    "LojaVirtualUrl": "https://lojaoficial.com.br",
                    "SellerId": "1"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Produto localizado.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_Produto"
                },
                "examples": {
                  "produtoComGrade": {
                    "summary": "Produto com três variações, uma sem estoque",
                    "value": {
                      "dataHoraResposta": "2026-09-18T13:48:30.115Z",
                      "registros": 1,
                      "httpStatus": "200",
                      "entidade": {
                        "id": "P-1",
                        "nome": "Camiseta Preta",
                        "referencia": "CAM-PRETA",
                        "detalheUrl": "https://lojaoficial.com.br/camiseta-preta/p",
                        "skus": [
                          {
                            "skuId": "SKU-1",
                            "skuNome": "Camiseta Preta M",
                            "preco": 199.9,
                            "estoque": 12
                          },
                          {
                            "skuId": "SKU-2",
                            "skuNome": "Camiseta Preta G",
                            "preco": 199.9,
                            "estoque": 4
                          },
                          {
                            "skuId": "SKU-3",
                            "skuNome": "Camiseta Preta GG",
                            "preco": 199.9,
                            "estoque": 0
                          }
                        ],
                        "especificacoes": [
                          {
                            "chave": "Cor",
                            "valores": [
                              "Preta"
                            ]
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Requisição inválida (`conectorId` ou `produtoId` ausentes)."
          },
          "401": {
            "description": "Não autorizado — token inválido **ou** o `conectorId` informado não pertence à\nconta autenticada.\n"
          },
          "500": {
            "description": "Erro interno ou falha de integração com a plataforma de e-commerce."
          }
        }
      }
    },
    "/v1/pvt/logistica/obter-transportadoras": {
      "post": {
        "tags": [
          "Logística"
        ],
        "summary": "Lista as transportadoras ativas para a logística reversa",
        "description": "Lista as **transportadoras habilitadas na conta**, com as modalidades de coleta/postagem\nque cada uma aceita e, quando informado o CEP de origem, apenas as que atendem àquela\nregião.\n\n### Para que serve\nDefine as opções de envio que podem ser apresentadas ao consumidor. Cada transportadora\ninforma suas modalidades por meio de flags:\n\n| Campo | Modalidade |\n|---|---|\n| `agencia` | Postagem em agência (consumidor leva o pacote) |\n| `coletaSimples` | Coleta no endereço do consumidor |\n| `domicilio` | Coleta domiciliar/simultânea |\n| `expresso` | Coleta expressa |\n| `postoDePostagem` | Possui pontos de postagem (ver `postos`) |\n\nOs campos `coletaSimplesTexto` e `coletaDomiciliarTexto` trazem as **instruções já\nredigidas** para exibir ao consumidor (ex.: como embalar, o que imprimir), e\n`prazoPostagem` indica em quantos dias ele precisa postar.\n\n### Como o front Genius usa\nNa etapa logística, o front lista as transportadoras retornadas e, para cada uma, exibe\napenas as modalidades habilitadas. Ao selecionar uma que tenha `postoDePostagem`, busca\nos pontos próximos ao CEP e mostra no mapa. A escolha vira parte da solicitação enviada\nem `/v1/pvt/processo/enviar-solicitacao`.\n\n### Observações\n- Informe `cepOrigem` (CEP do consumidor) para aplicar as restrições por faixa de CEP.\n  Sem ele, a lista volta sem esse filtro.\n- Retorna `204` quando nenhuma transportadora está habilitada — nesse caso, ofereça\n  devolução em loja física, se houver.\n",
        "operationId": "ObterTransportadorasAtivas",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "cepOrigem",
            "in": "query",
            "required": false,
            "description": "CEP de origem da logística reversa, isto é, o **CEP do consumidor** de onde o produto\nsairá. Usado para filtrar transportadoras por área de atendimento. Ex.: `01310-100`.\n",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Transportadoras localizadas.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_Transportadoras"
                },
                "examples": {
                  "duasTransportadoras": {
                    "value": {
                      "dataHoraResposta": "2026-09-18T13:52:10.900Z",
                      "registros": 2,
                      "httpStatus": "200",
                      "entidade": [
                        {
                          "id": 3,
                          "nome": "Correios",
                          "nomeId": "correios",
                          "ativo": true,
                          "agencia": true,
                          "coletaSimples": true,
                          "domicilio": false,
                          "expresso": false,
                          "postoDePostagem": true,
                          "prazoPostagem": 7,
                          "coletaSimplesTexto": "Leve o pacote lacrado a uma agência dos Correios em até 7 dias.",
                          "linkDeCosulta": "https://rastreamento.correios.com.br"
                        },
                        {
                          "id": 8,
                          "nome": "Jadlog",
                          "nomeId": "jadlog",
                          "ativo": true,
                          "agencia": false,
                          "coletaSimples": false,
                          "domicilio": true,
                          "expresso": true,
                          "postoDePostagem": true,
                          "prazoPostagem": 5
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "204": {
            "description": "Nenhuma transportadora ativa localizada para a conta."
          },
          "401": {
            "description": "Não autorizado."
          },
          "500": {
            "description": "Erro interno."
          }
        }
      }
    },
    "/v1/pvt/loja-fisica/listar-lojas-ativas": {
      "get": {
        "tags": [
          "Logística"
        ],
        "summary": "Lista as lojas físicas ativas para devolução presencial",
        "description": "Lista as **lojas físicas ativas** da conta, com endereço completo e as regras que\ndeterminam quando cada uma pode ser usada.\n\n### Para que serve\nHabilita a devolução em loja (*return in store*), alternativa mais rápida e barata que a\nlogística reversa. A lista já vem filtrada por lojas ativas, mas cada item traz as\nrestrições que sua aplicação deve respeitar:\n\n- `ativaParaEntregaFisica`: aceita o consumidor entregando pessoalmente;\n- `ativaParaEntregaParceiroLogistico`: recebe via parceiro logístico;\n- `tipoRestricaoDeUso` + `restritorId`: restringe a loja a uma doca, estoque ou seller\n  específico — só ofereça a loja se o pedido casar com o restritor;\n- `resumoRestricaoDeUso`: a mesma informação em texto, pronta para exibição;\n- `allowedSellerName`: seller autorizado a usar a loja (cenários de marketplace).\n\n### Como o front Genius usa\nNa etapa logística, quando a conta trabalha com devolução em loja, o front lista as\nlojas ativas, calcula a distância a partir do CEP do consumidor e exibe as mais próximas\ncom endereço e horário. A loja escolhida acompanha a solicitação enviada em\n`/v1/pvt/processo/enviar-solicitacao` (campo `LojaFisicaId`).\n\n### Observações\n- Uma conta sem lojas físicas recebe `200` com lista vazia e `registros: 0` — não é erro.\n",
        "operationId": "ListarLojasFisicasAtivas",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "lojaVirtualId",
            "in": "query",
            "required": false,
            "description": "Id da loja virtual (subconta). Informe para trazer apenas as lojas físicas vinculadas\nàquela loja virtual.\n",
            "schema": {
              "type": "integer",
              "format": "int64",
              "nullable": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Lojas físicas ativas (lista pode vir vazia).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_LojasFisicas"
                },
                "examples": {
                  "umaLoja": {
                    "value": {
                      "dataHoraResposta": "2026-09-18T13:55:44.320Z",
                      "registros": 1,
                      "httpStatus": "200",
                      "entidade": [
                        {
                          "id": 11,
                          "ativa": true,
                          "ativaParaEntregaFisica": true,
                          "ativaParaEntregaParceiroLogistico": false,
                          "tipoRestricaoDeUso": 0,
                          "restritorId": null,
                          "resumoRestricaoDeUso": "Nenhuma",
                          "allowedSellerName": null,
                          "endereco": {
                            "logradouro": "Av. Paulista",
                            "numero": "1000",
                            "complemento": "Loja 2",
                            "bairro": "Bela Vista",
                            "cidade": "São Paulo",
                            "estado": "SP",
                            "cep": "01310-100"
                          },
                          "lojaVirtual": {
                            "id": 7,
                            "lojaUrl": "https://lojaoficial.com.br",
                            "ativo": true
                          }
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado."
          },
          "500": {
            "description": "Erro interno."
          }
        }
      }
    },
    "/v1/pvt/logistica/obter-entrega-expressa-mais-barata": {
      "post": {
        "tags": [
          "Logística"
        ],
        "summary": "Calcula a rota de entrega expressa mais barata até uma loja física",
        "description": "A partir do **endereço do consumidor**, calcula qual das lojas físicas da conta resulta\nna rota de **entrega expressa** mais barata, retornando o valor e o endereço de destino.\n\n### Para que serve\nEntrega expressa é a modalidade em que um parceiro logístico retira o produto na casa do\nconsumidor no mesmo dia e leva até a loja mais próxima — normalmente cobrada do\nconsumidor. Como o custo varia conforme a distância até cada loja, é preciso avaliar as\nrotas e escolher a mais barata antes de apresentar o preço.\n\n### Como o front Genius usa\nQuando a conta oferece entrega expressa, o front chama este endpoint com o endereço do\nconsumidor e exibe a opção *\"Retirada expressa hoje — R$ 24,90\"*. Se o consumidor\naceitar, o valor é cobrado no cartão e a rota retornada acompanha a solicitação enviada\nem `/v1/pvt/processo/enviar-solicitacao` (campo `RotaEntregaExpressa`).\n\n### Observações\n- Consultivo: **não** reserva coleta nem gera cobrança.\n- Se nenhuma rota for viável, `entidade` volta `null` com `registros: 0` — não ofereça\n  a modalidade.\n- Informe CEP, cidade e estado no mínimo; quanto mais completo o endereço, mais preciso\n  o cálculo.\n",
        "operationId": "ObterEntregaExpressaMaisBarata",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "description": "Endereço de origem da reversa, isto é, o endereço do consumidor.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EnderecoDTO"
              },
              "examples": {
                "enderecoConsumidor": {
                  "summary": "Endereço do consumidor em São Paulo",
                  "value": {
                    "logradouro": "Rua Augusta",
                    "numero": "500",
                    "complemento": "Apto 51",
                    "bairro": "Consolação",
                    "cidade": "São Paulo",
                    "estado": "SP",
                    "cep": "01305-000"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Rota calculada (ou `entidade` nula quando não há rota viável).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_RotaExpressaMaisBarata"
                },
                "examples": {
                  "rotaEncontrada": {
                    "value": {
                      "dataHoraResposta": "2026-09-18T13:58:02.447Z",
                      "registros": 1,
                      "httpStatus": "200",
                      "entidade": {
                        "valor": 24.9,
                        "enderecoOrigem": {
                          "logradouro": "Rua Augusta",
                          "numero": "500",
                          "cidade": "São Paulo",
                          "estado": "SP",
                          "cep": "01305-000"
                        },
                        "endereco": {
                          "logradouro": "Av. Paulista",
                          "numero": "1000",
                          "complemento": "Loja 2",
                          "bairro": "Bela Vista",
                          "cidade": "São Paulo",
                          "estado": "SP",
                          "cep": "01310-100"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado."
          },
          "500": {
            "description": "Erro interno."
          }
        }
      }
    }
  },
  "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
        ],
        "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
        ],
        "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
        ],
        "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
        ],
        "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
        ],
        "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": "Transação de pagamento de um pedido.",
        "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": "Product reference."
          },
          "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."
          }
        }
      },
      "ApiResponseEnvelope": {
        "type": "object",
        "description": "Envelope padrão das respostas da API Genius Returns. O conteúdo útil vem sempre em\n`entidade`; os campos `erro*` só são preenchidos quando há falha.\n",
        "properties": {
          "dataHoraResposta": {
            "type": "string",
            "format": "date-time",
            "description": "Data e hora da resposta, em UTC."
          },
          "registros": {
            "type": "integer",
            "format": "int32",
            "description": "Quantidade de registros retornados em `entidade`."
          },
          "httpStatus": {
            "type": "string",
            "description": "Código HTTP da resposta, em texto."
          },
          "erroCodigo": {
            "type": "string",
            "nullable": true,
            "description": "Código do erro, quando houver."
          },
          "erroDescricao": {
            "type": "string",
            "nullable": true,
            "description": "Mensagem do erro, quando houver."
          },
          "erroDetalhado": {
            "type": "string",
            "nullable": true,
            "description": "Detalhamento técnico do erro, quando houver."
          },
          "erroTipo": {
            "type": "string",
            "nullable": true,
            "description": "Classificação do erro. Útil para distinguir falha de integração com a plataforma de\ne-commerce (`04`) de erro de domínio ou erro comum (`00`).\n"
          }
        }
      },
      "ApiResponse_bool": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponseEnvelope"
          },
          {
            "type": "object",
            "description": "Resposta booleana (verificações de elegibilidade e permissão).",
            "properties": {
              "entidade": {
                "type": "boolean",
                "description": "Resultado da verificação."
              }
            }
          }
        ]
      },
      "ApiResponse_ConectorEcomm": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponseEnvelope"
          },
          {
            "type": "object",
            "properties": {
              "entidade": {
                "$ref": "#/components/schemas/ConectorEcommModel"
              }
            }
          }
        ]
      },
      "ApiResponse_ResultadoRegraPedido": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponseEnvelope"
          },
          {
            "type": "object",
            "properties": {
              "entidade": {
                "$ref": "#/components/schemas/ResultadoRegraPedidoModel"
              }
            }
          }
        ]
      },
      "ApiResponse_ValeComprasCliente": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponseEnvelope"
          },
          {
            "type": "object",
            "properties": {
              "entidade": {
                "$ref": "#/components/schemas/ValeComprasClienteModel"
              }
            }
          }
        ]
      },
      "ApiResponse_EstornoTextoValor": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponseEnvelope"
          },
          {
            "type": "object",
            "properties": {
              "entidade": {
                "$ref": "#/components/schemas/EstornoTextoValorModel"
              }
            }
          }
        ]
      },
      "ApiResponse_TransactionSystemCalculations": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponseEnvelope"
          },
          {
            "type": "object",
            "properties": {
              "entidade": {
                "$ref": "#/components/schemas/TransactionSystemCalculationsModel"
              }
            }
          }
        ]
      },
      "ApiResponse_Produto": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponseEnvelope"
          },
          {
            "type": "object",
            "properties": {
              "entidade": {
                "$ref": "#/components/schemas/ProdutoConectorModel"
              }
            }
          }
        ]
      },
      "ApiResponse_Transportadoras": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponseEnvelope"
          },
          {
            "type": "object",
            "properties": {
              "entidade": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TransportadoraAtivaModel"
                }
              }
            }
          }
        ]
      },
      "ApiResponse_LojasFisicas": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponseEnvelope"
          },
          {
            "type": "object",
            "properties": {
              "entidade": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/LojaFisicaAtivaModel"
                }
              }
            }
          }
        ]
      },
      "ApiResponse_RotaExpressaMaisBarata": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponseEnvelope"
          },
          {
            "type": "object",
            "properties": {
              "entidade": {
                "$ref": "#/components/schemas/RotaExpressaMaisBarataModel"
              }
            }
          }
        ]
      },
      "ConectorEcommModel": {
        "type": "object",
        "description": "Conector que liga a conta Genius Returns à plataforma de e-commerce. As flags\n`permite*` descrevem o que a plataforma integrada suporta e devem guiar quais opções\nsua aplicação oferece ao consumidor.\n",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Id do conector. É o valor a informar em `ConectorId` ao consultar produtos."
          },
          "nome": {
            "type": "string",
            "description": "Nome do conector, como cadastrado na Genius."
          },
          "ativo": {
            "type": "boolean",
            "description": "Conector ativo."
          },
          "accountName": {
            "type": "string",
            "nullable": true,
            "description": "Nome da conta na plataforma de e-commerce (ex.: account name da VTEX)."
          },
          "hostname": {
            "type": "string",
            "nullable": true,
            "description": "Host da loja na plataforma."
          },
          "statusPermitidos": {
            "type": "string",
            "nullable": true,
            "description": "Status de pedido, separados por vírgula, que a conta aceita para abrir troca ou\ndevolução (ex.: `invoiced,handling`). Pedidos em outros status devem ser recusados.\n"
          },
          "permiteEstorno": {
            "type": "boolean",
            "description": "A plataforma permite estorno automático no meio de pagamento. Quando `false`, não\nofereça \"devolução do valor no cartão\" de forma automática.\n"
          },
          "permiteGerarValeCompras": {
            "type": "boolean",
            "description": "A plataforma permite gerar vale-compra/gift card. Quando `false`, não ofereça a\nopção de vale ao consumidor.\n"
          },
          "permiteBuscaPedidoPorNumero": {
            "type": "boolean",
            "description": "A plataforma permite localizar pedido pelo número."
          },
          "permiteBuscaPedidoPorEmail": {
            "type": "boolean",
            "description": "A plataforma permite localizar pedidos pelo e-mail do comprador."
          },
          "feedDePedidosConfigurado": {
            "type": "boolean",
            "description": "Indica se o feed de pedidos já foi configurado para a conta."
          },
          "valeCompraPossuiCodigo": {
            "type": "boolean",
            "description": "O vale-compra gerado possui código de resgate a ser informado ao consumidor. Quando\n`false`, o crédito é aplicado automaticamente à conta dele na loja.\n"
          },
          "useStoreCredit": {
            "type": "boolean",
            "description": "Quando `true`, o reembolso em vale é feito como **crédito em conta** na loja, e não\ncomo vale-compra tradicional.\n"
          },
          "restrictedToOwnerGiftcard": {
            "type": "boolean",
            "description": "Quando `true`, o vale gerado só pode ser usado pelo próprio comprador; quando\n`false`, pode ser usado por qualquer pessoa de posse do código.\n"
          },
          "prazoEmDiasParaEstornoAutomatico": {
            "type": "integer",
            "nullable": true,
            "description": "Prazo, em dias a partir da compra, dentro do qual o estorno automático ainda é\naceito pela plataforma/adquirente.\n"
          },
          "habilitarTrocaMesmoSeller": {
            "type": "boolean",
            "description": "Restringe a troca a SKUs do mesmo seller do item original."
          },
          "showOnlyInvoicedItems": {
            "type": "boolean",
            "description": "Exibe apenas itens já faturados como elegíveis a troca ou devolução."
          },
          "lojaVirtual": {
            "$ref": "#/components/schemas/LojaVirtualModel"
          }
        }
      },
      "ResultadoRegraPedidoModel": {
        "type": "object",
        "description": "Veredito da avaliação das regras de negócio sobre um pedido.",
        "properties": {
          "nome": {
            "type": "string",
            "nullable": true,
            "description": "Identificador da regra que determinou o resultado (uso interno/diagnóstico)."
          },
          "descricao": {
            "type": "string",
            "nullable": true,
            "description": "Descrição técnica do resultado, para log e suporte."
          },
          "permitir": {
            "type": "boolean",
            "description": "**Campo principal.** `true` libera o pedido para seguir com a solicitação; `false`\nbloqueia — nesse caso exiba `textoUsuario` ao consumidor.\n"
          },
          "gerarAutorizacaoReversa": {
            "type": "boolean",
            "description": "Indica que, ao ser criado, o processo exigirá autorização de logística reversa\n(a coleta só é liberada após aprovação).\n"
          },
          "textoUsuario": {
            "type": "string",
            "nullable": true,
            "description": "Mensagem pronta para exibição ao consumidor, já no tom e no idioma da conta.\nPreenchida principalmente quando `permitir` é `false`.\n"
          }
        }
      },
      "ValeComprasClienteModel": {
        "type": "object",
        "description": "Definições de vale-compra da conta. `valeCompra1` é a definição principal; `valeCompra2`\ncostuma ser a variação com bônus. Qualquer uma pode vir `null`.\n",
        "properties": {
          "valeCompra1": {
            "$ref": "#/components/schemas/ValeCompraDefinicaoModel"
          },
          "valeCompra2": {
            "$ref": "#/components/schemas/ValeCompraDefinicaoModel"
          }
        }
      },
      "ValeCompraDefinicaoModel": {
        "type": "object",
        "nullable": true,
        "description": "Regra de vale-compra configurada na conta (não é um vale emitido).",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Id da definição."
          },
          "descricao": {
            "type": "string",
            "nullable": true,
            "description": "Descrição da definição, como configurada na conta."
          },
          "ordem": {
            "type": "integer",
            "description": "`1` = definição principal; `2` = variação alternativa (normalmente com bônus)."
          },
          "tipo": {
            "type": "integer",
            "description": "`0` = retenção (vale oferecido no lugar do estorno em dinheiro);\n`1` = composição da diferença a pagar pelo consumidor em troca por item de maior valor.\n",
            "enum": [
              0,
              1
            ]
          },
          "valor": {
            "type": "number",
            "format": "double",
            "description": "Valor fixo em R$, quando a definição usa valor fixo em vez de percentual."
          },
          "valorPorcentagem": {
            "type": "number",
            "format": "double",
            "description": "Percentual aplicado sobre o valor devolvido. `110` significa que o consumidor recebe\n110% do valor em vale-compra.\n"
          },
          "expirarEmDias": {
            "type": "integer",
            "description": "Validade do vale, em dias a partir da emissão."
          },
          "ativo": {
            "type": "boolean",
            "description": "Definição ativa."
          }
        }
      },
      "EstornoTextoValorModel": {
        "type": "object",
        "description": "Valor calculado do reembolso e o texto correspondente para exibição.",
        "properties": {
          "valor": {
            "type": "number",
            "format": "double",
            "description": "Valor do reembolso já com a regra de frete aplicada."
          },
          "texto": {
            "type": "string",
            "nullable": true,
            "description": "Frase pronta para exibir ao consumidor, formatada em reais e contextualizada com a\nregra de frete (ex.: `R$ 219,80 (frete incluso)`).\n"
          }
        }
      },
      "TransactionSystemCalculationsModel": {
        "type": "object",
        "description": "Distribuição do reembolso calculada pelo motor financeiro da Genius. Mostra quanto vai\npara cada destino considerando os meios de pagamento do pedido original.\n",
        "properties": {
          "estorno": {
            "type": "number",
            "format": "double",
            "description": "Total a ser devolvido no meio de pagamento original."
          },
          "estornoAutomatico": {
            "type": "number",
            "format": "double",
            "description": "Parcela do estorno que pode ser executada automaticamente."
          },
          "sobraEstornoAutomatico": {
            "type": "number",
            "format": "double",
            "description": "Parcela que excede o teto do estorno automático e exigirá tratamento manual pelo\ntime de atendimento.\n"
          },
          "valorMaximoEstornoAutomatico": {
            "type": "number",
            "format": "double",
            "description": "Teto do estorno automático conforme regras da conta e do meio de pagamento."
          },
          "possuiEstornoAutomatico": {
            "type": "boolean",
            "description": "Existe parcela elegível a estorno automático."
          },
          "isAutoRefundAllowed": {
            "type": "boolean",
            "description": "O estorno automático é permitido para este conjunto de transações."
          },
          "valeCompras": {
            "type": "number",
            "format": "double",
            "description": "Total a ser convertido em vale-compra, já com eventual bônus percentual aplicado.\n"
          },
          "frete": {
            "type": "number",
            "format": "double",
            "description": "Parcela de frete incluída no reembolso."
          },
          "cashback": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "description": "Valor de cashback, quando a conta opera nessa modalidade."
          },
          "freteTipoEstorno": {
            "$ref": "#/components/schemas/EPedidoItemEstorno"
          },
          "dataExpiracao": {
            "type": "string",
            "format": "date-time",
            "description": "Data de expiração do vale-compra que seria gerado."
          },
          "ajusteCentavosAutoRefund": {
            "type": "number",
            "format": "double",
            "description": "Ajuste de centavos aplicado para fechar o valor do estorno automático."
          }
        }
      },
      "ProdutoConectorModel": {
        "type": "object",
        "description": "Produto consultado diretamente na plataforma de e-commerce.",
        "properties": {
          "id": {
            "type": "string",
            "description": "Id do produto na loja virtual."
          },
          "nome": {
            "type": "string",
            "description": "Nome do produto."
          },
          "referencia": {
            "type": "string",
            "nullable": true,
            "description": "Código de referência do produto na loja."
          },
          "detalheUrl": {
            "type": "string",
            "nullable": true,
            "description": "URL da página do produto na loja virtual."
          },
          "skus": {
            "type": "array",
            "description": "Variações do produto com preço e estoque no momento da consulta. Ofereça para troca\napenas as que tiverem `estoque` maior que zero.\n",
            "items": {
              "$ref": "#/components/schemas/ProdutoSkuModel"
            }
          },
          "especificacoes": {
            "type": "array",
            "description": "Atributos do produto (cor, material etc.), no formato chave/valores.",
            "items": {
              "$ref": "#/components/schemas/ChaveValorDTO"
            }
          }
        }
      },
      "ProdutoSkuModel": {
        "type": "object",
        "description": "Variação (SKU) de um produto, com disponibilidade em tempo real.",
        "properties": {
          "skuId": {
            "type": "string",
            "description": "Id do SKU na loja virtual."
          },
          "skuNome": {
            "type": "string",
            "description": "Nome da variação (ex.: tamanho/cor)."
          },
          "produtoId": {
            "type": "string",
            "nullable": true,
            "description": "Id do produto ao qual o SKU pertence."
          },
          "preco": {
            "type": "number",
            "format": "double",
            "description": "Preço atual praticado na loja."
          },
          "precoDeLista": {
            "type": "number",
            "format": "double",
            "description": "Preço de lista (sem desconto)."
          },
          "estoque": {
            "type": "integer",
            "description": "Quantidade disponível. Quando o CEP é informado na consulta, reflete a\ndisponibilidade para aquela região.\n"
          },
          "imagemUrl": {
            "type": "string",
            "nullable": true,
            "description": "URL da imagem da variação."
          }
        }
      },
      "TransportadoraAtivaModel": {
        "type": "object",
        "description": "Transportadora habilitada na conta, com as modalidades de envio que aceita. Cada flag\ncorresponde a uma opção que pode ser apresentada ao consumidor.\n",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Id da transportadora (informe-o ao enviar a solicitação)."
          },
          "nome": {
            "type": "string",
            "description": "Nome de exibição da transportadora."
          },
          "nomeId": {
            "type": "string",
            "description": "Identificador único e estável da transportadora (ex.: `correios`)."
          },
          "ativo": {
            "type": "boolean",
            "description": "Transportadora ativa."
          },
          "agencia": {
            "type": "boolean",
            "description": "Aceita postagem em agência pelo próprio consumidor."
          },
          "coletaSimples": {
            "type": "boolean",
            "description": "Aceita coleta no endereço do consumidor."
          },
          "domicilio": {
            "type": "boolean",
            "description": "Aceita coleta domiciliar/simultânea."
          },
          "expresso": {
            "type": "boolean",
            "description": "Aceita coleta expressa."
          },
          "postoDePostagem": {
            "type": "boolean",
            "description": "Possui pontos de postagem. Quando `true`, consulte os postos próximos ao CEP do\nconsumidor para exibi-los no mapa.\n"
          },
          "postos": {
            "type": "array",
            "nullable": true,
            "description": "Pontos de postagem, quando carregados.",
            "items": {
              "$ref": "#/components/schemas/PostoPostagemBaseDTO"
            }
          },
          "coletaSimplesTexto": {
            "type": "string",
            "nullable": true,
            "description": "Instruções de coleta simples, já redigidas para exibição ao consumidor."
          },
          "coletaDomiciliarTexto": {
            "type": "string",
            "nullable": true,
            "description": "Instruções de coleta domiciliar, já redigidas para exibição ao consumidor."
          },
          "prazoPostagem": {
            "type": "integer",
            "nullable": true,
            "description": "Prazo, em dias, para o consumidor efetuar a postagem."
          },
          "linkDeCosulta": {
            "type": "string",
            "nullable": true,
            "description": "URL pública de rastreamento da transportadora."
          },
          "percentualDeSeguro": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "description": "Percentual do valor dos SKUs destinado a seguro, quando aplicável."
          },
          "suportaDetalhamentoServicos": {
            "type": "boolean",
            "description": "Suporta detalhamento de serviços logísticos."
          },
          "suportaRestricaoPorFaixaDeCEP": {
            "type": "boolean",
            "description": "Aplica restrições por faixa de CEP (motivo pelo qual vale informar `cepOrigem`)."
          },
          "hubId": {
            "type": "integer",
            "format": "int64",
            "nullable": true,
            "description": "Id do hub logístico, quando a transportadora opera via hub."
          },
          "lojaVirtual": {
            "$ref": "#/components/schemas/LojaVirtualModel"
          }
        }
      },
      "LojaFisicaAtivaModel": {
        "type": "object",
        "description": "Loja física ativa da conta, apta a receber devoluções presenciais. Respeite as\nrestrições de uso antes de oferecê-la ao consumidor.\n",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Id da loja física (informe-o em `LojaFisicaId` ao enviar a solicitação)."
          },
          "ativa": {
            "type": "boolean",
            "description": "Loja ativa."
          },
          "ativaParaEntregaFisica": {
            "type": "boolean",
            "description": "Aceita o consumidor entregando o produto pessoalmente."
          },
          "ativaParaEntregaParceiroLogistico": {
            "type": "boolean",
            "description": "Aceita recebimento via parceiro logístico (ex.: entrega expressa)."
          },
          "tipoRestricaoDeUso": {
            "$ref": "#/components/schemas/ELojaFisicaTipoRestricao"
          },
          "restritorId": {
            "type": "string",
            "nullable": true,
            "description": "Id da doca, estoque ou seller que restringe o uso desta loja, conforme\n`tipoRestricaoDeUso`. Só ofereça a loja quando o pedido corresponder a este valor.\n"
          },
          "resumoRestricaoDeUso": {
            "type": "string",
            "description": "Resumo textual da restrição, pronto para exibição (ex.: `Nenhuma`, `Seller (1)`).\n"
          },
          "restricaoEntregaFisica": {
            "type": "integer",
            "description": "Restrição adicional por forma de reembolso: `0` = nenhuma; `1` = somente quando\ntodos os itens forem estorno; `2` = somente quando todos os itens forem vale-compra.\n",
            "enum": [
              0,
              1,
              2
            ]
          },
          "allowedSellerName": {
            "type": "string",
            "nullable": true,
            "description": "Seller autorizado a utilizar a loja, em cenários de marketplace."
          },
          "endereco": {
            "$ref": "#/components/schemas/EnderecoDTO"
          },
          "lojaVirtual": {
            "$ref": "#/components/schemas/LojaVirtualModel"
          },
          "dataCadastro": {
            "type": "string",
            "format": "date-time",
            "description": "Data de cadastro da loja."
          },
          "dataAlteracao": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Data da última alteração."
          }
        }
      },
      "RotaExpressaMaisBarataModel": {
        "type": "object",
        "description": "Rota de entrega expressa de menor custo entre o consumidor e uma loja física.",
        "properties": {
          "valor": {
            "type": "number",
            "format": "double",
            "description": "Custo da entrega expressa, em reais — é o valor a exibir/cobrar do consumidor."
          },
          "enderecoOrigem": {
            "$ref": "#/components/schemas/EnderecoDTO"
          },
          "endereco": {
            "$ref": "#/components/schemas/EnderecoDTO"
          }
        }
      },
      "EstornoPorItemValoresRequest": {
        "type": "object",
        "description": "Entrada do cálculo de valores de estorno por item. Reúne os itens devolvidos, as\ntransações de pagamento do pedido e os parâmetros de frete.\n",
        "properties": {
          "Skus": {
            "type": "array",
            "description": "Itens que estão sendo devolvidos, com preço e quantidade. Envie apenas os\nselecionados pelo consumidor.\n",
            "items": {
              "$ref": "#/components/schemas/SkuInputDTO"
            }
          },
          "Transacoes": {
            "type": "array",
            "description": "Transações de pagamento do pedido original, como retornadas pela consulta de pedido.\nDeterminam o que pode ser estornado automaticamente e em qual meio.\n",
            "items": {
              "$ref": "#/components/schemas/TransacaoEcommDTO"
            }
          },
          "QuantidadeItens": {
            "type": "integer",
            "description": "Quantidade total de itens do pedido original (base para cálculos proporcionais)."
          },
          "FreteTipoEstorno": {
            "$ref": "#/components/schemas/EPedidoItemEstorno"
          },
          "ValorFrete": {
            "type": "number",
            "format": "double",
            "description": "Valor do frete a considerar no cálculo. Envie `0` quando a regra da conta não\ndevolver frete.\n"
          },
          "ValorPedido": {
            "type": "number",
            "format": "double",
            "description": "Valor total do pedido original."
          },
          "ValeComprasBonus": {
            "type": "boolean",
            "description": "`true` aplica a definição de vale-compra com bônus (ordem 2) em vez da definição\nprincipal.\n"
          },
          "DataPermitida": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Data-limite para estorno automático no meio de pagamento (normalmente a data da\ncompra somada ao prazo do conector). Após ela, o estorno deixa de ser automático.\n"
          }
        },
        "required": [
          "Skus",
          "Transacoes"
        ]
      },
      "EstornoPorItemPermiteEstornoAutomaticoRequest": {
        "type": "object",
        "description": "Entrada da verificação de estorno automático a partir das transações do pedido.",
        "properties": {
          "Transacoes": {
            "type": "array",
            "description": "Transações de pagamento do pedido original.",
            "items": {
              "$ref": "#/components/schemas/TransacaoEcommDTO"
            }
          },
          "ExecutarRegras": {
            "type": "boolean",
            "description": "`true` aplica as regras de valor e de `DataPermitida` na verificação (uso padrão).\n`false` verifica apenas a compatibilidade do meio de pagamento.\n"
          },
          "DataPermitida": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Data-limite para uso do estorno automático no cartão."
          },
          "ValorEstorno": {
            "type": "number",
            "format": "double",
            "description": "Valor pretendido do estorno. Use `0` para verificar apenas se a modalidade é\npossível, independentemente do valor.\n"
          }
        },
        "required": [
          "Transacoes"
        ]
      },
      "ObterProdutoConectorRequest": {
        "type": "object",
        "description": "Entrada da consulta de produto na plataforma de e-commerce.",
        "properties": {
          "ConectorId": {
            "type": "integer",
            "format": "int64",
            "description": "Id do conector de e-commerce da conta, obtido em `/v2/pvt/ecommerce/obter-conector`.\nDeve pertencer à conta autenticada.\n"
          },
          "ProdutoId": {
            "type": "string",
            "description": "Id do produto na loja virtual (o mesmo `ProdutoId` do item do pedido)."
          },
          "MainSkuId": {
            "type": "string",
            "nullable": true,
            "description": "Id do SKU originalmente comprado. Permite à Genius destacar a variação de origem e\naplicar regras de troca pelo mesmo seller.\n"
          },
          "ZipCodeTo": {
            "type": "string",
            "nullable": true,
            "description": "CEP de entrega do consumidor. Opcional, porém **necessário para estoque em tempo\nreal por região** — sem ele, o estoque retornado é o geral.\n"
          },
          "LojaVirtualUrl": {
            "type": "string",
            "nullable": true,
            "description": "URL da loja virtual, quando a conta opera múltiplas lojas."
          },
          "SellerId": {
            "type": "string",
            "nullable": true,
            "description": "Id do seller, em cenários de marketplace."
          }
        },
        "required": [
          "ConectorId",
          "ProdutoId"
        ]
      },
      "EnumTipoFreteEstorno": {
        "type": "integer",
        "description": "Regra de devolução do valor do frete no reembolso. Corresponde ao campo\n`TipoFreteEstorno` da configuração da conta.\n",
        "enum": [
          -1,
          0,
          1,
          2,
          3,
          4,
          5
        ],
        "x-enum-varnames": [
          "Nenhum",
          "NaoEstornar",
          "EstornarApenasPedidoInteiro",
          "EstornarSempre",
          "EstornarProporcional",
          "Omitir_CalculoExterno",
          "EstornarProporcionalValorItens"
        ],
        "x-enum-descriptions": [
          "Indefinido",
          "Não estornar frete",
          "Estornar somente se o pedido inteiro for devolvido",
          "Sempre estornar integralmente o valor do frete",
          "Cálculo de frete proporcional à quantidade de itens",
          "Omitir o valor ao consumidor: o cálculo será feito externamente",
          "Cálculo de frete proporcional ao valor dos itens"
        ]
      },
      "ELojaFisicaTipoRestricao": {
        "type": "integer",
        "description": "Restrição de uso de uma loja física. Quando diferente de `Nenhuma`, a loja só deve ser\noferecida se o pedido corresponder ao `restritorId` informado.\n",
        "enum": [
          0,
          1,
          2,
          3
        ],
        "x-enum-varnames": [
          "Nenhuma",
          "Doca",
          "Estoque",
          "Seller"
        ],
        "x-enum-descriptions": [
          "Nenhuma restrição, uso normal",
          "Loja associada a uma doca (CD) da loja virtual",
          "Loja associada a um estoque da loja virtual",
          "Loja associada a um seller da loja virtual"
        ]
      }
    }
  },
  "x-tagGroups": [
    {
      "name": "Endpoints",
      "tags": [
        "Segurança",
        "Configuração",
        "Processos",
        "Produtos",
        "Financeiro",
        "Vale-compra",
        "Logística",
        "Notas de devolução"
      ]
    }
  ],
  "security": [
    {
      "BearerAuth": []
    }
  ]
}