{"info":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","description":"<html><head></head><body><h3 id=\"bem-vindo-à-api-da-cws-platform\">Bem-vindo à API da CWS Platform</h3>\n<p>Esta documentação reúne tudo que Varejistas e Distribuidores precisam para integrar seus sistemas à nossa plataforma, mantendo estoque, preços e pedidos sincronizados em tempo real.</p>\n<p><strong>Como começar</strong><br>Comece pelo <strong>Obter Token de Acesso</strong>: ele devolve o <code>access_token</code>, e a própria collection o guarda para você — os demais requests já saem autenticados, sem repetir o header. Ajuste também a variável <code>url</code> para o ambiente que você vai usar.</p>\n<p>Cada endpoint traz o contrato completo — parâmetros, corpo, regras de negócio, resposta campo a campo e erros — com exemplos de requisição e resposta.</p>\n<p><strong>Material de Apoio</strong><br>Para acessar guias e materiais de apoio para iniciar sua integração, <a href=\"https://drive.google.com/drive/folders/1gsCbS-fqSkl6tyTrkPzyvXG3sFR6nW4b\">clique aqui</a>.</p>\n<p><strong>Canal para Dúvidas</strong><br>Nossa equipe de suporte está disponível através do e-mail <a href=\"mailto:suporte-api@cws.digital\">suporte-api@cws.digital</a>.</p>\n<p><em>Observação: ao nos contatar, você receberá uma resposta automática da nossa ferramenta de chamados (Jira), enviada pelo remetente</em> <code>jira@cwsdigital.atlassian.net</code><em>.</em></p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"124238","collectionId":"50f0524e-205e-4b92-a12e-be9686666536","publishedId":"2sB3QNp8Mi","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"9E1E7F"},"publishDate":"2026-09-04T18:12:54.000Z"},"item":[{"name":"01 - Autenticação","item":[{"name":"Obter Token de Acesso","event":[{"listen":"test","script":{"type":"text/javascript","exec":["const data = pm.response.json();","pm.collectionVariables.set(\"access_token\", data.access_token);","pm.collectionVariables.set(\"refresh_token\", data.refresh_token);"]}}],"id":"424c4abb-5372-4586-b7c2-e3a4698a11df","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/x-www-form-urlencoded"},{"key":"Authorization","value":"Basic YXBpLXdzOnBhc3N3b3JkLW1hc3Rlcg=="}],"body":{"mode":"urlencoded","urlencoded":[{"key":"scope","value":"trust","type":"text"},{"key":"grant_type","value":"password","type":"text"},{"key":"username","value":"integracao@lojaexemplo.com.br","type":"text"},{"key":"password","value":"sua-senha","type":"text"}]},"url":"https://ws.autorei.net/oauth/token","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Autentica um usuário da plataforma e devolve o <code>access_token</code> usado em todas as outras chamadas da API. É o único endpoint que não exige um token — e o único que traz o próprio header <code>Authorization</code>, com a credencial fixa do client de integração, já preenchida no request.</p>\n<h3 id=\"corpo-da-requisição-form-urlencoded\">Corpo da Requisição (form-urlencoded)</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>grant_type</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>Sempre <code>password</code>.</td>\n</tr>\n<tr>\n<td><code>username</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>E-mail do seu usuário na plataforma CWS.</td>\n</tr>\n<tr>\n<td><code>password</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>Senha do seu usuário na plataforma CWS.</td>\n</tr>\n<tr>\n<td><code>scope</code></td>\n<td>string</td>\n<td>Não</td>\n<td><code>read</code>, <code>write</code> ou <code>trust</code>. Se você omitir, o token nasce com os três (<code>read write trust</code>) — e qualquer um deles autoriza todas as rotas da API.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"validade\">Validade</h4>\n<p>O <code>access_token</code> vale <strong>12 horas</strong> (<code>expires_in</code> chega em <code>43199</code>, em segundos). Quando ele expira, autentique novamente nesta mesma URL.</p>\n<h4 id=\"como-enviar-o-token-nas-demais-chamadas\">Como enviar o token nas demais chamadas</h4>\n<p>O header é <code>Authorization: Bearer &lt;access_token&gt;</code>, <strong>com o prefixo <code>Bearer</code></strong> — sem ele a requisição é recusada com 401. Nesta collection isso já está pronto: este request grava o token na variável <code>access_token</code> e os demais herdam o header da collection, então você não precisa copiar nada.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>access_token</code></td>\n<td>string</td>\n<td>Token de acesso das próximas chamadas.</td>\n</tr>\n<tr>\n<td><code>token_type</code></td>\n<td>string</td>\n<td>Sempre <code>bearer</code>.</td>\n</tr>\n<tr>\n<td><code>expires_in</code></td>\n<td>integer</td>\n<td>Segundos restantes de validade do <code>access_token</code>.</td>\n</tr>\n<tr>\n<td><code>scope</code></td>\n<td>string</td>\n<td>Escopos concedidos, separados por espaço.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>Usuário ou senha inválidos. O corpo traz <code>error</code> (<code>invalid_grant</code>) e o detalhe em <code>error_description</code>.</td>\n</tr>\n<tr>\n<td>401 nas demais rotas</td>\n<td>Token ausente, malformado ou expirado: <code>{\"error\":\"authorization header is invalid\"}</code>. Autentique novamente e repita a chamada.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["oauth","token"],"host":["https://ws.autorei.net"],"query":[],"variable":[]}},"response":[{"id":"187c2424-35ec-416d-bd3e-62333c17b691","name":"Sucesso — autenticação por senha","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/x-www-form-urlencoded"},{"key":"Authorization","value":"Basic YXBpLXdzOnBhc3N3b3JkLW1hc3Rlcg=="}],"body":{"mode":"urlencoded","urlencoded":[{"key":"scope","value":"trust","type":"text"},{"key":"grant_type","value":"password","type":"text"},{"key":"username","value":"integracao@lojaexemplo.com.br","type":"text"},{"key":"password","value":"sua-senha","type":"text"}]},"url":"https://ws.autorei.net/oauth/token"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"access_token\": \"1f7c9a04-3b52-4e18-9d61-2c8f5a0e7b43\",\n  \"token_type\": \"bearer\",\n  \"refresh_token\": \"a3d18e57-6c40-4f92-8ba7-19e35c72d068\",\n  \"expires_in\": 43199,\n  \"scope\": \"trust\"\n}"}],"_postman_id":"424c4abb-5372-4586-b7c2-e3a4698a11df"}],"id":"d92da2f8-d59d-4ff9-b602-e897219edcca","description":"<p>O primeiro passo para consumir os serviços da API CWS é obter um token de acesso. Este token é necessário para autorizar todas as chamadas subsequentes.</p>\n","_postman_id":"d92da2f8-d59d-4ff9-b602-e897219edcca","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}}},{"name":"02 - Estoque e Preço","item":[{"name":"Atualizar ou Criar Estoque em Lote","id":"6bb18a3d-020e-4f93-836a-e971eb58a549","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"stockRequest\": [\n    {\n      \"skuAttributeName\": \"codigo-interno\",\n      \"skuAttributeValue\": \"SKU-A-001\",\n      \"warehouseId\": 1001,\n      \"price\": 58.62,\n      \"quantity\": 1123,\n      \"virtualQuantity\": 0,\n      \"leadTime\": 2\n    },\n    {\n      \"skuAttributeName\": \"codigo-interno\",\n      \"skuAttributeValue\": \"SKU-B-002\",\n      \"warehouseId\": 1001,\n      \"price\": 150.0,\n      \"quantity\": 5,\n      \"virtualQuantity\": 0,\n      \"leadTime\": 2\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/v1/stock/batch","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Cria ou atualiza o estoque e o preço de até 50 produtos por requisição, na <strong>sua própria loja</strong>. Cada item é processado de forma independente: o resultado de cada um vem no campo <code>status</code> da resposta, e um item recusado não impede os demais.</p>\n<p>A loja é sempre a do token. Para enviar estoque de uma filial, use <strong>Atualizar ou Criar Estoque em Lote para Filial</strong>.</p>\n<h3 id=\"corpo-da-requisição-json\">Corpo da Requisição (JSON)</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>stockRequest</code></td>\n<td>array</td>\n<td>Sim</td>\n<td>De 1 a 50 itens.</td>\n</tr>\n<tr>\n<td><code>stockRequest[].warehouseId</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Depósito onde o estoque é alocado.</td>\n</tr>\n<tr>\n<td><code>stockRequest[].price</code></td>\n<td>number</td>\n<td>Sim</td>\n<td>Preço de venda. Não pode ser negativo.</td>\n</tr>\n<tr>\n<td><code>stockRequest[].quantity</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Quantidade em estoque. Não pode ser negativa.</td>\n</tr>\n<tr>\n<td><code>stockRequest[].virtualQuantity</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Estoque virtual. Não pode ser negativo. Envie <code>0</code> quando não trabalhar com estoque virtual.</td>\n</tr>\n<tr>\n<td><code>stockRequest[].leadTime</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Tempo de preparação em dias. Não pode ser negativo.</td>\n</tr>\n<tr>\n<td><strong>Identificação do produto</strong> — não é um campo, é um grupo</td>\n<td>—</td>\n<td>Sim</td>\n<td>Uma das três combinações da seção <strong>Como identificar o produto</strong>: <code>productId</code> · <code>brand</code> + <code>mfrPartCode</code> + <code>composition</code> · <code>skuAttributeName</code> + <code>skuAttributeValue</code>.</td>\n</tr>\n<tr>\n<td><code>stockRequest[].byRequest</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Produto disponível apenas para orçamento.</td>\n</tr>\n<tr>\n<td><code>stockRequest[].leadTimeByRequest</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Prazo de preparação sob consulta. Veja <strong>Lead time e estoque virtual</strong>.</td>\n</tr>\n<tr>\n<td><code>stockRequest[].leadTimeDate</code></td>\n<td>datetime</td>\n<td>Não</td>\n<td>Data prevista de disponibilidade do produto. ISO-8601 <strong>completo, com fuso</strong> — <code>2026-09-10T00:00:00-03:00</code>. Veja <strong>Data de disponibilidade</strong>.</td>\n</tr>\n<tr>\n<td><code>stockRequest[].profitMargin</code></td>\n<td>number</td>\n<td>Não</td>\n<td>Margem de lucro, de 0 a 100.</td>\n</tr>\n<tr>\n<td><code>stockRequest[].targetMargin</code></td>\n<td>number</td>\n<td>Não</td>\n<td>Margem alvo, de 0 a 100.</td>\n</tr>\n<tr>\n<td><code>stockRequest[].totalCost</code></td>\n<td>number</td>\n<td>Não</td>\n<td>Custo total do item. Não pode ser negativo.</td>\n</tr>\n<tr>\n<td><code>stockRequest[].multipleQuantity</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Múltiplo de venda. <code>0</code> é normalizado para <code>1</code>.</td>\n</tr>\n<tr>\n<td><code>stockRequest[].partnerPartCode</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Seu código de produto.</td>\n</tr>\n<tr>\n<td><code>stockRequest[].partnerPartCodeUnique</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Torna o <code>partnerPartCode</code> único no depósito. Veja <strong>Código de produto único no depósito</strong>.</td>\n</tr>\n<tr>\n<td><code>stockRequest[].priceRuleTags</code></td>\n<td>array</td>\n<td>Não</td>\n<td>Tags de regra de preço a vincular ao produto: <code>[{\"name\":\"promocao\"}]</code>. Tag inexistente na sua loja é ignorada.</td>\n</tr>\n<tr>\n<td><code>stockRequest[].deleteTag</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td><code>true</code> remove todas as tags de regra de preço do produto, mesmo que você não envie nenhuma tag nova em <code>priceRuleTags</code>. Enviando os dois, as tags antigas saem e ficam só as de <code>priceRuleTags</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"como-identificar-o-produto\">Como identificar o produto</h3>\n<p>Cada item precisa trazer <strong>uma</strong> das três formas, nesta ordem de precedência:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Forma</th>\n<th>Campos</th>\n<th>Quando usar</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Por id</td>\n<td><code>productId</code></td>\n<td>Você já guardou o id do SKU na CWS.</td>\n</tr>\n<tr>\n<td>Por dados do fabricante</td>\n<td><code>brand</code> + <code>mfrPartCode</code> + <code>composition</code></td>\n<td>Os três juntos; nenhum sozinho identifica. <code>composition</code> aceita <code>UNITARY</code>, <code>PAIR</code>, <code>KIT</code>, <code>WARRANTY</code> e <code>SET</code>, sempre em maiúsculas.</td>\n</tr>\n<tr>\n<td>Por atributo</td>\n<td><code>skuAttributeName</code> + <code>skuAttributeValue</code></td>\n<td>Você contratou o serviço de catálogo de produtos com atributo próprio.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Todos os itens do mesmo lote precisam usar a mesma forma.</strong> Misturar formas numa requisição recusa o lote inteiro com 400 e a mensagem <code>mixed request types in list</code> — separe em uma requisição por forma.</p>\n<h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"lead-time-e-estoque-virtual\">Lead time e estoque virtual</h4>\n<p>Duas combinações são recusadas: <code>leadTimeByRequest: true</code> junto com <code>leadTime</code> maior que zero; e <code>leadTimeByRequest: false</code> com <code>leadTime</code> zerado ou ausente quando há <code>virtualQuantity</code> maior que zero.</p>\n<h4 id=\"data-de-disponibilidade\">Data de disponibilidade</h4>\n<p><code>leadTimeDate</code> é convertida para o fuso da plataforma (<code>-03:00</code>) antes de ser gravada — <code>2026-09-10T00:00:00Z</code> vira <strong>09/09 às 21:00</strong>, um dia antes do que você quis. Envie sempre com o offset <code>-03:00</code>.</p>\n<p>O formato precisa ser a data e hora completas: <code>2026-09-10</code> ou <code>10/09/2026</code> recusam a <strong>requisição inteira</strong> com 400, antes de qualquer item ser processado.</p>\n<p>Com a data preenchida e a quantidade real em zero, o estoque virtual passa a ser oferecido — mesmo efeito de <code>leadTime</code> e de <code>leadTimeByRequest</code>.</p>\n<h4 id=\"o-envio-é-sempre-completo\">O envio é sempre completo</h4>\n<p>Na atualização, os campos opcionais que você <strong>não</strong> reenviar são <strong>apagados</strong>: <code>leadTimeDate</code>, <code>leadTimeByRequest</code>, <code>profitMargin</code>, <code>totalCost</code> e <code>targetMargin</code> voltam a vazio. <code>partnerPartCode</code> e <code>multipleQuantity</code> não têm esse comportamento — só mudam quando você os envia. Reenvie o item inteiro a cada atualização.</p>\n<h4 id=\"itens-repetidos-no-mesmo-lote\">Itens repetidos no mesmo lote</h4>\n<p>Itens com o mesmo depósito e o mesmo identificador são deduplicados antes do processamento. Se as duplicatas trouxerem valores diferentes, o conflito não é processado — envie cada produto uma única vez por requisição.</p>\n<h4 id=\"código-de-produto-único-no-depósito\">Código de produto único no depósito</h4>\n<p>Com <code>partnerPartCodeUnique: true</code>, os estoques do mesmo depósito que já têm aquele código gravado em <code>partnerPartCode</code> são zerados (preço, quantidade e estoque virtual) e o código antigo recebe o sufixo <code>_i</code>. Use quando você reaproveita um código de produto para outro SKU.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>Lista com um objeto por item enviado, <strong>na mesma ordem do envio</strong>. Campos zerados ou vazios são omitidos — se <code>virtualQuantity</code> volta ausente, ele é <code>0</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Id do estoque criado ou atualizado. Vem <code>0</code> quando o item falhou.</td>\n</tr>\n<tr>\n<td><code>productId</code></td>\n<td>Id do SKU resolvido pela plataforma.</td>\n</tr>\n<tr>\n<td><code>warehouseId</code></td>\n<td>Depósito do item.</td>\n</tr>\n<tr>\n<td><code>price</code></td>\n<td>Preço gravado.</td>\n</tr>\n<tr>\n<td><code>status</code></td>\n<td><code>CREATED</code> · <code>UPDATED</code> · <code>ERROR</code></td>\n</tr>\n<tr>\n<td><code>error</code></td>\n<td>Motivo da recusa. Presente só quando <code>status</code> é <code>ERROR</code>.</td>\n</tr>\n<tr>\n<td><code>quantity</code> · <code>virtualQuantity</code> · <code>leadTime</code> · <code>byRequest</code> · <code>leadTimeByRequest</code> · <code>leadTimeDate</code></td>\n<td>Valores gravados. Omitidos quando zerados, falsos ou ausentes.</td>\n</tr>\n<tr>\n<td><code>brand</code> · <code>mfrPartCode</code> · <code>composition</code> · <code>skuAttributeName</code> · <code>skuAttributeValue</code></td>\n<td>Eco dos campos de identificação que você enviou. Omitidos quando não usados.</td>\n</tr>\n<tr>\n<td><code>partCode</code></td>\n<td>Eco do <code>partnerPartCode</code> que você enviou — na resposta ele volta com este nome.</td>\n</tr>\n<tr>\n<td><code>profitMargin</code> · <code>targetMargin</code> · <code>totalCost</code> · <code>multipleQuantity</code></td>\n<td>Valores gravados, quando enviados.</td>\n</tr>\n<tr>\n<td><code>priceRuleTags</code> · <code>deleteTag</code></td>\n<td>Tags aplicadas e o pedido de remoção, quando usados.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"quando-o-lote-responde-200\">Quando o lote responde 200</h4>\n<p>Sempre que o envelope é válido — inclusive quando <strong>todos</strong> os itens falharam. Item recusado não impede os demais: o resultado de cada um vem no seu próprio <code>status</code>, e a recusa por campo faltando, valor fora de faixa ou produto não encontrado aparece como <code>status: ERROR</code> com o motivo em <code>error</code>. Percorra a lista sempre, mesmo com HTTP 200.</p>\n<h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td>O corpo não é um JSON válido. O detalhe vem em <code>error</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Falha que atinge o lote inteiro: formas de identificação misturadas (<code>mixed request types in list</code>) ou o depósito informado não é da sua loja. Aqui o envelope é diferente do resto — <code>code</code>, <code>message</code> e <code>errorDescription</code> — em vez de <code>error</code>. Trate os dois formatos.</td>\n</tr>\n<tr>\n<td>422</td>\n<td>Problema no envelope: <code>stockRequest</code> vazio ou com mais de 50 itens. O detalhe vem em <code>error</code>.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Recusa de item — campo faltando, valor fora de faixa, produto inexistente — <strong>não</strong> é erro de requisição: vem em 200, item a item. Veja <strong>Quando o lote responde 200</strong>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["v1","stock","batch"],"host":["https://ws.autorei.net"],"query":[],"variable":[]}},"response":[{"id":"c262b2f1-3ca1-4afd-9302-40704c747281","name":"Sucesso — identificação por dados do fabricante","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"stockRequest\": [\n    {\n      \"brand\": \"Fabricante Exemplo\",\n      \"mfrPartCode\": \"FE-500101\",\n      \"composition\": \"UNITARY\",\n      \"warehouseId\": 1001,\n      \"price\": 58.62,\n      \"quantity\": 1123,\n      \"virtualQuantity\": 0,\n      \"leadTime\": 2\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/v1/stock/batch"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"id\": 4410001,\n    \"productId\": 500101,\n    \"warehouseId\": 1001,\n    \"brand\": \"Fabricante Exemplo\",\n    \"mfrPartCode\": \"FE-500101\",\n    \"composition\": \"UNITARY\",\n    \"price\": 58.62,\n    \"quantity\": 1123,\n    \"leadTime\": 2,\n    \"status\": \"UPDATED\"\n  }\n]"},{"id":"91652069-bfb5-4b07-907e-8b00f1d00d73","name":"Sucesso — identificação por atributo, com item recusado no lote","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"stockRequest\": [\n    {\n      \"skuAttributeName\": \"codigo-interno\",\n      \"skuAttributeValue\": \"SKU-A-001\",\n      \"warehouseId\": 1001,\n      \"price\": 58.62,\n      \"quantity\": 1123,\n      \"virtualQuantity\": 0,\n      \"leadTime\": 2\n    },\n    {\n      \"warehouseId\": 1001,\n      \"quantity\": 5\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/v1/stock/batch"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"id\": 4410001,\n    \"productId\": 500101,\n    \"warehouseId\": 1001,\n    \"skuAttributeName\": \"codigo-interno\",\n    \"skuAttributeValue\": \"SKU-A-001\",\n    \"price\": 58.62,\n    \"quantity\": 1123,\n    \"leadTime\": 2,\n    \"status\": \"UPDATED\"\n  },\n  {\n    \"id\": 0,\n    \"warehouseId\": 1001,\n    \"price\": 0,\n    \"quantity\": 5,\n    \"status\": \"ERROR\",\n    \"error\": \"price is required; virtualQuantity is required; leadTime is required; missing product identifier: provide productId OR (brand+mfrPartCode+composition) OR (skuAttributeName+skuAttributeValue)\"\n  }\n]"}],"_postman_id":"6bb18a3d-020e-4f93-836a-e971eb58a549"},{"name":"Atualizar ou Criar Estoque em Lote para Filial","id":"940c8b5c-6573-44a5-932d-a1dab5c7f450","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"stockRequest\": [\n    {\n      \"skuAttributeName\": \"codigo-interno\",\n      \"skuAttributeValue\": \"SKU-A-001\",\n      \"warehouseId\": 4970,\n      \"price\": 58.62,\n      \"quantity\": 1123,\n      \"virtualQuantity\": 0,\n      \"leadTime\": 2\n    },\n    {\n      \"skuAttributeName\": \"codigo-interno\",\n      \"skuAttributeValue\": \"SKU-B-002\",\n      \"warehouseId\": 4970,\n      \"price\": 150.0,\n      \"quantity\": 5,\n      \"virtualQuantity\": 0,\n      \"leadTime\": 2\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/v1/stock/batch/:partnerId","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Permite que uma conta <strong>matriz</strong> crie ou atualize o estoque e o preço de até 50 produtos por requisição em uma de suas <strong>filiais</strong>. Cada item é processado de forma independente: o resultado de cada um vem no campo <code>status</code> da resposta, e um item recusado não impede os demais.</p>\n<p>O corpo e a resposta são idênticos aos do envio para a própria loja — a diferença é a filial de destino, que vem na rota e é validada contra os vínculos da sua matriz.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>partnerId</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id da <strong>filial</strong> que vai receber o estoque. Precisa estar vinculada à matriz do token.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"corpo-da-requisição-json\">Corpo da Requisição (JSON)</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>stockRequest</code></td>\n<td>array</td>\n<td>Sim</td>\n<td>De 1 a 50 itens.</td>\n</tr>\n<tr>\n<td><code>stockRequest[].warehouseId</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Depósito onde o estoque é alocado.</td>\n</tr>\n<tr>\n<td><code>stockRequest[].price</code></td>\n<td>number</td>\n<td>Sim</td>\n<td>Preço de venda. Não pode ser negativo.</td>\n</tr>\n<tr>\n<td><code>stockRequest[].quantity</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Quantidade em estoque. Não pode ser negativa.</td>\n</tr>\n<tr>\n<td><code>stockRequest[].virtualQuantity</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Estoque virtual. Não pode ser negativo. Envie <code>0</code> quando não trabalhar com estoque virtual.</td>\n</tr>\n<tr>\n<td><code>stockRequest[].leadTime</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Tempo de preparação em dias. Não pode ser negativo.</td>\n</tr>\n<tr>\n<td><strong>Identificação do produto</strong> — não é um campo, é um grupo</td>\n<td>—</td>\n<td>Sim</td>\n<td>Uma das três combinações da seção <strong>Como identificar o produto</strong>: <code>productId</code> · <code>brand</code> + <code>mfrPartCode</code> + <code>composition</code> · <code>skuAttributeName</code> + <code>skuAttributeValue</code>.</td>\n</tr>\n<tr>\n<td><code>stockRequest[].byRequest</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Produto disponível apenas para orçamento.</td>\n</tr>\n<tr>\n<td><code>stockRequest[].leadTimeByRequest</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Prazo de preparação sob consulta. Veja <strong>Lead time e estoque virtual</strong>.</td>\n</tr>\n<tr>\n<td><code>stockRequest[].leadTimeDate</code></td>\n<td>datetime</td>\n<td>Não</td>\n<td>Data prevista de disponibilidade do produto. ISO-8601 <strong>completo, com fuso</strong> — <code>2026-09-10T00:00:00-03:00</code>. Veja <strong>Data de disponibilidade</strong>.</td>\n</tr>\n<tr>\n<td><code>stockRequest[].profitMargin</code></td>\n<td>number</td>\n<td>Não</td>\n<td>Margem de lucro, de 0 a 100.</td>\n</tr>\n<tr>\n<td><code>stockRequest[].targetMargin</code></td>\n<td>number</td>\n<td>Não</td>\n<td>Margem alvo, de 0 a 100.</td>\n</tr>\n<tr>\n<td><code>stockRequest[].totalCost</code></td>\n<td>number</td>\n<td>Não</td>\n<td>Custo total do item. Não pode ser negativo.</td>\n</tr>\n<tr>\n<td><code>stockRequest[].multipleQuantity</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Múltiplo de venda. <code>0</code> é normalizado para <code>1</code>.</td>\n</tr>\n<tr>\n<td><code>stockRequest[].partnerPartCode</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Seu código de produto.</td>\n</tr>\n<tr>\n<td><code>stockRequest[].partnerPartCodeUnique</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Torna o <code>partnerPartCode</code> único no depósito. Veja <strong>Código de produto único no depósito</strong>.</td>\n</tr>\n<tr>\n<td><code>stockRequest[].priceRuleTags</code></td>\n<td>array</td>\n<td>Não</td>\n<td>Tags de regra de preço a vincular ao produto: <code>[{\"name\":\"promocao\"}]</code>. Tag inexistente na sua loja é ignorada.</td>\n</tr>\n<tr>\n<td><code>stockRequest[].deleteTag</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td><code>true</code> remove todas as tags de regra de preço do produto, mesmo que você não envie nenhuma tag nova em <code>priceRuleTags</code>. Enviando os dois, as tags antigas saem e ficam só as de <code>priceRuleTags</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"como-identificar-o-produto\">Como identificar o produto</h3>\n<p>Cada item precisa trazer <strong>uma</strong> das três formas, nesta ordem de precedência:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Forma</th>\n<th>Campos</th>\n<th>Quando usar</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Por id</td>\n<td><code>productId</code></td>\n<td>Você já guardou o id do SKU na CWS.</td>\n</tr>\n<tr>\n<td>Por dados do fabricante</td>\n<td><code>brand</code> + <code>mfrPartCode</code> + <code>composition</code></td>\n<td>Os três juntos; nenhum sozinho identifica. <code>composition</code> aceita <code>UNITARY</code>, <code>PAIR</code>, <code>KIT</code>, <code>WARRANTY</code> e <code>SET</code>, sempre em maiúsculas.</td>\n</tr>\n<tr>\n<td>Por atributo</td>\n<td><code>skuAttributeName</code> + <code>skuAttributeValue</code></td>\n<td>Você contratou o serviço de catálogo de produtos com atributo próprio.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Todos os itens do mesmo lote precisam usar a mesma forma.</strong> Misturar formas numa requisição recusa o lote inteiro com 400 e a mensagem <code>mixed request types in list</code> — separe em uma requisição por forma.</p>\n<h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"lead-time-e-estoque-virtual\">Lead time e estoque virtual</h4>\n<p>Duas combinações são recusadas: <code>leadTimeByRequest: true</code> junto com <code>leadTime</code> maior que zero; e <code>leadTimeByRequest: false</code> com <code>leadTime</code> zerado ou ausente quando há <code>virtualQuantity</code> maior que zero.</p>\n<h4 id=\"data-de-disponibilidade\">Data de disponibilidade</h4>\n<p><code>leadTimeDate</code> é convertida para o fuso da plataforma (<code>-03:00</code>) antes de ser gravada — <code>2026-09-10T00:00:00Z</code> vira <strong>09/09 às 21:00</strong>, um dia antes do que você quis. Envie sempre com o offset <code>-03:00</code>.</p>\n<p>O formato precisa ser a data e hora completas: <code>2026-09-10</code> ou <code>10/09/2026</code> recusam a <strong>requisição inteira</strong> com 400, antes de qualquer item ser processado.</p>\n<p>Com a data preenchida e a quantidade real em zero, o estoque virtual passa a ser oferecido — mesmo efeito de <code>leadTime</code> e de <code>leadTimeByRequest</code>.</p>\n<h4 id=\"o-envio-é-sempre-completo\">O envio é sempre completo</h4>\n<p>Na atualização, os campos opcionais que você <strong>não</strong> reenviar são <strong>apagados</strong>: <code>leadTimeDate</code>, <code>leadTimeByRequest</code>, <code>profitMargin</code>, <code>totalCost</code> e <code>targetMargin</code> voltam a vazio. <code>partnerPartCode</code> e <code>multipleQuantity</code> não têm esse comportamento — só mudam quando você os envia. Reenvie o item inteiro a cada atualização.</p>\n<h4 id=\"itens-repetidos-no-mesmo-lote\">Itens repetidos no mesmo lote</h4>\n<p>Itens com o mesmo depósito e o mesmo identificador são deduplicados antes do processamento. Se as duplicatas trouxerem valores diferentes, o conflito não é processado — envie cada produto uma única vez por requisição.</p>\n<h4 id=\"código-de-produto-único-no-depósito\">Código de produto único no depósito</h4>\n<p>Com <code>partnerPartCodeUnique: true</code>, os estoques do mesmo depósito que já têm aquele código gravado em <code>partnerPartCode</code> são zerados (preço, quantidade e estoque virtual) e o código antigo recebe o sufixo <code>_i</code>. Use quando você reaproveita um código de produto para outro SKU.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>Lista com um objeto por item enviado, <strong>na mesma ordem do envio</strong>. Campos zerados ou vazios são omitidos — se <code>virtualQuantity</code> volta ausente, ele é <code>0</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Id do estoque criado ou atualizado. Vem <code>0</code> quando o item falhou.</td>\n</tr>\n<tr>\n<td><code>productId</code></td>\n<td>Id do SKU resolvido pela plataforma.</td>\n</tr>\n<tr>\n<td><code>warehouseId</code></td>\n<td>Depósito do item.</td>\n</tr>\n<tr>\n<td><code>price</code></td>\n<td>Preço gravado.</td>\n</tr>\n<tr>\n<td><code>status</code></td>\n<td><code>CREATED</code> · <code>UPDATED</code> · <code>ERROR</code></td>\n</tr>\n<tr>\n<td><code>error</code></td>\n<td>Motivo da recusa. Presente só quando <code>status</code> é <code>ERROR</code>.</td>\n</tr>\n<tr>\n<td><code>quantity</code> · <code>virtualQuantity</code> · <code>leadTime</code> · <code>byRequest</code> · <code>leadTimeByRequest</code> · <code>leadTimeDate</code></td>\n<td>Valores gravados. Omitidos quando zerados, falsos ou ausentes.</td>\n</tr>\n<tr>\n<td><code>brand</code> · <code>mfrPartCode</code> · <code>composition</code> · <code>skuAttributeName</code> · <code>skuAttributeValue</code></td>\n<td>Eco dos campos de identificação que você enviou. Omitidos quando não usados.</td>\n</tr>\n<tr>\n<td><code>partCode</code></td>\n<td>Eco do <code>partnerPartCode</code> que você enviou — na resposta ele volta com este nome.</td>\n</tr>\n<tr>\n<td><code>profitMargin</code> · <code>targetMargin</code> · <code>totalCost</code> · <code>multipleQuantity</code></td>\n<td>Valores gravados, quando enviados.</td>\n</tr>\n<tr>\n<td><code>priceRuleTags</code> · <code>deleteTag</code></td>\n<td>Tags aplicadas e o pedido de remoção, quando usados.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"quando-o-lote-responde-200\">Quando o lote responde 200</h4>\n<p>Sempre que o envelope é válido — inclusive quando <strong>todos</strong> os itens falharam. Item recusado não impede os demais: o resultado de cada um vem no seu próprio <code>status</code>, e a recusa por campo faltando, valor fora de faixa ou produto não encontrado aparece como <code>status: ERROR</code> com o motivo em <code>error</code>. Percorra a lista sempre, mesmo com HTTP 200.</p>\n<h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td><code>partnerId</code> da rota não é numérico: <code>{\"error\":\"Invalid target partner ID\"}</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>O corpo não é um JSON válido. O detalhe vem em <code>error</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Falha que atinge o lote inteiro: formas de identificação misturadas (<code>mixed request types in list</code>) ou o depósito informado não é da filial. Aqui o envelope é diferente do resto — <code>code</code>, <code>message</code> e <code>errorDescription</code> — em vez de <code>error</code>. Trate os dois formatos.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado: <code>{\"error\":\"Authentication required for this route\"}</code>.</td>\n</tr>\n<tr>\n<td>403</td>\n<td>A filial não está vinculada à sua matriz: <code>{\"error\":\"Access denied: Invalid partnership\"}</code>. Diferente de 400, aqui o payload está certo — o que falta é o vínculo.</td>\n</tr>\n<tr>\n<td>422</td>\n<td>Problema no envelope: <code>stockRequest</code> vazio ou com mais de 50 itens. O detalhe vem em <code>error</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Recusa de item — campo faltando, valor fora de faixa, produto inexistente — <strong>não</strong> é erro de requisição: vem em 200, item a item. Veja <strong>Quando o lote responde 200</strong>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["v1","stock","batch",":partnerId"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"5057","key":"partnerId"}]}},"response":[{"id":"00d12650-ee46-4245-bdcf-17cea240f452","name":"Sucesso — identificação por dados do fabricante","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"stockRequest\": [\n    {\n      \"brand\": \"Fabricante Exemplo\",\n      \"mfrPartCode\": \"FE-500101\",\n      \"composition\": \"UNITARY\",\n      \"warehouseId\": 4970,\n      \"price\": 58.62,\n      \"quantity\": 1123,\n      \"virtualQuantity\": 0,\n      \"leadTime\": 2\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/v1/stock/batch/5057"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"id\": 4410001,\n    \"productId\": 500101,\n    \"warehouseId\": 4970,\n    \"brand\": \"Fabricante Exemplo\",\n    \"mfrPartCode\": \"FE-500101\",\n    \"composition\": \"UNITARY\",\n    \"price\": 58.62,\n    \"quantity\": 1123,\n    \"leadTime\": 2,\n    \"status\": \"UPDATED\"\n  }\n]"},{"id":"23b38a21-c41f-4b7a-a267-da8ee34487f2","name":"Sucesso — identificação por atributo, com item recusado no lote","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"stockRequest\": [\n    {\n      \"skuAttributeName\": \"codigo-interno\",\n      \"skuAttributeValue\": \"SKU-A-001\",\n      \"warehouseId\": 4970,\n      \"price\": 58.62,\n      \"quantity\": 1123,\n      \"virtualQuantity\": 0,\n      \"leadTime\": 2\n    },\n    {\n      \"warehouseId\": 4970,\n      \"quantity\": 5\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/v1/stock/batch/5057"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"id\": 4410001,\n    \"productId\": 500101,\n    \"warehouseId\": 4970,\n    \"skuAttributeName\": \"codigo-interno\",\n    \"skuAttributeValue\": \"SKU-A-001\",\n    \"price\": 58.62,\n    \"quantity\": 1123,\n    \"leadTime\": 2,\n    \"status\": \"UPDATED\"\n  },\n  {\n    \"id\": 0,\n    \"warehouseId\": 4970,\n    \"price\": 0,\n    \"quantity\": 5,\n    \"status\": \"ERROR\",\n    \"error\": \"price is required; virtualQuantity is required; leadTime is required; missing product identifier: provide productId OR (brand+mfrPartCode+composition) OR (skuAttributeName+skuAttributeValue)\"\n  }\n]"}],"_postman_id":"940c8b5c-6573-44a5-932d-a1dab5c7f450"}],"id":"a79dce08-79cc-49e5-bf04-7ed29f97fc5d","description":"<p>Endpoints dedicados ao gerenciamento completo de estoque e preços dos produtos em seus depósitos.</p>\n","_postman_id":"a79dce08-79cc-49e5-bf04-7ed29f97fc5d","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}}},{"name":"03 - Pedidos","item":[{"name":"Gestão loja","item":[{"name":"Listar Pedidos da Loja","id":"b0f2dc17-68ca-4017-9be9-973eddae2e4b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://ws.autorei.net/partnerOrders/list?limit=5&offset=0","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Lista os pedidos em que a <strong>sua loja é a fornecedora</strong> — os que você recebeu para atender —, do mais recente para o mais antigo, com paginação e filtros.</p>\n<p>A resposta é compacta: nove campos por pedido, o suficiente para montar uma fila de atendimento. O conteúdo completo vem em <strong>Buscar Detalhes do Pedido</strong>.</p>\n<h3 id=\"parâmetros-de-consulta\">Parâmetros de Consulta</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Pedidos por página. Default <strong>5</strong>, teto <strong>25</strong>. Acima do teto, vale o teto.</td>\n</tr>\n<tr>\n<td><code>offset</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Quantos pedidos pular. Default <strong>0</strong>.</td>\n</tr>\n<tr>\n<td><code>status</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Filtra por status. Pode ser <strong>repetido</strong> para trazer mais de um: <code>?status=READY&amp;status=SHIPPED</code>. Sem o parâmetro, vêm todos.</td>\n</tr>\n<tr>\n<td><code>createdFrom</code></td>\n<td>datetime</td>\n<td>Não</td>\n<td>Criados a partir desta data, inclusive. ISO-8601: <code>2026-09-01T00:00:00Z</code>.</td>\n</tr>\n<tr>\n<td><code>createdTo</code></td>\n<td>datetime</td>\n<td>Não</td>\n<td>Criados até esta data, inclusive.</td>\n</tr>\n<tr>\n<td><code>updatedFrom</code></td>\n<td>datetime</td>\n<td>Não</td>\n<td>Alterados a partir desta data, inclusive.</td>\n</tr>\n<tr>\n<td><code>updatedTo</code></td>\n<td>datetime</td>\n<td>Não</td>\n<td>Alterados até esta data, inclusive.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Os valores de <code>status</code>: <code>PRE_ORDER</code> · <code>AWAITING_PAYMENT</code> · <code>PAYMENT_APPROVED</code> · <code>WITHOUT_CREDIT_LIMIT</code> · <code>READY</code> · <code>SHIPPED</code> · <code>DELIVERED</code> · <code>COMPLETED</code> · <code>CANCELED</code> · <code>STRAYED</code> · <code>RETURNED</code> · <code>STORE_PAYMENT</code>.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>Array de pedidos, ordenado por data de criação, do mais recente para o mais antigo. Os nove campos vêm sempre.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Id do pedido do parceiro (<code>partnerOrderId</code>). É ele que vai na rota dos demais endpoints de pedido.</td>\n</tr>\n<tr>\n<td><code>orderId</code></td>\n<td>Id do pedido do cliente, o pedido \"pai\". Um <code>orderId</code> pode ter mais de um <code>id</code>.</td>\n</tr>\n<tr>\n<td><code>total</code></td>\n<td>Valor total, como <strong>string já formatada</strong> em reais: <code>\"R$637,57\"</code>.</td>\n</tr>\n<tr>\n<td><code>status</code></td>\n<td>Status atual do pedido.</td>\n</tr>\n<tr>\n<td><code>dateCreated</code> · <code>lastUpdated</code></td>\n<td>Criação e última alteração, em UTC.</td>\n</tr>\n<tr>\n<td><code>gateway</code></td>\n<td>Meio de pagamento usado. Vem <code>null</code> quando o pedido ainda não tem pagamento.</td>\n</tr>\n<tr>\n<td><code>partner.partnerName</code> · <code>partner.partnerDocument</code></td>\n<td>Nome e documento do parceiro fornecedor.</td>\n</tr>\n<tr>\n<td><code>customer.customerName</code> · <code>customer.customerDocument</code></td>\n<td>Nome e documento do cliente.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Sem resultado, a resposta é um array vazio.</p>\n<h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["partnerOrders","list"],"host":["https://ws.autorei.net"],"query":[{"key":"limit","value":"5"},{"key":"offset","value":"0"}],"variable":[]}},"response":[{"id":"172c6f36-d45e-4c38-8026-2217cd8fc621","name":"Sucesso — dois pedidos","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://ws.autorei.net/partnerOrders/list?limit=5&offset=0","host":["https://ws.autorei.net"],"path":["partnerOrders","list"],"query":[{"key":"limit","value":"5"},{"key":"offset","value":"0"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"id\": 900201,\n    \"orderId\": 900100,\n    \"total\": \"R$637,57\",\n    \"status\": \"PAYMENT_APPROVED\",\n    \"dateCreated\": \"2026-09-02T11:04:18Z\",\n    \"lastUpdated\": \"2026-09-02T11:12:40Z\",\n    \"gateway\": \"BRASPAG\",\n    \"partner\": {\n      \"partnerName\": \"Loja Exemplo\",\n      \"partnerDocument\": \"30.424.972/0001-74\"\n    },\n    \"customer\": {\n      \"customerName\": \"Ana Paula Ribeiro\",\n      \"customerDocument\": \"700.413.648-56\"\n    }\n  },\n  {\n    \"id\": 900202,\n    \"orderId\": 900101,\n    \"total\": \"R$81,64\",\n    \"status\": \"AWAITING_PAYMENT\",\n    \"dateCreated\": \"2026-09-01T13:26:05Z\",\n    \"lastUpdated\": \"2026-09-01T13:27:26Z\",\n    \"gateway\": null,\n    \"partner\": {\n      \"partnerName\": \"Loja Exemplo\",\n      \"partnerDocument\": \"30.424.972/0001-74\"\n    },\n    \"customer\": {\n      \"customerName\": \"Ana Paula Ribeiro\",\n      \"customerDocument\": \"700.413.648-56\"\n    }\n  }\n]"}],"_postman_id":"b0f2dc17-68ca-4017-9be9-973eddae2e4b"},{"name":"Buscar Detalhes do Pedido - Loja","id":"e4c81e9d-edde-4932-92bf-081628a85791","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://ws.autorei.net/partnerOrders/:id","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Devolve o pedido inteiro: valores, cliente, pagamentos, entregas com os produtos, e o histórico de status.</p>\n<p>O id da rota é o do <strong>pedido do parceiro</strong> (<code>partnerOrderId</code>), o campo <code>id</code> da listagem — não o <code>orderId</code>. Confundir os dois é o erro mais comum desta família de rotas.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id do <strong>pedido do parceiro</strong> (<code>partnerOrderId</code>), o campo <code>id</code> da listagem.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>O payload é extenso. A tabela abaixo traz os blocos de topo; os blocos condicionais estão na seção seguinte.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Id do pedido do parceiro.</td>\n</tr>\n<tr>\n<td><code>orderId</code></td>\n<td>Id do pedido do cliente, o pedido \"pai\".</td>\n</tr>\n<tr>\n<td><code>status</code></td>\n<td>Status atual.</td>\n</tr>\n<tr>\n<td><code>dateCreated</code> · <code>lastUpdated</code></td>\n<td>Criação e última alteração, em UTC.</td>\n</tr>\n<tr>\n<td><code>subTotal</code> · <code>freightTotal</code> · <code>total</code></td>\n<td>Valores em número.</td>\n</tr>\n<tr>\n<td><code>subTotalFormats</code> · <code>freightTotalFormats</code> · <code>totalFormats</code></td>\n<td>O mesmo valor formatado, em <code>value</code> (<code>\"35,91\"</code>) e <code>mask</code> (<code>\"R$ 35,91\"</code>).</td>\n</tr>\n<tr>\n<td><code>taxes</code></td>\n<td>Impostos do pedido: <code>taxPurpose</code>, <code>taxPurposeId</code>, <code>st</code>, <code>ipi</code>, <code>icms</code>, <code>pis</code>, <code>cofins</code>, <code>totalTax</code>.</td>\n</tr>\n<tr>\n<td><code>approvalWorkflow</code> · <code>workflowIsApproved</code> · <code>approvalCredit</code> · <code>approvalLevels</code></td>\n<td>Alçada de aprovação do pedido: se ele passa por alçada, se já foi aprovado, e os níveis configurados.</td>\n</tr>\n<tr>\n<td><code>invoiceNote</code></td>\n<td>Observação da nota fiscal.</td>\n</tr>\n<tr>\n<td><code>leadTimeByRequestDone</code></td>\n<td>Indica que os prazos sob consulta do pedido já foram preenchidos.</td>\n</tr>\n<tr>\n<td><code>order</code></td>\n<td>Origem do pedido: <code>origin</code>, <code>originStoreName</code>, <code>originStoreId</code>, <code>originStoreSubdomain</code>, <code>originStorePartnerId</code>, <code>drivenPrice</code>, <code>manualPrice</code>.</td>\n</tr>\n<tr>\n<td><code>seller</code></td>\n<td>Parceiro fornecedor: <code>id</code>, <code>name</code>, <code>document</code>.</td>\n</tr>\n<tr>\n<td><code>customer</code></td>\n<td>Cliente: <code>id</code>, <code>name</code>, <code>contactName</code>, <code>email</code>, <code>phone</code>, <code>type</code>, <code>document</code>, <code>stateRegistration</code>, <code>optinTracking</code>, <code>trackingPhone</code>, <code>dateCreated</code>, <code>registrationAddress</code> e <code>customerAttributes[]</code>. Veja <strong>Dados do cliente</strong>.</td>\n</tr>\n<tr>\n<td><code>payments[]</code></td>\n<td>Pagamentos: <code>id</code>, <code>paymentType</code>, <code>gateway</code>, <code>paymentInstallmentsValue</code>, <code>paymentInstallments</code>.</td>\n</tr>\n<tr>\n<td><code>deliveries[]</code></td>\n<td>Entregas. Cada uma com <code>address</code>, <code>freight</code> e <code>products[]</code> — veja <strong>O bloco de entregas</strong>.</td>\n</tr>\n<tr>\n<td><code>orderStatusLogs[]</code></td>\n<td>Histórico de status: <code>status</code> e <code>date</code>, na ordem em que aconteceram.</td>\n</tr>\n<tr>\n<td><code>attendant</code> · <code>seller</code></td>\n<td>Atendente e vendedor responsáveis.</td>\n</tr>\n<tr>\n<td><code>whoCreatedPreOrder</code> · <code>whoSelectedPayment</code></td>\n<td>Quem criou o pré-pedido e quem escolheu o pagamento: <code>client</code> ou <code>attendant</code>.</td>\n</tr>\n<tr>\n<td><code>commissionAssignedAttendantId</code> · <code>commissionAssignedAttendantCode</code> · <code>commissionAssignedAttendantDoc</code></td>\n<td>Atendente a quem a comissão foi atribuída.</td>\n</tr>\n<tr>\n<td><code>totalMarginAfterDiscountPercentage</code> · <code>markup</code></td>\n<td>Margem e markup do pedido.</td>\n</tr>\n<tr>\n<td><code>customCartId</code> · <code>cartTypeName</code> · <code>cartTypeExternalId</code></td>\n<td>Carrinho personalizado que originou o pedido, quando houve um.</td>\n</tr>\n<tr>\n<td><code>paymentPartnerReceiver[]</code></td>\n<td>Divisão do pagamento entre os participantes: <code>participant</code>, <code>name</code>, <code>typeReceiver</code>, <code>paymentFees</code>, <code>splitedBy</code>, <code>splitedPercentage</code>, <code>splitedValue</code>, <code>value</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"o-bloco-de-entregas\">O bloco de entregas</h4>\n<p>Cada item de <code>deliveries[]</code> traz três partes:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parte</th>\n<th>Conteúdo</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>address</code></td>\n<td>Endereço de entrega: <code>id</code>, <code>name</code>, <code>street</code>, <code>number</code>, <code>quarter</code>, <code>city</code>, <code>state</code>, <code>zipcode</code>, <code>deliveryAddressCode</code>, <code>addressType</code>.</td>\n</tr>\n<tr>\n<td><code>freight</code></td>\n<td>Frete: <code>value</code> e <code>valueFormats</code>, <code>name</code>, <code>type</code>, <code>freightTime</code>, <code>packingTime</code>, <code>realValue</code> e <code>realValueFormats</code>, <code>realName</code>, <code>realType</code>, e os identificadores da transportadora quando ela é integrada.</td>\n</tr>\n<tr>\n<td><code>products[]</code></td>\n<td>Os itens da entrega.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Cada produto de <code>products[]</code> traz: <code>id</code> (id do SKU) · <code>partnerOrderLineId</code> (id da linha do pedido) · <code>name</code> · <code>mfrPartCode</code> · <code>partnerPartCode</code> · <code>partnerInternalPartCode</code> · <code>composition</code> · <code>quantity</code>, <code>realQuantity</code> e <code>virtualQuantity</code> · <code>price</code>, <code>stockPrice</code>, <code>realSalePrice</code>, <code>totalCost</code>, <code>netCost</code> e os respectivos <code>*Formats</code> · <code>leadTime</code> e <code>isLeadTimeByRequest</code> · <code>marginAfterDiscountPercentage</code>, <code>interestRate</code>, <code>anticipationRate</code>, <code>drivenPrice</code> · <code>warehouse</code> (<code>id</code>, <code>name</code>, <code>zipcode</code>) · <code>brand</code> (<code>id</code>, <code>name</code>) · <code>categoryId</code> e <code>categoryName</code> · <code>whoAddedItemToCart</code> · <code>customKey</code> · <code>specialRules</code> · <code>needsAgronomicRecipe</code> · e os campos de unidade de venda (<code>salesUnitOfMeasurement</code>, <code>salePriceByUnitOfMeasurement</code>, <code>unitaryQuantityInSalesUnitOfMeasurement</code>, <code>totalQuantityInSalesUnitOfMeasurement</code>).</p>\n<h4 id=\"blocos-condicionais\">Blocos condicionais</h4>\n<p>Aparecem só quando o pedido tem o dado correspondente: <code>discounts</code> · <code>replicaOrdersCreated</code> · <code>workflowItemsAttributes</code> · <code>orderWorkflowReason</code> · <code>commodityExchange</code> · <code>orderDeliveryAttendantDiscount</code> · <code>supplierOrderId</code>, <code>supplierInvoiceNumber</code>, <code>supplierInvoiceSerie</code>, <code>supplierInvoiceKey</code> e <code>supplierInvoiceDate</code> · <code>orderName</code> · <code>partnerOrderCashBackInfo</code> · <code>orderCustomerThirdPartyReferral</code> · <code>couponCode</code> · <code>customAttributes</code> · <code>orderDocuments</code> · <code>fiscalNotes</code> · os atributos <code>external*</code> · <code>poTax</code> · <code>paymentDateVpvf</code>.</p>\n<h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"dados-do-cliente\">Dados do cliente</h4>\n<p>Parte dos dados do cliente pode vir mascarada ou omitida, conforme o contrato de marketplace da loja, o vínculo de filial e a configuração de restrição de dados da loja de origem. O bloco <code>customer</code> existe sempre; o que varia é o preenchimento.</p>\n<h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>O pedido não existe ou não está no seu escopo: <code>{\"status\":\"NOT_FOUND\",\"message\":\"Pedido com id X não encontrado\"}</code>. O mesmo corpo nos dois casos.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["partnerOrders",":id"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"900201","key":"id"}]}},"response":[{"id":"8fe5908d-a5b9-4f24-a0f7-6a11cf5effba","name":"Sucesso — pedido com pagamento aprovado","originalRequest":{"method":"GET","header":[],"url":"https://ws.autorei.net/partnerOrders/900201"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"attendant\": null,\n  \"orderId\": 900100,\n  \"id\": 900201,\n  \"status\": \"PAYMENT_APPROVED\",\n  \"approvalWorkflow\": false,\n  \"workflowIsApproved\": false,\n  \"approvalCredit\": null,\n  \"subTotal\": 35.91,\n  \"subTotalFormats\": {\n    \"value\": \"35,91\",\n    \"mask\": \"R$ 35,91\"\n  },\n  \"taxes\": {\n    \"taxPurpose\": null,\n    \"taxPurposeId\": null,\n    \"st\": 0,\n    \"ipi\": 0,\n    \"icms\": 0,\n    \"pis\": 0,\n    \"cofins\": 0,\n    \"totalTax\": 0\n  },\n  \"freightTotal\": 45.73,\n  \"freightTotalFormats\": {\n    \"value\": \"45,73\",\n    \"mask\": \"R$ 45,73\"\n  },\n  \"total\": 81.64,\n  \"totalFormats\": {\n    \"value\": \"81,64\",\n    \"mask\": \"R$ 81,64\"\n  },\n  \"dateCreated\": \"2026-09-01T13:26:05Z\",\n  \"lastUpdated\": \"2026-09-01T13:27:26Z\",\n  \"invoiceNote\": null,\n  \"leadTimeByRequestDone\": true,\n  \"order\": {\n    \"origin\": \"SHOP\",\n    \"originStoreName\": \"Loja Exemplo\",\n    \"originStoreId\": 4210,\n    \"originStoreSubdomain\": \"lojaexemplo\",\n    \"originStorePartnerId\": 5050,\n    \"drivenPrice\": false,\n    \"manualPrice\": false\n  },\n  \"seller\": {\n    \"id\": 5050,\n    \"name\": \"Loja Exemplo\",\n    \"document\": \"30.424.972/0001-74\"\n  },\n  \"customer\": {\n    \"id\": 700101,\n    \"name\": \"Ana Paula Ribeiro\",\n    \"contactName\": \"Ana Paula Ribeiro\",\n    \"email\": \"ana.ribeiro@exemplo.com.br\",\n    \"phone\": \"(11) 98765-4321\",\n    \"type\": \"pf\",\n    \"document\": \"700.413.648-56\",\n    \"stateRegistration\": null,\n    \"optinTracking\": null,\n    \"trackingPhone\": null,\n    \"dateCreated\": \"2026-08-20T09:15:00Z\",\n    \"registrationAddress\": {\n      \"street\": \"Avenida Paulista\",\n      \"number\": \"1578\",\n      \"quarter\": \"Bela Vista\",\n      \"city\": \"São Paulo\",\n      \"state\": \"SP\",\n      \"zipcode\": \"01310-100\",\n      \"farmerStateRegistration\": null\n    },\n    \"customerAttributes\": [\n      {\n        \"name\": \"OPTIN_NEWSLETTER\",\n        \"value\": \"true\"\n      }\n    ]\n  },\n  \"payments\": [\n    {\n      \"id\": 4490201,\n      \"paymentType\": \"BANK_SLIP\",\n      \"gateway\": \"BRASPAG\",\n      \"paymentInstallmentsValue\": 81.64,\n      \"paymentInstallments\": 1\n    }\n  ],\n  \"deliveries\": [\n    {\n      \"address\": {\n        \"id\": 4470701,\n        \"name\": \"Endereço de entrega\",\n        \"street\": \"Avenida Paulista\",\n        \"number\": \"1578\",\n        \"quarter\": \"Bela Vista\",\n        \"city\": \"São Paulo\",\n        \"state\": \"SP\",\n        \"zipcode\": \"01310-100\",\n        \"deliveryAddressCode\": null,\n        \"addressType\": \"RESIDENTIAL\"\n      },\n      \"freight\": {\n        \"value\": 45.73,\n        \"valueFormats\": {\n          \"value\": \"45,73\",\n          \"mask\": \"R$ 45,73\"\n        },\n        \"name\": \"CORREIO - SEDEX\",\n        \"type\": \"INTELIPOST\",\n        \"freightTime\": 4,\n        \"packingTime\": 0,\n        \"realValue\": 45.73,\n        \"realValueFormats\": {\n          \"value\": \"45,73\",\n          \"mask\": \"R$ 45,73\"\n        },\n        \"realName\": \"CORREIO - SEDEX\",\n        \"realType\": \"INTELIPOST\",\n        \"intelipostQuoteId\": \"202956238407743\",\n        \"intelipostDeliveryMethodId\": \"2\",\n        \"intelipostDeliveryMethodExternalId\": \"94\"\n      },\n      \"products\": [\n        {\n          \"id\": 500101,\n          \"name\": \"Produto Exemplo A\",\n          \"mfrPartCode\": \"FE-500101\",\n          \"composition\": \"UNITARY\",\n          \"virtualQuantity\": 0,\n          \"realQuantity\": 1,\n          \"quantity\": 1,\n          \"price\": 35.91,\n          \"priceFormats\": {\n            \"value\": \"35,91\",\n            \"mask\": \"R$ 35,91\"\n          },\n          \"leadTime\": 0,\n          \"partnerOrderLineId\": 4490101,\n          \"isLeadTimeByRequest\": false,\n          \"stockPrice\": 39.9,\n          \"stockPriceFormats\": {\n            \"value\": \"39,90\",\n            \"mask\": \"R$ 39,90\"\n          },\n          \"totalCost\": 52.15,\n          \"totalCostFormats\": {\n            \"value\": \"52,15\",\n            \"mask\": \"R$ 52,15\"\n          },\n          \"netCost\": 52.15,\n          \"netCostFormats\": {\n            \"value\": \"52,15\",\n            \"mask\": \"R$ 52,15\"\n          },\n          \"marginAfterDiscountPercentage\": null,\n          \"interestRate\": null,\n          \"anticipationRate\": null,\n          \"realSalePrice\": 35.91,\n          \"realSalePriceFormats\": {\n            \"value\": \"35,91\",\n            \"mask\": \"R$ 35,91\"\n          },\n          \"drivenPrice\": false,\n          \"partnerPartCode\": \"SKU-A-001\",\n          \"partnerInternalPartCode\": null,\n          \"warehouse\": {\n            \"id\": 1001,\n            \"name\": \"Depósito Central\",\n            \"zipcode\": \"01310-100\"\n          },\n          \"brand\": {\n            \"id\": 4460101,\n            \"name\": \"Fabricante Exemplo\"\n          },\n          \"specialRules\": {},\n          \"needsAgronomicRecipe\": \"false\",\n          \"salesUnitOfMeasurement\": null,\n          \"salePriceByUnitOfMeasurement\": null,\n          \"unitaryQuantityInSalesUnitOfMeasurement\": null,\n          \"totalQuantityInSalesUnitOfMeasurement\": null,\n          \"whoAddedItemToCart\": \"client\",\n          \"customKey\": null,\n          \"categoryId\": 31519,\n          \"categoryName\": \"Categoria Exemplo\"\n        }\n      ]\n    }\n  ],\n  \"paymentPartnerReceiver\": [\n    {\n      \"participant\": \"marketplace\",\n      \"name\": \"Loja Exemplo\",\n      \"typeReceiver\": \"PRIMARY\",\n      \"paymentFees\": \"true\",\n      \"splitedBy\": \"TOTAL\",\n      \"splitedPercentage\": 100.0,\n      \"splitedValue\": \"81,64\",\n      \"value\": \"81,64\"\n    }\n  ],\n  \"orderStatusLogs\": [\n    {\n      \"status\": \"PAYMENT_APPROVED\",\n      \"date\": \"2026-09-02T11:12:40Z\"\n    }\n  ],\n  \"totalMarginAfterDiscountPercentage\": null,\n  \"markup\": null,\n  \"whoCreatedPreOrder\": \"client\",\n  \"whoSelectedPayment\": \"client\",\n  \"commissionAssignedAttendantId\": null,\n  \"commissionAssignedAttendantCode\": null,\n  \"commissionAssignedAttendantDoc\": null,\n  \"approvalLevels\": [],\n  \"customCartId\": null,\n  \"cartTypeName\": null,\n  \"cartTypeExternalId\": null\n}"}],"_postman_id":"e4c81e9d-edde-4932-92bf-081628a85791"},{"name":"Atualizar Status do Pedido - Loja","id":"83c13c39-38bb-4b91-93b9-a31b4f94cb92","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"status\": \"READY\",\n  \"supplierOrderId\": \"PED-ERP-77120\",\n  \"supplierInvoiceNumber\": \"1234\",\n  \"supplierInvoiceSerie\": \"1\",\n  \"supplierInvoiceDate\": \"2026-09-02\"\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/partnerOrders/:id","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Move o pedido para o próximo status do fluxo de atendimento e grava, junto, os dados que aquele status exige — o número do pedido no seu ERP, a nota fiscal, o código de rastreio.</p>\n<p>Cada status de destino só é aceito a partir de um status atual específico, e alguns exigem campos próprios. As duas coisas estão em <strong>Para onde o pedido pode ir</strong>.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id do <strong>pedido do parceiro</strong> (<code>partnerOrderId</code>), o campo <code>id</code> da listagem.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"corpo-da-requisição-json\">Corpo da Requisição (JSON)</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>status</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>Status de destino. Veja <strong>Para onde o pedido pode ir</strong>.</td>\n</tr>\n<tr>\n<td><code>supplierOrderId</code></td>\n<td>string</td>\n<td>Condicional</td>\n<td>Número do pedido no seu sistema. <strong>Obrigatório</strong> quando <code>status</code> é <code>READY</code>.</td>\n</tr>\n<tr>\n<td><code>supplierInvoiceNumber</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Número da nota fiscal. Aceito em <code>READY</code> e <code>SHIPPED</code>.</td>\n</tr>\n<tr>\n<td><code>supplierInvoiceSerie</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Série da nota fiscal. Aceito em <code>READY</code> e <code>SHIPPED</code>.</td>\n</tr>\n<tr>\n<td><code>supplierInvoiceKey</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Chave de acesso da nota fiscal. Aceito em <code>READY</code> e <code>SHIPPED</code>.</td>\n</tr>\n<tr>\n<td><code>supplierInvoiceDate</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Data de emissão da nota, em <code>AAAA-MM-DD</code> ou <code>AAAAMMDD</code>. Outro formato recusa a requisição com 422.</td>\n</tr>\n<tr>\n<td><code>trackingCode</code></td>\n<td>string</td>\n<td>Condicional</td>\n<td>Código de rastreio. <strong>Obrigatório</strong> em <code>SHIPPED</code>, salvo com transportadora própria.</td>\n</tr>\n<tr>\n<td><code>urlTrackingCode</code></td>\n<td>string</td>\n<td>Não</td>\n<td>URL de rastreio da transportadora. Aceito em <code>SHIPPED</code>.</td>\n</tr>\n<tr>\n<td><code>ownCarrier</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Indica entrega por transportadora própria. Aceito em <code>SHIPPED</code>.</td>\n</tr>\n<tr>\n<td><code>orderObservation</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Observação livre gravada no pedido. Aceita em <code>READY</code>, <code>SHIPPED</code> e <code>DELIVERED</code>.</td>\n</tr>\n<tr>\n<td><code>orderReasonCanceled</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Id do motivo do cancelamento. Aceito em <code>CANCELED</code> — veja <strong>Motivos de cancelamento</strong>.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Os campos de nota fiscal só são gravados quando o pedido ainda não tem nota: reenviá-los num pedido que já foi marcado com nota não sobrescreve os valores.</p>\n<h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"para-onde-o-pedido-pode-ir\">Para onde o pedido pode ir</h4>\n<p>O <code>status</code> de destino é aceito a partir de um status atual específico. Fora dessa combinação, a resposta é <strong>422</strong>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><code>status</code> enviado</th>\n<th>Status atual exigido</th>\n<th>Campos próprios</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>APPROVED</code></td>\n<td>pedido aguardando pagamento, sem crédito ou com pagamento na loja</td>\n<td>—</td>\n</tr>\n<tr>\n<td><code>READY</code></td>\n<td><code>PAYMENT_APPROVED</code></td>\n<td><code>supplierOrderId</code> obrigatório</td>\n</tr>\n<tr>\n<td><code>SHIPPED</code></td>\n<td><code>READY</code></td>\n<td><code>trackingCode</code> obrigatório, salvo com <code>ownCarrier</code></td>\n</tr>\n<tr>\n<td><code>DELIVERED</code></td>\n<td><code>SHIPPED</code></td>\n<td>—</td>\n</tr>\n<tr>\n<td><code>STRAYED</code></td>\n<td><code>SHIPPED</code></td>\n<td>—</td>\n</tr>\n<tr>\n<td><code>RETURNED</code></td>\n<td><code>DELIVERED</code></td>\n<td>—</td>\n</tr>\n<tr>\n<td><code>AWAITING_PAYMENT</code></td>\n<td><code>AWAITING_PAYMENT</code></td>\n<td>—</td>\n</tr>\n<tr>\n<td><code>CANCELED</code></td>\n<td>qualquer</td>\n<td><code>orderReasonCanceled</code></td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>A aprovação de pagamento se envia como <code>APPROVED</code></strong>, não como <code>PAYMENT_APPROVED</code> — o pedido é que passa a ficar em <code>PAYMENT_APPROVED</code>. Os demais valores do enum de status (<code>PRE_ORDER</code>, <code>PAYMENT_APPROVED</code>, <code>COMPLETED</code>, <code>WITHOUT_CREDIT_LIMIT</code>, <code>STORE_PAYMENT</code>) servem para <strong>filtrar</strong> a listagem, mas não são aceitos aqui: a requisição responde 422.</p>\n<h4 id=\"pedido-em-alçada-de-aprovação\">Pedido em alçada de aprovação</h4>\n<p>Num pedido com alçada (<code>approvalWorkflow: true</code>) ainda não aprovado, o único <code>status</code> aceito é <code>CANCELED</code>. Qualquer outro responde 422.</p>\n<h4 id=\"motivos-de-cancelamento\">Motivos de cancelamento</h4>\n<p><code>orderReasonCanceled</code> recebe o id do motivo:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Id</th>\n<th>Motivo</th>\n<th>Id</th>\n<th>Motivo</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>2</td>\n<td>Arrependimento 7 dias</td>\n<td>20</td>\n<td>Pagamento recusado</td>\n</tr>\n<tr>\n<td>3</td>\n<td>Problema Logístico</td>\n<td>21</td>\n<td>Falta de posição do cliente</td>\n</tr>\n<tr>\n<td>4</td>\n<td>Erro de descrição</td>\n<td>22</td>\n<td>Sem Credito</td>\n</tr>\n<tr>\n<td>5</td>\n<td>Extraviado</td>\n<td>23</td>\n<td>Expirado</td>\n</tr>\n<tr>\n<td>6</td>\n<td>Falta de Pagamento</td>\n<td>24</td>\n<td>Cliente incorreto</td>\n</tr>\n<tr>\n<td>7</td>\n<td>Falta de posição da loja</td>\n<td>26</td>\n<td>Pedido errado</td>\n</tr>\n<tr>\n<td>8</td>\n<td>Furo de estoque</td>\n<td>27</td>\n<td>Falha na integração</td>\n</tr>\n<tr>\n<td>9</td>\n<td>Marca diferente</td>\n<td>28</td>\n<td>Vendedor incorreto</td>\n</tr>\n<tr>\n<td>10</td>\n<td>Produto Avariado</td>\n<td>29</td>\n<td>Chargeback</td>\n</tr>\n<tr>\n<td>11</td>\n<td>Produto incorreto</td>\n<td>30</td>\n<td>Fraude – Produto recuperado</td>\n</tr>\n<tr>\n<td>12</td>\n<td>Peça Falsificada</td>\n<td>31</td>\n<td>Suspeita de Fraude</td>\n</tr>\n<tr>\n<td>13</td>\n<td>Preço errado loja</td>\n<td>32</td>\n<td>Recompra Assistida</td>\n</tr>\n<tr>\n<td>14</td>\n<td>Pré Encomenda</td>\n<td>33</td>\n<td>Aprovação Comercial Negada</td>\n</tr>\n<tr>\n<td>15</td>\n<td>Preço Incorreto</td>\n<td>34</td>\n<td>Pedido cancelado pelo vendedor</td>\n</tr>\n<tr>\n<td>16</td>\n<td>Composição errada</td>\n<td>35</td>\n<td>Cotação editada</td>\n</tr>\n<tr>\n<td>17</td>\n<td>Atraso no envio</td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td>18</td>\n<td>Pedido duplicado</td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td>19</td>\n<td>Compra teste</td>\n<td></td>\n<td></td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"quem-pode-cancelar\">Quem pode cancelar</h4>\n<p>Quando o pedido nasceu em <strong>outra</strong> loja — você é o fornecedor, não a origem —, o cancelamento depende de a <strong>loja de origem</strong> ter habilitado o cancelamento pelo vendedor. É uma configuração dela, não sua: enquanto ela não liberar, o seu <code>CANCELED</code> responde 422, e quem cancela é a própria loja de origem. Com a permissão ligada, o cancelamento passa a valer normalmente. Pedido originado na sua própria loja não passa por essa checagem.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>O pedido inteiro, no mesmo formato de <strong>Buscar Detalhes do Pedido</strong>, já com o status novo e o registro correspondente em <code>orderStatusLogs</code>.</p>\n<h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td>O corpo não é um JSON válido. O detalhe vem em <code>error</code>.</td>\n</tr>\n<tr>\n<td>422</td>\n<td>Transição não permitida a partir do status atual, campo obrigatório do status ausente, <code>status</code> fora dos valores aceitos, <code>supplierInvoiceDate</code> em formato inválido, pedido em alçada pendente ou cancelamento não permitido. O motivo vem em <code>message</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Falha de validação do pedido. O motivo vem em <code>message</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>O pedido não existe ou não está no seu escopo.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["partnerOrders",":id"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"900201","key":"id"}]}},"response":[{"id":"ea8a4de5-d67b-452c-8662-25946d6944be","name":"Sucesso — separado para envio","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"status\": \"READY\",\n  \"supplierOrderId\": \"PED-ERP-77120\",\n  \"supplierInvoiceNumber\": \"1234\",\n  \"supplierInvoiceSerie\": \"1\",\n  \"supplierInvoiceDate\": \"2026-09-02\"\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/partnerOrders/900201"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"attendant\": null,\n  \"orderId\": 900100,\n  \"id\": 900201,\n  \"status\": \"READY\",\n  \"approvalWorkflow\": false,\n  \"workflowIsApproved\": false,\n  \"approvalCredit\": null,\n  \"subTotal\": 35.91,\n  \"subTotalFormats\": {\n    \"value\": \"35,91\",\n    \"mask\": \"R$ 35,91\"\n  },\n  \"taxes\": {\n    \"taxPurpose\": null,\n    \"taxPurposeId\": null,\n    \"st\": 0,\n    \"ipi\": 0,\n    \"icms\": 0,\n    \"pis\": 0,\n    \"cofins\": 0,\n    \"totalTax\": 0\n  },\n  \"freightTotal\": 45.73,\n  \"freightTotalFormats\": {\n    \"value\": \"45,73\",\n    \"mask\": \"R$ 45,73\"\n  },\n  \"total\": 81.64,\n  \"totalFormats\": {\n    \"value\": \"81,64\",\n    \"mask\": \"R$ 81,64\"\n  },\n  \"dateCreated\": \"2026-09-01T13:26:05Z\",\n  \"lastUpdated\": \"2026-09-01T13:27:26Z\",\n  \"invoiceNote\": null,\n  \"leadTimeByRequestDone\": true,\n  \"order\": {\n    \"origin\": \"SHOP\",\n    \"originStoreName\": \"Loja Exemplo\",\n    \"originStoreId\": 4210,\n    \"originStoreSubdomain\": \"lojaexemplo\",\n    \"originStorePartnerId\": 5050,\n    \"drivenPrice\": false,\n    \"manualPrice\": false\n  },\n  \"seller\": {\n    \"id\": 5050,\n    \"name\": \"Loja Exemplo\",\n    \"document\": \"30.424.972/0001-74\"\n  },\n  \"customer\": {\n    \"id\": 700101,\n    \"name\": \"Ana Paula Ribeiro\",\n    \"contactName\": \"Ana Paula Ribeiro\",\n    \"email\": \"ana.ribeiro@exemplo.com.br\",\n    \"phone\": \"(11) 98765-4321\",\n    \"type\": \"pf\",\n    \"document\": \"700.413.648-56\",\n    \"stateRegistration\": null,\n    \"optinTracking\": null,\n    \"trackingPhone\": null,\n    \"dateCreated\": \"2026-08-20T09:15:00Z\",\n    \"registrationAddress\": {\n      \"street\": \"Avenida Paulista\",\n      \"number\": \"1578\",\n      \"quarter\": \"Bela Vista\",\n      \"city\": \"São Paulo\",\n      \"state\": \"SP\",\n      \"zipcode\": \"01310-100\",\n      \"farmerStateRegistration\": null\n    },\n    \"customerAttributes\": [\n      {\n        \"name\": \"OPTIN_NEWSLETTER\",\n        \"value\": \"true\"\n      }\n    ]\n  },\n  \"payments\": [\n    {\n      \"id\": 4490201,\n      \"paymentType\": \"BANK_SLIP\",\n      \"gateway\": \"BRASPAG\",\n      \"paymentInstallmentsValue\": 81.64,\n      \"paymentInstallments\": 1\n    }\n  ],\n  \"deliveries\": [\n    {\n      \"address\": {\n        \"id\": 4470701,\n        \"name\": \"Endereço de entrega\",\n        \"street\": \"Avenida Paulista\",\n        \"number\": \"1578\",\n        \"quarter\": \"Bela Vista\",\n        \"city\": \"São Paulo\",\n        \"state\": \"SP\",\n        \"zipcode\": \"01310-100\",\n        \"deliveryAddressCode\": null,\n        \"addressType\": \"RESIDENTIAL\"\n      },\n      \"freight\": {\n        \"value\": 45.73,\n        \"valueFormats\": {\n          \"value\": \"45,73\",\n          \"mask\": \"R$ 45,73\"\n        },\n        \"name\": \"CORREIO - SEDEX\",\n        \"type\": \"INTELIPOST\",\n        \"freightTime\": 4,\n        \"packingTime\": 0,\n        \"realValue\": 45.73,\n        \"realValueFormats\": {\n          \"value\": \"45,73\",\n          \"mask\": \"R$ 45,73\"\n        },\n        \"realName\": \"CORREIO - SEDEX\",\n        \"realType\": \"INTELIPOST\",\n        \"intelipostQuoteId\": \"202956238407743\",\n        \"intelipostDeliveryMethodId\": \"2\",\n        \"intelipostDeliveryMethodExternalId\": \"94\"\n      },\n      \"products\": [\n        {\n          \"id\": 500101,\n          \"name\": \"Produto Exemplo A\",\n          \"mfrPartCode\": \"FE-500101\",\n          \"composition\": \"UNITARY\",\n          \"virtualQuantity\": 0,\n          \"realQuantity\": 1,\n          \"quantity\": 1,\n          \"price\": 35.91,\n          \"priceFormats\": {\n            \"value\": \"35,91\",\n            \"mask\": \"R$ 35,91\"\n          },\n          \"leadTime\": 0,\n          \"partnerOrderLineId\": 4490101,\n          \"isLeadTimeByRequest\": false,\n          \"stockPrice\": 39.9,\n          \"stockPriceFormats\": {\n            \"value\": \"39,90\",\n            \"mask\": \"R$ 39,90\"\n          },\n          \"totalCost\": 52.15,\n          \"totalCostFormats\": {\n            \"value\": \"52,15\",\n            \"mask\": \"R$ 52,15\"\n          },\n          \"netCost\": 52.15,\n          \"netCostFormats\": {\n            \"value\": \"52,15\",\n            \"mask\": \"R$ 52,15\"\n          },\n          \"marginAfterDiscountPercentage\": null,\n          \"interestRate\": null,\n          \"anticipationRate\": null,\n          \"realSalePrice\": 35.91,\n          \"realSalePriceFormats\": {\n            \"value\": \"35,91\",\n            \"mask\": \"R$ 35,91\"\n          },\n          \"drivenPrice\": false,\n          \"partnerPartCode\": \"SKU-A-001\",\n          \"partnerInternalPartCode\": null,\n          \"warehouse\": {\n            \"id\": 1001,\n            \"name\": \"Depósito Central\",\n            \"zipcode\": \"01310-100\"\n          },\n          \"brand\": {\n            \"id\": 4460101,\n            \"name\": \"Fabricante Exemplo\"\n          },\n          \"specialRules\": {},\n          \"needsAgronomicRecipe\": \"false\",\n          \"salesUnitOfMeasurement\": null,\n          \"salePriceByUnitOfMeasurement\": null,\n          \"unitaryQuantityInSalesUnitOfMeasurement\": null,\n          \"totalQuantityInSalesUnitOfMeasurement\": null,\n          \"whoAddedItemToCart\": \"client\",\n          \"customKey\": null,\n          \"categoryId\": 31519,\n          \"categoryName\": \"Categoria Exemplo\"\n        }\n      ]\n    }\n  ],\n  \"paymentPartnerReceiver\": [\n    {\n      \"participant\": \"marketplace\",\n      \"name\": \"Loja Exemplo\",\n      \"typeReceiver\": \"PRIMARY\",\n      \"paymentFees\": \"true\",\n      \"splitedBy\": \"TOTAL\",\n      \"splitedPercentage\": 100.0,\n      \"splitedValue\": \"81,64\",\n      \"value\": \"81,64\"\n    }\n  ],\n  \"orderStatusLogs\": [\n    {\n      \"status\": \"READY\",\n      \"date\": \"2026-09-02T11:12:40Z\"\n    }\n  ],\n  \"totalMarginAfterDiscountPercentage\": null,\n  \"markup\": null,\n  \"whoCreatedPreOrder\": \"client\",\n  \"whoSelectedPayment\": \"client\",\n  \"commissionAssignedAttendantId\": null,\n  \"commissionAssignedAttendantCode\": null,\n  \"commissionAssignedAttendantDoc\": null,\n  \"approvalLevels\": [],\n  \"customCartId\": null,\n  \"cartTypeName\": null,\n  \"cartTypeExternalId\": null,\n  \"supplierOrderId\": \"PED-ERP-77120\",\n  \"supplierInvoiceNumber\": \"1234\",\n  \"supplierInvoiceSerie\": \"1\",\n  \"supplierInvoiceDate\": \"2026-09-02T00:00:00Z\"\n}"},{"id":"8145ae84-c1cc-434d-ae1b-b5d9a1b7c2be","name":"Sucesso — enviado","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"status\": \"SHIPPED\",\n  \"trackingCode\": \"BR123456789BR\",\n  \"urlTrackingCode\": \"https://rastreio.exemplo.com.br/BR123456789BR\"\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/partnerOrders/900201"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"attendant\": null,\n  \"orderId\": 900100,\n  \"id\": 900201,\n  \"status\": \"SHIPPED\",\n  \"approvalWorkflow\": false,\n  \"workflowIsApproved\": false,\n  \"approvalCredit\": null,\n  \"subTotal\": 35.91,\n  \"subTotalFormats\": {\n    \"value\": \"35,91\",\n    \"mask\": \"R$ 35,91\"\n  },\n  \"taxes\": {\n    \"taxPurpose\": null,\n    \"taxPurposeId\": null,\n    \"st\": 0,\n    \"ipi\": 0,\n    \"icms\": 0,\n    \"pis\": 0,\n    \"cofins\": 0,\n    \"totalTax\": 0\n  },\n  \"freightTotal\": 45.73,\n  \"freightTotalFormats\": {\n    \"value\": \"45,73\",\n    \"mask\": \"R$ 45,73\"\n  },\n  \"total\": 81.64,\n  \"totalFormats\": {\n    \"value\": \"81,64\",\n    \"mask\": \"R$ 81,64\"\n  },\n  \"dateCreated\": \"2026-09-01T13:26:05Z\",\n  \"lastUpdated\": \"2026-09-01T13:27:26Z\",\n  \"invoiceNote\": null,\n  \"leadTimeByRequestDone\": true,\n  \"order\": {\n    \"origin\": \"SHOP\",\n    \"originStoreName\": \"Loja Exemplo\",\n    \"originStoreId\": 4210,\n    \"originStoreSubdomain\": \"lojaexemplo\",\n    \"originStorePartnerId\": 5050,\n    \"drivenPrice\": false,\n    \"manualPrice\": false\n  },\n  \"seller\": {\n    \"id\": 5050,\n    \"name\": \"Loja Exemplo\",\n    \"document\": \"30.424.972/0001-74\"\n  },\n  \"customer\": {\n    \"id\": 700101,\n    \"name\": \"Ana Paula Ribeiro\",\n    \"contactName\": \"Ana Paula Ribeiro\",\n    \"email\": \"ana.ribeiro@exemplo.com.br\",\n    \"phone\": \"(11) 98765-4321\",\n    \"type\": \"pf\",\n    \"document\": \"700.413.648-56\",\n    \"stateRegistration\": null,\n    \"optinTracking\": null,\n    \"trackingPhone\": null,\n    \"dateCreated\": \"2026-08-20T09:15:00Z\",\n    \"registrationAddress\": {\n      \"street\": \"Avenida Paulista\",\n      \"number\": \"1578\",\n      \"quarter\": \"Bela Vista\",\n      \"city\": \"São Paulo\",\n      \"state\": \"SP\",\n      \"zipcode\": \"01310-100\",\n      \"farmerStateRegistration\": null\n    },\n    \"customerAttributes\": [\n      {\n        \"name\": \"OPTIN_NEWSLETTER\",\n        \"value\": \"true\"\n      }\n    ]\n  },\n  \"payments\": [\n    {\n      \"id\": 4490201,\n      \"paymentType\": \"BANK_SLIP\",\n      \"gateway\": \"BRASPAG\",\n      \"paymentInstallmentsValue\": 81.64,\n      \"paymentInstallments\": 1\n    }\n  ],\n  \"deliveries\": [\n    {\n      \"address\": {\n        \"id\": 4470701,\n        \"name\": \"Endereço de entrega\",\n        \"street\": \"Avenida Paulista\",\n        \"number\": \"1578\",\n        \"quarter\": \"Bela Vista\",\n        \"city\": \"São Paulo\",\n        \"state\": \"SP\",\n        \"zipcode\": \"01310-100\",\n        \"deliveryAddressCode\": null,\n        \"addressType\": \"RESIDENTIAL\"\n      },\n      \"freight\": {\n        \"value\": 45.73,\n        \"valueFormats\": {\n          \"value\": \"45,73\",\n          \"mask\": \"R$ 45,73\"\n        },\n        \"name\": \"CORREIO - SEDEX\",\n        \"type\": \"INTELIPOST\",\n        \"freightTime\": 4,\n        \"packingTime\": 0,\n        \"realValue\": 45.73,\n        \"realValueFormats\": {\n          \"value\": \"45,73\",\n          \"mask\": \"R$ 45,73\"\n        },\n        \"realName\": \"CORREIO - SEDEX\",\n        \"realType\": \"INTELIPOST\",\n        \"intelipostQuoteId\": \"202956238407743\",\n        \"intelipostDeliveryMethodId\": \"2\",\n        \"intelipostDeliveryMethodExternalId\": \"94\"\n      },\n      \"products\": [\n        {\n          \"id\": 500101,\n          \"name\": \"Produto Exemplo A\",\n          \"mfrPartCode\": \"FE-500101\",\n          \"composition\": \"UNITARY\",\n          \"virtualQuantity\": 0,\n          \"realQuantity\": 1,\n          \"quantity\": 1,\n          \"price\": 35.91,\n          \"priceFormats\": {\n            \"value\": \"35,91\",\n            \"mask\": \"R$ 35,91\"\n          },\n          \"leadTime\": 0,\n          \"partnerOrderLineId\": 4490101,\n          \"isLeadTimeByRequest\": false,\n          \"stockPrice\": 39.9,\n          \"stockPriceFormats\": {\n            \"value\": \"39,90\",\n            \"mask\": \"R$ 39,90\"\n          },\n          \"totalCost\": 52.15,\n          \"totalCostFormats\": {\n            \"value\": \"52,15\",\n            \"mask\": \"R$ 52,15\"\n          },\n          \"netCost\": 52.15,\n          \"netCostFormats\": {\n            \"value\": \"52,15\",\n            \"mask\": \"R$ 52,15\"\n          },\n          \"marginAfterDiscountPercentage\": null,\n          \"interestRate\": null,\n          \"anticipationRate\": null,\n          \"realSalePrice\": 35.91,\n          \"realSalePriceFormats\": {\n            \"value\": \"35,91\",\n            \"mask\": \"R$ 35,91\"\n          },\n          \"drivenPrice\": false,\n          \"partnerPartCode\": \"SKU-A-001\",\n          \"partnerInternalPartCode\": null,\n          \"warehouse\": {\n            \"id\": 1001,\n            \"name\": \"Depósito Central\",\n            \"zipcode\": \"01310-100\"\n          },\n          \"brand\": {\n            \"id\": 4460101,\n            \"name\": \"Fabricante Exemplo\"\n          },\n          \"specialRules\": {},\n          \"needsAgronomicRecipe\": \"false\",\n          \"salesUnitOfMeasurement\": null,\n          \"salePriceByUnitOfMeasurement\": null,\n          \"unitaryQuantityInSalesUnitOfMeasurement\": null,\n          \"totalQuantityInSalesUnitOfMeasurement\": null,\n          \"whoAddedItemToCart\": \"client\",\n          \"customKey\": null,\n          \"categoryId\": 31519,\n          \"categoryName\": \"Categoria Exemplo\"\n        }\n      ]\n    }\n  ],\n  \"paymentPartnerReceiver\": [\n    {\n      \"participant\": \"marketplace\",\n      \"name\": \"Loja Exemplo\",\n      \"typeReceiver\": \"PRIMARY\",\n      \"paymentFees\": \"true\",\n      \"splitedBy\": \"TOTAL\",\n      \"splitedPercentage\": 100.0,\n      \"splitedValue\": \"81,64\",\n      \"value\": \"81,64\"\n    }\n  ],\n  \"orderStatusLogs\": [\n    {\n      \"status\": \"SHIPPED\",\n      \"date\": \"2026-09-02T11:12:40Z\"\n    }\n  ],\n  \"totalMarginAfterDiscountPercentage\": null,\n  \"markup\": null,\n  \"whoCreatedPreOrder\": \"client\",\n  \"whoSelectedPayment\": \"client\",\n  \"commissionAssignedAttendantId\": null,\n  \"commissionAssignedAttendantCode\": null,\n  \"commissionAssignedAttendantDoc\": null,\n  \"approvalLevels\": [],\n  \"customCartId\": null,\n  \"cartTypeName\": null,\n  \"cartTypeExternalId\": null\n}"}],"_postman_id":"83c13c39-38bb-4b91-93b9-a31b4f94cb92"},{"name":"Listar Itens com Lead Time Sob Consulta","id":"f609114c-e74c-4744-ba7a-572421f082d0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://ws.autorei.net/partnerOrders/:id/partnerOrderLines","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Lista os produtos do pedido cujo <strong>prazo de entrega ficou sob consulta</strong> e ainda não foi preenchido. É a fila de itens que dependem de você informar o prazo antes de o pedido seguir.</p>\n<p>Para informar os prazos, use <strong>Atualizar Lead Time dos Itens</strong>.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id do <strong>pedido do parceiro</strong> (<code>partnerOrderId</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>Array com os itens pendentes de prazo. Com todos os prazos já preenchidos, a resposta é um array vazio.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Id da linha do pedido (<code>partnerOrderLineId</code>), o mesmo de <code>deliveries[].products[].partnerOrderLineId</code>.</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>Nome do produto.</td>\n</tr>\n<tr>\n<td><code>brand</code></td>\n<td>Marca do produto.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>O pedido não existe ou não está no seu escopo.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["partnerOrders",":id","partnerOrderLines"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"900201","key":"id"}]}},"response":[{"id":"8fb37d75-a1d5-46c5-9823-af519909703d","name":"Sucesso — um item pendente de prazo","originalRequest":{"method":"GET","header":[],"url":"https://ws.autorei.net/partnerOrders/900201/partnerOrderLines"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"id\": 4490101,\n    \"name\": \"Produto Exemplo A\",\n    \"brand\": \"Fabricante Exemplo\"\n  }\n]"}],"_postman_id":"f609114c-e74c-4744-ba7a-572421f082d0"},{"name":"Atualizar Lead Time dos Itens","id":"2730e730-2894-46a7-83ac-58759df4eabc","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"partnerOrderLineList\": [\n    {\n      \"id\": 4490101,\n      \"leadTime\": 5\n    },\n    {\n      \"id\": 4490102,\n      \"leadTime\": 3\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/partnerOrders/:id/partnerOrderLines","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Informa o prazo de preparo dos itens que ficaram com o <strong>prazo sob consulta</strong>. É este envio que <strong>libera o pedido para o pagamento</strong>: respondidos os prazos, o cliente é avisado de que o pedido está disponível.</p>\n<p>Os itens pendentes estão em <strong>Listar Itens com Lead Time Sob Consulta</strong>.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id do <strong>pedido do parceiro</strong> (<code>partnerOrderId</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"corpo-da-requisição-json\">Corpo da Requisição (JSON)</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>partnerOrderLineList</code></td>\n<td>array</td>\n<td>Sim</td>\n<td>Os itens do pedido que estão com prazo pendente.</td>\n</tr>\n<tr>\n<td><code>partnerOrderLineList[].id</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id da linha do pedido — o campo <code>id</code> da consulta, e o <code>deliveries[].products[].partnerOrderLineId</code> do detalhe do pedido.</td>\n</tr>\n<tr>\n<td><code>partnerOrderLineList[].leadTime</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Prazo de preparo do item, em dias. Maior que zero.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"todos-os-itens-pendentes-de-uma-vez\">Todos os itens pendentes, de uma vez</h4>\n<p>A requisição precisa trazer <strong>todos</strong> os itens do pedido que estão com o prazo pendente. Faltando um, nada é gravado e a resposta é 422. Não existe envio parcial: consulte a lista, responda a lista inteira.</p>\n<h4 id=\"o-pedido-precisa-estar-esperando-o-prazo\">O pedido precisa estar esperando o prazo</h4>\n<p>Só aceita pedido que nasceu com prazo sob consulta e que <strong>ainda não teve os prazos respondidos</strong>. Respondido uma vez, o prazo não se edita de novo por aqui.</p>\n<h4 id=\"o-status-precisa-permitir\">O status precisa permitir</h4>\n<p>O pedido precisa estar em <code>PRE_ORDER</code>, <code>AWAITING_PAYMENT</code> ou <code>PAYMENT_APPROVED</code>. Em qualquer outro status a atualização é recusada.</p>\n<h4 id=\"o-que-a-resposta-ao-prazo-dispara\">O que a resposta ao prazo dispara</h4>\n<p>Gravados os prazos, três coisas acontecem de uma vez: o <strong>prazo de preparo da entrega</strong> passa a somar o maior prazo informado — e, em lojas configuradas para isso, o prazo de frete também soma; o pedido é marcado como <strong>respondido</strong>; e o <strong>cliente é notificado</strong> de que o pedido está disponível para pagamento.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>Array com as linhas do pedido, já com os prazos gravados.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Id da linha do pedido.</td>\n</tr>\n<tr>\n<td><code>quantity</code></td>\n<td>Quantidade total do item.</td>\n</tr>\n<tr>\n<td><code>leadTime</code></td>\n<td>Prazo de preparo gravado, em dias.</td>\n</tr>\n<tr>\n<td><code>salePrice</code> · <code>realSalePrice</code> · <code>defaultPrice</code></td>\n<td>Preços da linha.</td>\n</tr>\n<tr>\n<td><code>stock</code></td>\n<td>Estoque de origem do item.</td>\n</tr>\n<tr>\n<td><code>partnerOrder</code></td>\n<td>Id do pedido do parceiro.</td>\n</tr>\n<tr>\n<td><code>customerType</code> · <code>couponId</code></td>\n<td>Tipo de cliente da linha e cupom aplicado, quando houver.</td>\n</tr>\n<tr>\n<td><code>taxes</code></td>\n<td>Impostos da linha, quando houver: <code>taxPurpose</code>, <code>taxPurposeId</code>, <code>st</code>, <code>ipi</code>, <code>icms</code>, <code>pis</code>, <code>cofins</code>, <code>totalTax</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td>O corpo não é um JSON válido. O detalhe vem em <code>error</code>.</td>\n</tr>\n<tr>\n<td>422</td>\n<td>O pedido não é seu; não é um pedido de prazo sob consulta ou os prazos já foram respondidos; o status não permite a atualização; algum item veio sem <code>id</code> ou sem <code>leadTime</code>; ou faltou algum dos itens pendentes. O motivo vem em <code>message</code>.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["partnerOrders",":id","partnerOrderLines"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"900201","key":"id"}]}},"response":[{"id":"ebfcb87d-78b8-4eb8-8ddd-b85952eead16","name":"Sucesso — prazos informados","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"partnerOrderLineList\": [\n    {\n      \"id\": 4490101,\n      \"leadTime\": 5\n    },\n    {\n      \"id\": 4490102,\n      \"leadTime\": 3\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/partnerOrders/900201/partnerOrderLines"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"id\": 4490101,\n    \"quantity\": 2,\n    \"leadTime\": 5,\n    \"salePrice\": 149.9,\n    \"realSalePrice\": 149.9,\n    \"defaultPrice\": 159.9,\n    \"stock\": 4410001,\n    \"partnerOrder\": 900201,\n    \"customerType\": \"pf\",\n    \"couponId\": null\n  },\n  {\n    \"id\": 4490102,\n    \"quantity\": 1,\n    \"leadTime\": 3,\n    \"salePrice\": 89.9,\n    \"realSalePrice\": 89.9,\n    \"defaultPrice\": 89.9,\n    \"stock\": 4410002,\n    \"partnerOrder\": 900201,\n    \"customerType\": \"pf\",\n    \"couponId\": null\n  }\n]"}],"_postman_id":"2730e730-2894-46a7-83ac-58759df4eabc"},{"name":"Upload de XML da Nota Fiscal - Loja","id":"675939c5-61dd-4c4e-b22d-b89758e38303","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/xml"}],"body":{"mode":"raw","raw":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<nfeProc versao=\"4.00\">\n  <NFe>\n    <infNFe Id=\"NFe35260930424972000174550010000012341000012349\">\n      <ide><nNF>1234</nNF><serie>1</serie></ide>\n    </infNFe>\n  </NFe>\n</nfeProc>","options":{"raw":{"language":"xml"}}},"url":"https://ws.autorei.net/partnerOrders/:id/invoice","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Anexa o XML da nota fiscal ao pedido. O corpo da requisição é o <strong>próprio arquivo</strong>, enviado como conteúdo binário — o stream cru dos bytes do <code>.xml</code>. Não é <code>multipart/form-data</code>, não há campo de formulário e o XML não vai dentro de um JSON.</p>\n<p>A nota precisa ser uma <strong>NF-e real e válida</strong>: a plataforma lê o arquivo e extrai dele os dados da nota. Veja <strong>O que é lido do arquivo</strong>.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id do <strong>pedido do parceiro</strong> (<code>partnerOrderId</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"corpo-da-requisição\">Corpo da Requisição</h3>\n<p>Os bytes do arquivo <code>.xml</code> da NF-e, sem envelope. Envie <code>Content-Type: application/xml</code>.</p>\n<h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"o-que-é-lido-do-arquivo\">O que é lido do arquivo</h4>\n<p>A plataforma faz o parse do XML e extrai a <strong>chave de acesso</strong>, o <strong>número</strong>, a <strong>série</strong>, a <strong>data de emissão</strong> e o <strong>valor total</strong> da nota. É por isso que o arquivo precisa ser uma NF-e de verdade: um XML bem formado mas que não seja uma nota não traz esses dados. O arquivo é guardado com o nome da chave de acesso.</p>\n<p>São aceitos os dois formatos usuais — o XML processado, com o envelope da nota, e o XML só com o bloco da nota.</p>\n<p>Arquivo vazio ou que não é XML válido é recusado, e nada é gravado.</p>\n<h4 id=\"o-pedido-precisa-ter-o-pagamento-aprovado\">O pedido precisa ter o pagamento aprovado</h4>\n<p>Só aceita nota em pedido que já passou da aprovação de pagamento. Antes disso a requisição é recusada e nada é gravado.</p>\n<h4 id=\"uma-nota-ou-várias\">Uma nota ou várias</h4>\n<p>Por padrão o pedido guarda <strong>um</strong> arquivo, e cada envio substitui o anterior. Lojas configuradas para múltiplas notas acumulam os arquivos: cada envio acrescenta mais um. A configuração é da loja e é feita pela CWS.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>Os dados da nota anexada ao pedido.</p>\n<h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>422</td>\n<td>Corpo vazio, arquivo que não é XML válido, ou pedido ainda sem pagamento aprovado. O motivo vem em <code>message</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>O pedido não existe ou não está no seu escopo.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["partnerOrders",":id","invoice"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"900201","key":"id"}]}},"response":[{"id":"2c9a0584-4862-4086-8a9a-097c3d557e4f","name":"Recusa — pedido sem pagamento aprovado","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/xml"}],"body":{"mode":"raw","raw":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<nfeProc versao=\"4.00\">\n  <NFe>\n    <infNFe Id=\"NFe35260930424972000174550010000012341000012349\">\n      <ide><nNF>1234</nNF><serie>1</serie></ide>\n    </infNFe>\n  </NFe>\n</nfeProc>","options":{"raw":{"language":"xml"}}},"url":"https://ws.autorei.net/partnerOrders/900201/invoice"},"status":"Unprocessable Entity","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"UNPROCESSABLE_ENTITY\",\n  \"message\": \"Envio de XML de NFe permitido somente para pedido com pagamento aprovado\"\n}"}],"_postman_id":"675939c5-61dd-4c4e-b22d-b89758e38303"},{"name":"Enviar Acompanhamento dos Itens - Loja (EM HOMOLOGAÇÃO)","id":"4f93aafa-46e5-4eaf-ad79-1db74e6f3c32","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"skus\": [\n    {\n      \"partnerPartCode\": \"SKU-A-001\",\n      \"situation\": \"enviado\",\n      \"quantity\": 2\n    },\n    {\n      \"partnerPartCode\": \"SKU-A-001\",\n      \"situation\": \"preparando\",\n      \"quantity\": 1\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/partnerOrders/:id/complementaryInfo","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Informa, item a item, em que situação está cada produto do pedido — o que já saiu, o que está sendo preparado, o que ficou pendente. É o acompanhamento que o cliente vê durante o atendimento.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id do <strong>pedido do parceiro</strong> (<code>partnerOrderId</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"corpo-da-requisição-json\">Corpo da Requisição (JSON)</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>skus</code></td>\n<td>array</td>\n<td>Sim</td>\n<td>Os itens do acompanhamento. De 1 a <strong>250</strong> por requisição.</td>\n</tr>\n<tr>\n<td><code>skus[].partnerPartCode</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>O seu código de peça do produto, o mesmo que você cadastrou no estoque.</td>\n</tr>\n<tr>\n<td><code>skus[].situation</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>Situação do item. Texto livre — a plataforma não valida contra uma lista.</td>\n</tr>\n<tr>\n<td><code>skus[].quantity</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Quantidade nessa situação. Número inteiro <strong>maior que zero</strong>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"o-envio-alcança-só-as-peças-que-ele-contém\">O envio alcança só as peças que ele contém</h4>\n<p>O escopo do envio é o <strong>item</strong>, não o pedido: cada requisição substitui o acompanhamento das peças que ela cita e <strong>deixa as demais intactas</strong>. Você pode enviar um produto de cada vez, sem reenviar o pedido inteiro.</p>\n<p>Reenviar um item exatamente igual ao que já está gravado não recria o registro: ele é preservado como está.</p>\n<h4 id=\"o-mesmo-produto-em-mais-de-uma-situação\">O mesmo produto em mais de uma situação</h4>\n<p><code>partnerPartCode</code> <strong>pode repetir</strong> no mesmo envio, uma vez por situação — é assim que você informa três unidades enviadas e duas em preparação do mesmo produto. As quantidades <strong>somam</strong>; os registros não competem entre si.</p>\n<h4 id=\"a-soma-não-passa-a-quantidade-do-item-no-pedido\">A soma não passa a quantidade do item no pedido</h4>\n<p>Para um mesmo produto, a soma das quantidades informadas não pode ultrapassar a quantidade daquele item no pedido. Passando, a requisição é recusada e <strong>nada é gravado</strong>.</p>\n<h4 id=\"o-produto-precisa-estar-no-pedido\">O produto precisa estar no pedido</h4>\n<p>O <code>partnerPartCode</code> é resolvido contra as linhas <strong>daquele pedido</strong>. Código que não corresponde a nenhuma linha, ou que corresponde a mais de uma, recusa a requisição — e a resposta diz qual código causou a recusa.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>O eco <strong>do que você enviou</strong>, com o veredito de cada item. Para o conjunto que está gravado no pedido, use <strong>Consultar Acompanhamento dos Itens</strong>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>orderId</code></td>\n<td>Id do pedido do cliente, derivado do pedido da rota.</td>\n</tr>\n<tr>\n<td><code>partnerOrderId</code></td>\n<td>Id do pedido do parceiro, o mesmo da rota.</td>\n</tr>\n<tr>\n<td><code>skus[].partnerPartCode</code></td>\n<td>O código que você enviou.</td>\n</tr>\n<tr>\n<td><code>skus[].quantity</code> · <code>skus[].situation</code></td>\n<td>Quantidade e situação informadas.</td>\n</tr>\n<tr>\n<td><code>skus[].status</code></td>\n<td><code>valid</code> no item aceito · <code>invalid</code> no item que causou a recusa.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"quando-a-recusa-é-item-a-item\">Quando a recusa é item a item</h3>\n<p>A recusa por regra de negócio responde <strong>422</strong> com <strong>a mesma estrutura do sucesso</strong>, mais <code>status</code> e <code>message</code> no topo: os itens que causaram a recusa vêm com <code>status: \"invalid\"</code> e os demais com <code>valid</code>, e <code>message</code> reúne os motivos, um por linha. <strong>Nada é gravado</strong> — a recusa vale para a requisição inteira. Assim você localiza o item problemático sem cruzar a mensagem com a posição no array.</p>\n<h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td>O corpo não é um JSON válido. O detalhe vem em <code>error</code>.</td>\n</tr>\n<tr>\n<td>422</td>\n<td><code>skus</code> ausente, vazio ou com mais de 250 itens; item sem <code>partnerPartCode</code>, sem <code>situation</code> ou com <code>quantity</code> que não seja inteiro maior que zero; código que não está no pedido ou que aparece em mais de uma linha; soma acima da quantidade do item. O corpo traz o motivo em <code>message</code> e marca os itens recusados.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>O pedido não existe ou não está no seu escopo.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["partnerOrders",":id","complementaryInfo"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"900201","key":"id"}]}},"response":[{"id":"f3a643da-4dad-46bb-8e68-b9ab3e0e2701","name":"Sucesso — produto em duas situações","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"skus\": [\n    {\n      \"partnerPartCode\": \"SKU-A-001\",\n      \"situation\": \"enviado\",\n      \"quantity\": 2\n    },\n    {\n      \"partnerPartCode\": \"SKU-A-001\",\n      \"situation\": \"preparando\",\n      \"quantity\": 1\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/partnerOrders/900201/complementaryInfo"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"orderId\": 900100,\n  \"partnerOrderId\": 900201,\n  \"skus\": [\n    {\n      \"partnerPartCode\": \"SKU-A-001\",\n      \"quantity\": 2,\n      \"situation\": \"enviado\",\n      \"status\": \"valid\"\n    },\n    {\n      \"partnerPartCode\": \"SKU-A-001\",\n      \"quantity\": 1,\n      \"situation\": \"preparando\",\n      \"status\": \"valid\"\n    }\n  ]\n}"},{"id":"fe2aabce-fd5e-4e32-884e-52b1e45a809b","name":"Recusa — código que não está no pedido","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"skus\": [\n    {\n      \"partnerPartCode\": \"SKU-A-001\",\n      \"situation\": \"enviado\",\n      \"quantity\": 2\n    },\n    {\n      \"partnerPartCode\": \"SKU-Z-999\",\n      \"situation\": \"enviado\",\n      \"quantity\": 1\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/partnerOrders/900201/complementaryInfo"},"status":"Unprocessable Entity","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"UNPROCESSABLE_ENTITY\",\n  \"message\": \"partnerPartCode não encontrado nas linhas do pedido: SKU-Z-999\",\n  \"orderId\": 900100,\n  \"partnerOrderId\": 900201,\n  \"skus\": [\n    {\n      \"partnerPartCode\": \"SKU-A-001\",\n      \"quantity\": 2,\n      \"situation\": \"enviado\",\n      \"status\": \"valid\"\n    },\n    {\n      \"partnerPartCode\": \"SKU-Z-999\",\n      \"quantity\": 1,\n      \"situation\": \"enviado\",\n      \"status\": \"invalid\"\n    }\n  ]\n}"}],"_postman_id":"4f93aafa-46e5-4eaf-ad79-1db74e6f3c32"},{"name":"Consultar Acompanhamento dos Itens - Loja (EM HOMOLOGAÇÃO)","id":"f07a5341-c79f-478a-a703-d6417dcc4edd","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://ws.autorei.net/partnerOrders/:id/complementaryInfo","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Devolve o acompanhamento dos itens que está gravado no pedido — o conjunto ativo.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id do <strong>pedido do parceiro</strong> (<code>partnerOrderId</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>orderId</code></td>\n<td>Id do pedido do cliente.</td>\n</tr>\n<tr>\n<td><code>partnerOrderId</code></td>\n<td>Id do pedido do parceiro.</td>\n</tr>\n<tr>\n<td><code>skus[].partnerPartCode</code></td>\n<td>Código de peça do produto, lido do cadastro <strong>no momento da consulta</strong>.</td>\n</tr>\n<tr>\n<td><code>skus[].quantity</code> · <code>skus[].situation</code></td>\n<td>Quantidade e situação gravadas.</td>\n</tr>\n<tr>\n<td><code>skus[].status</code></td>\n<td>Sempre <code>valid</code> — o conjunto devolvido é o que está gravado. O campo existe para o item ter a mesma forma nas três operações.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Num pedido sem acompanhamento a resposta traz só <code>orderId</code> e <code>partnerOrderId</code>: a chave <code>skus</code> fica de fora.</p>\n<h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>O pedido não existe ou não está no seu escopo.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["partnerOrders",":id","complementaryInfo"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"900201","key":"id"}]}},"response":[{"id":"7ad53f78-45b2-4db2-bf56-550961d36072","name":"Sucesso — acompanhamento gravado","originalRequest":{"method":"GET","header":[],"url":"https://ws.autorei.net/partnerOrders/900201/complementaryInfo"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"orderId\": 900100,\n  \"partnerOrderId\": 900201,\n  \"skus\": [\n    {\n      \"partnerPartCode\": \"SKU-A-001\",\n      \"quantity\": 2,\n      \"situation\": \"enviado\",\n      \"status\": \"valid\"\n    },\n    {\n      \"partnerPartCode\": \"SKU-A-001\",\n      \"quantity\": 1,\n      \"situation\": \"preparando\",\n      \"status\": \"valid\"\n    }\n  ]\n}"}],"_postman_id":"f07a5341-c79f-478a-a703-d6417dcc4edd"},{"name":"Remover Acompanhamento dos Itens - Loja (EM HOMOLOGAÇÃO)","id":"658d3cf9-766a-4761-a78a-94b0563efd81","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"https://ws.autorei.net/partnerOrders/:id/complementaryInfo","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Apaga o acompanhamento dos itens do pedido, inteiro — todas as peças, todas as situações. O pedido volta a não ter acompanhamento nenhum.</p>\n<p>Para corrigir a situação de um produto sem apagar o resto, reenvie só aquele item em <strong>Enviar Acompanhamento dos Itens</strong>: o envio alcança apenas as peças que cita.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id do <strong>pedido do parceiro</strong> (<code>partnerOrderId</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>orderId</code></td>\n<td>Id do pedido do cliente.</td>\n</tr>\n<tr>\n<td><code>partnerOrderId</code></td>\n<td>Id do pedido do parceiro.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>O pedido não existe ou não está no seu escopo.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["partnerOrders",":id","complementaryInfo"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"900201","key":"id"}]}},"response":[{"id":"8aeb1e10-2385-44bc-bb06-39ee293e86e2","name":"Sucesso — acompanhamento removido","originalRequest":{"method":"DELETE","header":[],"url":"https://ws.autorei.net/partnerOrders/900201/complementaryInfo"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"orderId\": 900100,\n  \"partnerOrderId\": 900201\n}"}],"_postman_id":"658d3cf9-766a-4761-a78a-94b0563efd81"}],"id":"310b9b71-d9d2-40eb-96fe-3fea581f7163","_postman_id":"310b9b71-d9d2-40eb-96fe-3fea581f7163","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}}},{"name":"Gestão Marketplace","item":[{"name":"Listar Pedidos do Marketplace","id":"f2dc6580-34b4-4c6a-9786-0087ad656760","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://ws.autorei.net/partnerOrders/list/store?limit=5&offset=0","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Lista os pedidos <strong>originados na sua loja</strong> — os que os seus clientes fizeram, incluindo os que serão atendidos por outros parceiros —, do mais recente para o mais antigo, com paginação e filtros.</p>\n<p>O escopo é o que diferencia esta rota da listagem da loja: aqui o critério é a loja de origem do pedido, lá é o parceiro fornecedor. A resposta e os filtros são idênticos.</p>\n<h3 id=\"parâmetros-de-consulta\">Parâmetros de Consulta</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Pedidos por página. Default <strong>5</strong>, teto <strong>25</strong>. Acima do teto, vale o teto.</td>\n</tr>\n<tr>\n<td><code>offset</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Quantos pedidos pular. Default <strong>0</strong>.</td>\n</tr>\n<tr>\n<td><code>status</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Filtra por status. Pode ser <strong>repetido</strong> para trazer mais de um: <code>?status=READY&amp;status=SHIPPED</code>. Sem o parâmetro, vêm todos.</td>\n</tr>\n<tr>\n<td><code>createdFrom</code></td>\n<td>datetime</td>\n<td>Não</td>\n<td>Criados a partir desta data, inclusive. ISO-8601: <code>2026-09-01T00:00:00Z</code>.</td>\n</tr>\n<tr>\n<td><code>createdTo</code></td>\n<td>datetime</td>\n<td>Não</td>\n<td>Criados até esta data, inclusive.</td>\n</tr>\n<tr>\n<td><code>updatedFrom</code></td>\n<td>datetime</td>\n<td>Não</td>\n<td>Alterados a partir desta data, inclusive.</td>\n</tr>\n<tr>\n<td><code>updatedTo</code></td>\n<td>datetime</td>\n<td>Não</td>\n<td>Alterados até esta data, inclusive.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Os valores de <code>status</code>: <code>PRE_ORDER</code> · <code>AWAITING_PAYMENT</code> · <code>PAYMENT_APPROVED</code> · <code>WITHOUT_CREDIT_LIMIT</code> · <code>READY</code> · <code>SHIPPED</code> · <code>DELIVERED</code> · <code>COMPLETED</code> · <code>CANCELED</code> · <code>STRAYED</code> · <code>RETURNED</code> · <code>STORE_PAYMENT</code>.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>Array de pedidos, ordenado por data de criação, do mais recente para o mais antigo. Os nove campos vêm sempre.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Id do pedido do parceiro (<code>partnerOrderId</code>). É ele que vai na rota dos demais endpoints de pedido.</td>\n</tr>\n<tr>\n<td><code>orderId</code></td>\n<td>Id do pedido do cliente, o pedido \"pai\". Um <code>orderId</code> pode ter mais de um <code>id</code>.</td>\n</tr>\n<tr>\n<td><code>total</code></td>\n<td>Valor total, como <strong>string já formatada</strong> em reais: <code>\"R$637,57\"</code>.</td>\n</tr>\n<tr>\n<td><code>status</code></td>\n<td>Status atual do pedido.</td>\n</tr>\n<tr>\n<td><code>dateCreated</code> · <code>lastUpdated</code></td>\n<td>Criação e última alteração, em UTC.</td>\n</tr>\n<tr>\n<td><code>gateway</code></td>\n<td>Meio de pagamento usado. Vem <code>null</code> quando o pedido ainda não tem pagamento.</td>\n</tr>\n<tr>\n<td><code>partner.partnerName</code> · <code>partner.partnerDocument</code></td>\n<td>Nome e documento do parceiro fornecedor.</td>\n</tr>\n<tr>\n<td><code>customer.customerName</code> · <code>customer.customerDocument</code></td>\n<td>Nome e documento do cliente.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Sem resultado, a resposta é um array vazio.</p>\n<h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["partnerOrders","list","store"],"host":["https://ws.autorei.net"],"query":[{"key":"limit","value":"5"},{"key":"offset","value":"0"}],"variable":[]}},"response":[{"id":"0f00cc90-ef14-4e2b-9bf9-15a82058e9dc","name":"Sucesso — dois pedidos","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://ws.autorei.net/partnerOrders/list/store?limit=5&offset=0","host":["https://ws.autorei.net"],"path":["partnerOrders","list","store"],"query":[{"key":"limit","value":"5"},{"key":"offset","value":"0"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"id\": 900201,\n    \"orderId\": 900100,\n    \"total\": \"R$637,57\",\n    \"status\": \"PAYMENT_APPROVED\",\n    \"dateCreated\": \"2026-09-02T11:04:18Z\",\n    \"lastUpdated\": \"2026-09-02T11:12:40Z\",\n    \"gateway\": \"BRASPAG\",\n    \"partner\": {\n      \"partnerName\": \"Loja Exemplo\",\n      \"partnerDocument\": \"30.424.972/0001-74\"\n    },\n    \"customer\": {\n      \"customerName\": \"Ana Paula Ribeiro\",\n      \"customerDocument\": \"700.413.648-56\"\n    }\n  },\n  {\n    \"id\": 900202,\n    \"orderId\": 900101,\n    \"total\": \"R$81,64\",\n    \"status\": \"AWAITING_PAYMENT\",\n    \"dateCreated\": \"2026-09-01T13:26:05Z\",\n    \"lastUpdated\": \"2026-09-01T13:27:26Z\",\n    \"gateway\": null,\n    \"partner\": {\n      \"partnerName\": \"Loja Exemplo\",\n      \"partnerDocument\": \"30.424.972/0001-74\"\n    },\n    \"customer\": {\n      \"customerName\": \"Ana Paula Ribeiro\",\n      \"customerDocument\": \"700.413.648-56\"\n    }\n  }\n]"}],"_postman_id":"f2dc6580-34b4-4c6a-9786-0087ad656760"},{"name":"Buscar Detalhes do Pedido - Marketplace","id":"5a85daad-5276-47a6-8d44-507169a9f6c0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://ws.autorei.net/partnerOrders/store/:id","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Devolve o pedido inteiro de um pedido <strong>originado na sua loja</strong>: valores, cliente, pagamentos, entregas com os produtos, e o histórico de status.</p>\n<p>O id da rota é o do <strong>pedido do parceiro</strong> (<code>partnerOrderId</code>), o campo <code>id</code> da listagem — não o <code>orderId</code>. O payload é o mesmo da rota da loja; muda o escopo de quem pode ler.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id do <strong>pedido do parceiro</strong> (<code>partnerOrderId</code>), o campo <code>id</code> da listagem.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>O payload é extenso. A tabela abaixo traz os blocos de topo; os blocos condicionais estão na seção seguinte.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Id do pedido do parceiro.</td>\n</tr>\n<tr>\n<td><code>orderId</code></td>\n<td>Id do pedido do cliente, o pedido \"pai\".</td>\n</tr>\n<tr>\n<td><code>status</code></td>\n<td>Status atual.</td>\n</tr>\n<tr>\n<td><code>dateCreated</code> · <code>lastUpdated</code></td>\n<td>Criação e última alteração, em UTC.</td>\n</tr>\n<tr>\n<td><code>subTotal</code> · <code>freightTotal</code> · <code>total</code></td>\n<td>Valores em número.</td>\n</tr>\n<tr>\n<td><code>subTotalFormats</code> · <code>freightTotalFormats</code> · <code>totalFormats</code></td>\n<td>O mesmo valor formatado, em <code>value</code> (<code>\"35,91\"</code>) e <code>mask</code> (<code>\"R$ 35,91\"</code>).</td>\n</tr>\n<tr>\n<td><code>taxes</code></td>\n<td>Impostos do pedido: <code>taxPurpose</code>, <code>taxPurposeId</code>, <code>st</code>, <code>ipi</code>, <code>icms</code>, <code>pis</code>, <code>cofins</code>, <code>totalTax</code>.</td>\n</tr>\n<tr>\n<td><code>approvalWorkflow</code> · <code>workflowIsApproved</code> · <code>approvalCredit</code> · <code>approvalLevels</code></td>\n<td>Alçada de aprovação do pedido: se ele passa por alçada, se já foi aprovado, e os níveis configurados.</td>\n</tr>\n<tr>\n<td><code>invoiceNote</code></td>\n<td>Observação da nota fiscal.</td>\n</tr>\n<tr>\n<td><code>leadTimeByRequestDone</code></td>\n<td>Indica que os prazos sob consulta do pedido já foram preenchidos.</td>\n</tr>\n<tr>\n<td><code>order</code></td>\n<td>Origem do pedido: <code>origin</code>, <code>originStoreName</code>, <code>originStoreId</code>, <code>originStoreSubdomain</code>, <code>originStorePartnerId</code>, <code>drivenPrice</code>, <code>manualPrice</code>.</td>\n</tr>\n<tr>\n<td><code>seller</code></td>\n<td>Parceiro fornecedor: <code>id</code>, <code>name</code>, <code>document</code>.</td>\n</tr>\n<tr>\n<td><code>customer</code></td>\n<td>Cliente: <code>id</code>, <code>name</code>, <code>contactName</code>, <code>email</code>, <code>phone</code>, <code>type</code>, <code>document</code>, <code>stateRegistration</code>, <code>optinTracking</code>, <code>trackingPhone</code>, <code>dateCreated</code>, <code>registrationAddress</code> e <code>customerAttributes[]</code>. Veja <strong>Dados do cliente</strong>.</td>\n</tr>\n<tr>\n<td><code>payments[]</code></td>\n<td>Pagamentos: <code>id</code>, <code>paymentType</code>, <code>gateway</code>, <code>paymentInstallmentsValue</code>, <code>paymentInstallments</code>.</td>\n</tr>\n<tr>\n<td><code>deliveries[]</code></td>\n<td>Entregas. Cada uma com <code>address</code>, <code>freight</code> e <code>products[]</code> — veja <strong>O bloco de entregas</strong>.</td>\n</tr>\n<tr>\n<td><code>orderStatusLogs[]</code></td>\n<td>Histórico de status: <code>status</code> e <code>date</code>, na ordem em que aconteceram.</td>\n</tr>\n<tr>\n<td><code>attendant</code> · <code>seller</code></td>\n<td>Atendente e vendedor responsáveis.</td>\n</tr>\n<tr>\n<td><code>whoCreatedPreOrder</code> · <code>whoSelectedPayment</code></td>\n<td>Quem criou o pré-pedido e quem escolheu o pagamento: <code>client</code> ou <code>attendant</code>.</td>\n</tr>\n<tr>\n<td><code>commissionAssignedAttendantId</code> · <code>commissionAssignedAttendantCode</code> · <code>commissionAssignedAttendantDoc</code></td>\n<td>Atendente a quem a comissão foi atribuída.</td>\n</tr>\n<tr>\n<td><code>totalMarginAfterDiscountPercentage</code> · <code>markup</code></td>\n<td>Margem e markup do pedido.</td>\n</tr>\n<tr>\n<td><code>customCartId</code> · <code>cartTypeName</code> · <code>cartTypeExternalId</code></td>\n<td>Carrinho personalizado que originou o pedido, quando houve um.</td>\n</tr>\n<tr>\n<td><code>paymentPartnerReceiver[]</code></td>\n<td>Divisão do pagamento entre os participantes: <code>participant</code>, <code>name</code>, <code>typeReceiver</code>, <code>paymentFees</code>, <code>splitedBy</code>, <code>splitedPercentage</code>, <code>splitedValue</code>, <code>value</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"o-bloco-de-entregas\">O bloco de entregas</h4>\n<p>Cada item de <code>deliveries[]</code> traz três partes:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parte</th>\n<th>Conteúdo</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>address</code></td>\n<td>Endereço de entrega: <code>id</code>, <code>name</code>, <code>street</code>, <code>number</code>, <code>quarter</code>, <code>city</code>, <code>state</code>, <code>zipcode</code>, <code>deliveryAddressCode</code>, <code>addressType</code>.</td>\n</tr>\n<tr>\n<td><code>freight</code></td>\n<td>Frete: <code>value</code> e <code>valueFormats</code>, <code>name</code>, <code>type</code>, <code>freightTime</code>, <code>packingTime</code>, <code>realValue</code> e <code>realValueFormats</code>, <code>realName</code>, <code>realType</code>, e os identificadores da transportadora quando ela é integrada.</td>\n</tr>\n<tr>\n<td><code>products[]</code></td>\n<td>Os itens da entrega.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Cada produto de <code>products[]</code> traz: <code>id</code> (id do SKU) · <code>partnerOrderLineId</code> (id da linha do pedido) · <code>name</code> · <code>mfrPartCode</code> · <code>partnerPartCode</code> · <code>partnerInternalPartCode</code> · <code>composition</code> · <code>quantity</code>, <code>realQuantity</code> e <code>virtualQuantity</code> · <code>price</code>, <code>stockPrice</code>, <code>realSalePrice</code>, <code>totalCost</code>, <code>netCost</code> e os respectivos <code>*Formats</code> · <code>leadTime</code> e <code>isLeadTimeByRequest</code> · <code>marginAfterDiscountPercentage</code>, <code>interestRate</code>, <code>anticipationRate</code>, <code>drivenPrice</code> · <code>warehouse</code> (<code>id</code>, <code>name</code>, <code>zipcode</code>) · <code>brand</code> (<code>id</code>, <code>name</code>) · <code>categoryId</code> e <code>categoryName</code> · <code>whoAddedItemToCart</code> · <code>customKey</code> · <code>specialRules</code> · <code>needsAgronomicRecipe</code> · e os campos de unidade de venda (<code>salesUnitOfMeasurement</code>, <code>salePriceByUnitOfMeasurement</code>, <code>unitaryQuantityInSalesUnitOfMeasurement</code>, <code>totalQuantityInSalesUnitOfMeasurement</code>).</p>\n<h4 id=\"blocos-condicionais\">Blocos condicionais</h4>\n<p>Aparecem só quando o pedido tem o dado correspondente: <code>discounts</code> · <code>replicaOrdersCreated</code> · <code>workflowItemsAttributes</code> · <code>orderWorkflowReason</code> · <code>commodityExchange</code> · <code>orderDeliveryAttendantDiscount</code> · <code>supplierOrderId</code>, <code>supplierInvoiceNumber</code>, <code>supplierInvoiceSerie</code>, <code>supplierInvoiceKey</code> e <code>supplierInvoiceDate</code> · <code>orderName</code> · <code>partnerOrderCashBackInfo</code> · <code>orderCustomerThirdPartyReferral</code> · <code>couponCode</code> · <code>customAttributes</code> · <code>orderDocuments</code> · <code>fiscalNotes</code> · os atributos <code>external*</code> · <code>poTax</code> · <code>paymentDateVpvf</code>.</p>\n<h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"dados-do-cliente\">Dados do cliente</h4>\n<p>Parte dos dados do cliente pode vir mascarada ou omitida, conforme o contrato de marketplace da loja, o vínculo de filial e a configuração de restrição de dados da loja de origem. O bloco <code>customer</code> existe sempre; o que varia é o preenchimento.</p>\n<h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>O pedido não existe ou não está no seu escopo: <code>{\"status\":\"NOT_FOUND\",\"message\":\"Pedido com id X não encontrado\"}</code>. O mesmo corpo nos dois casos.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["partnerOrders","store",":id"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"900201","key":"id"}]}},"response":[{"id":"fbc9d600-528a-4ab9-817b-93d33938ffb5","name":"Sucesso — pedido com pagamento aprovado","originalRequest":{"method":"GET","header":[],"url":"https://ws.autorei.net/partnerOrders/store/900201"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"attendant\": null,\n  \"orderId\": 900100,\n  \"id\": 900201,\n  \"status\": \"PAYMENT_APPROVED\",\n  \"approvalWorkflow\": false,\n  \"workflowIsApproved\": false,\n  \"approvalCredit\": null,\n  \"subTotal\": 35.91,\n  \"subTotalFormats\": {\n    \"value\": \"35,91\",\n    \"mask\": \"R$ 35,91\"\n  },\n  \"taxes\": {\n    \"taxPurpose\": null,\n    \"taxPurposeId\": null,\n    \"st\": 0,\n    \"ipi\": 0,\n    \"icms\": 0,\n    \"pis\": 0,\n    \"cofins\": 0,\n    \"totalTax\": 0\n  },\n  \"freightTotal\": 45.73,\n  \"freightTotalFormats\": {\n    \"value\": \"45,73\",\n    \"mask\": \"R$ 45,73\"\n  },\n  \"total\": 81.64,\n  \"totalFormats\": {\n    \"value\": \"81,64\",\n    \"mask\": \"R$ 81,64\"\n  },\n  \"dateCreated\": \"2026-09-01T13:26:05Z\",\n  \"lastUpdated\": \"2026-09-01T13:27:26Z\",\n  \"invoiceNote\": null,\n  \"leadTimeByRequestDone\": true,\n  \"order\": {\n    \"origin\": \"SHOP\",\n    \"originStoreName\": \"Loja Exemplo\",\n    \"originStoreId\": 4210,\n    \"originStoreSubdomain\": \"lojaexemplo\",\n    \"originStorePartnerId\": 5050,\n    \"drivenPrice\": false,\n    \"manualPrice\": false\n  },\n  \"seller\": {\n    \"id\": 5050,\n    \"name\": \"Loja Exemplo\",\n    \"document\": \"30.424.972/0001-74\"\n  },\n  \"customer\": {\n    \"id\": 700101,\n    \"name\": \"Ana Paula Ribeiro\",\n    \"contactName\": \"Ana Paula Ribeiro\",\n    \"email\": \"ana.ribeiro@exemplo.com.br\",\n    \"phone\": \"(11) 98765-4321\",\n    \"type\": \"pf\",\n    \"document\": \"700.413.648-56\",\n    \"stateRegistration\": null,\n    \"optinTracking\": null,\n    \"trackingPhone\": null,\n    \"dateCreated\": \"2026-08-20T09:15:00Z\",\n    \"registrationAddress\": {\n      \"street\": \"Avenida Paulista\",\n      \"number\": \"1578\",\n      \"quarter\": \"Bela Vista\",\n      \"city\": \"São Paulo\",\n      \"state\": \"SP\",\n      \"zipcode\": \"01310-100\",\n      \"farmerStateRegistration\": null\n    },\n    \"customerAttributes\": [\n      {\n        \"name\": \"OPTIN_NEWSLETTER\",\n        \"value\": \"true\"\n      }\n    ]\n  },\n  \"payments\": [\n    {\n      \"id\": 4490201,\n      \"paymentType\": \"BANK_SLIP\",\n      \"gateway\": \"BRASPAG\",\n      \"paymentInstallmentsValue\": 81.64,\n      \"paymentInstallments\": 1\n    }\n  ],\n  \"deliveries\": [\n    {\n      \"address\": {\n        \"id\": 4470701,\n        \"name\": \"Endereço de entrega\",\n        \"street\": \"Avenida Paulista\",\n        \"number\": \"1578\",\n        \"quarter\": \"Bela Vista\",\n        \"city\": \"São Paulo\",\n        \"state\": \"SP\",\n        \"zipcode\": \"01310-100\",\n        \"deliveryAddressCode\": null,\n        \"addressType\": \"RESIDENTIAL\"\n      },\n      \"freight\": {\n        \"value\": 45.73,\n        \"valueFormats\": {\n          \"value\": \"45,73\",\n          \"mask\": \"R$ 45,73\"\n        },\n        \"name\": \"CORREIO - SEDEX\",\n        \"type\": \"INTELIPOST\",\n        \"freightTime\": 4,\n        \"packingTime\": 0,\n        \"realValue\": 45.73,\n        \"realValueFormats\": {\n          \"value\": \"45,73\",\n          \"mask\": \"R$ 45,73\"\n        },\n        \"realName\": \"CORREIO - SEDEX\",\n        \"realType\": \"INTELIPOST\",\n        \"intelipostQuoteId\": \"202956238407743\",\n        \"intelipostDeliveryMethodId\": \"2\",\n        \"intelipostDeliveryMethodExternalId\": \"94\"\n      },\n      \"products\": [\n        {\n          \"id\": 500101,\n          \"name\": \"Produto Exemplo A\",\n          \"mfrPartCode\": \"FE-500101\",\n          \"composition\": \"UNITARY\",\n          \"virtualQuantity\": 0,\n          \"realQuantity\": 1,\n          \"quantity\": 1,\n          \"price\": 35.91,\n          \"priceFormats\": {\n            \"value\": \"35,91\",\n            \"mask\": \"R$ 35,91\"\n          },\n          \"leadTime\": 0,\n          \"partnerOrderLineId\": 4490101,\n          \"isLeadTimeByRequest\": false,\n          \"stockPrice\": 39.9,\n          \"stockPriceFormats\": {\n            \"value\": \"39,90\",\n            \"mask\": \"R$ 39,90\"\n          },\n          \"totalCost\": 52.15,\n          \"totalCostFormats\": {\n            \"value\": \"52,15\",\n            \"mask\": \"R$ 52,15\"\n          },\n          \"netCost\": 52.15,\n          \"netCostFormats\": {\n            \"value\": \"52,15\",\n            \"mask\": \"R$ 52,15\"\n          },\n          \"marginAfterDiscountPercentage\": null,\n          \"interestRate\": null,\n          \"anticipationRate\": null,\n          \"realSalePrice\": 35.91,\n          \"realSalePriceFormats\": {\n            \"value\": \"35,91\",\n            \"mask\": \"R$ 35,91\"\n          },\n          \"drivenPrice\": false,\n          \"partnerPartCode\": \"SKU-A-001\",\n          \"partnerInternalPartCode\": null,\n          \"warehouse\": {\n            \"id\": 1001,\n            \"name\": \"Depósito Central\",\n            \"zipcode\": \"01310-100\"\n          },\n          \"brand\": {\n            \"id\": 4460101,\n            \"name\": \"Fabricante Exemplo\"\n          },\n          \"specialRules\": {},\n          \"needsAgronomicRecipe\": \"false\",\n          \"salesUnitOfMeasurement\": null,\n          \"salePriceByUnitOfMeasurement\": null,\n          \"unitaryQuantityInSalesUnitOfMeasurement\": null,\n          \"totalQuantityInSalesUnitOfMeasurement\": null,\n          \"whoAddedItemToCart\": \"client\",\n          \"customKey\": null,\n          \"categoryId\": 31519,\n          \"categoryName\": \"Categoria Exemplo\"\n        }\n      ]\n    }\n  ],\n  \"paymentPartnerReceiver\": [\n    {\n      \"participant\": \"marketplace\",\n      \"name\": \"Loja Exemplo\",\n      \"typeReceiver\": \"PRIMARY\",\n      \"paymentFees\": \"true\",\n      \"splitedBy\": \"TOTAL\",\n      \"splitedPercentage\": 100.0,\n      \"splitedValue\": \"81,64\",\n      \"value\": \"81,64\"\n    }\n  ],\n  \"orderStatusLogs\": [\n    {\n      \"status\": \"PAYMENT_APPROVED\",\n      \"date\": \"2026-09-02T11:12:40Z\"\n    }\n  ],\n  \"totalMarginAfterDiscountPercentage\": null,\n  \"markup\": null,\n  \"whoCreatedPreOrder\": \"client\",\n  \"whoSelectedPayment\": \"client\",\n  \"commissionAssignedAttendantId\": null,\n  \"commissionAssignedAttendantCode\": null,\n  \"commissionAssignedAttendantDoc\": null,\n  \"approvalLevels\": [],\n  \"customCartId\": null,\n  \"cartTypeName\": null,\n  \"cartTypeExternalId\": null\n}"}],"_postman_id":"5a85daad-5276-47a6-8d44-507169a9f6c0"},{"name":"Listar Pedidos Filhos por Pedido Pai","id":"d92b0d94-50f8-4485-b277-b4ae86db0e7d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://ws.autorei.net/partnerOrders/store/order/:id","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Lista os pedidos de parceiro que nasceram de um mesmo <strong>pedido do cliente</strong>. Um pedido com itens de fornecedores diferentes é dividido em um pedido de parceiro por fornecedor, e é essa divisão que esta rota devolve.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id do <strong>pedido do cliente</strong> (<code>orderId</code>), o pedido \"pai\" — <strong>não</strong> o <code>partnerOrderId</code>. É o campo <code>orderId</code> da listagem.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>Array de pedidos, cada um no mesmo formato de <strong>Buscar Detalhes do Pedido - Marketplace</strong>. Um pedido atendido por um único fornecedor devolve um array de um item.</p>\n<h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>Nenhum pedido de parceiro encontrado para esse <code>orderId</code>. É também o que responde quando você manda um <code>partnerOrderId</code> por engano.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["partnerOrders","store","order",":id"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"900100","key":"id"}]}},"response":[{"id":"0294b5b2-89c7-4504-872f-5eaa58de8b13","name":"Sucesso — um pedido de parceiro","originalRequest":{"method":"GET","header":[],"url":"https://ws.autorei.net/partnerOrders/store/order/900100"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"attendant\": null,\n    \"orderId\": 900100,\n    \"id\": 900201,\n    \"status\": \"PAYMENT_APPROVED\",\n    \"approvalWorkflow\": false,\n    \"workflowIsApproved\": false,\n    \"approvalCredit\": null,\n    \"subTotal\": 35.91,\n    \"subTotalFormats\": {\n      \"value\": \"35,91\",\n      \"mask\": \"R$ 35,91\"\n    },\n    \"taxes\": {\n      \"taxPurpose\": null,\n      \"taxPurposeId\": null,\n      \"st\": 0,\n      \"ipi\": 0,\n      \"icms\": 0,\n      \"pis\": 0,\n      \"cofins\": 0,\n      \"totalTax\": 0\n    },\n    \"freightTotal\": 45.73,\n    \"freightTotalFormats\": {\n      \"value\": \"45,73\",\n      \"mask\": \"R$ 45,73\"\n    },\n    \"total\": 81.64,\n    \"totalFormats\": {\n      \"value\": \"81,64\",\n      \"mask\": \"R$ 81,64\"\n    },\n    \"dateCreated\": \"2026-09-01T13:26:05Z\",\n    \"lastUpdated\": \"2026-09-01T13:27:26Z\",\n    \"invoiceNote\": null,\n    \"leadTimeByRequestDone\": true,\n    \"order\": {\n      \"origin\": \"SHOP\",\n      \"originStoreName\": \"Loja Exemplo\",\n      \"originStoreId\": 4210,\n      \"originStoreSubdomain\": \"lojaexemplo\",\n      \"originStorePartnerId\": 5050,\n      \"drivenPrice\": false,\n      \"manualPrice\": false\n    },\n    \"seller\": {\n      \"id\": 5050,\n      \"name\": \"Loja Exemplo\",\n      \"document\": \"30.424.972/0001-74\"\n    },\n    \"customer\": {\n      \"id\": 700101,\n      \"name\": \"Ana Paula Ribeiro\",\n      \"contactName\": \"Ana Paula Ribeiro\",\n      \"email\": \"ana.ribeiro@exemplo.com.br\",\n      \"phone\": \"(11) 98765-4321\",\n      \"type\": \"pf\",\n      \"document\": \"700.413.648-56\",\n      \"stateRegistration\": null,\n      \"optinTracking\": null,\n      \"trackingPhone\": null,\n      \"dateCreated\": \"2026-08-20T09:15:00Z\",\n      \"registrationAddress\": {\n        \"street\": \"Avenida Paulista\",\n        \"number\": \"1578\",\n        \"quarter\": \"Bela Vista\",\n        \"city\": \"São Paulo\",\n        \"state\": \"SP\",\n        \"zipcode\": \"01310-100\",\n        \"farmerStateRegistration\": null\n      },\n      \"customerAttributes\": [\n        {\n          \"name\": \"OPTIN_NEWSLETTER\",\n          \"value\": \"true\"\n        }\n      ]\n    },\n    \"payments\": [\n      {\n        \"id\": 4490201,\n        \"paymentType\": \"BANK_SLIP\",\n        \"gateway\": \"BRASPAG\",\n        \"paymentInstallmentsValue\": 81.64,\n        \"paymentInstallments\": 1\n      }\n    ],\n    \"deliveries\": [\n      {\n        \"address\": {\n          \"id\": 4470701,\n          \"name\": \"Endereço de entrega\",\n          \"street\": \"Avenida Paulista\",\n          \"number\": \"1578\",\n          \"quarter\": \"Bela Vista\",\n          \"city\": \"São Paulo\",\n          \"state\": \"SP\",\n          \"zipcode\": \"01310-100\",\n          \"deliveryAddressCode\": null,\n          \"addressType\": \"RESIDENTIAL\"\n        },\n        \"freight\": {\n          \"value\": 45.73,\n          \"valueFormats\": {\n            \"value\": \"45,73\",\n            \"mask\": \"R$ 45,73\"\n          },\n          \"name\": \"CORREIO - SEDEX\",\n          \"type\": \"INTELIPOST\",\n          \"freightTime\": 4,\n          \"packingTime\": 0,\n          \"realValue\": 45.73,\n          \"realValueFormats\": {\n            \"value\": \"45,73\",\n            \"mask\": \"R$ 45,73\"\n          },\n          \"realName\": \"CORREIO - SEDEX\",\n          \"realType\": \"INTELIPOST\",\n          \"intelipostQuoteId\": \"202956238407743\",\n          \"intelipostDeliveryMethodId\": \"2\",\n          \"intelipostDeliveryMethodExternalId\": \"94\"\n        },\n        \"products\": [\n          {\n            \"id\": 500101,\n            \"name\": \"Produto Exemplo A\",\n            \"mfrPartCode\": \"FE-500101\",\n            \"composition\": \"UNITARY\",\n            \"virtualQuantity\": 0,\n            \"realQuantity\": 1,\n            \"quantity\": 1,\n            \"price\": 35.91,\n            \"priceFormats\": {\n              \"value\": \"35,91\",\n              \"mask\": \"R$ 35,91\"\n            },\n            \"leadTime\": 0,\n            \"partnerOrderLineId\": 4490101,\n            \"isLeadTimeByRequest\": false,\n            \"stockPrice\": 39.9,\n            \"stockPriceFormats\": {\n              \"value\": \"39,90\",\n              \"mask\": \"R$ 39,90\"\n            },\n            \"totalCost\": 52.15,\n            \"totalCostFormats\": {\n              \"value\": \"52,15\",\n              \"mask\": \"R$ 52,15\"\n            },\n            \"netCost\": 52.15,\n            \"netCostFormats\": {\n              \"value\": \"52,15\",\n              \"mask\": \"R$ 52,15\"\n            },\n            \"marginAfterDiscountPercentage\": null,\n            \"interestRate\": null,\n            \"anticipationRate\": null,\n            \"realSalePrice\": 35.91,\n            \"realSalePriceFormats\": {\n              \"value\": \"35,91\",\n              \"mask\": \"R$ 35,91\"\n            },\n            \"drivenPrice\": false,\n            \"partnerPartCode\": \"SKU-A-001\",\n            \"partnerInternalPartCode\": null,\n            \"warehouse\": {\n              \"id\": 1001,\n              \"name\": \"Depósito Central\",\n              \"zipcode\": \"01310-100\"\n            },\n            \"brand\": {\n              \"id\": 4460101,\n              \"name\": \"Fabricante Exemplo\"\n            },\n            \"specialRules\": {},\n            \"needsAgronomicRecipe\": \"false\",\n            \"salesUnitOfMeasurement\": null,\n            \"salePriceByUnitOfMeasurement\": null,\n            \"unitaryQuantityInSalesUnitOfMeasurement\": null,\n            \"totalQuantityInSalesUnitOfMeasurement\": null,\n            \"whoAddedItemToCart\": \"client\",\n            \"customKey\": null,\n            \"categoryId\": 31519,\n            \"categoryName\": \"Categoria Exemplo\"\n          }\n        ]\n      }\n    ],\n    \"paymentPartnerReceiver\": [\n      {\n        \"participant\": \"marketplace\",\n        \"name\": \"Loja Exemplo\",\n        \"typeReceiver\": \"PRIMARY\",\n        \"paymentFees\": \"true\",\n        \"splitedBy\": \"TOTAL\",\n        \"splitedPercentage\": 100.0,\n        \"splitedValue\": \"81,64\",\n        \"value\": \"81,64\"\n      }\n    ],\n    \"orderStatusLogs\": [\n      {\n        \"status\": \"PAYMENT_APPROVED\",\n        \"date\": \"2026-09-02T11:12:40Z\"\n      }\n    ],\n    \"totalMarginAfterDiscountPercentage\": null,\n    \"markup\": null,\n    \"whoCreatedPreOrder\": \"client\",\n    \"whoSelectedPayment\": \"client\",\n    \"commissionAssignedAttendantId\": null,\n    \"commissionAssignedAttendantCode\": null,\n    \"commissionAssignedAttendantDoc\": null,\n    \"approvalLevels\": [],\n    \"customCartId\": null,\n    \"cartTypeName\": null,\n    \"cartTypeExternalId\": null\n  }\n]"}],"_postman_id":"d92b0d94-50f8-4485-b277-b4ae86db0e7d"},{"name":"Atualizar Status do Pedido - Marketplace","id":"0c976e0a-b4cd-4f13-8421-5cab6102faaf","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"status\": \"READY\",\n  \"supplierOrderId\": \"PED-ERP-77120\",\n  \"supplierInvoiceNumber\": \"1234\",\n  \"supplierInvoiceSerie\": \"1\",\n  \"supplierInvoiceDate\": \"2026-09-02\"\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/partnerOrders/store/:id","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Permite que a <strong>loja de origem</strong> mova para o próximo status um pedido que nasceu nela, gravando junto os dados que aquele status exige.</p>\n<p>O corpo, as transições e a resposta são idênticos aos da rota da loja. A diferença é o escopo e um pré-requisito de configuração — veja <strong>A loja precisa estar habilitada</strong>.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id do <strong>pedido do parceiro</strong> (<code>partnerOrderId</code>), o campo <code>id</code> da listagem.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"corpo-da-requisição-json\">Corpo da Requisição (JSON)</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>status</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>Status de destino. Veja <strong>Para onde o pedido pode ir</strong>.</td>\n</tr>\n<tr>\n<td><code>supplierOrderId</code></td>\n<td>string</td>\n<td>Condicional</td>\n<td>Número do pedido no seu sistema. <strong>Obrigatório</strong> quando <code>status</code> é <code>READY</code>.</td>\n</tr>\n<tr>\n<td><code>supplierInvoiceNumber</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Número da nota fiscal. Aceito em <code>READY</code> e <code>SHIPPED</code>.</td>\n</tr>\n<tr>\n<td><code>supplierInvoiceSerie</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Série da nota fiscal. Aceito em <code>READY</code> e <code>SHIPPED</code>.</td>\n</tr>\n<tr>\n<td><code>supplierInvoiceKey</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Chave de acesso da nota fiscal. Aceito em <code>READY</code> e <code>SHIPPED</code>.</td>\n</tr>\n<tr>\n<td><code>supplierInvoiceDate</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Data de emissão da nota, em <code>AAAA-MM-DD</code> ou <code>AAAAMMDD</code>. Outro formato recusa a requisição com 422.</td>\n</tr>\n<tr>\n<td><code>trackingCode</code></td>\n<td>string</td>\n<td>Condicional</td>\n<td>Código de rastreio. <strong>Obrigatório</strong> em <code>SHIPPED</code>, salvo com transportadora própria.</td>\n</tr>\n<tr>\n<td><code>urlTrackingCode</code></td>\n<td>string</td>\n<td>Não</td>\n<td>URL de rastreio da transportadora. Aceito em <code>SHIPPED</code>.</td>\n</tr>\n<tr>\n<td><code>ownCarrier</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Indica entrega por transportadora própria. Aceito em <code>SHIPPED</code>.</td>\n</tr>\n<tr>\n<td><code>orderObservation</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Observação livre gravada no pedido. Aceita em <code>READY</code>, <code>SHIPPED</code> e <code>DELIVERED</code>.</td>\n</tr>\n<tr>\n<td><code>orderReasonCanceled</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Id do motivo do cancelamento. Aceito em <code>CANCELED</code> — veja <strong>Motivos de cancelamento</strong>.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Os campos de nota fiscal só são gravados quando o pedido ainda não tem nota: reenviá-los num pedido que já foi marcado com nota não sobrescreve os valores.</p>\n<h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"para-onde-o-pedido-pode-ir\">Para onde o pedido pode ir</h4>\n<p>O <code>status</code> de destino é aceito a partir de um status atual específico. Fora dessa combinação, a resposta é <strong>422</strong>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><code>status</code> enviado</th>\n<th>Status atual exigido</th>\n<th>Campos próprios</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>APPROVED</code></td>\n<td>pedido aguardando pagamento, sem crédito ou com pagamento na loja</td>\n<td>—</td>\n</tr>\n<tr>\n<td><code>READY</code></td>\n<td><code>PAYMENT_APPROVED</code></td>\n<td><code>supplierOrderId</code> obrigatório</td>\n</tr>\n<tr>\n<td><code>SHIPPED</code></td>\n<td><code>READY</code></td>\n<td><code>trackingCode</code> obrigatório, salvo com <code>ownCarrier</code></td>\n</tr>\n<tr>\n<td><code>DELIVERED</code></td>\n<td><code>SHIPPED</code></td>\n<td>—</td>\n</tr>\n<tr>\n<td><code>STRAYED</code></td>\n<td><code>SHIPPED</code></td>\n<td>—</td>\n</tr>\n<tr>\n<td><code>RETURNED</code></td>\n<td><code>DELIVERED</code></td>\n<td>—</td>\n</tr>\n<tr>\n<td><code>AWAITING_PAYMENT</code></td>\n<td><code>AWAITING_PAYMENT</code></td>\n<td>—</td>\n</tr>\n<tr>\n<td><code>CANCELED</code></td>\n<td>qualquer</td>\n<td><code>orderReasonCanceled</code></td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>A aprovação de pagamento se envia como <code>APPROVED</code></strong>, não como <code>PAYMENT_APPROVED</code> — o pedido é que passa a ficar em <code>PAYMENT_APPROVED</code>. Os demais valores do enum de status (<code>PRE_ORDER</code>, <code>PAYMENT_APPROVED</code>, <code>COMPLETED</code>, <code>WITHOUT_CREDIT_LIMIT</code>, <code>STORE_PAYMENT</code>) servem para <strong>filtrar</strong> a listagem, mas não são aceitos aqui: a requisição responde 422.</p>\n<h4 id=\"pedido-em-alçada-de-aprovação\">Pedido em alçada de aprovação</h4>\n<p>Num pedido com alçada (<code>approvalWorkflow: true</code>) ainda não aprovado, o único <code>status</code> aceito é <code>CANCELED</code>. Qualquer outro responde 422.</p>\n<h4 id=\"motivos-de-cancelamento\">Motivos de cancelamento</h4>\n<p><code>orderReasonCanceled</code> recebe o id do motivo:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Id</th>\n<th>Motivo</th>\n<th>Id</th>\n<th>Motivo</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>2</td>\n<td>Arrependimento 7 dias</td>\n<td>20</td>\n<td>Pagamento recusado</td>\n</tr>\n<tr>\n<td>3</td>\n<td>Problema Logístico</td>\n<td>21</td>\n<td>Falta de posição do cliente</td>\n</tr>\n<tr>\n<td>4</td>\n<td>Erro de descrição</td>\n<td>22</td>\n<td>Sem Credito</td>\n</tr>\n<tr>\n<td>5</td>\n<td>Extraviado</td>\n<td>23</td>\n<td>Expirado</td>\n</tr>\n<tr>\n<td>6</td>\n<td>Falta de Pagamento</td>\n<td>24</td>\n<td>Cliente incorreto</td>\n</tr>\n<tr>\n<td>7</td>\n<td>Falta de posição da loja</td>\n<td>26</td>\n<td>Pedido errado</td>\n</tr>\n<tr>\n<td>8</td>\n<td>Furo de estoque</td>\n<td>27</td>\n<td>Falha na integração</td>\n</tr>\n<tr>\n<td>9</td>\n<td>Marca diferente</td>\n<td>28</td>\n<td>Vendedor incorreto</td>\n</tr>\n<tr>\n<td>10</td>\n<td>Produto Avariado</td>\n<td>29</td>\n<td>Chargeback</td>\n</tr>\n<tr>\n<td>11</td>\n<td>Produto incorreto</td>\n<td>30</td>\n<td>Fraude – Produto recuperado</td>\n</tr>\n<tr>\n<td>12</td>\n<td>Peça Falsificada</td>\n<td>31</td>\n<td>Suspeita de Fraude</td>\n</tr>\n<tr>\n<td>13</td>\n<td>Preço errado loja</td>\n<td>32</td>\n<td>Recompra Assistida</td>\n</tr>\n<tr>\n<td>14</td>\n<td>Pré Encomenda</td>\n<td>33</td>\n<td>Aprovação Comercial Negada</td>\n</tr>\n<tr>\n<td>15</td>\n<td>Preço Incorreto</td>\n<td>34</td>\n<td>Pedido cancelado pelo vendedor</td>\n</tr>\n<tr>\n<td>16</td>\n<td>Composição errada</td>\n<td>35</td>\n<td>Cotação editada</td>\n</tr>\n<tr>\n<td>17</td>\n<td>Atraso no envio</td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td>18</td>\n<td>Pedido duplicado</td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td>19</td>\n<td>Compra teste</td>\n<td></td>\n<td></td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"quem-pode-cancelar\">Quem pode cancelar</h4>\n<p>Quando o pedido nasceu em <strong>outra</strong> loja — você é o fornecedor, não a origem —, o cancelamento depende de a <strong>loja de origem</strong> ter habilitado o cancelamento pelo vendedor. É uma configuração dela, não sua: enquanto ela não liberar, o seu <code>CANCELED</code> responde 422, e quem cancela é a própria loja de origem. Com a permissão ligada, o cancelamento passa a valer normalmente. Pedido originado na sua própria loja não passa por essa checagem.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>O pedido inteiro, no mesmo formato de <strong>Buscar Detalhes do Pedido</strong>, já com o status novo e o registro correspondente em <code>orderStatusLogs</code>.</p>\n<h4 id=\"a-loja-precisa-estar-habilitada\">A loja precisa estar habilitada</h4>\n<p>A atualização de pedidos pela loja de origem depende de uma configuração da própria loja. Sem ela, a requisição responde 422 sem tocar no pedido. A liberação é feita pela CWS.</p>\n<h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td>O corpo não é um JSON válido. O detalhe vem em <code>error</code>.</td>\n</tr>\n<tr>\n<td>422</td>\n<td>Transição não permitida a partir do status atual, campo obrigatório do status ausente, <code>status</code> fora dos valores aceitos, <code>supplierInvoiceDate</code> em formato inválido, pedido em alçada pendente ou cancelamento não permitido. O motivo vem em <code>message</code>.</td>\n</tr>\n<tr>\n<td>422</td>\n<td>A loja não está habilitada a atualizar pedidos do marketplace — veja <strong>A loja precisa estar habilitada</strong>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Falha de validação do pedido. O motivo vem em <code>message</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>O pedido não existe ou não está no seu escopo.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["partnerOrders","store",":id"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"900201","key":"id"}]}},"response":[{"id":"1b05c36c-fddd-48d2-b258-a871622d1f02","name":"Sucesso — separado para envio","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"status\": \"READY\",\n  \"supplierOrderId\": \"PED-ERP-77120\",\n  \"supplierInvoiceNumber\": \"1234\",\n  \"supplierInvoiceSerie\": \"1\",\n  \"supplierInvoiceDate\": \"2026-09-02\"\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/partnerOrders/store/900201"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"attendant\": null,\n  \"orderId\": 900100,\n  \"id\": 900201,\n  \"status\": \"READY\",\n  \"approvalWorkflow\": false,\n  \"workflowIsApproved\": false,\n  \"approvalCredit\": null,\n  \"subTotal\": 35.91,\n  \"subTotalFormats\": {\n    \"value\": \"35,91\",\n    \"mask\": \"R$ 35,91\"\n  },\n  \"taxes\": {\n    \"taxPurpose\": null,\n    \"taxPurposeId\": null,\n    \"st\": 0,\n    \"ipi\": 0,\n    \"icms\": 0,\n    \"pis\": 0,\n    \"cofins\": 0,\n    \"totalTax\": 0\n  },\n  \"freightTotal\": 45.73,\n  \"freightTotalFormats\": {\n    \"value\": \"45,73\",\n    \"mask\": \"R$ 45,73\"\n  },\n  \"total\": 81.64,\n  \"totalFormats\": {\n    \"value\": \"81,64\",\n    \"mask\": \"R$ 81,64\"\n  },\n  \"dateCreated\": \"2026-09-01T13:26:05Z\",\n  \"lastUpdated\": \"2026-09-01T13:27:26Z\",\n  \"invoiceNote\": null,\n  \"leadTimeByRequestDone\": true,\n  \"order\": {\n    \"origin\": \"SHOP\",\n    \"originStoreName\": \"Loja Exemplo\",\n    \"originStoreId\": 4210,\n    \"originStoreSubdomain\": \"lojaexemplo\",\n    \"originStorePartnerId\": 5050,\n    \"drivenPrice\": false,\n    \"manualPrice\": false\n  },\n  \"seller\": {\n    \"id\": 5050,\n    \"name\": \"Loja Exemplo\",\n    \"document\": \"30.424.972/0001-74\"\n  },\n  \"customer\": {\n    \"id\": 700101,\n    \"name\": \"Ana Paula Ribeiro\",\n    \"contactName\": \"Ana Paula Ribeiro\",\n    \"email\": \"ana.ribeiro@exemplo.com.br\",\n    \"phone\": \"(11) 98765-4321\",\n    \"type\": \"pf\",\n    \"document\": \"700.413.648-56\",\n    \"stateRegistration\": null,\n    \"optinTracking\": null,\n    \"trackingPhone\": null,\n    \"dateCreated\": \"2026-08-20T09:15:00Z\",\n    \"registrationAddress\": {\n      \"street\": \"Avenida Paulista\",\n      \"number\": \"1578\",\n      \"quarter\": \"Bela Vista\",\n      \"city\": \"São Paulo\",\n      \"state\": \"SP\",\n      \"zipcode\": \"01310-100\",\n      \"farmerStateRegistration\": null\n    },\n    \"customerAttributes\": [\n      {\n        \"name\": \"OPTIN_NEWSLETTER\",\n        \"value\": \"true\"\n      }\n    ]\n  },\n  \"payments\": [\n    {\n      \"id\": 4490201,\n      \"paymentType\": \"BANK_SLIP\",\n      \"gateway\": \"BRASPAG\",\n      \"paymentInstallmentsValue\": 81.64,\n      \"paymentInstallments\": 1\n    }\n  ],\n  \"deliveries\": [\n    {\n      \"address\": {\n        \"id\": 4470701,\n        \"name\": \"Endereço de entrega\",\n        \"street\": \"Avenida Paulista\",\n        \"number\": \"1578\",\n        \"quarter\": \"Bela Vista\",\n        \"city\": \"São Paulo\",\n        \"state\": \"SP\",\n        \"zipcode\": \"01310-100\",\n        \"deliveryAddressCode\": null,\n        \"addressType\": \"RESIDENTIAL\"\n      },\n      \"freight\": {\n        \"value\": 45.73,\n        \"valueFormats\": {\n          \"value\": \"45,73\",\n          \"mask\": \"R$ 45,73\"\n        },\n        \"name\": \"CORREIO - SEDEX\",\n        \"type\": \"INTELIPOST\",\n        \"freightTime\": 4,\n        \"packingTime\": 0,\n        \"realValue\": 45.73,\n        \"realValueFormats\": {\n          \"value\": \"45,73\",\n          \"mask\": \"R$ 45,73\"\n        },\n        \"realName\": \"CORREIO - SEDEX\",\n        \"realType\": \"INTELIPOST\",\n        \"intelipostQuoteId\": \"202956238407743\",\n        \"intelipostDeliveryMethodId\": \"2\",\n        \"intelipostDeliveryMethodExternalId\": \"94\"\n      },\n      \"products\": [\n        {\n          \"id\": 500101,\n          \"name\": \"Produto Exemplo A\",\n          \"mfrPartCode\": \"FE-500101\",\n          \"composition\": \"UNITARY\",\n          \"virtualQuantity\": 0,\n          \"realQuantity\": 1,\n          \"quantity\": 1,\n          \"price\": 35.91,\n          \"priceFormats\": {\n            \"value\": \"35,91\",\n            \"mask\": \"R$ 35,91\"\n          },\n          \"leadTime\": 0,\n          \"partnerOrderLineId\": 4490101,\n          \"isLeadTimeByRequest\": false,\n          \"stockPrice\": 39.9,\n          \"stockPriceFormats\": {\n            \"value\": \"39,90\",\n            \"mask\": \"R$ 39,90\"\n          },\n          \"totalCost\": 52.15,\n          \"totalCostFormats\": {\n            \"value\": \"52,15\",\n            \"mask\": \"R$ 52,15\"\n          },\n          \"netCost\": 52.15,\n          \"netCostFormats\": {\n            \"value\": \"52,15\",\n            \"mask\": \"R$ 52,15\"\n          },\n          \"marginAfterDiscountPercentage\": null,\n          \"interestRate\": null,\n          \"anticipationRate\": null,\n          \"realSalePrice\": 35.91,\n          \"realSalePriceFormats\": {\n            \"value\": \"35,91\",\n            \"mask\": \"R$ 35,91\"\n          },\n          \"drivenPrice\": false,\n          \"partnerPartCode\": \"SKU-A-001\",\n          \"partnerInternalPartCode\": null,\n          \"warehouse\": {\n            \"id\": 1001,\n            \"name\": \"Depósito Central\",\n            \"zipcode\": \"01310-100\"\n          },\n          \"brand\": {\n            \"id\": 4460101,\n            \"name\": \"Fabricante Exemplo\"\n          },\n          \"specialRules\": {},\n          \"needsAgronomicRecipe\": \"false\",\n          \"salesUnitOfMeasurement\": null,\n          \"salePriceByUnitOfMeasurement\": null,\n          \"unitaryQuantityInSalesUnitOfMeasurement\": null,\n          \"totalQuantityInSalesUnitOfMeasurement\": null,\n          \"whoAddedItemToCart\": \"client\",\n          \"customKey\": null,\n          \"categoryId\": 31519,\n          \"categoryName\": \"Categoria Exemplo\"\n        }\n      ]\n    }\n  ],\n  \"paymentPartnerReceiver\": [\n    {\n      \"participant\": \"marketplace\",\n      \"name\": \"Loja Exemplo\",\n      \"typeReceiver\": \"PRIMARY\",\n      \"paymentFees\": \"true\",\n      \"splitedBy\": \"TOTAL\",\n      \"splitedPercentage\": 100.0,\n      \"splitedValue\": \"81,64\",\n      \"value\": \"81,64\"\n    }\n  ],\n  \"orderStatusLogs\": [\n    {\n      \"status\": \"READY\",\n      \"date\": \"2026-09-02T11:12:40Z\"\n    }\n  ],\n  \"totalMarginAfterDiscountPercentage\": null,\n  \"markup\": null,\n  \"whoCreatedPreOrder\": \"client\",\n  \"whoSelectedPayment\": \"client\",\n  \"commissionAssignedAttendantId\": null,\n  \"commissionAssignedAttendantCode\": null,\n  \"commissionAssignedAttendantDoc\": null,\n  \"approvalLevels\": [],\n  \"customCartId\": null,\n  \"cartTypeName\": null,\n  \"cartTypeExternalId\": null,\n  \"supplierOrderId\": \"PED-ERP-77120\",\n  \"supplierInvoiceNumber\": \"1234\",\n  \"supplierInvoiceSerie\": \"1\",\n  \"supplierInvoiceDate\": \"2026-09-02T00:00:00Z\"\n}"},{"id":"6635aaed-de30-4b6a-9d73-920d61ee38ac","name":"Sucesso — enviado","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"status\": \"SHIPPED\",\n  \"trackingCode\": \"BR123456789BR\",\n  \"urlTrackingCode\": \"https://rastreio.exemplo.com.br/BR123456789BR\"\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/partnerOrders/store/900201"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"attendant\": null,\n  \"orderId\": 900100,\n  \"id\": 900201,\n  \"status\": \"SHIPPED\",\n  \"approvalWorkflow\": false,\n  \"workflowIsApproved\": false,\n  \"approvalCredit\": null,\n  \"subTotal\": 35.91,\n  \"subTotalFormats\": {\n    \"value\": \"35,91\",\n    \"mask\": \"R$ 35,91\"\n  },\n  \"taxes\": {\n    \"taxPurpose\": null,\n    \"taxPurposeId\": null,\n    \"st\": 0,\n    \"ipi\": 0,\n    \"icms\": 0,\n    \"pis\": 0,\n    \"cofins\": 0,\n    \"totalTax\": 0\n  },\n  \"freightTotal\": 45.73,\n  \"freightTotalFormats\": {\n    \"value\": \"45,73\",\n    \"mask\": \"R$ 45,73\"\n  },\n  \"total\": 81.64,\n  \"totalFormats\": {\n    \"value\": \"81,64\",\n    \"mask\": \"R$ 81,64\"\n  },\n  \"dateCreated\": \"2026-09-01T13:26:05Z\",\n  \"lastUpdated\": \"2026-09-01T13:27:26Z\",\n  \"invoiceNote\": null,\n  \"leadTimeByRequestDone\": true,\n  \"order\": {\n    \"origin\": \"SHOP\",\n    \"originStoreName\": \"Loja Exemplo\",\n    \"originStoreId\": 4210,\n    \"originStoreSubdomain\": \"lojaexemplo\",\n    \"originStorePartnerId\": 5050,\n    \"drivenPrice\": false,\n    \"manualPrice\": false\n  },\n  \"seller\": {\n    \"id\": 5050,\n    \"name\": \"Loja Exemplo\",\n    \"document\": \"30.424.972/0001-74\"\n  },\n  \"customer\": {\n    \"id\": 700101,\n    \"name\": \"Ana Paula Ribeiro\",\n    \"contactName\": \"Ana Paula Ribeiro\",\n    \"email\": \"ana.ribeiro@exemplo.com.br\",\n    \"phone\": \"(11) 98765-4321\",\n    \"type\": \"pf\",\n    \"document\": \"700.413.648-56\",\n    \"stateRegistration\": null,\n    \"optinTracking\": null,\n    \"trackingPhone\": null,\n    \"dateCreated\": \"2026-08-20T09:15:00Z\",\n    \"registrationAddress\": {\n      \"street\": \"Avenida Paulista\",\n      \"number\": \"1578\",\n      \"quarter\": \"Bela Vista\",\n      \"city\": \"São Paulo\",\n      \"state\": \"SP\",\n      \"zipcode\": \"01310-100\",\n      \"farmerStateRegistration\": null\n    },\n    \"customerAttributes\": [\n      {\n        \"name\": \"OPTIN_NEWSLETTER\",\n        \"value\": \"true\"\n      }\n    ]\n  },\n  \"payments\": [\n    {\n      \"id\": 4490201,\n      \"paymentType\": \"BANK_SLIP\",\n      \"gateway\": \"BRASPAG\",\n      \"paymentInstallmentsValue\": 81.64,\n      \"paymentInstallments\": 1\n    }\n  ],\n  \"deliveries\": [\n    {\n      \"address\": {\n        \"id\": 4470701,\n        \"name\": \"Endereço de entrega\",\n        \"street\": \"Avenida Paulista\",\n        \"number\": \"1578\",\n        \"quarter\": \"Bela Vista\",\n        \"city\": \"São Paulo\",\n        \"state\": \"SP\",\n        \"zipcode\": \"01310-100\",\n        \"deliveryAddressCode\": null,\n        \"addressType\": \"RESIDENTIAL\"\n      },\n      \"freight\": {\n        \"value\": 45.73,\n        \"valueFormats\": {\n          \"value\": \"45,73\",\n          \"mask\": \"R$ 45,73\"\n        },\n        \"name\": \"CORREIO - SEDEX\",\n        \"type\": \"INTELIPOST\",\n        \"freightTime\": 4,\n        \"packingTime\": 0,\n        \"realValue\": 45.73,\n        \"realValueFormats\": {\n          \"value\": \"45,73\",\n          \"mask\": \"R$ 45,73\"\n        },\n        \"realName\": \"CORREIO - SEDEX\",\n        \"realType\": \"INTELIPOST\",\n        \"intelipostQuoteId\": \"202956238407743\",\n        \"intelipostDeliveryMethodId\": \"2\",\n        \"intelipostDeliveryMethodExternalId\": \"94\"\n      },\n      \"products\": [\n        {\n          \"id\": 500101,\n          \"name\": \"Produto Exemplo A\",\n          \"mfrPartCode\": \"FE-500101\",\n          \"composition\": \"UNITARY\",\n          \"virtualQuantity\": 0,\n          \"realQuantity\": 1,\n          \"quantity\": 1,\n          \"price\": 35.91,\n          \"priceFormats\": {\n            \"value\": \"35,91\",\n            \"mask\": \"R$ 35,91\"\n          },\n          \"leadTime\": 0,\n          \"partnerOrderLineId\": 4490101,\n          \"isLeadTimeByRequest\": false,\n          \"stockPrice\": 39.9,\n          \"stockPriceFormats\": {\n            \"value\": \"39,90\",\n            \"mask\": \"R$ 39,90\"\n          },\n          \"totalCost\": 52.15,\n          \"totalCostFormats\": {\n            \"value\": \"52,15\",\n            \"mask\": \"R$ 52,15\"\n          },\n          \"netCost\": 52.15,\n          \"netCostFormats\": {\n            \"value\": \"52,15\",\n            \"mask\": \"R$ 52,15\"\n          },\n          \"marginAfterDiscountPercentage\": null,\n          \"interestRate\": null,\n          \"anticipationRate\": null,\n          \"realSalePrice\": 35.91,\n          \"realSalePriceFormats\": {\n            \"value\": \"35,91\",\n            \"mask\": \"R$ 35,91\"\n          },\n          \"drivenPrice\": false,\n          \"partnerPartCode\": \"SKU-A-001\",\n          \"partnerInternalPartCode\": null,\n          \"warehouse\": {\n            \"id\": 1001,\n            \"name\": \"Depósito Central\",\n            \"zipcode\": \"01310-100\"\n          },\n          \"brand\": {\n            \"id\": 4460101,\n            \"name\": \"Fabricante Exemplo\"\n          },\n          \"specialRules\": {},\n          \"needsAgronomicRecipe\": \"false\",\n          \"salesUnitOfMeasurement\": null,\n          \"salePriceByUnitOfMeasurement\": null,\n          \"unitaryQuantityInSalesUnitOfMeasurement\": null,\n          \"totalQuantityInSalesUnitOfMeasurement\": null,\n          \"whoAddedItemToCart\": \"client\",\n          \"customKey\": null,\n          \"categoryId\": 31519,\n          \"categoryName\": \"Categoria Exemplo\"\n        }\n      ]\n    }\n  ],\n  \"paymentPartnerReceiver\": [\n    {\n      \"participant\": \"marketplace\",\n      \"name\": \"Loja Exemplo\",\n      \"typeReceiver\": \"PRIMARY\",\n      \"paymentFees\": \"true\",\n      \"splitedBy\": \"TOTAL\",\n      \"splitedPercentage\": 100.0,\n      \"splitedValue\": \"81,64\",\n      \"value\": \"81,64\"\n    }\n  ],\n  \"orderStatusLogs\": [\n    {\n      \"status\": \"SHIPPED\",\n      \"date\": \"2026-09-02T11:12:40Z\"\n    }\n  ],\n  \"totalMarginAfterDiscountPercentage\": null,\n  \"markup\": null,\n  \"whoCreatedPreOrder\": \"client\",\n  \"whoSelectedPayment\": \"client\",\n  \"commissionAssignedAttendantId\": null,\n  \"commissionAssignedAttendantCode\": null,\n  \"commissionAssignedAttendantDoc\": null,\n  \"approvalLevels\": [],\n  \"customCartId\": null,\n  \"cartTypeName\": null,\n  \"cartTypeExternalId\": null\n}"}],"_postman_id":"0c976e0a-b4cd-4f13-8421-5cab6102faaf"},{"name":"Upload de XML da Nota Fiscal - Marketplace","id":"86fdbd3c-3683-40ea-a11c-c4def9990592","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/xml"}],"body":{"mode":"raw","raw":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<nfeProc versao=\"4.00\">\n  <NFe>\n    <infNFe Id=\"NFe35260930424972000174550010000012341000012349\">\n      <ide><nNF>1234</nNF><serie>1</serie></ide>\n    </infNFe>\n  </NFe>\n</nfeProc>","options":{"raw":{"language":"xml"}}},"url":"https://ws.autorei.net/partnerOrders/store/:id/invoice","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Permite que a <strong>loja de origem</strong> anexe o XML da nota fiscal a um pedido que nasceu nela. O corpo da requisição é o <strong>próprio arquivo</strong>, enviado como conteúdo binário — o stream cru dos bytes do <code>.xml</code>. Não é <code>multipart/form-data</code>, não há campo de formulário e o XML não vai dentro de um JSON.</p>\n<p>A nota precisa ser uma <strong>NF-e real e válida</strong>. O corpo e as regras são idênticos aos da rota da loja; muda o escopo de quem envia.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id do <strong>pedido do parceiro</strong> (<code>partnerOrderId</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"corpo-da-requisição\">Corpo da Requisição</h3>\n<p>Os bytes do arquivo <code>.xml</code> da NF-e, sem envelope. Envie <code>Content-Type: application/xml</code>.</p>\n<h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"o-que-é-lido-do-arquivo\">O que é lido do arquivo</h4>\n<p>A plataforma faz o parse do XML e extrai a <strong>chave de acesso</strong>, o <strong>número</strong>, a <strong>série</strong>, a <strong>data de emissão</strong> e o <strong>valor total</strong> da nota. É por isso que o arquivo precisa ser uma NF-e de verdade: um XML bem formado mas que não seja uma nota não traz esses dados. O arquivo é guardado com o nome da chave de acesso.</p>\n<p>São aceitos os dois formatos usuais — o XML processado, com o envelope da nota, e o XML só com o bloco da nota.</p>\n<p>Arquivo vazio ou que não é XML válido é recusado, e nada é gravado.</p>\n<h4 id=\"o-pedido-precisa-ter-o-pagamento-aprovado\">O pedido precisa ter o pagamento aprovado</h4>\n<p>Só aceita nota em pedido que já passou da aprovação de pagamento. Antes disso a requisição é recusada e nada é gravado.</p>\n<h4 id=\"uma-nota-ou-várias\">Uma nota ou várias</h4>\n<p>Por padrão o pedido guarda <strong>um</strong> arquivo, e cada envio substitui o anterior. Lojas configuradas para múltiplas notas acumulam os arquivos: cada envio acrescenta mais um. A configuração é da loja e é feita pela CWS.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>Os dados da nota anexada ao pedido.</p>\n<h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>422</td>\n<td>Corpo vazio, arquivo que não é XML válido, ou pedido ainda sem pagamento aprovado. O motivo vem em <code>message</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>O pedido não existe ou não está no seu escopo.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["partnerOrders","store",":id","invoice"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"900201","key":"id"}]}},"response":[{"id":"ad501e1d-d241-4074-8c2c-c3cea250311c","name":"Recusa — pedido sem pagamento aprovado","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/xml"}],"body":{"mode":"raw","raw":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<nfeProc versao=\"4.00\">\n  <NFe>\n    <infNFe Id=\"NFe35260930424972000174550010000012341000012349\">\n      <ide><nNF>1234</nNF><serie>1</serie></ide>\n    </infNFe>\n  </NFe>\n</nfeProc>","options":{"raw":{"language":"xml"}}},"url":"https://ws.autorei.net/partnerOrders/store/900201/invoice"},"status":"Unprocessable Entity","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"UNPROCESSABLE_ENTITY\",\n  \"message\": \"Envio de XML de NFe permitido somente para pedido com pagamento aprovado\"\n}"}],"_postman_id":"86fdbd3c-3683-40ea-a11c-c4def9990592"},{"name":"Enviar Acompanhamento dos Itens - Marketplace (EM HOMOLOGAÇÃO)","id":"16d5a5e5-96f4-422d-9f5f-6a2122c3749b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"skus\": [\n    {\n      \"partnerPartCode\": \"SKU-A-001\",\n      \"situation\": \"enviado\",\n      \"quantity\": 2\n    },\n    {\n      \"partnerPartCode\": \"SKU-A-001\",\n      \"situation\": \"preparando\",\n      \"quantity\": 1\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/partnerOrders/store/:id/complementaryInfo","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Permite que a <strong>loja de origem</strong> informe, item a item, em que situação está cada produto de um pedido que nasceu nela.</p>\n<p>O corpo e a resposta são idênticos aos da rota da loja; muda o escopo de quem envia.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id do <strong>pedido do parceiro</strong> (<code>partnerOrderId</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"corpo-da-requisição-json\">Corpo da Requisição (JSON)</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>skus</code></td>\n<td>array</td>\n<td>Sim</td>\n<td>Os itens do acompanhamento. De 1 a <strong>250</strong> por requisição.</td>\n</tr>\n<tr>\n<td><code>skus[].partnerPartCode</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>O seu código de peça do produto, o mesmo que você cadastrou no estoque.</td>\n</tr>\n<tr>\n<td><code>skus[].situation</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>Situação do item. Texto livre — a plataforma não valida contra uma lista.</td>\n</tr>\n<tr>\n<td><code>skus[].quantity</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Quantidade nessa situação. Número inteiro <strong>maior que zero</strong>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"o-envio-alcança-só-as-peças-que-ele-contém\">O envio alcança só as peças que ele contém</h4>\n<p>O escopo do envio é o <strong>item</strong>, não o pedido: cada requisição substitui o acompanhamento das peças que ela cita e <strong>deixa as demais intactas</strong>. Você pode enviar um produto de cada vez, sem reenviar o pedido inteiro.</p>\n<p>Reenviar um item exatamente igual ao que já está gravado não recria o registro: ele é preservado como está.</p>\n<h4 id=\"o-mesmo-produto-em-mais-de-uma-situação\">O mesmo produto em mais de uma situação</h4>\n<p><code>partnerPartCode</code> <strong>pode repetir</strong> no mesmo envio, uma vez por situação — é assim que você informa três unidades enviadas e duas em preparação do mesmo produto. As quantidades <strong>somam</strong>; os registros não competem entre si.</p>\n<h4 id=\"a-soma-não-passa-a-quantidade-do-item-no-pedido\">A soma não passa a quantidade do item no pedido</h4>\n<p>Para um mesmo produto, a soma das quantidades informadas não pode ultrapassar a quantidade daquele item no pedido. Passando, a requisição é recusada e <strong>nada é gravado</strong>.</p>\n<h4 id=\"o-produto-precisa-estar-no-pedido\">O produto precisa estar no pedido</h4>\n<p>O <code>partnerPartCode</code> é resolvido contra as linhas <strong>daquele pedido</strong>. Código que não corresponde a nenhuma linha, ou que corresponde a mais de uma, recusa a requisição — e a resposta diz qual código causou a recusa.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>O eco <strong>do que você enviou</strong>, com o veredito de cada item. Para o conjunto que está gravado no pedido, use <strong>Consultar Acompanhamento dos Itens</strong>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>orderId</code></td>\n<td>Id do pedido do cliente, derivado do pedido da rota.</td>\n</tr>\n<tr>\n<td><code>partnerOrderId</code></td>\n<td>Id do pedido do parceiro, o mesmo da rota.</td>\n</tr>\n<tr>\n<td><code>skus[].partnerPartCode</code></td>\n<td>O código que você enviou.</td>\n</tr>\n<tr>\n<td><code>skus[].quantity</code> · <code>skus[].situation</code></td>\n<td>Quantidade e situação informadas.</td>\n</tr>\n<tr>\n<td><code>skus[].status</code></td>\n<td><code>valid</code> no item aceito · <code>invalid</code> no item que causou a recusa.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"quando-a-recusa-é-item-a-item\">Quando a recusa é item a item</h3>\n<p>A recusa por regra de negócio responde <strong>422</strong> com <strong>a mesma estrutura do sucesso</strong>, mais <code>status</code> e <code>message</code> no topo: os itens que causaram a recusa vêm com <code>status: \"invalid\"</code> e os demais com <code>valid</code>, e <code>message</code> reúne os motivos, um por linha. <strong>Nada é gravado</strong> — a recusa vale para a requisição inteira. Assim você localiza o item problemático sem cruzar a mensagem com a posição no array.</p>\n<h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td>O corpo não é um JSON válido. O detalhe vem em <code>error</code>.</td>\n</tr>\n<tr>\n<td>422</td>\n<td><code>skus</code> ausente, vazio ou com mais de 250 itens; item sem <code>partnerPartCode</code>, sem <code>situation</code> ou com <code>quantity</code> que não seja inteiro maior que zero; código que não está no pedido ou que aparece em mais de uma linha; soma acima da quantidade do item. O corpo traz o motivo em <code>message</code> e marca os itens recusados.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>O pedido não existe ou não está no seu escopo.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["partnerOrders","store",":id","complementaryInfo"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"900201","key":"id"}]}},"response":[{"id":"dacde9f8-4131-4fab-ad15-eea3f436ce53","name":"Sucesso — produto em duas situações","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"skus\": [\n    {\n      \"partnerPartCode\": \"SKU-A-001\",\n      \"situation\": \"enviado\",\n      \"quantity\": 2\n    },\n    {\n      \"partnerPartCode\": \"SKU-A-001\",\n      \"situation\": \"preparando\",\n      \"quantity\": 1\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/partnerOrders/store/900201/complementaryInfo"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"orderId\": 900100,\n  \"partnerOrderId\": 900201,\n  \"skus\": [\n    {\n      \"partnerPartCode\": \"SKU-A-001\",\n      \"quantity\": 2,\n      \"situation\": \"enviado\",\n      \"status\": \"valid\"\n    },\n    {\n      \"partnerPartCode\": \"SKU-A-001\",\n      \"quantity\": 1,\n      \"situation\": \"preparando\",\n      \"status\": \"valid\"\n    }\n  ]\n}"},{"id":"4833e99d-5f61-4c24-85e2-f9bd267c500c","name":"Recusa — código que não está no pedido","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"skus\": [\n    {\n      \"partnerPartCode\": \"SKU-A-001\",\n      \"situation\": \"enviado\",\n      \"quantity\": 2\n    },\n    {\n      \"partnerPartCode\": \"SKU-Z-999\",\n      \"situation\": \"enviado\",\n      \"quantity\": 1\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/partnerOrders/store/900201/complementaryInfo"},"status":"Unprocessable Entity","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"UNPROCESSABLE_ENTITY\",\n  \"message\": \"partnerPartCode não encontrado nas linhas do pedido: SKU-Z-999\",\n  \"orderId\": 900100,\n  \"partnerOrderId\": 900201,\n  \"skus\": [\n    {\n      \"partnerPartCode\": \"SKU-A-001\",\n      \"quantity\": 2,\n      \"situation\": \"enviado\",\n      \"status\": \"valid\"\n    },\n    {\n      \"partnerPartCode\": \"SKU-Z-999\",\n      \"quantity\": 1,\n      \"situation\": \"enviado\",\n      \"status\": \"invalid\"\n    }\n  ]\n}"}],"_postman_id":"16d5a5e5-96f4-422d-9f5f-6a2122c3749b"},{"name":"Consultar Acompanhamento dos Itens - Marketplace (EM HOMOLOGAÇÃO)","id":"2af7183f-6c55-4878-8bc5-fe7a435e40cc","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://ws.autorei.net/partnerOrders/store/:id/complementaryInfo","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Devolve o acompanhamento dos itens de um pedido <strong>originado na sua loja</strong> — o conjunto ativo.</p>\n<p>A resposta é idêntica à da rota da loja; muda o escopo de quem consulta.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id do <strong>pedido do parceiro</strong> (<code>partnerOrderId</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>orderId</code></td>\n<td>Id do pedido do cliente.</td>\n</tr>\n<tr>\n<td><code>partnerOrderId</code></td>\n<td>Id do pedido do parceiro.</td>\n</tr>\n<tr>\n<td><code>skus[].partnerPartCode</code></td>\n<td>Código de peça do produto, lido do cadastro <strong>no momento da consulta</strong>.</td>\n</tr>\n<tr>\n<td><code>skus[].quantity</code> · <code>skus[].situation</code></td>\n<td>Quantidade e situação gravadas.</td>\n</tr>\n<tr>\n<td><code>skus[].status</code></td>\n<td>Sempre <code>valid</code> — o conjunto devolvido é o que está gravado. O campo existe para o item ter a mesma forma nas três operações.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Num pedido sem acompanhamento a resposta traz só <code>orderId</code> e <code>partnerOrderId</code>: a chave <code>skus</code> fica de fora.</p>\n<h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>O pedido não existe ou não está no seu escopo.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["partnerOrders","store",":id","complementaryInfo"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"900201","key":"id"}]}},"response":[{"id":"6d965150-ee5f-4e2e-b4d7-31d60fd36140","name":"Sucesso — acompanhamento gravado","originalRequest":{"method":"GET","header":[],"url":"https://ws.autorei.net/partnerOrders/store/900201/complementaryInfo"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"orderId\": 900100,\n  \"partnerOrderId\": 900201,\n  \"skus\": [\n    {\n      \"partnerPartCode\": \"SKU-A-001\",\n      \"quantity\": 2,\n      \"situation\": \"enviado\",\n      \"status\": \"valid\"\n    },\n    {\n      \"partnerPartCode\": \"SKU-A-001\",\n      \"quantity\": 1,\n      \"situation\": \"preparando\",\n      \"status\": \"valid\"\n    }\n  ]\n}"}],"_postman_id":"2af7183f-6c55-4878-8bc5-fe7a435e40cc"},{"name":"Remover Acompanhamento dos Itens - Marketplace (EM HOMOLOGAÇÃO)","id":"8ba20a53-d855-453f-afe6-bda69912da4c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"https://ws.autorei.net/partnerOrders/store/:id/complementaryInfo","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Apaga, inteiro, o acompanhamento dos itens de um pedido <strong>originado na sua loja</strong>.</p>\n<p>O comportamento é idêntico ao da rota da loja; muda o escopo de quem remove.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id do <strong>pedido do parceiro</strong> (<code>partnerOrderId</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>orderId</code></td>\n<td>Id do pedido do cliente.</td>\n</tr>\n<tr>\n<td><code>partnerOrderId</code></td>\n<td>Id do pedido do parceiro.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>O pedido não existe ou não está no seu escopo.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["partnerOrders","store",":id","complementaryInfo"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"900201","key":"id"}]}},"response":[{"id":"bd0cf64c-8d4f-4c98-b792-fe687e02dccb","name":"Sucesso — acompanhamento removido","originalRequest":{"method":"DELETE","header":[],"url":"https://ws.autorei.net/partnerOrders/store/900201/complementaryInfo"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"orderId\": 900100,\n  \"partnerOrderId\": 900201\n}"}],"_postman_id":"8ba20a53-d855-453f-afe6-bda69912da4c"}],"id":"0d36b5eb-f1ca-4c3a-a3d9-2b077a0a5992","_postman_id":"0d36b5eb-f1ca-4c3a-a3d9-2b077a0a5992","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}}}],"id":"84602d8b-275e-4e0a-b7f3-0beb482970c4","description":"<p>Serviços para consulta e gerenciamento de pedidos.</p>\n","_postman_id":"84602d8b-275e-4e0a-b7f3-0beb482970c4","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}}},{"name":"04 - Clientes","item":[{"name":"Gestão de Clientes","item":[{"name":"Buscar Cliente por Documento","id":"77eabc1b-9355-4f62-a6db-8ceb7e74a295","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://ws.autorei.net/v1/customer/document/:document","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Busca um cliente da sua loja pelo documento e devolve o cadastro completo, com endereços e vínculos de preço.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>document</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>CPF ou CNPJ do cliente, <strong>sem pontuação</strong>. Ver a regra abaixo.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"o-documento-vai-sem-pontuação\">O documento vai sem pontuação</h4>\n<p>Envie só os dígitos: <code>70041364856</code>, não <code>700.413.648-56</code>. Um CNPJ pontuado carrega uma <strong>barra</strong> (<code>29.893.264/0001-01</code>), que parte o caminho em dois segmentos — a requisição não chega a este endpoint e você recebe <code>404 {\"status\":\"NOT_FOUND\",\"message\":\"Serviço não encontrado\"}</code>, que é a resposta de rota inexistente, não de cliente inexistente.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p><strong>A resposta vem envelopada em <code>customer</code></strong> — <code>{\"customer\": { ... }}</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Id do cliente na CWS.</td>\n</tr>\n<tr>\n<td><code>document</code></td>\n<td>string</td>\n<td>CPF ou CNPJ do cliente.</td>\n</tr>\n<tr>\n<td><code>documentType</code></td>\n<td>string</td>\n<td><code>pf</code> ou <code>pj</code>.</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>string</td>\n<td>Nome ou razão social.</td>\n</tr>\n<tr>\n<td><code>tradingName</code></td>\n<td>string</td>\n<td>Nome fantasia.</td>\n</tr>\n<tr>\n<td><code>contactName</code></td>\n<td>string</td>\n<td>Nome do contato.</td>\n</tr>\n<tr>\n<td><code>email</code></td>\n<td>string</td>\n<td>E-mail de acesso do cliente.</td>\n</tr>\n<tr>\n<td><code>phone</code></td>\n<td>string</td>\n<td>Telefone, já formatado (<code>(31) 99999-9999</code>).</td>\n</tr>\n<tr>\n<td><code>dateCreated</code></td>\n<td>string</td>\n<td>Data e hora do cadastro.</td>\n</tr>\n<tr>\n<td><code>active</code></td>\n<td>boolean</td>\n<td>Se o cliente está ativo.</td>\n</tr>\n<tr>\n<td><code>passwordExpired</code></td>\n<td>boolean</td>\n<td>Se a senha está marcada como expirada.</td>\n</tr>\n<tr>\n<td><code>stateRegistration</code></td>\n<td>string</td>\n<td>Inscrição estadual. Vem <code>\"isento\"</code> quando não informada.</td>\n</tr>\n<tr>\n<td><code>cnae</code></td>\n<td>string</td>\n<td>CNAE do cliente.</td>\n</tr>\n<tr>\n<td><code>paysIcms</code></td>\n<td>boolean</td>\n<td>Se é contribuinte de ICMS.</td>\n</tr>\n<tr>\n<td><code>genre</code></td>\n<td>string</td>\n<td>Gênero.</td>\n</tr>\n<tr>\n<td><code>birthdate</code></td>\n<td>string</td>\n<td>Data de nascimento.</td>\n</tr>\n<tr>\n<td><code>politicallyExposedPerson</code></td>\n<td>boolean</td>\n<td>Se é pessoa politicamente exposta.</td>\n</tr>\n<tr>\n<td><code>federalEmployee</code></td>\n<td>boolean</td>\n<td>Se é servidor público federal.</td>\n</tr>\n<tr>\n<td><code>optinTracking</code></td>\n<td>boolean</td>\n<td>Se aceita acompanhamento por mensagem.</td>\n</tr>\n<tr>\n<td><code>trackingPhone</code></td>\n<td>string</td>\n<td>Telefone do acompanhamento.</td>\n</tr>\n<tr>\n<td><code>optinPath</code></td>\n<td>string</td>\n<td>Origem do consentimento.</td>\n</tr>\n<tr>\n<td><code>address</code></td>\n<td>array</td>\n<td>Endereços do cliente, no mesmo formato de <code>GET /customer/addresses/:document</code>.</td>\n</tr>\n<tr>\n<td><code>customerRegistrationAddress</code></td>\n<td>objeto</td>\n<td>Endereço de cadastro.</td>\n</tr>\n<tr>\n<td><code>priceRuleTag</code></td>\n<td>array</td>\n<td>Tags de preço do cliente. <strong>Vem <code>null</code> quando não há vínculo.</strong></td>\n</tr>\n<tr>\n<td><code>customerTypeList</code></td>\n<td>array</td>\n<td>Tipos de cliente vinculados. <strong><code>null</code> quando não há vínculo.</strong></td>\n</tr>\n<tr>\n<td><code>customerGroupList</code></td>\n<td>array</td>\n<td>Grupos de cliente vinculados. <strong><code>null</code> quando não há vínculo.</strong></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>Documento sem cadastro na sua loja.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["v1","customer","document",":document"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"70041364856","key":"document"}]}},"response":[{"id":"d3db4c5d-614b-47ab-a4c2-0138f3b0311e","name":"Sucesso — pessoa física","originalRequest":{"method":"GET","header":[],"url":"https://ws.autorei.net/v1/customer/document/70041364856"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"customer\": {\n    \"id\": 4470601,\n    \"document\": \"700.413.648-56\",\n    \"documentType\": \"pf\",\n    \"name\": \"Ana Paula Ribeiro\",\n    \"tradingName\": null,\n    \"contactName\": \"Ana Paula Ribeiro\",\n    \"email\": \"ana.ribeiro@exemplo.com.br\",\n    \"phone\": \"(11) 98765-4321\",\n    \"dateCreated\": \"2026-09-01T13:42:07Z\",\n    \"active\": true,\n    \"passwordExpired\": false,\n    \"stateRegistration\": \"isento\",\n    \"cnae\": null,\n    \"paysIcms\": false,\n    \"genre\": \"F\",\n    \"birthdate\": \"1988-04-12\",\n    \"politicallyExposedPerson\": false,\n    \"federalEmployee\": false,\n    \"optinTracking\": true,\n    \"trackingPhone\": \"(11) 98765-4321\",\n    \"optinPath\": \"API\",\n    \"address\": [\n      {\n        \"id\": 4470701,\n        \"name\": \"Endereço de cadastro\",\n        \"zipcode\": \"01310-100\",\n        \"street\": \"Avenida Paulista\",\n        \"number\": \"1578\",\n        \"complement\": \"Conjunto 42\",\n        \"quarter\": \"Bela Vista\",\n        \"city\": \"São Paulo\",\n        \"state\": \"SP\",\n        \"principal\": true,\n        \"addressType\": \"RESIDENTIAL\",\n        \"farmerStateRegistration\": null,\n        \"howToReachLocationDescription\": null,\n        \"responsibleContact\": null,\n        \"attributes\": {},\n        \"dateCreated\": \"2026-09-01T13:42:07Z\",\n        \"lastUpdated\": \"2026-09-01T13:42:07Z\"\n      }\n    ],\n    \"customerRegistrationAddress\": {\n      \"id\": 4470701,\n      \"name\": \"Endereço de cadastro\",\n      \"zipcode\": \"01310-100\",\n      \"street\": \"Avenida Paulista\",\n      \"number\": \"1578\",\n      \"complement\": \"Conjunto 42\",\n      \"quarter\": \"Bela Vista\",\n      \"city\": \"São Paulo\",\n      \"state\": \"SP\",\n      \"principal\": true,\n      \"addressType\": \"RESIDENTIAL\",\n      \"farmerStateRegistration\": null,\n      \"howToReachLocationDescription\": null,\n      \"responsibleContact\": null,\n      \"attributes\": {},\n      \"dateCreated\": \"2026-09-01T13:42:07Z\",\n      \"lastUpdated\": \"2026-09-01T13:42:07Z\"\n    },\n    \"priceRuleTag\": null,\n    \"customerTypeList\": null,\n    \"customerGroupList\": null\n  }\n}"}],"_postman_id":"77eabc1b-9355-4f62-a6db-8ceb7e74a295"},{"name":"Criar Novo Cliente","id":"ad6c8095-bfe2-4b49-b0ec-8e0c4c68798c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"documentType\": \"cpf\",\n  \"document\": \"70041364856\",\n  \"username\": \"ana.ribeiro@exemplo.com.br\",\n  \"name\": \"Ana Paula Ribeiro\",\n  \"contactName\": \"Ana Paula Ribeiro\",\n  \"phone\": \"11987654321\",\n  \"password\": \"sua-senha\",\n  \"optinTracking\": true,\n  \"trackingPhone\": \"11987654321\",\n  \"customerRegistrationAddress\": {\n    \"zipcode\": \"01310-100\",\n    \"street\": \"Avenida Paulista\",\n    \"number\": \"1578\",\n    \"complement\": \"Conjunto 42\",\n    \"quarter\": \"Bela Vista\",\n    \"city\": \"São Paulo\",\n    \"state\": \"SP\",\n    \"addressType\": \"RESIDENTIAL\",\n    \"principal\": true\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/v1/customer","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Cadastra um cliente na sua loja, com o endereço e, opcionalmente, os vínculos de tipo, grupo e tag de preço. O cliente criado já pode acessar a loja com o <code>username</code> e a senha informados.</p>\n<h3 id=\"corpo-da-requisição-json\">Corpo da Requisição (JSON)</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>documentType</code></td>\n<td>string</td>\n<td>Sim</td>\n<td><code>cpf</code> ou <code>pf</code> para pessoa física; <code>cnpj</code> ou <code>pj</code> para jurídica. Nenhum outro valor é aceito.</td>\n</tr>\n<tr>\n<td><code>document</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>CPF ou CNPJ, <strong>válido</strong> e coerente com o <code>documentType</code>. CNPJ alfanumérico é aceito.</td>\n</tr>\n<tr>\n<td><code>username</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>E-mail de acesso do cliente. Precisa ser um e-mail válido.</td>\n</tr>\n<tr>\n<td><code>phone</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>Telefone do cliente.</td>\n</tr>\n<tr>\n<td><code>password</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>Senha de acesso do cliente.</td>\n</tr>\n<tr>\n<td><code>customerRegistrationAddress</code></td>\n<td>objeto</td>\n<td>Condicional</td>\n<td><strong>Endereço de cadastro</strong> do cliente. Campos na tabela de endereço. Ver a regra abaixo.</td>\n</tr>\n<tr>\n<td><code>addressList</code></td>\n<td>array</td>\n<td>Condicional</td>\n<td><strong>Endereços de entrega</strong> do cliente. Campos na tabela de endereço. Ver a regra abaixo.</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Nome ou razão social.</td>\n</tr>\n<tr>\n<td><code>tradingName</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Nome fantasia.</td>\n</tr>\n<tr>\n<td><code>contactName</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Nome do contato.</td>\n</tr>\n<tr>\n<td><code>stateRegistration</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Inscrição estadual.</td>\n</tr>\n<tr>\n<td><code>cnae</code></td>\n<td>string</td>\n<td>Não</td>\n<td>CNAE do cliente.</td>\n</tr>\n<tr>\n<td><code>paysIcms</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Se é contribuinte de ICMS.</td>\n</tr>\n<tr>\n<td><code>politicallyExposedPerson</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Se é pessoa politicamente exposta.</td>\n</tr>\n<tr>\n<td><code>federalEmployee</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Se é servidor público federal.</td>\n</tr>\n<tr>\n<td><code>optinTracking</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Aceite de acompanhamento por mensagem.</td>\n</tr>\n<tr>\n<td><code>trackingPhone</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Telefone do acompanhamento.</td>\n</tr>\n<tr>\n<td><code>forceChangePassword</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Exige troca de senha no primeiro acesso.</td>\n</tr>\n<tr>\n<td><code>passwordExpired</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Marca a senha como expirada. Ausente vale <code>false</code>.</td>\n</tr>\n<tr>\n<td><code>sendEmailNewCustomer</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td><code>true</code> dispara o e-mail de primeiro acesso ao cliente. A senha que você enviou <strong>nunca</strong> vai nesse e-mail.</td>\n</tr>\n<tr>\n<td><code>ssoConfigId</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Configuração de SSO. Validada contra a sua loja.</td>\n</tr>\n<tr>\n<td><code>priceRuleTags</code></td>\n<td>array</td>\n<td>Não</td>\n<td>Tags de preço, <strong>por nome</strong>.</td>\n</tr>\n<tr>\n<td><code>customerTypeList</code></td>\n<td>array</td>\n<td>Não</td>\n<td>Tipos de cliente, por <code>name</code> ou <code>externalId</code>.</td>\n</tr>\n<tr>\n<td><code>customerGroupList</code></td>\n<td>array</td>\n<td>Não</td>\n<td>Grupos de cliente, por <code>name</code> ou <code>externalId</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Endereço</strong> (<code>customerRegistrationAddress</code> e cada item de <code>addressList</code>):</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>zipcode</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>CEP do endereço. É o que resolve rua e bairro — ver a regra dos Correios.</td>\n</tr>\n<tr>\n<td><code>number</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>Número.</td>\n</tr>\n<tr>\n<td><code>complement</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Complemento.</td>\n</tr>\n<tr>\n<td><code>street</code></td>\n<td>string</td>\n<td>Condicional</td>\n<td>Rua. Ver a regra dos Correios.</td>\n</tr>\n<tr>\n<td><code>quarter</code></td>\n<td>string</td>\n<td>Condicional</td>\n<td>Bairro. Ver a regra dos Correios.</td>\n</tr>\n<tr>\n<td><code>city</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Cidade.</td>\n</tr>\n<tr>\n<td><code>state</code></td>\n<td>string</td>\n<td>Não</td>\n<td>UF.</td>\n</tr>\n<tr>\n<td><code>addressType</code></td>\n<td>string</td>\n<td>Não</td>\n<td><code>RESIDENTIAL</code> ou <code>BUSINESS</code>. Não diferencia maiúsculas.</td>\n</tr>\n<tr>\n<td><code>farmerStateRegistration</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Inscrição estadual de produtor rural.</td>\n</tr>\n<tr>\n<td><code>principal</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Marca o endereço como principal.</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Nome do endereço.</td>\n</tr>\n<tr>\n<td><code>lat</code> · <code>lng</code></td>\n<td>number</td>\n<td>Não</td>\n<td>Coordenadas. Só aceitas se a sua loja tiver a funcionalidade de latitude/longitude habilitada.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"customerregistrationaddress-e-addresslist-guardam-coisas-diferentes\"><code>customerRegistrationAddress</code> e <code>addressList</code> guardam coisas diferentes</h4>\n<p>Os dois são endereço, mas vão para lugares distintos e <strong>enviar só um tem efeitos diferentes</strong>:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>O que você envia</th>\n<th>O que o cliente recebe</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Só <code>customerRegistrationAddress</code></td>\n<td>Endereço de cadastro preenchido, e <strong>nenhum endereço de entrega</strong> — a lista fica vazia.</td>\n</tr>\n<tr>\n<td>Só <code>addressList</code>, com um item <code>principal: true</code></td>\n<td>Os endereços de entrega da lista, e o endereço de cadastro <strong>copiado do item principal</strong>.</td>\n</tr>\n<tr>\n<td>Os dois</td>\n<td>Os endereços de entrega da lista e o endereço de cadastro que você informou.</td>\n</tr>\n<tr>\n<td>Só <code>addressList</code> sem nenhum <code>principal: true</code></td>\n<td><strong>Recusado</strong> — não há endereço de cadastro a determinar.</td>\n</tr>\n<tr>\n<td>Nenhum dos dois</td>\n<td><strong>Recusado.</strong></td>\n</tr>\n</tbody>\n</table>\n</div><p>A recusa é <code>Property [address] with value [] does not pass validation</code>.</p>\n<h4 id=\"o-cep-manda-no-endereço\">O CEP manda no endereço</h4>\n<p>O endereço é resolvido pelos Correios a partir do <code>zipcode</code>, e <strong>o que os Correios devolvem substitui o que você enviou</strong> em <code>street</code>, <code>quarter</code>, <code>city</code> e <code>state</code>. Do seu payload sobrevivem apenas <strong><code>number</code> e <code>complement</code></strong> — que os Correios não têm.</p>\n<p>Os campos que você envia funcionam como <strong>reserva</strong>: cada um é usado só quando os Correios não trazem aquele dado para o CEP. Depois do merge, <code>street</code> e <code>quarter</code> não podem ficar vazios — se ficarem, a criação é recusada.</p>\n<p>CEP não encontrado também é recusado, a menos que a sua loja tenha a validação de CEP desabilitada.</p>\n<h4 id=\"addresstype-inválido-não-é-recusado\"><code>addressType</code> inválido não é recusado</h4>\n<p>Um valor fora de <code>RESIDENTIAL</code>/<code>BUSINESS</code> cai no padrão <code>RESIDENTIAL</code>, sem erro.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>O cliente criado, <strong>na raiz</strong> (sem o envelope <code>customer</code>). O código é <strong>200</strong>, não 201.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Id do cliente na CWS.</td>\n</tr>\n<tr>\n<td><code>document</code></td>\n<td>string</td>\n<td>CPF ou CNPJ do cliente.</td>\n</tr>\n<tr>\n<td><code>documentType</code></td>\n<td>string</td>\n<td><code>pf</code> ou <code>pj</code>.</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>string</td>\n<td>Nome ou razão social.</td>\n</tr>\n<tr>\n<td><code>tradingName</code></td>\n<td>string</td>\n<td>Nome fantasia.</td>\n</tr>\n<tr>\n<td><code>contactName</code></td>\n<td>string</td>\n<td>Nome do contato.</td>\n</tr>\n<tr>\n<td><code>email</code></td>\n<td>string</td>\n<td>E-mail de acesso do cliente.</td>\n</tr>\n<tr>\n<td><code>phone</code></td>\n<td>string</td>\n<td>Telefone, já formatado (<code>(31) 99999-9999</code>).</td>\n</tr>\n<tr>\n<td><code>dateCreated</code></td>\n<td>string</td>\n<td>Data e hora do cadastro.</td>\n</tr>\n<tr>\n<td><code>active</code></td>\n<td>boolean</td>\n<td>Se o cliente está ativo.</td>\n</tr>\n<tr>\n<td><code>passwordExpired</code></td>\n<td>boolean</td>\n<td>Se a senha está marcada como expirada.</td>\n</tr>\n<tr>\n<td><code>stateRegistration</code></td>\n<td>string</td>\n<td>Inscrição estadual. Vem <code>\"isento\"</code> quando não informada.</td>\n</tr>\n<tr>\n<td><code>cnae</code></td>\n<td>string</td>\n<td>CNAE do cliente.</td>\n</tr>\n<tr>\n<td><code>paysIcms</code></td>\n<td>boolean</td>\n<td>Se é contribuinte de ICMS.</td>\n</tr>\n<tr>\n<td><code>genre</code></td>\n<td>string</td>\n<td>Gênero.</td>\n</tr>\n<tr>\n<td><code>birthdate</code></td>\n<td>string</td>\n<td>Data de nascimento.</td>\n</tr>\n<tr>\n<td><code>politicallyExposedPerson</code></td>\n<td>boolean</td>\n<td>Se é pessoa politicamente exposta.</td>\n</tr>\n<tr>\n<td><code>federalEmployee</code></td>\n<td>boolean</td>\n<td>Se é servidor público federal.</td>\n</tr>\n<tr>\n<td><code>optinTracking</code></td>\n<td>boolean</td>\n<td>Se aceita acompanhamento por mensagem.</td>\n</tr>\n<tr>\n<td><code>trackingPhone</code></td>\n<td>string</td>\n<td>Telefone do acompanhamento.</td>\n</tr>\n<tr>\n<td><code>optinPath</code></td>\n<td>string</td>\n<td>Origem do consentimento.</td>\n</tr>\n<tr>\n<td><code>address</code></td>\n<td>array</td>\n<td>Endereços do cliente, no mesmo formato de <code>GET /customer/addresses/:document</code>.</td>\n</tr>\n<tr>\n<td><code>customerRegistrationAddress</code></td>\n<td>objeto</td>\n<td>Endereço de cadastro.</td>\n</tr>\n<tr>\n<td><code>priceRuleTag</code></td>\n<td>array</td>\n<td>Tags de preço do cliente. <strong>Vem <code>null</code> quando não há vínculo.</strong></td>\n</tr>\n<tr>\n<td><code>customerTypeList</code></td>\n<td>array</td>\n<td>Tipos de cliente vinculados. <strong><code>null</code> quando não há vínculo.</strong></td>\n</tr>\n<tr>\n<td><code>customerGroupList</code></td>\n<td>array</td>\n<td>Grupos de cliente vinculados. <strong><code>null</code> quando não há vínculo.</strong></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>422</td>\n<td>Falha de validação: <code>{\"status\":\"UNPROCESSABLE_ENTITY\",\"message\":\"Property [campo] with value [x] does not pass validation\"}</code>. A mensagem nomeia o campo recusado — <code>documentType</code>, <code>username</code>, <code>document</code>, <code>phone</code>, <code>password</code>, <code>ssoConfigId</code> ou <code>address</code>.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Corpo não parseável, ou <strong>e-mail ou documento já cadastrado</strong> na sua loja.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["v1","customer"],"host":["https://ws.autorei.net"],"query":[],"variable":[]}},"response":[{"id":"68c5400c-6180-4fc4-9547-70a61a6adaa1","name":"Sucesso — pessoa física","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"documentType\": \"cpf\",\n  \"document\": \"70041364856\",\n  \"username\": \"ana.ribeiro@exemplo.com.br\",\n  \"name\": \"Ana Paula Ribeiro\",\n  \"contactName\": \"Ana Paula Ribeiro\",\n  \"phone\": \"11987654321\",\n  \"password\": \"sua-senha\",\n  \"optinTracking\": true,\n  \"trackingPhone\": \"11987654321\",\n  \"customerRegistrationAddress\": {\n    \"zipcode\": \"01310-100\",\n    \"street\": \"Avenida Paulista\",\n    \"number\": \"1578\",\n    \"complement\": \"Conjunto 42\",\n    \"quarter\": \"Bela Vista\",\n    \"city\": \"São Paulo\",\n    \"state\": \"SP\",\n    \"addressType\": \"RESIDENTIAL\",\n    \"principal\": true\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/v1/customer"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": 4470601,\n  \"document\": \"700.413.648-56\",\n  \"documentType\": \"pf\",\n  \"name\": \"Ana Paula Ribeiro\",\n  \"tradingName\": null,\n  \"contactName\": \"Ana Paula Ribeiro\",\n  \"email\": \"ana.ribeiro@exemplo.com.br\",\n  \"phone\": \"(11) 98765-4321\",\n  \"dateCreated\": \"2026-09-01T13:42:07Z\",\n  \"active\": true,\n  \"passwordExpired\": false,\n  \"stateRegistration\": \"isento\",\n  \"cnae\": null,\n  \"paysIcms\": false,\n  \"genre\": \"F\",\n  \"birthdate\": \"1988-04-12\",\n  \"politicallyExposedPerson\": false,\n  \"federalEmployee\": false,\n  \"optinTracking\": true,\n  \"trackingPhone\": \"(11) 98765-4321\",\n  \"optinPath\": \"API\",\n  \"address\": [\n    {\n      \"id\": 4470701,\n      \"name\": \"Endereço de cadastro\",\n      \"zipcode\": \"01310-100\",\n      \"street\": \"Avenida Paulista\",\n      \"number\": \"1578\",\n      \"complement\": \"Conjunto 42\",\n      \"quarter\": \"Bela Vista\",\n      \"city\": \"São Paulo\",\n      \"state\": \"SP\",\n      \"principal\": true,\n      \"addressType\": \"RESIDENTIAL\",\n      \"farmerStateRegistration\": null,\n      \"howToReachLocationDescription\": null,\n      \"responsibleContact\": null,\n      \"attributes\": {},\n      \"dateCreated\": \"2026-09-01T13:42:07Z\",\n      \"lastUpdated\": \"2026-09-01T13:42:07Z\"\n    }\n  ],\n  \"customerRegistrationAddress\": {\n    \"id\": 4470701,\n    \"name\": \"Endereço de cadastro\",\n    \"zipcode\": \"01310-100\",\n    \"street\": \"Avenida Paulista\",\n    \"number\": \"1578\",\n    \"complement\": \"Conjunto 42\",\n    \"quarter\": \"Bela Vista\",\n    \"city\": \"São Paulo\",\n    \"state\": \"SP\",\n    \"principal\": true,\n    \"addressType\": \"RESIDENTIAL\",\n    \"farmerStateRegistration\": null,\n    \"howToReachLocationDescription\": null,\n    \"responsibleContact\": null,\n    \"attributes\": {},\n    \"dateCreated\": \"2026-09-01T13:42:07Z\",\n    \"lastUpdated\": \"2026-09-01T13:42:07Z\"\n  },\n  \"priceRuleTag\": null,\n  \"customerTypeList\": null,\n  \"customerGroupList\": null\n}"},{"id":"e0346511-b359-4de2-97fc-7bb8a06fea40","name":"Sucesso — pessoa jurídica","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"documentType\": \"cnpj\",\n  \"document\": \"29893264000101\",\n  \"username\": \"compras@auroradistribuidora.com.br\",\n  \"name\": \"Comercial Aurora Ltda\",\n  \"tradingName\": \"Aurora Distribuidora\",\n  \"contactName\": \"Marcos Aurélio\",\n  \"phone\": \"11987654321\",\n  \"password\": \"sua-senha\",\n  \"stateRegistration\": \"123456789\",\n  \"cnae\": \"4530703\",\n  \"paysIcms\": true,\n  \"customerRegistrationAddress\": {\n    \"zipcode\": \"01310-100\",\n    \"street\": \"Avenida Paulista\",\n    \"number\": \"1578\",\n    \"complement\": \"Conjunto 42\",\n    \"quarter\": \"Bela Vista\",\n    \"city\": \"São Paulo\",\n    \"state\": \"SP\",\n    \"addressType\": \"BUSINESS\",\n    \"principal\": true\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/v1/customer"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": 4470602,\n  \"document\": \"29.893.264/0001-01\",\n  \"documentType\": \"pj\",\n  \"name\": \"Comercial Aurora Ltda\",\n  \"tradingName\": \"Aurora Distribuidora\",\n  \"contactName\": \"Marcos Aurélio\",\n  \"email\": \"compras@auroradistribuidora.com.br\",\n  \"phone\": \"(11) 98765-4321\",\n  \"dateCreated\": \"2026-09-01T13:42:07Z\",\n  \"active\": true,\n  \"passwordExpired\": false,\n  \"stateRegistration\": \"123456789\",\n  \"cnae\": \"4530703\",\n  \"paysIcms\": true,\n  \"genre\": null,\n  \"birthdate\": null,\n  \"politicallyExposedPerson\": false,\n  \"federalEmployee\": false,\n  \"optinTracking\": true,\n  \"trackingPhone\": \"(11) 98765-4321\",\n  \"optinPath\": \"API\",\n  \"address\": [\n    {\n      \"id\": 4470701,\n      \"name\": \"Endereço de cadastro\",\n      \"zipcode\": \"01310-100\",\n      \"street\": \"Avenida Paulista\",\n      \"number\": \"1578\",\n      \"complement\": \"Conjunto 42\",\n      \"quarter\": \"Bela Vista\",\n      \"city\": \"São Paulo\",\n      \"state\": \"SP\",\n      \"principal\": true,\n      \"addressType\": \"RESIDENTIAL\",\n      \"farmerStateRegistration\": null,\n      \"howToReachLocationDescription\": null,\n      \"responsibleContact\": null,\n      \"attributes\": {},\n      \"dateCreated\": \"2026-09-01T13:42:07Z\",\n      \"lastUpdated\": \"2026-09-01T13:42:07Z\"\n    }\n  ],\n  \"customerRegistrationAddress\": {\n    \"id\": 4470701,\n    \"name\": \"Endereço de cadastro\",\n    \"zipcode\": \"01310-100\",\n    \"street\": \"Avenida Paulista\",\n    \"number\": \"1578\",\n    \"complement\": \"Conjunto 42\",\n    \"quarter\": \"Bela Vista\",\n    \"city\": \"São Paulo\",\n    \"state\": \"SP\",\n    \"principal\": true,\n    \"addressType\": \"RESIDENTIAL\",\n    \"farmerStateRegistration\": null,\n    \"howToReachLocationDescription\": null,\n    \"responsibleContact\": null,\n    \"attributes\": {},\n    \"dateCreated\": \"2026-09-01T13:42:07Z\",\n    \"lastUpdated\": \"2026-09-01T13:42:07Z\"\n  },\n  \"priceRuleTag\": null,\n  \"customerTypeList\": null,\n  \"customerGroupList\": null\n}"}],"_postman_id":"ad6c8095-bfe2-4b49-b0ec-8e0c4c68798c"},{"name":"Atualizar Dados Cadastrais do Cliente","id":"cce1c430-b548-4a62-a6c5-4c01866e6efa","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"contactName\": \"Ana Paula Ribeiro\",\n  \"phone\": \"11912345678\",\n  \"optinTracking\": false\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/v1/customer/:document","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Atualiza o cadastro de um cliente da sua loja. É uma atualização <strong>parcial</strong>: envie só os campos que quer mudar.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>document</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>CPF ou CNPJ do cliente.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"corpo-da-requisição-json\">Corpo da Requisição (JSON)</h3>\n<p>Todos os campos são opcionais — <strong>campo omitido não é alterado</strong>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>name</code> · <code>tradingName</code> · <code>contactName</code></td>\n<td>string</td>\n<td>Nome, nome fantasia e contato.</td>\n</tr>\n<tr>\n<td><code>phone</code></td>\n<td>string</td>\n<td>Telefone do cliente.</td>\n</tr>\n<tr>\n<td><code>stateRegistration</code></td>\n<td>string</td>\n<td>Inscrição estadual.</td>\n</tr>\n<tr>\n<td><code>cnae</code></td>\n<td>string</td>\n<td>CNAE do cliente.</td>\n</tr>\n<tr>\n<td><code>paysIcms</code></td>\n<td>boolean</td>\n<td>Se é contribuinte de ICMS.</td>\n</tr>\n<tr>\n<td><code>politicallyExposedPerson</code> · <code>federalEmployee</code></td>\n<td>boolean</td>\n<td>Marcações de perfil.</td>\n</tr>\n<tr>\n<td><code>optinTracking</code> · <code>trackingPhone</code></td>\n<td>—</td>\n<td>Aceite e telefone do acompanhamento.</td>\n</tr>\n<tr>\n<td><code>active</code></td>\n<td>boolean</td>\n<td>Ativa ou inativa o cliente.</td>\n</tr>\n<tr>\n<td><code>passwordExpired</code></td>\n<td>boolean</td>\n<td>Marca a senha como expirada.</td>\n</tr>\n<tr>\n<td><code>sendEmailForgotPassword</code></td>\n<td>boolean</td>\n<td><code>true</code> dispara o e-mail de redefinição de senha ao cliente.</td>\n</tr>\n<tr>\n<td><code>ssoConfigId</code></td>\n<td>integer</td>\n<td>Configuração de SSO.</td>\n</tr>\n<tr>\n<td><code>customerRegistrationAddress</code></td>\n<td>objeto</td>\n<td>Endereço de cadastro, no mesmo formato da criação.</td>\n</tr>\n<tr>\n<td><code>priceRuleTags</code></td>\n<td>array</td>\n<td>Tags de preço, por nome. Substitui os vínculos atuais.</td>\n</tr>\n<tr>\n<td><code>customerTypeList</code></td>\n<td>array</td>\n<td>Tipos de cliente. Substitui os vínculos atuais.</td>\n</tr>\n<tr>\n<td><code>customerGroupList</code></td>\n<td>array</td>\n<td>Grupos de cliente. Substitui os vínculos atuais.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"active-aqui-faz-o-mesmo-que-o-endpoint-de-status\"><code>active</code> aqui faz o mesmo que o endpoint de status</h4>\n<p>Enviar <code>active</code> nesta rota tem o mesmo efeito de <code>PUT /customer/updateStatus/:document/:active</code>. Os dois caminhos existem e mudam a mesma coisa.</p>\n<h4 id=\"corpo-vazio-é-aceito\">Corpo vazio é aceito</h4>\n<p><code>{}</code> responde <strong>200</strong> com o cadastro atual, sem alterar nada. Não é erro.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>O cliente atualizado, <strong>na raiz</strong> (sem o envelope <code>customer</code>).</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Id do cliente na CWS.</td>\n</tr>\n<tr>\n<td><code>document</code></td>\n<td>string</td>\n<td>CPF ou CNPJ do cliente.</td>\n</tr>\n<tr>\n<td><code>documentType</code></td>\n<td>string</td>\n<td><code>pf</code> ou <code>pj</code>.</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>string</td>\n<td>Nome ou razão social.</td>\n</tr>\n<tr>\n<td><code>tradingName</code></td>\n<td>string</td>\n<td>Nome fantasia.</td>\n</tr>\n<tr>\n<td><code>contactName</code></td>\n<td>string</td>\n<td>Nome do contato.</td>\n</tr>\n<tr>\n<td><code>email</code></td>\n<td>string</td>\n<td>E-mail de acesso do cliente.</td>\n</tr>\n<tr>\n<td><code>phone</code></td>\n<td>string</td>\n<td>Telefone, já formatado (<code>(31) 99999-9999</code>).</td>\n</tr>\n<tr>\n<td><code>dateCreated</code></td>\n<td>string</td>\n<td>Data e hora do cadastro.</td>\n</tr>\n<tr>\n<td><code>active</code></td>\n<td>boolean</td>\n<td>Se o cliente está ativo.</td>\n</tr>\n<tr>\n<td><code>passwordExpired</code></td>\n<td>boolean</td>\n<td>Se a senha está marcada como expirada.</td>\n</tr>\n<tr>\n<td><code>stateRegistration</code></td>\n<td>string</td>\n<td>Inscrição estadual. Vem <code>\"isento\"</code> quando não informada.</td>\n</tr>\n<tr>\n<td><code>cnae</code></td>\n<td>string</td>\n<td>CNAE do cliente.</td>\n</tr>\n<tr>\n<td><code>paysIcms</code></td>\n<td>boolean</td>\n<td>Se é contribuinte de ICMS.</td>\n</tr>\n<tr>\n<td><code>genre</code></td>\n<td>string</td>\n<td>Gênero.</td>\n</tr>\n<tr>\n<td><code>birthdate</code></td>\n<td>string</td>\n<td>Data de nascimento.</td>\n</tr>\n<tr>\n<td><code>politicallyExposedPerson</code></td>\n<td>boolean</td>\n<td>Se é pessoa politicamente exposta.</td>\n</tr>\n<tr>\n<td><code>federalEmployee</code></td>\n<td>boolean</td>\n<td>Se é servidor público federal.</td>\n</tr>\n<tr>\n<td><code>optinTracking</code></td>\n<td>boolean</td>\n<td>Se aceita acompanhamento por mensagem.</td>\n</tr>\n<tr>\n<td><code>trackingPhone</code></td>\n<td>string</td>\n<td>Telefone do acompanhamento.</td>\n</tr>\n<tr>\n<td><code>optinPath</code></td>\n<td>string</td>\n<td>Origem do consentimento.</td>\n</tr>\n<tr>\n<td><code>address</code></td>\n<td>array</td>\n<td>Endereços do cliente, no mesmo formato de <code>GET /customer/addresses/:document</code>.</td>\n</tr>\n<tr>\n<td><code>customerRegistrationAddress</code></td>\n<td>objeto</td>\n<td>Endereço de cadastro.</td>\n</tr>\n<tr>\n<td><code>priceRuleTag</code></td>\n<td>array</td>\n<td>Tags de preço do cliente. <strong>Vem <code>null</code> quando não há vínculo.</strong></td>\n</tr>\n<tr>\n<td><code>customerTypeList</code></td>\n<td>array</td>\n<td>Tipos de cliente vinculados. <strong><code>null</code> quando não há vínculo.</strong></td>\n</tr>\n<tr>\n<td><code>customerGroupList</code></td>\n<td>array</td>\n<td>Grupos de cliente vinculados. <strong><code>null</code> quando não há vínculo.</strong></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>422</td>\n<td>Falha de validação, no formato <code>Property [campo] with value [x] does not pass validation</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>Documento sem cadastro na sua loja.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["v1","customer",":document"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"70041364856","key":"document"}]}},"response":[{"id":"f0c229a3-2c5f-4797-943d-10dc7410b90b","name":"Sucesso — telefone e aceite atualizados","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"contactName\": \"Ana Paula Ribeiro\",\n  \"phone\": \"11912345678\",\n  \"optinTracking\": false\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/v1/customer/70041364856"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": 4470601,\n  \"document\": \"700.413.648-56\",\n  \"documentType\": \"pf\",\n  \"name\": \"Ana Paula Ribeiro\",\n  \"tradingName\": null,\n  \"contactName\": \"Ana Paula Ribeiro\",\n  \"email\": \"ana.ribeiro@exemplo.com.br\",\n  \"phone\": \"(11) 91234-5678\",\n  \"dateCreated\": \"2026-09-01T13:42:07Z\",\n  \"active\": true,\n  \"passwordExpired\": false,\n  \"stateRegistration\": \"isento\",\n  \"cnae\": null,\n  \"paysIcms\": false,\n  \"genre\": \"F\",\n  \"birthdate\": \"1988-04-12\",\n  \"politicallyExposedPerson\": false,\n  \"federalEmployee\": false,\n  \"optinTracking\": false,\n  \"trackingPhone\": \"(11) 98765-4321\",\n  \"optinPath\": \"API\",\n  \"address\": [\n    {\n      \"id\": 4470701,\n      \"name\": \"Endereço de cadastro\",\n      \"zipcode\": \"01310-100\",\n      \"street\": \"Avenida Paulista\",\n      \"number\": \"1578\",\n      \"complement\": \"Conjunto 42\",\n      \"quarter\": \"Bela Vista\",\n      \"city\": \"São Paulo\",\n      \"state\": \"SP\",\n      \"principal\": true,\n      \"addressType\": \"RESIDENTIAL\",\n      \"farmerStateRegistration\": null,\n      \"howToReachLocationDescription\": null,\n      \"responsibleContact\": null,\n      \"attributes\": {},\n      \"dateCreated\": \"2026-09-01T13:42:07Z\",\n      \"lastUpdated\": \"2026-09-01T13:42:07Z\"\n    }\n  ],\n  \"customerRegistrationAddress\": {\n    \"id\": 4470701,\n    \"name\": \"Endereço de cadastro\",\n    \"zipcode\": \"01310-100\",\n    \"street\": \"Avenida Paulista\",\n    \"number\": \"1578\",\n    \"complement\": \"Conjunto 42\",\n    \"quarter\": \"Bela Vista\",\n    \"city\": \"São Paulo\",\n    \"state\": \"SP\",\n    \"principal\": true,\n    \"addressType\": \"RESIDENTIAL\",\n    \"farmerStateRegistration\": null,\n    \"howToReachLocationDescription\": null,\n    \"responsibleContact\": null,\n    \"attributes\": {},\n    \"dateCreated\": \"2026-09-01T13:42:07Z\",\n    \"lastUpdated\": \"2026-09-01T13:42:07Z\"\n  },\n  \"priceRuleTag\": null,\n  \"customerTypeList\": null,\n  \"customerGroupList\": null\n}"}],"_postman_id":"cce1c430-b548-4a62-a6c5-4c01866e6efa"},{"name":"Ativar ou Inativar Cliente","id":"faa8800d-c83f-4d6e-8acf-8f747bee95ad","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[],"url":"https://ws.autorei.net/customer/updateStatus/:document/:active","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Ativa ou inativa um cliente da sua loja. Cliente inativo não acessa a loja nem finaliza compra.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>document</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>CPF ou CNPJ do cliente.</td>\n</tr>\n<tr>\n<td><code>active</code></td>\n<td>string</td>\n<td>Sim</td>\n<td><code>true</code> ativa, <code>false</code> inativa. Apenas esses dois valores.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"resposta-·-202\">Resposta · 202</h3>\n<p><strong>202 Accepted.</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>status</code></td>\n<td>string</td>\n<td><code>ACCEPTED</code>.</td>\n</tr>\n<tr>\n<td><code>message</code></td>\n<td>string</td>\n<td><code>Status do cliente atualizado com sucesso.</code></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td><code>active</code> fora de <code>true</code>/<code>false</code>. O corpo vem só com <code>{\"status\":\"BAD_REQUEST\"}</code>, sem mensagem.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>Documento sem cadastro na sua loja.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["customer","updateStatus",":document",":active"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"70041364856","key":"document"},{"type":"any","value":"false","key":"active"}]}},"response":[{"id":"87c34e71-36d9-40c6-a81f-8dacfee50450","name":"Sucesso — cliente inativado","originalRequest":{"method":"PUT","header":[],"url":"https://ws.autorei.net/customer/updateStatus/70041364856/false"},"status":"Accepted","code":202,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"ACCEPTED\",\n  \"message\": \"Status do cliente atualizado com sucesso.\"\n}"}],"_postman_id":"faa8800d-c83f-4d6e-8acf-8f747bee95ad"}],"id":"f64f7498-d59f-457b-80be-a5f40e95fe65","_postman_id":"f64f7498-d59f-457b-80be-a5f40e95fe65","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}}},{"name":"Endereços","item":[{"name":"Listar Endereços do Cliente","id":"633c4991-cd85-4f08-9df2-4f336691f39e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://ws.autorei.net/customer/addresses/:document","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Lista os endereços de um cliente da sua loja.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>document</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>CPF ou CNPJ do cliente.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>Array com um objeto por endereço. Vem <code>[]</code> quando o cliente não tem endereço.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Id do endereço. É o que a remoção pede.</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>string</td>\n<td>Nome do endereço.</td>\n</tr>\n<tr>\n<td><code>zipcode</code></td>\n<td>string</td>\n<td>CEP, formatado (<code>04543-000</code>).</td>\n</tr>\n<tr>\n<td><code>street</code> · <code>number</code> · <code>complement</code></td>\n<td>string</td>\n<td>Rua, número e complemento.</td>\n</tr>\n<tr>\n<td><code>quarter</code> · <code>city</code> · <code>state</code></td>\n<td>string</td>\n<td>Bairro, cidade e UF.</td>\n</tr>\n<tr>\n<td><code>principal</code></td>\n<td>boolean</td>\n<td>Se é o endereço principal do cliente.</td>\n</tr>\n<tr>\n<td><code>addressType</code></td>\n<td>string</td>\n<td><code>RESIDENTIAL</code> ou <code>BUSINESS</code>.</td>\n</tr>\n<tr>\n<td><code>farmerStateRegistration</code></td>\n<td>string</td>\n<td>Inscrição estadual de produtor rural. <code>null</code> quando não há.</td>\n</tr>\n<tr>\n<td><code>howToReachLocationDescription</code></td>\n<td>string</td>\n<td>Instruções de acesso ao local. <code>null</code> quando não há.</td>\n</tr>\n<tr>\n<td><code>responsibleContact</code></td>\n<td>string</td>\n<td>Contato responsável no endereço. <code>null</code> quando não há.</td>\n</tr>\n<tr>\n<td><code>attributes</code></td>\n<td>objeto</td>\n<td>Atributos personalizados do endereço. Vem <code>{}</code> quando não há.</td>\n</tr>\n<tr>\n<td><code>dateCreated</code> · <code>lastUpdated</code></td>\n<td>string</td>\n<td>Criação e última alteração, em UTC.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>Documento sem cadastro na sua loja.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["customer","addresses",":document"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"70041364856","key":"document"}]}},"response":[{"id":"a105a125-b877-4c2c-9828-6aceabb88ee8","name":"Sucesso — um endereço","originalRequest":{"method":"GET","header":[],"url":"https://ws.autorei.net/customer/addresses/70041364856"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"id\": 4470701,\n    \"name\": \"Endereço de cadastro\",\n    \"zipcode\": \"01310-100\",\n    \"street\": \"Avenida Paulista\",\n    \"number\": \"1578\",\n    \"complement\": \"Conjunto 42\",\n    \"quarter\": \"Bela Vista\",\n    \"city\": \"São Paulo\",\n    \"state\": \"SP\",\n    \"principal\": true,\n    \"addressType\": \"RESIDENTIAL\",\n    \"farmerStateRegistration\": null,\n    \"howToReachLocationDescription\": null,\n    \"responsibleContact\": null,\n    \"attributes\": {},\n    \"dateCreated\": \"2026-09-01T13:42:07Z\",\n    \"lastUpdated\": \"2026-09-01T13:42:07Z\"\n  }\n]"}],"_postman_id":"633c4991-cd85-4f08-9df2-4f336691f39e"},{"name":"Adicionar Endereço ao Cliente","id":"977c03ae-36f2-4749-bc64-5758faf151f6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Escritório\",\n  \"zipcode\": \"01310-100\",\n  \"street\": \"Avenida Paulista\",\n  \"number\": \"2000\",\n  \"complement\": \"12º andar\",\n  \"quarter\": \"Bela Vista\",\n  \"city\": \"São Paulo\",\n  \"state\": \"SP\",\n  \"addressType\": \"BUSINESS\",\n  \"principal\": false,\n  \"howToReachLocationDescription\": \"Entrada pela portaria B\",\n  \"responsibleContact\": \"Marcos Aurélio\"\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/customer/:document/address","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Acrescenta um endereço ao cadastro de um cliente da sua loja.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>document</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>CPF ou CNPJ do cliente.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"corpo-da-requisição-json\">Corpo da Requisição (JSON)</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>name</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>Nome do endereço. Não pode ser nulo.</td>\n</tr>\n<tr>\n<td><code>zipcode</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>CEP do endereço. É o que resolve rua e bairro — ver a regra dos Correios.</td>\n</tr>\n<tr>\n<td><code>number</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>Número.</td>\n</tr>\n<tr>\n<td><code>complement</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Complemento.</td>\n</tr>\n<tr>\n<td><code>street</code></td>\n<td>string</td>\n<td>Condicional</td>\n<td>Rua. Ver a regra dos Correios.</td>\n</tr>\n<tr>\n<td><code>quarter</code></td>\n<td>string</td>\n<td>Condicional</td>\n<td>Bairro. Ver a regra dos Correios.</td>\n</tr>\n<tr>\n<td><code>city</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Cidade.</td>\n</tr>\n<tr>\n<td><code>state</code></td>\n<td>string</td>\n<td>Não</td>\n<td>UF.</td>\n</tr>\n<tr>\n<td><code>addressType</code></td>\n<td>string</td>\n<td>Não</td>\n<td><code>RESIDENTIAL</code> ou <code>BUSINESS</code>. Não diferencia maiúsculas.</td>\n</tr>\n<tr>\n<td><code>farmerStateRegistration</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Inscrição estadual de produtor rural.</td>\n</tr>\n<tr>\n<td><code>principal</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Marca o endereço como principal.</td>\n</tr>\n<tr>\n<td><code>howToReachLocationDescription</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Instruções de acesso ao local.</td>\n</tr>\n<tr>\n<td><code>responsibleContact</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Contato responsável no endereço.</td>\n</tr>\n<tr>\n<td><code>enabled</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Endereço ativo. Ausente vale <code>true</code>.</td>\n</tr>\n<tr>\n<td><code>addressAttributes</code></td>\n<td>array</td>\n<td>Não</td>\n<td>Atributos personalizados. Cada um precisa existir na configuração da sua loja.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"o-cep-manda-no-endereço\">O CEP manda no endereço</h4>\n<p>O endereço é resolvido pelos Correios a partir do <code>zipcode</code>, e <strong>o que os Correios devolvem substitui o que você enviou</strong> em <code>street</code>, <code>quarter</code>, <code>city</code> e <code>state</code>. Do seu payload sobrevivem apenas <strong><code>number</code> e <code>complement</code></strong>.</p>\n<p>Os campos que você envia funcionam como <strong>reserva</strong>: cada um é usado só quando os Correios não trazem aquele dado para o CEP. Depois do merge, <code>street</code> e <code>quarter</code> não podem ficar vazios — se ficarem, o endereço é recusado.</p>\n<p>CEP não encontrado também é recusado, a menos que a sua loja tenha a validação de CEP desabilitada.</p>\n<h4 id=\"addresstype-só-aceita-dois-valores\"><code>addressType</code> só aceita dois valores</h4>\n<p><code>RESIDENTIAL</code> ou <code>BUSINESS</code>, em qualquer caixa. Qualquer outro valor é <strong>recusado</strong> com <code>Property addressType is type-mismatched</code>.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>O endereço criado. O código é <strong>200</strong>, não 201.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Id do endereço. É o que a remoção pede.</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>string</td>\n<td>Nome do endereço.</td>\n</tr>\n<tr>\n<td><code>zipcode</code></td>\n<td>string</td>\n<td>CEP, formatado (<code>04543-000</code>).</td>\n</tr>\n<tr>\n<td><code>street</code> · <code>number</code> · <code>complement</code></td>\n<td>string</td>\n<td>Rua, número e complemento.</td>\n</tr>\n<tr>\n<td><code>quarter</code> · <code>city</code> · <code>state</code></td>\n<td>string</td>\n<td>Bairro, cidade e UF.</td>\n</tr>\n<tr>\n<td><code>principal</code></td>\n<td>boolean</td>\n<td>Se é o endereço principal do cliente.</td>\n</tr>\n<tr>\n<td><code>addressType</code></td>\n<td>string</td>\n<td><code>RESIDENTIAL</code> ou <code>BUSINESS</code>.</td>\n</tr>\n<tr>\n<td><code>farmerStateRegistration</code></td>\n<td>string</td>\n<td>Inscrição estadual de produtor rural. <code>null</code> quando não há.</td>\n</tr>\n<tr>\n<td><code>howToReachLocationDescription</code></td>\n<td>string</td>\n<td>Instruções de acesso ao local. <code>null</code> quando não há.</td>\n</tr>\n<tr>\n<td><code>responsibleContact</code></td>\n<td>string</td>\n<td>Contato responsável no endereço. <code>null</code> quando não há.</td>\n</tr>\n<tr>\n<td><code>attributes</code></td>\n<td>objeto</td>\n<td>Atributos personalizados do endereço. Vem <code>{}</code> quando não há.</td>\n</tr>\n<tr>\n<td><code>dateCreated</code> · <code>lastUpdated</code></td>\n<td>string</td>\n<td>Criação e última alteração, em UTC.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td><code>name</code> ausente (<code>O nome do endereço (name) não pode ser nulo</code>), <code>addressType</code> fora dos dois valores, ou <code>addressAttributes</code> com atributo que não existe na configuração da sua loja.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>Documento sem cadastro na sua loja.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["customer",":document","address"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"70041364856","key":"document"}]}},"response":[{"id":"f2d90e6f-3f19-4ff8-b3b1-5cf836853fc2","name":"Sucesso — endereço acrescentado","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Escritório\",\n  \"zipcode\": \"01310-100\",\n  \"street\": \"Avenida Paulista\",\n  \"number\": \"2000\",\n  \"complement\": \"12º andar\",\n  \"quarter\": \"Bela Vista\",\n  \"city\": \"São Paulo\",\n  \"state\": \"SP\",\n  \"addressType\": \"BUSINESS\",\n  \"principal\": false,\n  \"howToReachLocationDescription\": \"Entrada pela portaria B\",\n  \"responsibleContact\": \"Marcos Aurélio\"\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/customer/70041364856/address"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": 4470702,\n  \"name\": \"Escritório\",\n  \"zipcode\": \"01310-100\",\n  \"street\": \"Avenida Paulista\",\n  \"number\": \"2000\",\n  \"complement\": \"12º andar\",\n  \"quarter\": \"Bela Vista\",\n  \"city\": \"São Paulo\",\n  \"state\": \"SP\",\n  \"principal\": false,\n  \"addressType\": \"BUSINESS\",\n  \"farmerStateRegistration\": null,\n  \"howToReachLocationDescription\": \"Entrada pela portaria B\",\n  \"responsibleContact\": \"Marcos Aurélio\",\n  \"attributes\": {},\n  \"dateCreated\": \"2026-09-01T13:42:07Z\",\n  \"lastUpdated\": \"2026-09-01T13:42:07Z\"\n}"}],"_postman_id":"977c03ae-36f2-4749-bc64-5758faf151f6"},{"name":"Remover Endereço do Cliente","id":"480beed6-6d8b-4712-8f3c-a4a2692958ff","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"https://ws.autorei.net/customer/:document/address/:addressId","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Remove um endereço do cadastro de um cliente da sua loja.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>document</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>CPF ou CNPJ do cliente.</td>\n</tr>\n<tr>\n<td><code>addressId</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id do endereço, como veio em <code>id</code> na listagem de endereços.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>status</code></td>\n<td>string</td>\n<td><code>OK</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td><code>{\"status\":\"NOT_FOUND\",\"message\":\"Endereço não encontrado para o cliente informado\"}</code> — o endereço não existe ou não é desse cliente.</td>\n</tr>\n<tr>\n<td>404</td>\n<td><code>{\"status\":\"NOT_FOUND\",\"message\":\"Cliente não encontrado\"}</code> — documento sem cadastro na sua loja.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["customer",":document","address",":addressId"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"70041364856","key":"document"},{"type":"any","value":"4470702","key":"addressId"}]}},"response":[{"id":"e88fb6c6-27a4-44e1-be3e-321bf74823e4","name":"Sucesso — endereço removido","originalRequest":{"method":"DELETE","header":[],"url":"https://ws.autorei.net/customer/70041364856/address/4470702"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"OK\"\n}"}],"_postman_id":"480beed6-6d8b-4712-8f3c-a4a2692958ff"},{"name":"Remover Todos os Endereços do Cliente","id":"595b64be-ac6c-4122-abfb-da1cec542701","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"https://ws.autorei.net/deleteAllCustomerAddress/:document","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Remove <strong>todos</strong> os endereços de um cliente da sua loja de uma vez.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>document</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>CPF ou CNPJ do cliente.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"a-remoção-não-se-desfaz\">A remoção não se desfaz</h4>\n<p>Não há endpoint para restaurar endereços removidos. O cliente fica sem endereço até que um novo seja cadastrado.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>status</code></td>\n<td>string</td>\n<td><code>ACCEPTED</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>Documento sem cadastro na sua loja.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["deleteAllCustomerAddress",":document"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"70041364856","key":"document"}]}},"response":[{"id":"938a9555-fb22-4a35-b303-81d7bf9794e2","name":"Sucesso — endereços removidos","originalRequest":{"method":"DELETE","header":[],"url":"https://ws.autorei.net/deleteAllCustomerAddress/70041364856"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"ACCEPTED\"\n}"}],"_postman_id":"595b64be-ac6c-4122-abfb-da1cec542701"}],"id":"1ab6d995-4651-4b4a-bf06-20a3a77b48bb","_postman_id":"1ab6d995-4651-4b4a-bf06-20a3a77b48bb","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}}},{"name":"Grupo de Clientes","item":[{"name":"Listar Grupos de Cliente","id":"106aefb1-a568-492b-886f-483f879b1ff7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": [\n    \"Atacado Sudeste\"\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/customer/group/byGroup","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Consulta grupos de cliente da sua loja por nome ou por id externo.</p>\n<h3 id=\"corpo-da-requisição-json\">Corpo da Requisição (JSON)</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Critério de busca</td>\n<td>—</td>\n<td>Sim</td>\n<td>Não é um campo — é um grupo. Envie <code>name</code> <strong>ou</strong> <code>externalId</code>.</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>array</td>\n<td>Condicional</td>\n<td>Nomes dos grupos.</td>\n</tr>\n<tr>\n<td><code>externalId</code></td>\n<td>array</td>\n<td>Condicional</td>\n<td>Ids externos dos grupos.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"os-critérios-são-arrays-sempre\">Os critérios são arrays, sempre</h4>\n<p><code>name</code> e <code>externalId</code> têm de ser <strong>arrays</strong>, mesmo para um único valor: <code>{\"name\": [\"Atacado\"]}</code>. Valor escalar é recusado.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>Objeto com a chave <code>groups</code> — array com um objeto por grupo encontrado. Sem correspondência, vem <code>{\"groups\": []}</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>internalId</code></td>\n<td>integer</td>\n<td>Id interno do grupo. É o que a exclusão pede.</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>string</td>\n<td>Nome do grupo.</td>\n</tr>\n<tr>\n<td><code>externalId</code></td>\n<td>string</td>\n<td>Id externo do grupo. <code>null</code> quando não informado.</td>\n</tr>\n<tr>\n<td><code>groupTypeId</code> · <code>groupTypeName</code></td>\n<td>string</td>\n<td>Tipo de grupo vinculado. <code>null</code> quando não há.</td>\n</tr>\n<tr>\n<td><code>details.showToSeller</code></td>\n<td>boolean</td>\n<td>Se o grupo aparece para o vendedor.</td>\n</tr>\n<tr>\n<td><code>details.enableGroupDisplayInRegistration</code></td>\n<td>boolean</td>\n<td>Se o grupo aparece no cadastro.</td>\n</tr>\n<tr>\n<td><code>details.enableGroupDisplayInMyAccount</code></td>\n<td>boolean</td>\n<td>Se o grupo aparece na conta do cliente.</td>\n</tr>\n<tr>\n<td><code>details.applicationGroupDocumentType</code></td>\n<td>string</td>\n<td>Tipo de documento a que o grupo se aplica: <code>all</code>, <code>pj</code>, <code>iepr</code> ou <code>pf</code>.</td>\n</tr>\n<tr>\n<td><code>details.restrictionDeliveryType</code></td>\n<td>string</td>\n<td>Restrição de entrega: <code>no_restriction</code>, <code>restrict_all_except_pickup_in_store</code>, <code>restrict_all_except_carrier</code> ou <code>restrict_all_except_deliveries</code>.</td>\n</tr>\n<tr>\n<td><code>details.restrictionPaymentType</code></td>\n<td>string</td>\n<td>Restrição de pagamento: <code>no_restriction</code>, <code>restrict_online_payment</code> ou <code>restrict_offline_payment</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Os três campos de <code>details</code> devolvem <strong>a mesma chave que você enviou na criação</strong> do grupo.</p>\n<h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td>Nenhum critério informado, critério escalar em vez de array, ou todos os arrays vazios. O motivo vem na mensagem.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["customer","group","byGroup"],"host":["https://ws.autorei.net"],"query":[],"variable":[]}},"response":[{"id":"2fbfb20f-d3aa-4731-8d8c-19fdd39b5cc5","name":"Sucesso — um grupo encontrado","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": [\n    \"Atacado Sudeste\"\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/customer/group/byGroup"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"groups\": [\n    {\n      \"internalId\": 4470801,\n      \"name\": \"Atacado Sudeste\",\n      \"externalId\": \"GRP-ATC-SE\",\n      \"groupTypeId\": null,\n      \"groupTypeName\": null,\n      \"details\": {\n        \"showToSeller\": true,\n        \"enableGroupDisplayInRegistration\": true,\n        \"enableGroupDisplayInMyAccount\": false,\n        \"applicationGroupDocumentType\": \"pj\",\n        \"restrictionDeliveryType\": \"no_restriction\",\n        \"restrictionPaymentType\": \"restrict_offline_payment\"\n      }\n    }\n  ]\n}"}],"_postman_id":"106aefb1-a568-492b-886f-483f879b1ff7"},{"name":"Criar Grupo de Clientes","id":"f289f8fb-7b9d-4bfe-b9f0-17edc548fbf2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Atacado Sudeste\",\n  \"externalId\": \"GRP-ATC-SE\",\n  \"showToSeller\": true,\n  \"enableGroupDisplayInRegistration\": true,\n  \"enableGroupDisplayInMyAccount\": false,\n  \"colorHexadecimal\": \"1F7A4D\",\n  \"applicationGroupDocumentType\": {\n    \"pj\": true\n  },\n  \"restrictionDeliveryType\": {\n    \"no_restriction\": true\n  },\n  \"restrictionPaymentType\": {\n    \"restrict_offline_payment\": true\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/customer/group","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Cria um grupo de clientes da sua loja. O grupo define a que tipo de documento se aplica e quais formas de entrega e de pagamento ficam restritas para quem estiver nele.</p>\n<h3 id=\"corpo-da-requisição-json\">Corpo da Requisição (JSON)</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>name</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>Nome do grupo. <strong>Único na sua loja.</strong></td>\n</tr>\n<tr>\n<td><code>enableGroupDisplayInRegistration</code></td>\n<td>boolean</td>\n<td>Sim</td>\n<td>Se o grupo aparece no cadastro do cliente.</td>\n</tr>\n<tr>\n<td><code>enableGroupDisplayInMyAccount</code></td>\n<td>boolean</td>\n<td>Sim</td>\n<td>Se o grupo aparece na conta do cliente.</td>\n</tr>\n<tr>\n<td><code>applicationGroupDocumentType</code></td>\n<td>objeto</td>\n<td>Sim</td>\n<td>A que tipo de documento o grupo se aplica. <strong>Exatamente uma chave <code>true</code></strong> — ver a regra.</td>\n</tr>\n<tr>\n<td><code>restrictionDeliveryType</code></td>\n<td>objeto</td>\n<td>Sim</td>\n<td>Restrição de entrega. <strong>Exatamente uma chave <code>true</code>.</strong></td>\n</tr>\n<tr>\n<td><code>restrictionPaymentType</code></td>\n<td>objeto</td>\n<td>Sim</td>\n<td>Restrição de pagamento. <strong>Exatamente uma chave <code>true</code>.</strong></td>\n</tr>\n<tr>\n<td><code>showToSeller</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Se o grupo aparece para o vendedor.</td>\n</tr>\n<tr>\n<td><code>externalId</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Id do grupo no seu sistema. Único na loja, <strong>máximo 20 caracteres</strong>.</td>\n</tr>\n<tr>\n<td><code>colorHexadecimal</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Cor do grupo em hexadecimal, <strong>sem <code>#</code></strong>: exatamente <strong>3, 6 ou 8</strong> caracteres, só <code>0-9</code> e <code>A-F</code>.</td>\n</tr>\n<tr>\n<td><code>groupTypeId</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Id externo de um <strong>tipo de grupo já cadastrado</strong> na sua loja. Máximo 20 caracteres.</td>\n</tr>\n<tr>\n<td><code>groupTypeName</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Nome de um <strong>tipo de grupo já cadastrado</strong> na sua loja. Máximo 70 caracteres.</td>\n</tr>\n<tr>\n<td><code>anonymousCustomer</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Marca o grupo como o de cliente anônimo. Só um por loja.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Chaves aceitas em cada um dos três objetos:</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Chaves</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>applicationGroupDocumentType</code></td>\n<td><code>all</code> · <code>pj</code> · <code>iepr</code> · <code>pf</code></td>\n</tr>\n<tr>\n<td><code>restrictionDeliveryType</code></td>\n<td><code>no_restriction</code> · <code>restrict_all_except_pickup_in_store</code> · <code>restrict_all_except_carrier</code> · <code>restrict_all_except_deliveries</code></td>\n</tr>\n<tr>\n<td><code>restrictionPaymentType</code></td>\n<td><code>no_restriction</code> · <code>restrict_online_payment</code> · <code>restrict_offline_payment</code></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"exatamente-uma-chave-true-em-cada-objeto\">Exatamente uma chave <code>true</code> em cada objeto</h4>\n<p>Nos três objetos, uma e só uma chave pode vir <code>true</code>. Nenhuma e mais de uma são recusadas, com mensagens diferentes — <code>Pelo menos uma das opções ... deve ser definida como true.</code> e <code>Somente uma das opções ... deve ser definida como true.</code></p>\n<h4 id=\"o-tipo-de-grupo-precisa-existir-antes\">O tipo de grupo precisa existir antes</h4>\n<p><code>groupTypeId</code> e <code>groupTypeName</code> não criam um tipo de grupo: eles <strong>referenciam</strong> um que já esteja cadastrado na sua loja. Valor sem correspondência é recusado com <code>Tipo Grupo de id X e name Y não cadastrado!</code>. Enviando os dois, os dois têm de apontar para o mesmo tipo.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>status</code></td>\n<td>string</td>\n<td><code>SUCCESS</code>.</td>\n</tr>\n<tr>\n<td><code>message</code></td>\n<td>string</td>\n<td>Confirmação da operação.</td>\n</tr>\n<tr>\n<td><code>action</code></td>\n<td>string</td>\n<td><code>CREATE</code> ou <code>DELETE</code>.</td>\n</tr>\n<tr>\n<td><code>dateHour</code></td>\n<td>string</td>\n<td>Data e hora da operação, em UTC.</td>\n</tr>\n<tr>\n<td><code>responsable.user</code></td>\n<td>string</td>\n<td>E-mail do usuário do token.</td>\n</tr>\n<tr>\n<td><code>responsable.origin</code></td>\n<td>string</td>\n<td><code>API</code>.</td>\n</tr>\n<tr>\n<td><code>group.internalId</code></td>\n<td>integer</td>\n<td>Id interno do grupo.</td>\n</tr>\n<tr>\n<td><code>group.name</code></td>\n<td>string</td>\n<td>Nome do grupo.</td>\n</tr>\n<tr>\n<td><code>group.externalId</code></td>\n<td>string</td>\n<td>Id externo. <code>null</code> quando não informado.</td>\n</tr>\n<tr>\n<td><code>group.groupTypeId</code> · <code>group.groupTypeName</code></td>\n<td>string</td>\n<td>Tipo de grupo. <code>null</code> quando não vinculado.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td>Qualquer recusa: campo obrigatório ausente, contagem de chaves <code>true</code> errada, <code>name</code> ou <code>externalId</code> já cadastrado, tipo de grupo inexistente, ou limite de tamanho estourado.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div><p>A recusa vem no mesmo envelope da operação, com <code>status: \"ERROR\"</code>, e <strong>o <code>message</code> traz o código HTTP como prefixo</strong>:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\"status\":\"ERROR\",\"message\":\"400 BAD_REQUEST: O campo 'name' é de preenchimento obrigatório.\",\n \"action\":\"CREATE\",\"dateHour\":\"2026-09-04T12:14:15Z\",\n \"responsable\":{\"user\":\"integracao@lojaexemplo.com.br\",\"origin\":\"API\"}}\n</code></pre>\n<p>Quando há mais de um motivo, eles vêm <strong>no mesmo <code>message</code>, separados por <code>, </code></strong>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["customer","group"],"host":["https://ws.autorei.net"],"query":[],"variable":[]}},"response":[{"id":"c9a140dd-a18a-4a33-80a7-9da047a646cf","name":"Sucesso — grupo criado","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Atacado Sudeste\",\n  \"externalId\": \"GRP-ATC-SE\",\n  \"showToSeller\": true,\n  \"enableGroupDisplayInRegistration\": true,\n  \"enableGroupDisplayInMyAccount\": false,\n  \"colorHexadecimal\": \"1F7A4D\",\n  \"applicationGroupDocumentType\": {\n    \"pj\": true\n  },\n  \"restrictionDeliveryType\": {\n    \"no_restriction\": true\n  },\n  \"restrictionPaymentType\": {\n    \"restrict_offline_payment\": true\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/customer/group"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"SUCCESS\",\n  \"message\": \"Grupo criado com sucesso.\",\n  \"action\": \"CREATE\",\n  \"dateHour\": \"2026-09-04T12:15:16Z\",\n  \"responsable\": {\n    \"user\": \"integracao@lojaexemplo.com.br\",\n    \"origin\": \"API\"\n  },\n  \"group\": {\n    \"internalId\": 4470801,\n    \"name\": \"Atacado Sudeste\",\n    \"externalId\": \"GRP-ATC-SE\",\n    \"groupTypeId\": null,\n    \"groupTypeName\": null\n  }\n}"}],"_postman_id":"f289f8fb-7b9d-4bfe-b9f0-17edc548fbf2"},{"name":"Excluir Grupo de Clientes","id":"aef536e4-f30b-4212-8e74-a33b0d81deb1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"externalId\": \"GRP-ATC-SE\"\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/customer/group","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Exclui um grupo de clientes da sua loja. Os clientes que estavam no grupo continuam cadastrados — o que sai é o grupo e os vínculos com ele.</p>\n<h3 id=\"corpo-da-requisição-json\">Corpo da Requisição (JSON)</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>externalId</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>Id do grupo no seu sistema, o mesmo informado na criação.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>O mesmo envelope da criação, com <code>action: \"DELETE\"</code> e a mensagem <code>Grupo deletado com sucesso.</code></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>status</code></td>\n<td>string</td>\n<td><code>SUCCESS</code>.</td>\n</tr>\n<tr>\n<td><code>message</code></td>\n<td>string</td>\n<td>Confirmação da operação.</td>\n</tr>\n<tr>\n<td><code>action</code></td>\n<td>string</td>\n<td><code>CREATE</code> ou <code>DELETE</code>.</td>\n</tr>\n<tr>\n<td><code>dateHour</code></td>\n<td>string</td>\n<td>Data e hora da operação, em UTC.</td>\n</tr>\n<tr>\n<td><code>responsable.user</code></td>\n<td>string</td>\n<td>E-mail do usuário do token.</td>\n</tr>\n<tr>\n<td><code>responsable.origin</code></td>\n<td>string</td>\n<td><code>API</code>.</td>\n</tr>\n<tr>\n<td><code>group.internalId</code></td>\n<td>integer</td>\n<td>Id interno do grupo.</td>\n</tr>\n<tr>\n<td><code>group.name</code></td>\n<td>string</td>\n<td>Nome do grupo.</td>\n</tr>\n<tr>\n<td><code>group.externalId</code></td>\n<td>string</td>\n<td>Id externo. <code>null</code> quando não informado.</td>\n</tr>\n<tr>\n<td><code>group.groupTypeId</code> · <code>group.groupTypeName</code></td>\n<td>string</td>\n<td>Tipo de grupo. <code>null</code> quando não vinculado.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td><code>externalId</code> ausente, ou grupo inexistente. O motivo vem na mensagem, no mesmo envelope de erro da criação, com <code>status: \"ERROR\"</code>.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["customer","group"],"host":["https://ws.autorei.net"],"query":[],"variable":[]}},"response":[{"id":"df2fd179-1896-4219-a000-2ab3dbaf7a7a","name":"Sucesso — grupo excluído","originalRequest":{"method":"DELETE","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"externalId\": \"GRP-ATC-SE\"\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/customer/group"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"SUCCESS\",\n  \"message\": \"Grupo deletado com sucesso.\",\n  \"action\": \"DELETE\",\n  \"dateHour\": \"2026-09-04T12:15:16Z\",\n  \"responsable\": {\n    \"user\": \"integracao@lojaexemplo.com.br\",\n    \"origin\": \"API\"\n  },\n  \"group\": {\n    \"internalId\": 4470801,\n    \"name\": \"Atacado Sudeste\",\n    \"externalId\": \"GRP-ATC-SE\",\n    \"groupTypeId\": null,\n    \"groupTypeName\": null\n  }\n}"}],"_postman_id":"aef536e4-f30b-4212-8e74-a33b0d81deb1"},{"name":"Vincular cliente a um Grupo","id":"403dd741-d44d-492b-926a-0774efc928ee","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[],"url":"https://ws.autorei.net/customer/:document/priceType/:customerGroupId","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Vincula um <strong>tipo de preço</strong> ao cliente. É o que faz o cliente passar a receber a tabela de preços daquele tipo.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>document</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>CPF ou CNPJ do cliente, <strong>sem pontuação</strong>. Ver a regra abaixo.</td>\n</tr>\n<tr>\n<td><code>customerGroupId</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id do grupo de clientes ou do tipo de preço — os dois vivem na mesma tabela, e o grupo é um tipo de preço. É o <code>internalId</code> que a consulta de grupos devolve.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"o-documento-vai-sem-pontuação\">O documento vai sem pontuação</h4>\n<p>Envie só os dígitos: <code>70041364856</code>, não <code>700.413.648-56</code>. Um CNPJ pontuado carrega uma <strong>barra</strong>, que parte o caminho em dois segmentos — a requisição não chega a este endpoint.</p>\n<h4 id=\"vincular-duas-vezes-não-é-erro\">Vincular duas vezes não é erro</h4>\n<p>Se o cliente já estava vinculado àquele tipo de preço, a resposta é <strong>200</strong> com a mensagem de que o vínculo já existe. O estado final é o mesmo.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>status</code></td>\n<td>string</td>\n<td><code>OK</code>.</td>\n</tr>\n<tr>\n<td><code>message</code></td>\n<td>string</td>\n<td>Confirmação do vínculo, ou o aviso de que ele já existia.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td><code>{\"status\":\"NOT_FOUND\",\"message\":\"Cliente não encontrado!\"}</code> — documento sem cadastro na sua loja.</td>\n</tr>\n<tr>\n<td>404</td>\n<td><code>{\"status\":\"NOT_FOUND\",\"message\":\"PriceType não encontrado!\"}</code> — o grupo não existe ou não é da sua loja. Também é a resposta para um id não numérico ou zero.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["customer",":document","priceType",":customerGroupId"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"29893264000101","key":"document"},{"type":"any","value":"4470901","key":"customerGroupId"}]}},"response":[{"id":"2206aafa-5e41-434a-b059-1e34b824cf4b","name":"Sucesso — tipo de preço vinculado","originalRequest":{"method":"PUT","header":[],"url":"https://ws.autorei.net/customer/29893264000101/priceType/4470901"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"OK\",\n  \"message\": \"PriceType associado\"\n}"}],"_postman_id":"403dd741-d44d-492b-926a-0774efc928ee"},{"name":"Desvincular cliente de um grupo","id":"ca3587ac-2c8f-4d5b-934c-692510268a8d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"https://ws.autorei.net/customer/:document/priceType/:customerGroupId","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Desfaz o vínculo entre um cliente e um <strong>tipo de preço</strong>. O cliente deixa de receber a tabela de preços daquele tipo.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>document</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>CPF ou CNPJ do cliente, <strong>sem pontuação</strong>. Ver a regra abaixo.</td>\n</tr>\n<tr>\n<td><code>customerGroupId</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id do grupo de clientes ou do tipo de preço vinculado ao cliente — os dois vivem na mesma tabela, e o grupo é um tipo de preço.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"o-documento-vai-sem-pontuação\">O documento vai sem pontuação</h4>\n<p>Envie só os dígitos: <code>70041364856</code>, não <code>700.413.648-56</code>. Um CNPJ pontuado carrega uma <strong>barra</strong>, que parte o caminho em dois segmentos — a requisição não chega a este endpoint.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>status</code></td>\n<td>string</td>\n<td><code>OK</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>422</td>\n<td><code>{\"status\":\"UNPROCESSABLE_ENTITY\",\"message\":\"Este tipo de preço não está vinculado ao cliente\"}</code> — o cliente e o grupo existem, mas não havia vínculo entre eles.</td>\n</tr>\n<tr>\n<td>404</td>\n<td><code>{\"status\":\"NOT_FOUND\",\"message\":\"Cliente não encontrado!\"}</code> — documento sem cadastro na sua loja.</td>\n</tr>\n<tr>\n<td>404</td>\n<td><code>{\"status\":\"NOT_FOUND\",\"message\":\"PriceType não encontrado!\"}</code> — o grupo não existe ou não é da sua loja.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["customer",":document","priceType",":customerGroupId"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"29893264000101","key":"document"},{"type":"any","value":"4470901","key":"customerGroupId"}]}},"response":[{"id":"ff94b10d-e5e1-485b-9f47-a8d65e06bfb7","name":"Sucesso — vínculo removido","originalRequest":{"method":"DELETE","header":[],"url":"https://ws.autorei.net/customer/29893264000101/priceType/4470901"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"OK\"\n}"}],"_postman_id":"ca3587ac-2c8f-4d5b-934c-692510268a8d"}],"id":"965117e3-fea4-4228-9309-8758740e6e4e","_postman_id":"965117e3-fea4-4228-9309-8758740e6e4e","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}}}],"id":"a89cb23e-20dd-41ef-a3e0-1fc5184f71e2","description":"<p>Serviços para gerenciamento completo dos dados cadastrais de clientes, seus endereços e grupos.</p>\n","_postman_id":"a89cb23e-20dd-41ef-a3e0-1fc5184f71e2","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}}},{"name":"05 - Limite de Crédito","item":[{"name":"Criar Tipo de Limite de Crédito","id":"1a3e95c0-a371-4dbb-8bbe-3bf3b7e20cbc","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Crédito Padrão\",\n  \"code\": \"CREDITO-PADRAO\"\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/creditLimit/saveTypeCreditLimit","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Cria um <strong>tipo</strong> de limite de crédito, que depois é associado a um ou mais clientes em <strong>Definir ou Atualizar Limite de Crédito para Cliente</strong>. O tipo representa a modalidade de crédito da sua loja — por exemplo, <code>À Vista</code>, <code>Boleto 30 dias</code> ou <code>Crédito Especial</code>.</p>\n<h3 id=\"corpo-da-requisição-json\">Corpo da Requisição (JSON)</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>name</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>Nome do tipo, como aparece para a operação.</td>\n</tr>\n<tr>\n<td><code>code</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>Código do tipo, <strong>único na sua loja</strong>. É o valor que você envia em <code>credit_code</code> ao definir o limite de um cliente.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"o-200-não-garante-a-criação\">O 200 não garante a criação</h4>\n<p>A resposta 200 devolve o corpo do serviço de crédito <strong>como ele veio</strong>, inclusive quando o serviço recusou a criação — por exemplo com um <code>code</code> que já existe na sua loja. Confira o corpo: em caso de sucesso ele traz <code>code</code>, <code>name</code> e <code>date_created</code>.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>code</code></td>\n<td>string</td>\n<td>Código do tipo criado.</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>string</td>\n<td>Nome do tipo criado.</td>\n</tr>\n<tr>\n<td><code>date_created</code></td>\n<td>datetime</td>\n<td>Data e hora da criação, no fuso da plataforma (<code>-03:00</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>Corpo ausente ou vazio: <code>{\"status\":\"NOT_FOUND\",\"message\":\"JSON com formato inválido e/ou não informado\"}</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Falha na comunicação com o serviço de crédito. A mensagem ecoa o payload recebido.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["creditLimit","saveTypeCreditLimit"],"host":["https://ws.autorei.net"],"query":[],"variable":[]}},"response":[{"id":"a80162fc-ccb6-4162-b9dc-445ff9e973a5","name":"Sucesso — tipo criado","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Crédito Padrão\",\n  \"code\": \"CREDITO-PADRAO\"\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/creditLimit/saveTypeCreditLimit"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"CREDITO-PADRAO\",\n  \"date_created\": \"2026-09-04T10:12:45.284119-03:00\",\n  \"name\": \"Crédito Padrão\"\n}"}],"_postman_id":"1a3e95c0-a371-4dbb-8bbe-3bf3b7e20cbc"},{"name":"Definir ou Atualizar Limite de Crédito para Cliente","id":"1161a052-24fe-48ea-bfa4-86f40276fbf0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"document\": \"29.893.264/0001-01\",\n  \"credit_code\": \"CREDITO-PADRAO\",\n  \"value\": 5000.0,\n  \"balance\": 5000.0,\n  \"active\": true,\n  \"without_credit_limit\": false\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/creditLimit/save","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Cria ou atualiza o limite de crédito de um cliente já cadastrado na plataforma, para um dos tipos criados em <strong>Criar Tipo de Limite de Crédito</strong>. Reenviar para o mesmo cliente e tipo atualiza o limite existente.</p>\n<h3 id=\"corpo-da-requisição-json\">Corpo da Requisição (JSON)</h3>\n<p>Os seis campos são obrigatórios. <code>0</code> e <code>false</code> são valores válidos — só <code>null</code> e string vazia contam como ausentes.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>document</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>CPF ou CNPJ do cliente.</td>\n</tr>\n<tr>\n<td><code>credit_code</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>Código do tipo de limite — o <code>code</code> que você definiu ao criar o tipo.</td>\n</tr>\n<tr>\n<td><code>value</code></td>\n<td>number</td>\n<td>Sim</td>\n<td>Valor total do limite.</td>\n</tr>\n<tr>\n<td><code>balance</code></td>\n<td>number</td>\n<td>Sim</td>\n<td>Saldo disponível do limite.</td>\n</tr>\n<tr>\n<td><code>active</code></td>\n<td>boolean</td>\n<td>Sim</td>\n<td><code>true</code> mantém o limite ativo.</td>\n</tr>\n<tr>\n<td><code>without_credit_limit</code></td>\n<td>boolean</td>\n<td>Sim</td>\n<td><code>true</code> permite que o cliente compre mesmo sem saldo.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>message</code></td>\n<td>string</td>\n<td>Confirmação da operação: <code>Conta criada/atualizada com sucesso</code>.</td>\n</tr>\n<tr>\n<td><code>document</code></td>\n<td>string</td>\n<td>Documento do cliente, como enviado.</td>\n</tr>\n<tr>\n<td><code>credit_code</code></td>\n<td>string</td>\n<td>Código do tipo de limite, igual ao enviado.</td>\n</tr>\n<tr>\n<td><code>credit_type</code></td>\n<td>string</td>\n<td>Nome do tipo de limite.</td>\n</tr>\n<tr>\n<td><code>value</code></td>\n<td>number</td>\n<td>Valor total gravado.</td>\n</tr>\n<tr>\n<td><code>balance</code></td>\n<td>number</td>\n<td>Saldo gravado.</td>\n</tr>\n<tr>\n<td><code>active</code></td>\n<td>boolean</td>\n<td>Se o limite está ativo.</td>\n</tr>\n<tr>\n<td><code>without_credit_limit</code></td>\n<td>boolean</td>\n<td>Se o cliente compra sem saldo.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>Corpo ausente ou vazio: <code>{\"status\":\"NOT_FOUND\",\"message\":\"JSON com formato inválido e/ou não informado\"}</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Um dos seis campos obrigatórios está ausente ou vazio, ou o serviço de crédito não confirmou a gravação. A mensagem ecoa o payload recebido — compare com a tabela acima para achar o campo que faltou.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["creditLimit","save"],"host":["https://ws.autorei.net"],"query":[],"variable":[]}},"response":[{"id":"6f4cdd68-f72c-4cb4-b719-2cc58cbf30e8","name":"Sucesso — limite definido","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"document\": \"29.893.264/0001-01\",\n  \"credit_code\": \"CREDITO-PADRAO\",\n  \"value\": 5000.0,\n  \"balance\": 5000.0,\n  \"active\": true,\n  \"without_credit_limit\": false\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/creditLimit/save"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"without_credit_limit\": false,\n  \"balance\": 5000,\n  \"document\": \"29.893.264/0001-01\",\n  \"credit_code\": \"CREDITO-PADRAO\",\n  \"active\": true,\n  \"message\": \"Conta criada/atualizada com sucesso\",\n  \"credit_type\": \"Crédito Padrão\",\n  \"value\": 5000\n}"}],"_postman_id":"1161a052-24fe-48ea-bfa4-86f40276fbf0"},{"name":"Listar Limites de Crédito","id":"87fd2de1-e34d-4317-97db-195a00139807","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://ws.autorei.net/creditLimit/list?document=29.893.264/0001-01&limit=5","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Lista os limites de crédito da sua loja, com opção de filtrar por cliente.</p>\n<h3 id=\"parâmetros-de-consulta\">Parâmetros de Consulta</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>document</code></td>\n<td>string</td>\n<td>Não</td>\n<td>CPF ou CNPJ do cliente. Omitido, a listagem traz os limites da loja.</td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Registros por página. Padrão <strong>5</strong>, teto <strong>25</strong> — valor acima disso é reduzido para 25, sem erro.</td>\n</tr>\n<tr>\n<td><code>offset</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Registro inicial da página. Padrão <strong>0</strong>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"sem-registros-a-resposta-não-é-uma-lista\">Sem registros, a resposta não é uma lista</h4>\n<p>Quando há limites, a resposta é um <strong>array</strong>. Quando não há nenhum, ela é um <strong>objeto vazio</strong> (<code>{}</code>). Trate os dois formatos: iterar direto sobre a resposta quebra no caso vazio.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>Array com um objeto por limite de crédito.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>document</code></td>\n<td>string</td>\n<td>Documento do cliente.</td>\n</tr>\n<tr>\n<td><code>credit_code</code></td>\n<td>string</td>\n<td>Código do tipo de limite.</td>\n</tr>\n<tr>\n<td><code>credit_type</code></td>\n<td>string</td>\n<td>Nome do tipo de limite.</td>\n</tr>\n<tr>\n<td><code>value</code></td>\n<td>number</td>\n<td>Valor total do limite.</td>\n</tr>\n<tr>\n<td><code>balance</code></td>\n<td>number</td>\n<td>Saldo disponível.</td>\n</tr>\n<tr>\n<td><code>active</code></td>\n<td>boolean</td>\n<td>Se o limite está ativo.</td>\n</tr>\n<tr>\n<td><code>without_credit_limit</code></td>\n<td>boolean</td>\n<td>Se o cliente compra sem saldo.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["creditLimit","list"],"host":["https://ws.autorei.net"],"query":[{"key":"document","value":"29.893.264/0001-01"},{"key":"limit","value":"5"},{"disabled":true,"key":"offset","value":"0"}],"variable":[]}},"response":[{"id":"a745781e-4e16-4226-8274-23b90a4aeba9","name":"Sucesso — um limite encontrado","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://ws.autorei.net/creditLimit/list?document=29.893.264/0001-01&limit=5","host":["https://ws.autorei.net"],"path":["creditLimit","list"],"query":[{"key":"document","value":"29.893.264/0001-01"},{"key":"limit","value":"5"},{"key":"offset","value":"0","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"without_credit_limit\": false,\n    \"balance\": 5000,\n    \"document\": \"29.893.264/0001-01\",\n    \"credit_code\": \"CREDITO-PADRAO\",\n    \"active\": true,\n    \"credit_type\": \"Crédito Padrão\",\n    \"value\": 5000\n  }\n]"}],"_postman_id":"87fd2de1-e34d-4317-97db-195a00139807"}],"id":"491b2479-a2f3-40c1-8b32-7e4bd7bab6a1","description":"<p>Endpoints para criar e gerenciar tipos de limite de crédito e atribuí-los aos clientes.</p>\n","_postman_id":"491b2479-a2f3-40c1-8b32-7e4bd7bab6a1","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}}},{"name":"06 -  Contratos","item":[{"name":"Gestão loja","item":[{"name":"Criar Contrato","id":"c853d744-9f45-4527-a8c6-e748029ab0d4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Tabela Atacado 2026\",\n  \"startDate\": \"2026-09-01\",\n  \"endDate\": \"2026-12-31\",\n  \"allCustomers\": false,\n  \"allPartners\": false,\n  \"active\": true,\n  \"priority\": 10,\n  \"contractType\": \"BASIC\",\n  \"isDiscountBlockedByAttendant\": false,\n  \"stateList\": [\n    \"SP\",\n    \"MG\"\n  ],\n  \"customerGroupList\": [\n    {\n      \"externalId\": \"GRUPO-ATACADO\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/priceContract","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Cria um contrato de preço: a tabela de preços especiais que a loja aplica a um conjunto de clientes durante um período. A criação grava o <strong>cabeçalho</strong> do contrato — vigência, abrangência e filtros de aplicação. Os clientes e os produtos entram depois, por <strong>Adicionar Clientes ao Contrato</strong> e <strong>Adicionar Produtos ao Contrato</strong>.</p>\n<p>A loja é sempre a do token. Para criar o contrato de uma filial, use <strong>Criar Contrato da Filial</strong>.</p>\n<h3 id=\"corpo-da-requisição-json\">Corpo da Requisição (JSON)</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>name</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>Nome do contrato.</td>\n</tr>\n<tr>\n<td><code>startDate</code></td>\n<td>datetime</td>\n<td>Sim</td>\n<td>Início da vigência. Veja <strong>Formatos de data aceitos</strong>.</td>\n</tr>\n<tr>\n<td><code>endDate</code></td>\n<td>datetime</td>\n<td>Sim</td>\n<td>Fim da vigência. Precisa ser igual ou posterior a <code>startDate</code>.</td>\n</tr>\n<tr>\n<td><code>allCustomers</code></td>\n<td>boolean</td>\n<td>Sim</td>\n<td><code>true</code> aplica o contrato a todos os clientes da loja. Veja <strong>Abrangência de clientes</strong>.</td>\n</tr>\n<tr>\n<td><code>allPartners</code></td>\n<td>boolean</td>\n<td>Sim</td>\n<td><code>true</code> aplica o contrato a todas as filiais da loja. Com <code>true</code>, <code>partners</code> é ignorado.</td>\n</tr>\n<tr>\n<td><code>active</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Contrato ativo. Default <code>true</code>. Só contrato ativo e dentro da vigência entra no cálculo de preço.</td>\n</tr>\n<tr>\n<td><code>priority</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Prioridade na disputa entre contratos. Default <code>0</code>. Veja <strong>Qual contrato vence</strong>.</td>\n</tr>\n<tr>\n<td><code>contractType</code></td>\n<td>string</td>\n<td>Não</td>\n<td><code>BASIC</code> (default) ou <code>COUNTDOWN</code>. Veja <strong>Oferta regressiva</strong>.</td>\n</tr>\n<tr>\n<td><code>priceBeforeAfter</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td><code>true</code> devolve o preço de tabela do produto como preço anterior, para a exibição \"de/por\". Veja <strong>Oferta regressiva</strong>.</td>\n</tr>\n<tr>\n<td><code>isDiscountBlockedByAttendant</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td><code>true</code> impede o atendente de dar desconto sobre o preço do contrato no carrinho.</td>\n</tr>\n<tr>\n<td><code>stateList</code></td>\n<td>array</td>\n<td>Não</td>\n<td>Siglas das UFs em que o contrato vale, com duas letras maiúsculas: <code>[\"SP\",\"MG\"]</code>. Sem a lista, o contrato vale em qualquer UF.</td>\n</tr>\n<tr>\n<td><code>storeList</code></td>\n<td>array</td>\n<td>Não</td>\n<td>Ids das lojas em que o contrato vale. Sem a lista, vale em qualquer loja.</td>\n</tr>\n<tr>\n<td><code>partners</code></td>\n<td>array</td>\n<td>Não</td>\n<td>Ids das filiais em que o contrato vale. Ignorado quando <code>allPartners</code> é <code>true</code>.</td>\n</tr>\n<tr>\n<td><code>customerGroupList</code></td>\n<td>array</td>\n<td>Não</td>\n<td>Grupos de clientes (tipos de preço) que o contrato alcança.</td>\n</tr>\n<tr>\n<td><code>customerGroupList[].externalId</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>Id do grupo no seu sistema, resolvido para o id da plataforma.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"formatos-de-data-aceitos\">Formatos de data aceitos</h3>\n<p><code>startDate</code> e <code>endDate</code> aceitam quatro formatos: <code>2026-09-01</code>, <code>2026-09-01 08:30</code>, <code>2026-09-01T08:30:00</code> e <code>2026-09-01T08:30:00Z</code>. Enviada só a data, a vigência começa e termina à meia-noite.</p>\n<h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"abrangência-de-clientes\">Abrangência de clientes</h4>\n<p><code>allCustomers: true</code> aplica o contrato a <strong>todos</strong> os clientes da loja, e o contrato passa a recusar a inclusão de cliente avulso com 400. Com <code>allCustomers: false</code>, o contrato vale só para os clientes que você adicionar depois, um a um.</p>\n<h4 id=\"qual-contrato-vence\">Qual contrato vence</h4>\n<p>Quando mais de um contrato ativo alcança o mesmo produto para o mesmo cliente, vence o de maior <code>priority</code>. Empatada a prioridade, vence o contrato restrito a clientes específicos sobre o que vale para todos os clientes. Persistindo o empate, vence o contrato mais antigo.</p>\n<h4 id=\"oferta-regressiva\">Oferta regressiva</h4>\n<p><code>contractType: COUNTDOWN</code> marca o contrato como oferta regressiva: o preço devolvido passa a carregar o desconto e a data final da oferta. O contrato regressivo só entra no cálculo de preço com <code>priceBeforeAfter: true</code>.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Id do contrato criado. É ele que vai na rota dos demais endpoints do contrato.</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>Nome gravado.</td>\n</tr>\n<tr>\n<td><code>active</code></td>\n<td>Contrato ativo.</td>\n</tr>\n<tr>\n<td><code>partner.id</code></td>\n<td>Id do parceiro dono do contrato.</td>\n</tr>\n<tr>\n<td><code>partner.name</code> · <code>partner.document</code></td>\n<td>Nome e documento do parceiro dono do contrato.</td>\n</tr>\n<tr>\n<td><code>allCustomers</code> · <code>allPartners</code></td>\n<td>Abrangência gravada.</td>\n</tr>\n<tr>\n<td><code>priority</code></td>\n<td>Prioridade gravada.</td>\n</tr>\n<tr>\n<td><code>dateStart</code> · <code>dateEnd</code></td>\n<td>Vigência gravada, em UTC.</td>\n</tr>\n<tr>\n<td><code>dateCreated</code> · <code>lastUpdated</code></td>\n<td>Criação e última alteração, em UTC.</td>\n</tr>\n<tr>\n<td><code>priceBeforeAfter</code></td>\n<td>Preço anterior habilitado. Vem <code>null</code> quando você não envia o campo.</td>\n</tr>\n<tr>\n<td><code>contractType</code></td>\n<td>Tipo gravado.</td>\n</tr>\n<tr>\n<td><code>isDiscountBlockedByAttendant</code></td>\n<td>Bloqueio de desconto gravado.</td>\n</tr>\n<tr>\n<td><code>priceContractPartners</code></td>\n<td>Ids das filiais gravadas a partir de <code>partners</code>.</td>\n</tr>\n<tr>\n<td><code>priceContractStates</code></td>\n<td>UFs gravadas a partir de <code>stateList</code>.</td>\n</tr>\n<tr>\n<td><code>priceContractCustomerGroups</code></td>\n<td>Ids dos grupos de clientes gravados a partir de <code>customerGroupList</code>.</td>\n</tr>\n<tr>\n<td><code>priceContractStores</code></td>\n<td>Ids das lojas gravadas a partir de <code>storeList</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td>O corpo não é um JSON válido. O detalhe vem em <code>error</code>.</td>\n</tr>\n<tr>\n<td>422</td>\n<td>Corpo vazio, campo obrigatório ausente (<code>name</code>, <code>startDate</code>, <code>endDate</code>, <code>allCustomers</code>, <code>allPartners</code>), data em formato não aceito ou <code>endDate</code> anterior a <code>startDate</code>. O detalhe vem em <code>error</code>.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["priceContract"],"host":["https://ws.autorei.net"],"query":[],"variable":[]}},"response":[{"id":"5dafdebf-61af-4cf0-81c5-efcce4a7dfa2","name":"Sucesso — contrato criado","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Tabela Atacado 2026\",\n  \"startDate\": \"2026-09-01\",\n  \"endDate\": \"2026-12-31\",\n  \"allCustomers\": false,\n  \"allPartners\": false,\n  \"active\": true,\n  \"priority\": 10,\n  \"contractType\": \"BASIC\",\n  \"isDiscountBlockedByAttendant\": false,\n  \"stateList\": [\n    \"SP\",\n    \"MG\"\n  ],\n  \"customerGroupList\": [\n    {\n      \"externalId\": \"GRUPO-ATACADO\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/priceContract"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": 4610001,\n  \"name\": \"Tabela Atacado 2026\",\n  \"active\": true,\n  \"partner\": {\n    \"id\": 5050,\n    \"name\": \"Loja Exemplo\",\n    \"document\": \"30.424.972/0001-74\"\n  },\n  \"allCustomers\": false,\n  \"allPartners\": false,\n  \"priority\": 10,\n  \"dateStart\": \"2026-09-01T00:00:00Z\",\n  \"dateEnd\": \"2026-12-31T00:00:00Z\",\n  \"dateCreated\": \"2026-09-04T13:22:32.687284Z\",\n  \"lastUpdated\": \"2026-09-04T13:22:32.687284Z\",\n  \"priceBeforeAfter\": null,\n  \"contractType\": \"BASIC\",\n  \"isDiscountBlockedByAttendant\": false,\n  \"priceContractPartners\": [],\n  \"priceContractStates\": [\n    \"SP\",\n    \"MG\"\n  ],\n  \"priceContractCustomerGroups\": [\n    4610101\n  ],\n  \"priceContractStores\": []\n}"}],"_postman_id":"c853d744-9f45-4527-a8c6-e748029ab0d4"},{"name":"Atualizar Contrato","id":"31da8564-629d-4fbc-a233-dc80b1a8ce6e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"active\": true,\n  \"dateEnd\": \"2027-06-30\",\n  \"partners\": [\n    5057\n  ],\n  \"stateList\": [\n    \"RJ\"\n  ],\n  \"replaceFilters\": true\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/pricing/contract/:contractId","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Atualiza parte do cabeçalho de um contrato: status, vigência, abrangência e filtros de aplicação. É uma atualização <strong>parcial</strong> — envie só os campos que quer mudar, e ao menos um deles.</p>\n<p>Serve também para esvaziar o contrato de uma vez, com <code>deleteAllItems</code> e <code>deleteAllCustomers</code>.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>contractId</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id do contrato, devolvido em <code>id</code> na criação.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"corpo-da-requisição-json\">Corpo da Requisição (JSON)</h3>\n<p>Todos os campos são opcionais, mas o corpo precisa trazer <strong>ao menos um</strong> deles preenchido.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>active</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Ativa ou inativa o contrato.</td>\n</tr>\n<tr>\n<td><code>dateStart</code></td>\n<td>datetime</td>\n<td>Não</td>\n<td>Novo início da vigência. Mesmos formatos da criação.</td>\n</tr>\n<tr>\n<td><code>dateEnd</code></td>\n<td>datetime</td>\n<td>Não</td>\n<td>Novo fim da vigência.</td>\n</tr>\n<tr>\n<td><code>allCustomers</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Passa o contrato a valer para todos os clientes da loja, ou volta a restringi-lo aos clientes da lista.</td>\n</tr>\n<tr>\n<td><code>allPartners</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Passa o contrato a valer para todas as filiais da loja, ou volta a restringi-lo às filiais da lista.</td>\n</tr>\n<tr>\n<td><code>stateList</code></td>\n<td>array</td>\n<td>Não</td>\n<td>UFs em que o contrato vale. Veja <strong>Acrescentar ou substituir filtros</strong>.</td>\n</tr>\n<tr>\n<td><code>partners</code></td>\n<td>array</td>\n<td>Não</td>\n<td>Ids das filiais em que o contrato vale. Veja <strong>Acrescentar ou substituir filtros</strong>.</td>\n</tr>\n<tr>\n<td><code>customerGroupList</code></td>\n<td>array</td>\n<td>Não</td>\n<td>Grupos de clientes do contrato, cada um por <code>externalId</code>. Veja <strong>Acrescentar ou substituir filtros</strong>.</td>\n</tr>\n<tr>\n<td><code>deleteAllItems</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td><code>true</code> remove todos os produtos do contrato.</td>\n</tr>\n<tr>\n<td><code>deleteAllCustomers</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td><code>true</code> remove todos os clientes do contrato.</td>\n</tr>\n<tr>\n<td><code>replaceFilters</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Define como os filtros enviados se combinam com os que já existem. Default <code>false</code>. Veja <strong>Acrescentar ou substituir filtros</strong>.</td>\n</tr>\n</tbody>\n</table>\n</div><p>O nome, o tipo e os produtos e clientes do contrato não fazem parte deste corpo: a vigência se atualiza por <code>dateStart</code> e <code>dateEnd</code>, e clientes e produtos pelos endpoints próprios de cada um.</p>\n<h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"acrescentar-ou-substituir-filtros\">Acrescentar ou substituir filtros</h4>\n<p>Com <code>replaceFilters: false</code> (o default), as UFs, filiais e grupos enviados são <strong>acrescentados</strong> aos que o contrato já tem. Com <code>replaceFilters: true</code>, os filtros do contrato passam a ser <strong>exatamente</strong> os que você enviou.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Id do contrato.</td>\n</tr>\n<tr>\n<td><code>active</code></td>\n<td>Status do contrato depois da atualização.</td>\n</tr>\n<tr>\n<td><code>allCustomers</code> · <code>allPartners</code></td>\n<td>Abrangência depois da atualização.</td>\n</tr>\n<tr>\n<td><code>replaceFilters</code></td>\n<td>Eco do modo de combinação usado nos filtros.</td>\n</tr>\n<tr>\n<td><code>priceContractPartners</code></td>\n<td>Filiais do contrato depois da atualização, cada uma com <code>id</code>, <code>name</code> e <code>document</code>.</td>\n</tr>\n<tr>\n<td><code>priceContractStates</code></td>\n<td>UFs do contrato depois da atualização.</td>\n</tr>\n<tr>\n<td><code>priceContractCustomerGroups</code></td>\n<td>Ids dos grupos de clientes depois da atualização.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td><code>contractId</code> da rota não é um número maior que zero: <code>{\"error\":\"invalid contract id: \\\"...\\\"\"}</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>O corpo não é um JSON válido. O detalhe vem em <code>error</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>O contrato não existe ou não é da loja do token: <code>{\"error\":\"priceContract.notFound\"}</code>.</td>\n</tr>\n<tr>\n<td>422</td>\n<td>Corpo vazio ou sem nenhum dos campos acima preenchido. O detalhe vem em <code>error</code>.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["pricing","contract",":contractId"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"4610001","key":"contractId"}]}},"response":[{"id":"60bddbd8-0ebb-4ec5-8e34-1872c222fb97","name":"Sucesso — vigência e filtros atualizados","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"active\": true,\n  \"dateEnd\": \"2027-06-30\",\n  \"partners\": [\n    5057\n  ],\n  \"stateList\": [\n    \"RJ\"\n  ],\n  \"replaceFilters\": true\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/pricing/contract/4610001"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": 4610001,\n  \"active\": true,\n  \"allCustomers\": false,\n  \"allPartners\": false,\n  \"replaceFilters\": true,\n  \"priceContractPartners\": [\n    {\n      \"id\": 5057,\n      \"name\": \"Loja Exemplo — Filial Campinas\",\n      \"document\": \"30.424.972/0002-55\"\n    }\n  ],\n  \"priceContractStates\": [\n    \"RJ\"\n  ],\n  \"priceContractCustomerGroups\": [\n    4610101\n  ]\n}"}],"_postman_id":"31da8564-629d-4fbc-a233-dc80b1a8ce6e"},{"name":"Listar Contratos","id":"9ef9c752-1076-4ab6-925e-bb1c50829e7f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://ws.autorei.net/pricing/contract/list?limit=20&offset=0","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Lista os contratos de preço da sua loja, do mais recente para o mais antigo, com paginação.</p>\n<p>A listagem devolve o cabeçalho de cada contrato. Os clientes e os produtos de um contrato não vêm aqui.</p>\n<h3 id=\"parâmetros-de-consulta\">Parâmetros de Consulta</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Contratos por página. Default <strong>20</strong>, teto <strong>50</strong>. Acima do teto, vale o teto.</td>\n</tr>\n<tr>\n<td><code>offset</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Quantos contratos pular. Default <strong>0</strong>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>Array de contratos, cada um no mesmo formato da resposta da criação.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Id do contrato.</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>Nome do contrato.</td>\n</tr>\n<tr>\n<td><code>active</code></td>\n<td>Contrato ativo.</td>\n</tr>\n<tr>\n<td><code>partner.id</code></td>\n<td>Id do parceiro dono do contrato.</td>\n</tr>\n<tr>\n<td><code>partner.name</code> · <code>partner.document</code></td>\n<td>Nome e documento do parceiro dono do contrato.</td>\n</tr>\n<tr>\n<td><code>allCustomers</code> · <code>allPartners</code></td>\n<td>Abrangência do contrato.</td>\n</tr>\n<tr>\n<td><code>priority</code></td>\n<td>Prioridade do contrato.</td>\n</tr>\n<tr>\n<td><code>dateStart</code> · <code>dateEnd</code></td>\n<td>Vigência, em UTC.</td>\n</tr>\n<tr>\n<td><code>dateCreated</code> · <code>lastUpdated</code></td>\n<td>Criação e última alteração, em UTC.</td>\n</tr>\n<tr>\n<td><code>priceBeforeAfter</code></td>\n<td>Preço anterior habilitado.</td>\n</tr>\n<tr>\n<td><code>contractType</code></td>\n<td><code>BASIC</code> ou <code>COUNTDOWN</code>.</td>\n</tr>\n<tr>\n<td><code>isDiscountBlockedByAttendant</code></td>\n<td>Bloqueio de desconto pelo atendente.</td>\n</tr>\n<tr>\n<td><code>priceContractPartners</code></td>\n<td>Ids das filiais em que o contrato vale.</td>\n</tr>\n<tr>\n<td><code>priceContractStates</code></td>\n<td>UFs em que o contrato vale.</td>\n</tr>\n<tr>\n<td><code>priceContractCustomerGroups</code></td>\n<td>Ids dos grupos de clientes do contrato.</td>\n</tr>\n<tr>\n<td><code>priceContractStores</code></td>\n<td>Ids das lojas em que o contrato vale.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td>A loja não tem contrato nenhum na página pedida: <code>{\"error\":\"priceContract.list.empty\"}</code>.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["pricing","contract","list"],"host":["https://ws.autorei.net"],"query":[{"key":"limit","value":"20"},{"key":"offset","value":"0"}],"variable":[]}},"response":[{"id":"2adbf0ad-02e5-49ee-a089-b75e0deebef7","name":"Sucesso — um contrato","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://ws.autorei.net/pricing/contract/list?limit=20&offset=0","host":["https://ws.autorei.net"],"path":["pricing","contract","list"],"query":[{"key":"limit","value":"20"},{"key":"offset","value":"0"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"id\": 4610001,\n    \"name\": \"Tabela Atacado 2026\",\n    \"active\": true,\n    \"partner\": {\n      \"id\": 5050,\n      \"name\": \"Loja Exemplo\",\n      \"document\": \"30.424.972/0001-74\"\n    },\n    \"allCustomers\": false,\n    \"allPartners\": false,\n    \"priority\": 10,\n    \"dateStart\": \"2026-09-01T00:00:00Z\",\n    \"dateEnd\": \"2027-06-30T00:00:00Z\",\n    \"dateCreated\": \"2026-09-04T13:22:32.687284Z\",\n    \"lastUpdated\": \"2026-09-04T13:22:32.687284Z\",\n    \"priceBeforeAfter\": null,\n    \"contractType\": \"BASIC\",\n    \"isDiscountBlockedByAttendant\": false,\n    \"priceContractPartners\": [],\n    \"priceContractStates\": [\n      \"SP\",\n      \"MG\"\n    ],\n    \"priceContractCustomerGroups\": [\n      4610101\n    ],\n    \"priceContractStores\": []\n  }\n]"}],"_postman_id":"9ef9c752-1076-4ab6-925e-bb1c50829e7f"},{"name":"Adicionar Clientes ao Contrato","id":"a1f734fe-b6af-4a75-9467-f349bf93aea4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"customers\": [\n    \"29893264000101\",\n    \"70041364856\"\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/pricing/contract/:contractId/customers","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Adiciona clientes a um contrato, pelo documento de cada um. Os clientes passam a receber os preços do contrato.</p>\n<p>Envie de 1 a 100 documentos por requisição. Os que não forem localizados voltam em <code>notFound</code>, sem impedir os demais.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>contractId</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id do contrato, devolvido em <code>id</code> na criação.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"corpo-da-requisição-json\">Corpo da Requisição (JSON)</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>customers</code></td>\n<td>array</td>\n<td>Sim</td>\n<td>Documentos dos clientes, como string. De 1 a 100 por requisição, com ao menos um preenchido.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"contrato-de-todos-os-clientes-não-recebe-cliente-avulso\">Contrato de todos os clientes não recebe cliente avulso</h4>\n<p>Um contrato criado com <code>allCustomers: true</code> já vale para todos os clientes da loja e recusa a inclusão com <strong>400</strong> e <code>priceContract.customers.addNotAllowed</code>. Para montar uma lista de clientes, o contrato precisa estar com <code>allCustomers: false</code>.</p>\n<h4 id=\"documento-que-não-existe-na-base-volta-em-notfound\">Documento que não existe na base volta em <code>notFound</code></h4>\n<p>O cliente precisa existir na plataforma, mas não precisa ter comprado da sua loja. O documento que não resolve não interrompe a requisição: ele volta em <code>notFound.customers</code> e os demais são gravados. A resposta é 200 mesmo quando nenhum documento resolveu.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Id do contrato.</td>\n</tr>\n<tr>\n<td><code>customers</code></td>\n<td>Documentos que foram vinculados ao contrato.</td>\n</tr>\n<tr>\n<td><code>notFound.customers</code></td>\n<td>Documentos que você enviou e não foram localizados na plataforma.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td><code>contractId</code> da rota não é um número maior que zero: <code>{\"error\":\"invalid contract id: \\\"...\\\"\"}</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>O corpo não é um JSON válido. O detalhe vem em <code>error</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>O contrato não existe ou não é da loja do token: <code>{\"error\":\"priceContract.notFound\"}</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>O contrato vale para todos os clientes e não aceita cliente avulso: <code>{\"error\":\"priceContract.customers.addNotAllowed\"}</code>.</td>\n</tr>\n<tr>\n<td>422</td>\n<td><code>customers</code> ausente, vazio, com mais de 100 entradas ou só com strings vazias. O detalhe vem em <code>error</code>.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["pricing","contract",":contractId","customers"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"4610001","key":"contractId"}]}},"response":[{"id":"735e59e8-813a-42e5-8ea8-5e5d256c8ff3","name":"Sucesso — um cliente vinculado e um não localizado","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"customers\": [\n    \"29893264000101\",\n    \"70041364856\"\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/pricing/contract/4610001/customers"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": 4610001,\n  \"customers\": [\n    \"29893264000101\"\n  ],\n  \"notFound\": {\n    \"customers\": [\n      \"70041364856\"\n    ]\n  }\n}"}],"_postman_id":"a1f734fe-b6af-4a75-9467-f349bf93aea4"},{"name":"Remover Clientes do Contrato","id":"cbe86c52-1b0c-4afd-8144-31546486b129","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"customers\": [\n    \"29893264000101\"\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/pricing/contract/:contractId/customers","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Remove clientes de um contrato, pelo documento de cada um. Os clientes deixam de receber os preços do contrato.</p>\n<p>Envie de 1 a 100 documentos por requisição. Os que não estiverem no contrato voltam em <code>notFound</code>, sem impedir os demais.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>contractId</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id do contrato, devolvido em <code>id</code> na criação.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"corpo-da-requisição-json\">Corpo da Requisição (JSON)</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>customers</code></td>\n<td>array</td>\n<td>Sim</td>\n<td>Documentos dos clientes a remover, como string. De 1 a 100 por requisição, com ao menos um preenchido.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"documento-fora-do-contrato-volta-em-notfound\">Documento fora do contrato volta em <code>notFound</code></h4>\n<p>O documento que não está vinculado ao contrato não interrompe a requisição: ele volta em <code>notFound.customers</code> e os demais são removidos. A resposta é 200 mesmo quando nenhum documento foi removido.</p>\n<p>Para esvaziar a lista inteira de uma vez, use <code>deleteAllCustomers</code> em <strong>Atualizar Contrato</strong>.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Id do contrato.</td>\n</tr>\n<tr>\n<td><code>customers</code></td>\n<td>Documentos que foram desvinculados do contrato.</td>\n</tr>\n<tr>\n<td><code>notFound.customers</code></td>\n<td>Documentos que você enviou e não estavam no contrato.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td><code>contractId</code> da rota não é um número maior que zero: <code>{\"error\":\"invalid contract id: \\\"...\\\"\"}</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>O corpo não é um JSON válido. O detalhe vem em <code>error</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>O contrato não existe ou não é da loja do token: <code>{\"error\":\"priceContract.notFound\"}</code>.</td>\n</tr>\n<tr>\n<td>422</td>\n<td><code>customers</code> ausente, vazio, com mais de 100 entradas ou só com strings vazias. O detalhe vem em <code>error</code>.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["pricing","contract",":contractId","customers"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"4610001","key":"contractId"}]}},"response":[{"id":"086f2146-f791-4d37-8af1-63c98a0a5298","name":"Sucesso — cliente removido","originalRequest":{"method":"DELETE","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"customers\": [\n    \"29893264000101\"\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/pricing/contract/4610001/customers"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": 4610001,\n  \"customers\": [\n    \"29893264000101\"\n  ],\n  \"notFound\": {\n    \"customers\": []\n  }\n}"}],"_postman_id":"cbe86c52-1b0c-4afd-8144-31546486b129"},{"name":"Adicionar Produtos ao Contrato","id":"e0cde255-316b-4fcc-bc4a-cd2eb08dc66c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"items\": [\n    {\n      \"partnerPartCode\": \"SKU-A-001\",\n      \"price\": 149.9,\n      \"targetMargin\": 18.5,\n      \"totalCost\": 120.0\n    },\n    {\n      \"partnerPartCode\": \"SKU-B-002\",\n      \"price\": 89.9\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/pricing/contract/:contractId/items","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Adiciona produtos ao contrato com o preço de cada um, ou atualiza o preço dos que já estão nele. Cada produto é processado de forma independente: o resultado de cada um vem no campo <code>status</code> da resposta.</p>\n<p>Envie de 1 a 100 produtos por requisição.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>contractId</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id do contrato, devolvido em <code>id</code> na criação.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"corpo-da-requisição-json\">Corpo da Requisição (JSON)</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>items</code></td>\n<td>array</td>\n<td>Sim</td>\n<td>De 1 a 100 produtos.</td>\n</tr>\n<tr>\n<td><strong>Identificação do produto</strong> — não é um campo, é um grupo</td>\n<td>—</td>\n<td>Sim</td>\n<td>Uma das duas formas da seção <strong>Como identificar o produto</strong>: <code>items[].partnerPartCode</code> · <code>items[].skuAttributeValue</code> com <code>skuAttributeName</code>.</td>\n</tr>\n<tr>\n<td><code>items[].price</code></td>\n<td>number</td>\n<td>Não</td>\n<td>Preço do produto no contrato. Não pode ser negativo.</td>\n</tr>\n<tr>\n<td><code>items[].targetMargin</code></td>\n<td>number</td>\n<td>Não</td>\n<td>Margem alvo do produto no contrato, de 0 a 100.</td>\n</tr>\n<tr>\n<td><code>items[].totalCost</code></td>\n<td>number</td>\n<td>Não</td>\n<td>Custo total do produto. Não pode ser negativo.</td>\n</tr>\n<tr>\n<td><code>items[].priceTypeId</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Tipo de preço a que este produto fica restrito dentro do contrato.</td>\n</tr>\n<tr>\n<td><code>skuAttributeName</code></td>\n<td>string</td>\n<td>Condicional</td>\n<td>Nome do atributo usado para resolver <code>items[].skuAttributeValue</code>. Obrigatório quando você identifica os produtos por atributo. Vale para o envio inteiro, não por item.</td>\n</tr>\n</tbody>\n</table>\n</div><p><code>items[].value</code> é o nome legado de <code>items[].price</code> e continua aceito, com o mesmo efeito. Enviando os dois no mesmo item, vale <code>price</code>.</p>\n<h3 id=\"como-identificar-o-produto\">Como identificar o produto</h3>\n<p>Cada produto precisa trazer <strong>uma</strong> das duas formas, nesta ordem de precedência:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Forma</th>\n<th>Campos</th>\n<th>Quando usar</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Por código do parceiro</td>\n<td><code>partnerPartCode</code></td>\n<td>Você identifica o produto pelo seu próprio código.</td>\n</tr>\n<tr>\n<td>Por atributo</td>\n<td><code>skuAttributeValue</code> com <code>skuAttributeName</code> no envelope</td>\n<td>Você contratou o serviço de catálogo de produtos com atributo próprio.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Ao contrário do envio de estoque, formas diferentes podem conviver no mesmo envio: cada produto é resolvido pela forma que trouxer.</p>\n<h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"o-produto-precisa-ser-da-loja\">O produto precisa ser da loja</h4>\n<p>O produto é resolvido dentro do catálogo da loja dona do contrato. O que não resolve volta em <code>notFound.items</code> e os demais são gravados.</p>\n<h4 id=\"produto-repetido-no-mesmo-envio-não-é-processado\">Produto repetido no mesmo envio não é processado</h4>\n<p>Dois produtos do mesmo envio que resolvem para o mesmo SKU — pelo código repetido ou pelo atributo — vão os dois para <code>notFound.items</code> e nenhum é gravado. Envie cada produto uma única vez por requisição.</p>\n<h4 id=\"produto-recusado-por-valor-volta-na-lista-não-derruba-o-envio\">Produto recusado por valor volta na lista, não derruba o envio</h4>\n<p>Preço negativo, custo negativo, margem fora de 0 a 100 e produto sem nenhuma forma de identificação são recusados <strong>item a item</strong>: o produto volta em <code>items</code> com <code>status: ERROR</code> e o motivo em <code>error</code>, e os demais são gravados. A resposta é 200.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Id do contrato.</td>\n</tr>\n<tr>\n<td><code>items[].skuId</code></td>\n<td>Id do SKU resolvido pela plataforma. Vem ausente no produto recusado que não trouxe identificação.</td>\n</tr>\n<tr>\n<td><code>items[].price</code></td>\n<td>Preço gravado.</td>\n</tr>\n<tr>\n<td><code>items[].targetMargin</code> · <code>items[].totalCost</code></td>\n<td>Margem alvo e custo gravados. Vêm <code>null</code> quando você não os envia.</td>\n</tr>\n<tr>\n<td><code>items[].status</code></td>\n<td><code>inserted</code> produto novo no contrato · <code>updated</code> produto que já estava e mudou de valor · <code>unchanged</code> produto que já estava com os mesmos valores · <code>ERROR</code> produto recusado.</td>\n</tr>\n<tr>\n<td><code>items[].error</code></td>\n<td>Motivo da recusa. Presente só quando <code>status</code> é <code>ERROR</code>.</td>\n</tr>\n<tr>\n<td><code>items[].partnerPartCode</code> · <code>items[].skuAttributeValue</code></td>\n<td>Eco da identificação que você enviou, no produto recusado.</td>\n</tr>\n<tr>\n<td><code>notFound.items</code></td>\n<td>Produtos que você enviou e não foram resolvidos no catálogo da loja, ou que se repetiram no envio.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td><code>contractId</code> da rota não é um número maior que zero: <code>{\"error\":\"invalid contract id: \\\"...\\\"\"}</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>O corpo não é um JSON válido. O detalhe vem em <code>error</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>O contrato não existe ou não é da loja do token: <code>{\"error\":\"priceContract.notFound\"}</code>.</td>\n</tr>\n<tr>\n<td>422</td>\n<td><code>items</code> ausente, vazio ou com mais de 100 entradas. O detalhe vem em <code>error</code>.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["pricing","contract",":contractId","items"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"4610001","key":"contractId"}]}},"response":[{"id":"520043b0-8309-44b1-b544-943a1cf43898","name":"Sucesso — identificação por código do parceiro","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"items\": [\n    {\n      \"partnerPartCode\": \"SKU-A-001\",\n      \"price\": 149.9,\n      \"targetMargin\": 18.5,\n      \"totalCost\": 120.0\n    },\n    {\n      \"partnerPartCode\": \"SKU-B-002\",\n      \"price\": 89.9\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/pricing/contract/4610001/items"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": 4610001,\n  \"items\": [\n    {\n      \"skuId\": 500101,\n      \"price\": 149.9,\n      \"targetMargin\": 18.5,\n      \"totalCost\": 120,\n      \"status\": \"inserted\"\n    },\n    {\n      \"skuId\": 500102,\n      \"price\": 89.9,\n      \"targetMargin\": null,\n      \"totalCost\": null,\n      \"status\": \"inserted\"\n    }\n  ],\n  \"notFound\": {\n    \"items\": []\n  }\n}"},{"id":"ed808c6d-93e5-40b9-9f91-15ed2af5aa31","name":"Sucesso — identificação por atributo, com item recusado","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"skuAttributeName\": \"codigo-interno\",\n  \"items\": [\n    {\n      \"skuAttributeValue\": \"SKU-A-001\",\n      \"price\": 139.9\n    },\n    {\n      \"skuAttributeValue\": \"SKU-Z-999\",\n      \"price\": 10.0\n    },\n    {\n      \"price\": 50.0\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/pricing/contract/4610001/items"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": 4610001,\n  \"items\": [\n    {\n      \"skuId\": 500101,\n      \"price\": 139.9,\n      \"targetMargin\": null,\n      \"totalCost\": null,\n      \"status\": \"updated\"\n    },\n    {\n      \"price\": 50,\n      \"targetMargin\": null,\n      \"totalCost\": null,\n      \"status\": \"ERROR\",\n      \"error\": \"must provide skuId, partnerPartCode, or skuAttributeValue\"\n    }\n  ],\n  \"notFound\": {\n    \"items\": [\n      {\n        \"skuAttributeValue\": \"SKU-Z-999\",\n        \"price\": 10,\n        \"targetMargin\": null,\n        \"totalCost\": null\n      }\n    ]\n  }\n}"}],"_postman_id":"e0cde255-316b-4fcc-bc4a-cd2eb08dc66c"},{"name":"Remover Produtos do Contrato","id":"279411ba-9f5c-4d9f-b183-05782db6d83d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"items\": [\n    {\n      \"partnerPartCode\": \"SKU-A-001\"\n    },\n    {\n      \"partnerPartCode\": \"SKU-Z-999\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/pricing/contract/:contractId/items","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Remove produtos do contrato. Os produtos voltam a ser vendidos pelo preço de tabela da loja.</p>\n<p>Envie de 1 a 100 produtos por requisição, identificados da mesma forma que na adição. O preço não é enviado na remoção.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>contractId</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id do contrato, devolvido em <code>id</code> na criação.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"corpo-da-requisição-json\">Corpo da Requisição (JSON)</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>items</code></td>\n<td>array</td>\n<td>Sim</td>\n<td>De 1 a 100 produtos.</td>\n</tr>\n<tr>\n<td><strong>Identificação do produto</strong> — não é um campo, é um grupo</td>\n<td>—</td>\n<td>Sim</td>\n<td>Uma das duas formas da seção <strong>Como identificar o produto</strong>: <code>items[].partnerPartCode</code> · <code>items[].skuAttributeValue</code> com <code>skuAttributeName</code>.</td>\n</tr>\n<tr>\n<td><code>skuAttributeName</code></td>\n<td>string</td>\n<td>Condicional</td>\n<td>Nome do atributo usado para resolver <code>items[].skuAttributeValue</code>. Obrigatório quando você identifica os produtos por atributo. Vale para o envio inteiro, não por item.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"como-identificar-o-produto\">Como identificar o produto</h3>\n<p>Cada produto precisa trazer <strong>uma</strong> das duas formas, nesta ordem de precedência:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Forma</th>\n<th>Campos</th>\n<th>Quando usar</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Por código do parceiro</td>\n<td><code>partnerPartCode</code></td>\n<td>Você identifica o produto pelo seu próprio código.</td>\n</tr>\n<tr>\n<td>Por atributo</td>\n<td><code>skuAttributeValue</code> com <code>skuAttributeName</code> no envelope</td>\n<td>Você contratou o serviço de catálogo de produtos com atributo próprio.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"produto-fora-do-contrato-volta-em-notfound\">Produto fora do contrato volta em <code>notFound</code></h4>\n<p>O produto que não está no contrato não interrompe a requisição: ele volta em <code>notFound.items</code> e os demais são removidos. A resposta é 200 mesmo quando nenhum produto foi removido.</p>\n<p>Para esvaziar a lista inteira de uma vez, use <code>deleteAllItems</code> em <strong>Atualizar Contrato</strong>.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Id do contrato.</td>\n</tr>\n<tr>\n<td><code>items[].skuId</code></td>\n<td>Id do SKU removido.</td>\n</tr>\n<tr>\n<td><code>items[].price</code></td>\n<td>Preço que o produto tinha no contrato, antes da remoção.</td>\n</tr>\n<tr>\n<td><code>items[].targetMargin</code> · <code>items[].totalCost</code></td>\n<td>Margem alvo e custo que o produto tinha no contrato.</td>\n</tr>\n<tr>\n<td><code>items[].partnerPartCode</code> · <code>items[].skuAttributeValue</code></td>\n<td>Eco da identificação que você enviou.</td>\n</tr>\n<tr>\n<td><code>notFound.items</code></td>\n<td>Produtos que você enviou e não estavam no contrato, ou que não foram resolvidos no catálogo da loja.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td><code>contractId</code> da rota não é um número maior que zero: <code>{\"error\":\"invalid contract id: \\\"...\\\"\"}</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>O corpo não é um JSON válido. O detalhe vem em <code>error</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>O contrato não existe ou não é da loja do token: <code>{\"error\":\"priceContract.notFound\"}</code>.</td>\n</tr>\n<tr>\n<td>422</td>\n<td><code>items</code> ausente, vazio ou com mais de 100 entradas. O detalhe vem em <code>error</code>.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["pricing","contract",":contractId","items"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"4610001","key":"contractId"}]}},"response":[{"id":"38656c23-04aa-4814-8fec-bd012fe0ea88","name":"Sucesso — produto removido","originalRequest":{"method":"DELETE","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"items\": [\n    {\n      \"partnerPartCode\": \"SKU-A-001\"\n    },\n    {\n      \"partnerPartCode\": \"SKU-Z-999\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/pricing/contract/4610001/items"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": 4610001,\n  \"items\": [\n    {\n      \"skuId\": 500101,\n      \"partnerPartCode\": \"SKU-A-001\",\n      \"price\": 139.9,\n      \"targetMargin\": null,\n      \"totalCost\": null\n    }\n  ],\n  \"notFound\": {\n    \"items\": [\n      {\n        \"partnerPartCode\": \"SKU-Z-999\",\n        \"price\": null,\n        \"targetMargin\": null,\n        \"totalCost\": null\n      }\n    ]\n  }\n}"}],"_postman_id":"279411ba-9f5c-4d9f-b183-05782db6d83d"}],"id":"b81d07be-593d-4ae3-8d86-95a66e15b4a8","_postman_id":"b81d07be-593d-4ae3-8d86-95a66e15b4a8","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}}},{"name":"Gestão Matriz","item":[{"name":"Criar Contrato da Filial","id":"ee0138d9-7ea7-4fc8-92c9-a3849413ffd4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Tabela Atacado Filial 2026\",\n  \"startDate\": \"2026-09-01\",\n  \"endDate\": \"2026-12-31\",\n  \"allCustomers\": false,\n  \"allPartners\": false,\n  \"active\": true,\n  \"priority\": 10,\n  \"contractType\": \"BASIC\",\n  \"isDiscountBlockedByAttendant\": false,\n  \"stateList\": [\n    \"SP\",\n    \"MG\"\n  ],\n  \"customerGroupList\": [\n    {\n      \"externalId\": \"GRUPO-ATACADO\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/priceContract/store/:partnerId","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Permite que uma conta <strong>matriz</strong> crie um contrato de preço em uma de suas <strong>filiais</strong>. A criação grava o <strong>cabeçalho</strong> do contrato — vigência, abrangência e filtros de aplicação. Os clientes e os produtos entram depois, por <strong>Adicionar Clientes ao Contrato da Filial</strong> e <strong>Adicionar Produtos ao Contrato da Filial</strong>.</p>\n<p>O corpo e a resposta são idênticos aos da criação na própria loja — a diferença é a filial dona do contrato, que vem na rota e é validada contra os vínculos da sua matriz.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>partnerId</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id da <strong>filial</strong> dona do contrato. Precisa estar vinculada à matriz do token.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"corpo-da-requisição-json\">Corpo da Requisição (JSON)</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>name</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>Nome do contrato.</td>\n</tr>\n<tr>\n<td><code>startDate</code></td>\n<td>datetime</td>\n<td>Sim</td>\n<td>Início da vigência. Veja <strong>Formatos de data aceitos</strong>.</td>\n</tr>\n<tr>\n<td><code>endDate</code></td>\n<td>datetime</td>\n<td>Sim</td>\n<td>Fim da vigência. Precisa ser igual ou posterior a <code>startDate</code>.</td>\n</tr>\n<tr>\n<td><code>allCustomers</code></td>\n<td>boolean</td>\n<td>Sim</td>\n<td><code>true</code> aplica o contrato a todos os clientes da filial. Veja <strong>Abrangência de clientes</strong>.</td>\n</tr>\n<tr>\n<td><code>allPartners</code></td>\n<td>boolean</td>\n<td>Sim</td>\n<td><code>true</code> aplica o contrato a todas as filiais da matriz. Com <code>true</code>, <code>partners</code> é ignorado.</td>\n</tr>\n<tr>\n<td><code>active</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Contrato ativo. Default <code>true</code>. Só contrato ativo e dentro da vigência entra no cálculo de preço.</td>\n</tr>\n<tr>\n<td><code>priority</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Prioridade na disputa entre contratos. Default <code>0</code>. Veja <strong>Qual contrato vence</strong>.</td>\n</tr>\n<tr>\n<td><code>contractType</code></td>\n<td>string</td>\n<td>Não</td>\n<td><code>BASIC</code> (default) ou <code>COUNTDOWN</code>. Veja <strong>Oferta regressiva</strong>.</td>\n</tr>\n<tr>\n<td><code>priceBeforeAfter</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td><code>true</code> devolve o preço de tabela do produto como preço anterior, para a exibição \"de/por\". Veja <strong>Oferta regressiva</strong>.</td>\n</tr>\n<tr>\n<td><code>isDiscountBlockedByAttendant</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td><code>true</code> impede o atendente de dar desconto sobre o preço do contrato no carrinho.</td>\n</tr>\n<tr>\n<td><code>stateList</code></td>\n<td>array</td>\n<td>Não</td>\n<td>Siglas das UFs em que o contrato vale, com duas letras maiúsculas: <code>[\"SP\",\"MG\"]</code>. Sem a lista, o contrato vale em qualquer UF.</td>\n</tr>\n<tr>\n<td><code>storeList</code></td>\n<td>array</td>\n<td>Não</td>\n<td>Ids das lojas em que o contrato vale. Sem a lista, vale em qualquer loja.</td>\n</tr>\n<tr>\n<td><code>partners</code></td>\n<td>array</td>\n<td>Não</td>\n<td>Ids das filiais em que o contrato vale. Ignorado quando <code>allPartners</code> é <code>true</code>.</td>\n</tr>\n<tr>\n<td><code>customerGroupList</code></td>\n<td>array</td>\n<td>Não</td>\n<td>Grupos de clientes (tipos de preço) que o contrato alcança.</td>\n</tr>\n<tr>\n<td><code>customerGroupList[].externalId</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>Id do grupo no seu sistema, resolvido para o id da plataforma.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"formatos-de-data-aceitos\">Formatos de data aceitos</h3>\n<p><code>startDate</code> e <code>endDate</code> aceitam quatro formatos: <code>2026-09-01</code>, <code>2026-09-01 08:30</code>, <code>2026-09-01T08:30:00</code> e <code>2026-09-01T08:30:00Z</code>. Enviada só a data, a vigência começa e termina à meia-noite.</p>\n<h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"abrangência-de-clientes\">Abrangência de clientes</h4>\n<p><code>allCustomers: true</code> aplica o contrato a <strong>todos</strong> os clientes da loja, e o contrato passa a recusar a inclusão de cliente avulso com 400. Com <code>allCustomers: false</code>, o contrato vale só para os clientes que você adicionar depois, um a um.</p>\n<h4 id=\"qual-contrato-vence\">Qual contrato vence</h4>\n<p>Quando mais de um contrato ativo alcança o mesmo produto para o mesmo cliente, vence o de maior <code>priority</code>. Empatada a prioridade, vence o contrato restrito a clientes específicos sobre o que vale para todos os clientes. Persistindo o empate, vence o contrato mais antigo.</p>\n<h4 id=\"oferta-regressiva\">Oferta regressiva</h4>\n<p><code>contractType: COUNTDOWN</code> marca o contrato como oferta regressiva: o preço devolvido passa a carregar o desconto e a data final da oferta. O contrato regressivo só entra no cálculo de preço com <code>priceBeforeAfter: true</code>.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Id do contrato criado. É ele que vai na rota dos demais endpoints do contrato.</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>Nome gravado.</td>\n</tr>\n<tr>\n<td><code>active</code></td>\n<td>Contrato ativo.</td>\n</tr>\n<tr>\n<td><code>partner.id</code></td>\n<td>Id do parceiro dono do contrato.</td>\n</tr>\n<tr>\n<td><code>partner.name</code> · <code>partner.document</code></td>\n<td>Nome e documento do parceiro dono do contrato.</td>\n</tr>\n<tr>\n<td><code>allCustomers</code> · <code>allPartners</code></td>\n<td>Abrangência gravada.</td>\n</tr>\n<tr>\n<td><code>priority</code></td>\n<td>Prioridade gravada.</td>\n</tr>\n<tr>\n<td><code>dateStart</code> · <code>dateEnd</code></td>\n<td>Vigência gravada, em UTC.</td>\n</tr>\n<tr>\n<td><code>dateCreated</code> · <code>lastUpdated</code></td>\n<td>Criação e última alteração, em UTC.</td>\n</tr>\n<tr>\n<td><code>priceBeforeAfter</code></td>\n<td>Preço anterior habilitado. Vem <code>null</code> quando você não envia o campo.</td>\n</tr>\n<tr>\n<td><code>contractType</code></td>\n<td>Tipo gravado.</td>\n</tr>\n<tr>\n<td><code>isDiscountBlockedByAttendant</code></td>\n<td>Bloqueio de desconto gravado.</td>\n</tr>\n<tr>\n<td><code>priceContractPartners</code></td>\n<td>Ids das filiais gravadas a partir de <code>partners</code>.</td>\n</tr>\n<tr>\n<td><code>priceContractStates</code></td>\n<td>UFs gravadas a partir de <code>stateList</code>.</td>\n</tr>\n<tr>\n<td><code>priceContractCustomerGroups</code></td>\n<td>Ids dos grupos de clientes gravados a partir de <code>customerGroupList</code>.</td>\n</tr>\n<tr>\n<td><code>priceContractStores</code></td>\n<td>Ids das lojas gravadas a partir de <code>storeList</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td><code>partnerId</code> da rota não é numérico: <code>{\"error\":\"Invalid target partner ID\"}</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>O corpo não é um JSON válido. O detalhe vem em <code>error</code>.</td>\n</tr>\n<tr>\n<td>422</td>\n<td>Corpo vazio, campo obrigatório ausente (<code>name</code>, <code>startDate</code>, <code>endDate</code>, <code>allCustomers</code>, <code>allPartners</code>), data em formato não aceito ou <code>endDate</code> anterior a <code>startDate</code>. O detalhe vem em <code>error</code>.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado: <code>{\"error\":\"Authentication required for this route\"}</code>.</td>\n</tr>\n<tr>\n<td>403</td>\n<td>A filial não está vinculada à sua matriz: <code>{\"error\":\"Access denied: Invalid partnership\"}</code>. Diferente de 400, aqui o payload está certo — o que falta é o vínculo.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["priceContract","store",":partnerId"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"5057","key":"partnerId"}]}},"response":[{"id":"17540626-cb3c-449c-bce7-5dfeeb3edfd2","name":"Sucesso — contrato criado","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Tabela Atacado Filial 2026\",\n  \"startDate\": \"2026-09-01\",\n  \"endDate\": \"2026-12-31\",\n  \"allCustomers\": false,\n  \"allPartners\": false,\n  \"active\": true,\n  \"priority\": 10,\n  \"contractType\": \"BASIC\",\n  \"isDiscountBlockedByAttendant\": false,\n  \"stateList\": [\n    \"SP\",\n    \"MG\"\n  ],\n  \"customerGroupList\": [\n    {\n      \"externalId\": \"GRUPO-ATACADO\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/priceContract/store/5057"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": 4610002,\n  \"name\": \"Tabela Atacado Filial 2026\",\n  \"active\": true,\n  \"partner\": {\n    \"id\": 5057,\n    \"name\": \"Loja Exemplo — Filial Campinas\",\n    \"document\": \"30.424.972/0002-55\"\n  },\n  \"allCustomers\": false,\n  \"allPartners\": false,\n  \"priority\": 10,\n  \"dateStart\": \"2026-09-01T00:00:00Z\",\n  \"dateEnd\": \"2026-12-31T00:00:00Z\",\n  \"dateCreated\": \"2026-09-04T13:22:32.687284Z\",\n  \"lastUpdated\": \"2026-09-04T13:22:32.687284Z\",\n  \"priceBeforeAfter\": null,\n  \"contractType\": \"BASIC\",\n  \"isDiscountBlockedByAttendant\": false,\n  \"priceContractPartners\": [],\n  \"priceContractStates\": [\n    \"SP\",\n    \"MG\"\n  ],\n  \"priceContractCustomerGroups\": [\n    4610101\n  ],\n  \"priceContractStores\": []\n}"}],"_postman_id":"ee0138d9-7ea7-4fc8-92c9-a3849413ffd4"},{"name":"Atualizar Contrato da Filial","id":"be906d98-19b6-4fb5-a3ff-3b35870111ea","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"active\": true,\n  \"dateEnd\": \"2027-06-30\",\n  \"partners\": [\n    5057\n  ],\n  \"stateList\": [\n    \"RJ\"\n  ],\n  \"replaceFilters\": true\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/pricing/contract/:contractId/store/:partnerId","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Permite que uma conta <strong>matriz</strong> atualize parte do cabeçalho de um contrato de uma de suas <strong>filiais</strong>: status, vigência, abrangência e filtros de aplicação. É uma atualização <strong>parcial</strong> — envie só os campos que quer mudar, e ao menos um deles.</p>\n<p>O corpo e a resposta são idênticos aos da atualização na própria loja — a diferença é a filial dona do contrato, que vem na rota e é validada contra os vínculos da sua matriz.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>contractId</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id do contrato, devolvido em <code>id</code> na criação.</td>\n</tr>\n<tr>\n<td><code>partnerId</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id da <strong>filial</strong> dona do contrato. Precisa estar vinculada à matriz do token.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"corpo-da-requisição-json\">Corpo da Requisição (JSON)</h3>\n<p>Todos os campos são opcionais, mas o corpo precisa trazer <strong>ao menos um</strong> deles preenchido.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>active</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Ativa ou inativa o contrato.</td>\n</tr>\n<tr>\n<td><code>dateStart</code></td>\n<td>datetime</td>\n<td>Não</td>\n<td>Novo início da vigência. Mesmos formatos da criação.</td>\n</tr>\n<tr>\n<td><code>dateEnd</code></td>\n<td>datetime</td>\n<td>Não</td>\n<td>Novo fim da vigência.</td>\n</tr>\n<tr>\n<td><code>allCustomers</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Passa o contrato a valer para todos os clientes da filial, ou volta a restringi-lo aos clientes da lista.</td>\n</tr>\n<tr>\n<td><code>allPartners</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Passa o contrato a valer para todas as filiais da matriz, ou volta a restringi-lo às filiais da lista.</td>\n</tr>\n<tr>\n<td><code>stateList</code></td>\n<td>array</td>\n<td>Não</td>\n<td>UFs em que o contrato vale. Veja <strong>Acrescentar ou substituir filtros</strong>.</td>\n</tr>\n<tr>\n<td><code>partners</code></td>\n<td>array</td>\n<td>Não</td>\n<td>Ids das filiais em que o contrato vale. Veja <strong>Acrescentar ou substituir filtros</strong>.</td>\n</tr>\n<tr>\n<td><code>customerGroupList</code></td>\n<td>array</td>\n<td>Não</td>\n<td>Grupos de clientes do contrato, cada um por <code>externalId</code>. Veja <strong>Acrescentar ou substituir filtros</strong>.</td>\n</tr>\n<tr>\n<td><code>deleteAllItems</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td><code>true</code> remove todos os produtos do contrato.</td>\n</tr>\n<tr>\n<td><code>deleteAllCustomers</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td><code>true</code> remove todos os clientes do contrato.</td>\n</tr>\n<tr>\n<td><code>replaceFilters</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Define como os filtros enviados se combinam com os que já existem. Default <code>false</code>. Veja <strong>Acrescentar ou substituir filtros</strong>.</td>\n</tr>\n</tbody>\n</table>\n</div><p>O nome, o tipo e os produtos e clientes do contrato não fazem parte deste corpo: a vigência se atualiza por <code>dateStart</code> e <code>dateEnd</code>, e clientes e produtos pelos endpoints próprios de cada um.</p>\n<h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"acrescentar-ou-substituir-filtros\">Acrescentar ou substituir filtros</h4>\n<p>Com <code>replaceFilters: false</code> (o default), as UFs, filiais e grupos enviados são <strong>acrescentados</strong> aos que o contrato já tem. Com <code>replaceFilters: true</code>, os filtros do contrato passam a ser <strong>exatamente</strong> os que você enviou.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Id do contrato.</td>\n</tr>\n<tr>\n<td><code>active</code></td>\n<td>Status do contrato depois da atualização.</td>\n</tr>\n<tr>\n<td><code>allCustomers</code> · <code>allPartners</code></td>\n<td>Abrangência depois da atualização.</td>\n</tr>\n<tr>\n<td><code>replaceFilters</code></td>\n<td>Eco do modo de combinação usado nos filtros.</td>\n</tr>\n<tr>\n<td><code>priceContractPartners</code></td>\n<td>Filiais do contrato depois da atualização, cada uma com <code>id</code>, <code>name</code> e <code>document</code>.</td>\n</tr>\n<tr>\n<td><code>priceContractStates</code></td>\n<td>UFs do contrato depois da atualização.</td>\n</tr>\n<tr>\n<td><code>priceContractCustomerGroups</code></td>\n<td>Ids dos grupos de clientes depois da atualização.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td><code>partnerId</code> da rota não é numérico: <code>{\"error\":\"Invalid target partner ID\"}</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>contractId</code> da rota não é um número maior que zero: <code>{\"error\":\"invalid contract id: \\\"...\\\"\"}</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>O corpo não é um JSON válido. O detalhe vem em <code>error</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>O contrato não existe ou não é da filial informada: <code>{\"error\":\"priceContract.notFound\"}</code>.</td>\n</tr>\n<tr>\n<td>422</td>\n<td>Corpo vazio ou sem nenhum dos campos acima preenchido. O detalhe vem em <code>error</code>.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado: <code>{\"error\":\"Authentication required for this route\"}</code>.</td>\n</tr>\n<tr>\n<td>403</td>\n<td>A filial não está vinculada à sua matriz: <code>{\"error\":\"Access denied: Invalid partnership\"}</code>. Diferente de 400, aqui o payload está certo — o que falta é o vínculo.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["pricing","contract",":contractId","store",":partnerId"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"4610002","key":"contractId"},{"type":"any","value":"5057","key":"partnerId"}]}},"response":[{"id":"aa2d933d-f16f-45a9-85a9-27e07d2f0dac","name":"Sucesso — vigência e filtros atualizados","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"active\": true,\n  \"dateEnd\": \"2027-06-30\",\n  \"partners\": [\n    5057\n  ],\n  \"stateList\": [\n    \"RJ\"\n  ],\n  \"replaceFilters\": true\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/pricing/contract/4610002/store/5057"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": 4610002,\n  \"active\": true,\n  \"allCustomers\": false,\n  \"allPartners\": false,\n  \"replaceFilters\": true,\n  \"priceContractPartners\": [\n    {\n      \"id\": 5057,\n      \"name\": \"Loja Exemplo — Filial Campinas\",\n      \"document\": \"30.424.972/0002-55\"\n    }\n  ],\n  \"priceContractStates\": [\n    \"RJ\"\n  ],\n  \"priceContractCustomerGroups\": [\n    4610101\n  ]\n}"}],"_postman_id":"be906d98-19b6-4fb5-a3ff-3b35870111ea"},{"name":"Listar Contratos da Filial","id":"e99342c1-03fe-4c87-8183-4e6d721664bb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://ws.autorei.net/pricing/contract/list/store/:partnerId?limit=20&offset=0","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Permite que uma conta <strong>matriz</strong> liste os contratos de preço de uma de suas <strong>filiais</strong>, do mais recente para o mais antigo, com paginação.</p>\n<p>A resposta é idêntica à da listagem da própria loja — a diferença é a filial consultada, que vem na rota e é validada contra os vínculos da sua matriz.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>partnerId</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id da <strong>filial</strong> dona do contrato. Precisa estar vinculada à matriz do token.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"parâmetros-de-consulta\">Parâmetros de Consulta</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Contratos por página. Default <strong>20</strong>, teto <strong>50</strong>. Acima do teto, vale o teto.</td>\n</tr>\n<tr>\n<td><code>offset</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Quantos contratos pular. Default <strong>0</strong>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>Array de contratos, cada um no mesmo formato da resposta da criação.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Id do contrato.</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>Nome do contrato.</td>\n</tr>\n<tr>\n<td><code>active</code></td>\n<td>Contrato ativo.</td>\n</tr>\n<tr>\n<td><code>partner.id</code></td>\n<td>Id do parceiro dono do contrato.</td>\n</tr>\n<tr>\n<td><code>partner.name</code> · <code>partner.document</code></td>\n<td>Nome e documento do parceiro dono do contrato.</td>\n</tr>\n<tr>\n<td><code>allCustomers</code> · <code>allPartners</code></td>\n<td>Abrangência do contrato.</td>\n</tr>\n<tr>\n<td><code>priority</code></td>\n<td>Prioridade do contrato.</td>\n</tr>\n<tr>\n<td><code>dateStart</code> · <code>dateEnd</code></td>\n<td>Vigência, em UTC.</td>\n</tr>\n<tr>\n<td><code>dateCreated</code> · <code>lastUpdated</code></td>\n<td>Criação e última alteração, em UTC.</td>\n</tr>\n<tr>\n<td><code>priceBeforeAfter</code></td>\n<td>Preço anterior habilitado.</td>\n</tr>\n<tr>\n<td><code>contractType</code></td>\n<td><code>BASIC</code> ou <code>COUNTDOWN</code>.</td>\n</tr>\n<tr>\n<td><code>isDiscountBlockedByAttendant</code></td>\n<td>Bloqueio de desconto pelo atendente.</td>\n</tr>\n<tr>\n<td><code>priceContractPartners</code></td>\n<td>Ids das filiais em que o contrato vale.</td>\n</tr>\n<tr>\n<td><code>priceContractStates</code></td>\n<td>UFs em que o contrato vale.</td>\n</tr>\n<tr>\n<td><code>priceContractCustomerGroups</code></td>\n<td>Ids dos grupos de clientes do contrato.</td>\n</tr>\n<tr>\n<td><code>priceContractStores</code></td>\n<td>Ids das lojas em que o contrato vale.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td><code>partnerId</code> da rota não é numérico: <code>{\"error\":\"Invalid target partner ID\"}</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>A loja não tem contrato nenhum na página pedida: <code>{\"error\":\"priceContract.list.empty\"}</code>.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado: <code>{\"error\":\"Authentication required for this route\"}</code>.</td>\n</tr>\n<tr>\n<td>403</td>\n<td>A filial não está vinculada à sua matriz: <code>{\"error\":\"Access denied: Invalid partnership\"}</code>. Diferente de 400, aqui o payload está certo — o que falta é o vínculo.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["pricing","contract","list","store",":partnerId"],"host":["https://ws.autorei.net"],"query":[{"key":"limit","value":"20"},{"key":"offset","value":"0"}],"variable":[{"type":"any","value":"5057","key":"partnerId"}]}},"response":[{"id":"c9dea4f2-2b8a-4f1b-beb8-a5fefa807f7c","name":"Sucesso — um contrato","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://ws.autorei.net/pricing/contract/list/store/5057?limit=20&offset=0","host":["https://ws.autorei.net"],"path":["pricing","contract","list","store","5057"],"query":[{"key":"limit","value":"20"},{"key":"offset","value":"0"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"id\": 4610002,\n    \"name\": \"Tabela Atacado Filial 2026\",\n    \"active\": true,\n    \"partner\": {\n      \"id\": 5057,\n      \"name\": \"Loja Exemplo — Filial Campinas\",\n      \"document\": \"30.424.972/0002-55\"\n    },\n    \"allCustomers\": false,\n    \"allPartners\": false,\n    \"priority\": 10,\n    \"dateStart\": \"2026-09-01T00:00:00Z\",\n    \"dateEnd\": \"2027-06-30T00:00:00Z\",\n    \"dateCreated\": \"2026-09-04T13:22:32.687284Z\",\n    \"lastUpdated\": \"2026-09-04T13:22:32.687284Z\",\n    \"priceBeforeAfter\": null,\n    \"contractType\": \"BASIC\",\n    \"isDiscountBlockedByAttendant\": false,\n    \"priceContractPartners\": [],\n    \"priceContractStates\": [\n      \"SP\",\n      \"MG\"\n    ],\n    \"priceContractCustomerGroups\": [\n      4610101\n    ],\n    \"priceContractStores\": []\n  }\n]"}],"_postman_id":"e99342c1-03fe-4c87-8183-4e6d721664bb"},{"name":"Adicionar Clientes ao Contrato da Filial","id":"0ff4d015-0da3-4ee8-921d-31c172cda6ea","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"customers\": [\n    \"29893264000101\",\n    \"70041364856\"\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/pricing/contract/:contractId/customers/store/:partnerId","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Permite que uma conta <strong>matriz</strong> adicione clientes a um contrato de uma de suas <strong>filiais</strong>, pelo documento de cada um. Os clientes passam a receber os preços do contrato.</p>\n<p>O corpo e a resposta são idênticos aos da adição na própria loja — a diferença é a filial dona do contrato, que vem na rota e é validada contra os vínculos da sua matriz.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>contractId</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id do contrato, devolvido em <code>id</code> na criação.</td>\n</tr>\n<tr>\n<td><code>partnerId</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id da <strong>filial</strong> dona do contrato. Precisa estar vinculada à matriz do token.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"corpo-da-requisição-json\">Corpo da Requisição (JSON)</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>customers</code></td>\n<td>array</td>\n<td>Sim</td>\n<td>Documentos dos clientes, como string. De 1 a 100 por requisição, com ao menos um preenchido.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"contrato-de-todos-os-clientes-não-recebe-cliente-avulso\">Contrato de todos os clientes não recebe cliente avulso</h4>\n<p>Um contrato criado com <code>allCustomers: true</code> já vale para todos os clientes da filial e recusa a inclusão com <strong>400</strong> e <code>priceContract.customers.addNotAllowed</code>. Para montar uma lista de clientes, o contrato precisa estar com <code>allCustomers: false</code>.</p>\n<h4 id=\"documento-que-não-existe-na-base-volta-em-notfound\">Documento que não existe na base volta em <code>notFound</code></h4>\n<p>O cliente precisa existir na plataforma, mas não precisa ter comprado da sua loja. O documento que não resolve não interrompe a requisição: ele volta em <code>notFound.customers</code> e os demais são gravados. A resposta é 200 mesmo quando nenhum documento resolveu.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Id do contrato.</td>\n</tr>\n<tr>\n<td><code>customers</code></td>\n<td>Documentos que foram vinculados ao contrato.</td>\n</tr>\n<tr>\n<td><code>notFound.customers</code></td>\n<td>Documentos que você enviou e não foram localizados na plataforma.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td><code>partnerId</code> da rota não é numérico: <code>{\"error\":\"Invalid target partner ID\"}</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>contractId</code> da rota não é um número maior que zero: <code>{\"error\":\"invalid contract id: \\\"...\\\"\"}</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>O corpo não é um JSON válido. O detalhe vem em <code>error</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>O contrato não existe ou não é da filial informada: <code>{\"error\":\"priceContract.notFound\"}</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>O contrato vale para todos os clientes e não aceita cliente avulso: <code>{\"error\":\"priceContract.customers.addNotAllowed\"}</code>.</td>\n</tr>\n<tr>\n<td>422</td>\n<td><code>customers</code> ausente, vazio, com mais de 100 entradas ou só com strings vazias. O detalhe vem em <code>error</code>.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado: <code>{\"error\":\"Authentication required for this route\"}</code>.</td>\n</tr>\n<tr>\n<td>403</td>\n<td>A filial não está vinculada à sua matriz: <code>{\"error\":\"Access denied: Invalid partnership\"}</code>. Diferente de 400, aqui o payload está certo — o que falta é o vínculo.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["pricing","contract",":contractId","customers","store",":partnerId"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"4610002","key":"contractId"},{"type":"any","value":"5057","key":"partnerId"}]}},"response":[{"id":"95ce38a9-d455-4697-816d-9ab05488b7fb","name":"Sucesso — um cliente vinculado e um não localizado","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"customers\": [\n    \"29893264000101\",\n    \"70041364856\"\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/pricing/contract/4610002/customers/store/5057"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": 4610002,\n  \"customers\": [\n    \"29893264000101\"\n  ],\n  \"notFound\": {\n    \"customers\": [\n      \"70041364856\"\n    ]\n  }\n}"}],"_postman_id":"0ff4d015-0da3-4ee8-921d-31c172cda6ea"},{"name":"Remover Clientes do Contrato da Filial","id":"fd0487a2-6c37-4735-9eef-75b15fbbd0a8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"customers\": [\n    \"29893264000101\"\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/pricing/contract/:contractId/customers/store/:partnerId","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Permite que uma conta <strong>matriz</strong> remova clientes de um contrato de uma de suas <strong>filiais</strong>, pelo documento de cada um. Os clientes deixam de receber os preços do contrato.</p>\n<p>O corpo e a resposta são idênticos aos da remoção na própria loja — a diferença é a filial dona do contrato, que vem na rota e é validada contra os vínculos da sua matriz.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>contractId</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id do contrato, devolvido em <code>id</code> na criação.</td>\n</tr>\n<tr>\n<td><code>partnerId</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id da <strong>filial</strong> dona do contrato. Precisa estar vinculada à matriz do token.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"corpo-da-requisição-json\">Corpo da Requisição (JSON)</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>customers</code></td>\n<td>array</td>\n<td>Sim</td>\n<td>Documentos dos clientes a remover, como string. De 1 a 100 por requisição, com ao menos um preenchido.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"documento-fora-do-contrato-volta-em-notfound\">Documento fora do contrato volta em <code>notFound</code></h4>\n<p>O documento que não está vinculado ao contrato não interrompe a requisição: ele volta em <code>notFound.customers</code> e os demais são removidos. A resposta é 200 mesmo quando nenhum documento foi removido.</p>\n<p>Para esvaziar a lista inteira de uma vez, use <code>deleteAllCustomers</code> em <strong>Atualizar Contrato</strong>.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Id do contrato.</td>\n</tr>\n<tr>\n<td><code>customers</code></td>\n<td>Documentos que foram desvinculados do contrato.</td>\n</tr>\n<tr>\n<td><code>notFound.customers</code></td>\n<td>Documentos que você enviou e não estavam no contrato.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td><code>partnerId</code> da rota não é numérico: <code>{\"error\":\"Invalid target partner ID\"}</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>contractId</code> da rota não é um número maior que zero: <code>{\"error\":\"invalid contract id: \\\"...\\\"\"}</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>O corpo não é um JSON válido. O detalhe vem em <code>error</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>O contrato não existe ou não é da filial informada: <code>{\"error\":\"priceContract.notFound\"}</code>.</td>\n</tr>\n<tr>\n<td>422</td>\n<td><code>customers</code> ausente, vazio, com mais de 100 entradas ou só com strings vazias. O detalhe vem em <code>error</code>.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado: <code>{\"error\":\"Authentication required for this route\"}</code>.</td>\n</tr>\n<tr>\n<td>403</td>\n<td>A filial não está vinculada à sua matriz: <code>{\"error\":\"Access denied: Invalid partnership\"}</code>. Diferente de 400, aqui o payload está certo — o que falta é o vínculo.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["pricing","contract",":contractId","customers","store",":partnerId"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"4610002","key":"contractId"},{"type":"any","value":"5057","key":"partnerId"}]}},"response":[{"id":"72469e7d-d9e0-4cba-a092-34d3e8df85ac","name":"Sucesso — cliente removido","originalRequest":{"method":"DELETE","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"customers\": [\n    \"29893264000101\"\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/pricing/contract/4610002/customers/store/5057"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": 4610002,\n  \"customers\": [\n    \"29893264000101\"\n  ],\n  \"notFound\": {\n    \"customers\": []\n  }\n}"}],"_postman_id":"fd0487a2-6c37-4735-9eef-75b15fbbd0a8"},{"name":"Adicionar Produtos ao Contrato da Filial","id":"01bea060-c378-4fce-8390-673cdecf16b1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"items\": [\n    {\n      \"partnerPartCode\": \"SKU-A-001\",\n      \"price\": 149.9,\n      \"targetMargin\": 18.5,\n      \"totalCost\": 120.0\n    },\n    {\n      \"partnerPartCode\": \"SKU-B-002\",\n      \"price\": 89.9\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/pricing/contract/:contractId/items/store/:partnerId","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Permite que uma conta <strong>matriz</strong> adicione produtos ao contrato de uma de suas <strong>filiais</strong> com o preço de cada um, ou atualize o preço dos que já estão nele. Cada produto é processado de forma independente: o resultado de cada um vem no campo <code>status</code> da resposta.</p>\n<p>O corpo e a resposta são idênticos aos do envio para a própria loja — a diferença é a filial dona do contrato, que vem na rota e é validada contra os vínculos da sua matriz.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>contractId</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id do contrato, devolvido em <code>id</code> na criação.</td>\n</tr>\n<tr>\n<td><code>partnerId</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id da <strong>filial</strong> dona do contrato. Precisa estar vinculada à matriz do token.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"corpo-da-requisição-json\">Corpo da Requisição (JSON)</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>items</code></td>\n<td>array</td>\n<td>Sim</td>\n<td>De 1 a 100 produtos.</td>\n</tr>\n<tr>\n<td><strong>Identificação do produto</strong> — não é um campo, é um grupo</td>\n<td>—</td>\n<td>Sim</td>\n<td>Uma das duas formas da seção <strong>Como identificar o produto</strong>: <code>items[].partnerPartCode</code> · <code>items[].skuAttributeValue</code> com <code>skuAttributeName</code>.</td>\n</tr>\n<tr>\n<td><code>items[].price</code></td>\n<td>number</td>\n<td>Não</td>\n<td>Preço do produto no contrato. Não pode ser negativo.</td>\n</tr>\n<tr>\n<td><code>items[].targetMargin</code></td>\n<td>number</td>\n<td>Não</td>\n<td>Margem alvo do produto no contrato, de 0 a 100.</td>\n</tr>\n<tr>\n<td><code>items[].totalCost</code></td>\n<td>number</td>\n<td>Não</td>\n<td>Custo total do produto. Não pode ser negativo.</td>\n</tr>\n<tr>\n<td><code>items[].priceTypeId</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Tipo de preço a que este produto fica restrito dentro do contrato.</td>\n</tr>\n<tr>\n<td><code>skuAttributeName</code></td>\n<td>string</td>\n<td>Condicional</td>\n<td>Nome do atributo usado para resolver <code>items[].skuAttributeValue</code>. Obrigatório quando você identifica os produtos por atributo. Vale para o envio inteiro, não por item.</td>\n</tr>\n</tbody>\n</table>\n</div><p><code>items[].value</code> é o nome legado de <code>items[].price</code> e continua aceito, com o mesmo efeito. Enviando os dois no mesmo item, vale <code>price</code>.</p>\n<h3 id=\"como-identificar-o-produto\">Como identificar o produto</h3>\n<p>Cada produto precisa trazer <strong>uma</strong> das duas formas, nesta ordem de precedência:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Forma</th>\n<th>Campos</th>\n<th>Quando usar</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Por código do parceiro</td>\n<td><code>partnerPartCode</code></td>\n<td>Você identifica o produto pelo seu próprio código.</td>\n</tr>\n<tr>\n<td>Por atributo</td>\n<td><code>skuAttributeValue</code> com <code>skuAttributeName</code> no envelope</td>\n<td>Você contratou o serviço de catálogo de produtos com atributo próprio.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Ao contrário do envio de estoque, formas diferentes podem conviver no mesmo envio: cada produto é resolvido pela forma que trouxer.</p>\n<h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"o-produto-precisa-ser-da-loja\">O produto precisa ser da loja</h4>\n<p>O produto é resolvido dentro do catálogo da loja dona do contrato. O que não resolve volta em <code>notFound.items</code> e os demais são gravados.</p>\n<h4 id=\"produto-repetido-no-mesmo-envio-não-é-processado\">Produto repetido no mesmo envio não é processado</h4>\n<p>Dois produtos do mesmo envio que resolvem para o mesmo SKU — pelo código repetido ou pelo atributo — vão os dois para <code>notFound.items</code> e nenhum é gravado. Envie cada produto uma única vez por requisição.</p>\n<h4 id=\"produto-recusado-por-valor-volta-na-lista-não-derruba-o-envio\">Produto recusado por valor volta na lista, não derruba o envio</h4>\n<p>Preço negativo, custo negativo, margem fora de 0 a 100 e produto sem nenhuma forma de identificação são recusados <strong>item a item</strong>: o produto volta em <code>items</code> com <code>status: ERROR</code> e o motivo em <code>error</code>, e os demais são gravados. A resposta é 200.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Id do contrato.</td>\n</tr>\n<tr>\n<td><code>items[].skuId</code></td>\n<td>Id do SKU resolvido pela plataforma. Vem ausente no produto recusado que não trouxe identificação.</td>\n</tr>\n<tr>\n<td><code>items[].price</code></td>\n<td>Preço gravado.</td>\n</tr>\n<tr>\n<td><code>items[].targetMargin</code> · <code>items[].totalCost</code></td>\n<td>Margem alvo e custo gravados. Vêm <code>null</code> quando você não os envia.</td>\n</tr>\n<tr>\n<td><code>items[].status</code></td>\n<td><code>inserted</code> produto novo no contrato · <code>updated</code> produto que já estava e mudou de valor · <code>unchanged</code> produto que já estava com os mesmos valores · <code>ERROR</code> produto recusado.</td>\n</tr>\n<tr>\n<td><code>items[].error</code></td>\n<td>Motivo da recusa. Presente só quando <code>status</code> é <code>ERROR</code>.</td>\n</tr>\n<tr>\n<td><code>items[].partnerPartCode</code> · <code>items[].skuAttributeValue</code></td>\n<td>Eco da identificação que você enviou, no produto recusado.</td>\n</tr>\n<tr>\n<td><code>notFound.items</code></td>\n<td>Produtos que você enviou e não foram resolvidos no catálogo da filial, ou que se repetiram no envio.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td><code>partnerId</code> da rota não é numérico: <code>{\"error\":\"Invalid target partner ID\"}</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>contractId</code> da rota não é um número maior que zero: <code>{\"error\":\"invalid contract id: \\\"...\\\"\"}</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>O corpo não é um JSON válido. O detalhe vem em <code>error</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>O contrato não existe ou não é da filial informada: <code>{\"error\":\"priceContract.notFound\"}</code>.</td>\n</tr>\n<tr>\n<td>422</td>\n<td><code>items</code> ausente, vazio ou com mais de 100 entradas. O detalhe vem em <code>error</code>.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado: <code>{\"error\":\"Authentication required for this route\"}</code>.</td>\n</tr>\n<tr>\n<td>403</td>\n<td>A filial não está vinculada à sua matriz: <code>{\"error\":\"Access denied: Invalid partnership\"}</code>. Diferente de 400, aqui o payload está certo — o que falta é o vínculo.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["pricing","contract",":contractId","items","store",":partnerId"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"4610002","key":"contractId"},{"type":"any","value":"5057","key":"partnerId"}]}},"response":[{"id":"58142976-ae0a-4d90-b773-bdaa104da303","name":"Sucesso — identificação por código do parceiro","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"items\": [\n    {\n      \"partnerPartCode\": \"SKU-A-001\",\n      \"price\": 149.9,\n      \"targetMargin\": 18.5,\n      \"totalCost\": 120.0\n    },\n    {\n      \"partnerPartCode\": \"SKU-B-002\",\n      \"price\": 89.9\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/pricing/contract/4610002/items/store/5057"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": 4610002,\n  \"items\": [\n    {\n      \"skuId\": 500101,\n      \"price\": 149.9,\n      \"targetMargin\": 18.5,\n      \"totalCost\": 120,\n      \"status\": \"inserted\"\n    },\n    {\n      \"skuId\": 500102,\n      \"price\": 89.9,\n      \"targetMargin\": null,\n      \"totalCost\": null,\n      \"status\": \"inserted\"\n    }\n  ],\n  \"notFound\": {\n    \"items\": []\n  }\n}"},{"id":"4b484c35-b7e9-449f-92bb-49a5ae81656c","name":"Sucesso — identificação por atributo, com item recusado","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"skuAttributeName\": \"codigo-interno\",\n  \"items\": [\n    {\n      \"skuAttributeValue\": \"SKU-A-001\",\n      \"price\": 139.9\n    },\n    {\n      \"skuAttributeValue\": \"SKU-Z-999\",\n      \"price\": 10.0\n    },\n    {\n      \"price\": 50.0\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/pricing/contract/4610002/items/store/5057"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": 4610002,\n  \"items\": [\n    {\n      \"skuId\": 500101,\n      \"price\": 139.9,\n      \"targetMargin\": null,\n      \"totalCost\": null,\n      \"status\": \"updated\"\n    },\n    {\n      \"price\": 50,\n      \"targetMargin\": null,\n      \"totalCost\": null,\n      \"status\": \"ERROR\",\n      \"error\": \"must provide skuId, partnerPartCode, or skuAttributeValue\"\n    }\n  ],\n  \"notFound\": {\n    \"items\": [\n      {\n        \"skuAttributeValue\": \"SKU-Z-999\",\n        \"price\": 10,\n        \"targetMargin\": null,\n        \"totalCost\": null\n      }\n    ]\n  }\n}"}],"_postman_id":"01bea060-c378-4fce-8390-673cdecf16b1"},{"name":"Remover Produtos do Contrato da Filial","id":"7dc82f15-524a-4af8-99ef-e15e802fea82","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"items\": [\n    {\n      \"partnerPartCode\": \"SKU-A-001\"\n    },\n    {\n      \"partnerPartCode\": \"SKU-Z-999\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/pricing/contract/:contractId/items/store/:partnerId","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Permite que uma conta <strong>matriz</strong> remova produtos do contrato de uma de suas <strong>filiais</strong>. Os produtos voltam a ser vendidos pelo preço de tabela da filial.</p>\n<p>O corpo e a resposta são idênticos aos da remoção na própria loja — a diferença é a filial dona do contrato, que vem na rota e é validada contra os vínculos da sua matriz.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>contractId</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id do contrato, devolvido em <code>id</code> na criação.</td>\n</tr>\n<tr>\n<td><code>partnerId</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id da <strong>filial</strong> dona do contrato. Precisa estar vinculada à matriz do token.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"corpo-da-requisição-json\">Corpo da Requisição (JSON)</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>items</code></td>\n<td>array</td>\n<td>Sim</td>\n<td>De 1 a 100 produtos.</td>\n</tr>\n<tr>\n<td><strong>Identificação do produto</strong> — não é um campo, é um grupo</td>\n<td>—</td>\n<td>Sim</td>\n<td>Uma das duas formas da seção <strong>Como identificar o produto</strong>: <code>items[].partnerPartCode</code> · <code>items[].skuAttributeValue</code> com <code>skuAttributeName</code>.</td>\n</tr>\n<tr>\n<td><code>skuAttributeName</code></td>\n<td>string</td>\n<td>Condicional</td>\n<td>Nome do atributo usado para resolver <code>items[].skuAttributeValue</code>. Obrigatório quando você identifica os produtos por atributo. Vale para o envio inteiro, não por item.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"como-identificar-o-produto\">Como identificar o produto</h3>\n<p>Cada produto precisa trazer <strong>uma</strong> das duas formas, nesta ordem de precedência:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Forma</th>\n<th>Campos</th>\n<th>Quando usar</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Por código do parceiro</td>\n<td><code>partnerPartCode</code></td>\n<td>Você identifica o produto pelo seu próprio código.</td>\n</tr>\n<tr>\n<td>Por atributo</td>\n<td><code>skuAttributeValue</code> com <code>skuAttributeName</code> no envelope</td>\n<td>Você contratou o serviço de catálogo de produtos com atributo próprio.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"produto-fora-do-contrato-volta-em-notfound\">Produto fora do contrato volta em <code>notFound</code></h4>\n<p>O produto que não está no contrato não interrompe a requisição: ele volta em <code>notFound.items</code> e os demais são removidos. A resposta é 200 mesmo quando nenhum produto foi removido.</p>\n<p>Para esvaziar a lista inteira de uma vez, use <code>deleteAllItems</code> em <strong>Atualizar Contrato</strong>.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Id do contrato.</td>\n</tr>\n<tr>\n<td><code>items[].skuId</code></td>\n<td>Id do SKU removido.</td>\n</tr>\n<tr>\n<td><code>items[].price</code></td>\n<td>Preço que o produto tinha no contrato, antes da remoção.</td>\n</tr>\n<tr>\n<td><code>items[].targetMargin</code> · <code>items[].totalCost</code></td>\n<td>Margem alvo e custo que o produto tinha no contrato.</td>\n</tr>\n<tr>\n<td><code>items[].partnerPartCode</code> · <code>items[].skuAttributeValue</code></td>\n<td>Eco da identificação que você enviou.</td>\n</tr>\n<tr>\n<td><code>notFound.items</code></td>\n<td>Produtos que você enviou e não estavam no contrato, ou que não foram resolvidos no catálogo da filial.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td><code>partnerId</code> da rota não é numérico: <code>{\"error\":\"Invalid target partner ID\"}</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>contractId</code> da rota não é um número maior que zero: <code>{\"error\":\"invalid contract id: \\\"...\\\"\"}</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>O corpo não é um JSON válido. O detalhe vem em <code>error</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>O contrato não existe ou não é da filial informada: <code>{\"error\":\"priceContract.notFound\"}</code>.</td>\n</tr>\n<tr>\n<td>422</td>\n<td><code>items</code> ausente, vazio ou com mais de 100 entradas. O detalhe vem em <code>error</code>.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado: <code>{\"error\":\"Authentication required for this route\"}</code>.</td>\n</tr>\n<tr>\n<td>403</td>\n<td>A filial não está vinculada à sua matriz: <code>{\"error\":\"Access denied: Invalid partnership\"}</code>. Diferente de 400, aqui o payload está certo — o que falta é o vínculo.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["pricing","contract",":contractId","items","store",":partnerId"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"4610002","key":"contractId"},{"type":"any","value":"5057","key":"partnerId"}]}},"response":[{"id":"bd4c6d27-567a-49a7-a2b5-6d5f2b7acb17","name":"Sucesso — produto removido","originalRequest":{"method":"DELETE","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"items\": [\n    {\n      \"partnerPartCode\": \"SKU-A-001\"\n    },\n    {\n      \"partnerPartCode\": \"SKU-Z-999\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/pricing/contract/4610002/items/store/5057"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": 4610002,\n  \"items\": [\n    {\n      \"skuId\": 500101,\n      \"partnerPartCode\": \"SKU-A-001\",\n      \"price\": 139.9,\n      \"targetMargin\": null,\n      \"totalCost\": null\n    }\n  ],\n  \"notFound\": {\n    \"items\": [\n      {\n        \"partnerPartCode\": \"SKU-Z-999\",\n        \"price\": null,\n        \"targetMargin\": null,\n        \"totalCost\": null\n      }\n    ]\n  }\n}"}],"_postman_id":"7dc82f15-524a-4af8-99ef-e15e802fea82"}],"id":"01565e84-0fe7-48dc-af29-3229917d2f4e","_postman_id":"01565e84-0fe7-48dc-af29-3229917d2f4e","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}}}],"id":"30d73683-013b-4ee6-8f5c-483bf41d52ae","description":"<p>Endpoints para gerenciar contratos de preço fixo para clientes ou grupos de clientes.</p>\n","_postman_id":"30d73683-013b-4ee6-8f5c-483bf41d52ae","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}}},{"name":"07 - Regra de Preço","item":[{"name":"Listar Regras de Preço","id":"59c55a2f-d25f-4571-840c-b4212a6dcfd1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://ws.autorei.net/v1/priceRule?name=Desconto Atacado&limit=5","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Lista as regras de preço <strong>ativas</strong> da sua loja. Regra desativada não aparece aqui.</p>\n<h3 id=\"parâmetros-de-consulta\">Parâmetros de Consulta</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>name</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Filtra pelo nome da regra. Veja <strong>O filtro por nome é exato</strong>.</td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Regras por página. Padrão <strong>5</strong>, teto <strong>25</strong> — valor acima disso é reduzido para 25, sem erro.</td>\n</tr>\n<tr>\n<td><code>offset</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Registro inicial da página. Padrão <strong>0</strong>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"o-filtro-por-nome-é-exato\">O filtro por nome é exato</h4>\n<p><code>name</code> compara o nome inteiro, não um trecho: <code>?name=Desconto</code> <strong>não</strong> encontra a regra <code>Desconto Atacado</code>. Envie o nome completo, com os mesmos espaços e acentos do cadastro.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>Array com uma regra por item, e <code>[]</code> quando nada casa com o filtro.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Id da regra. É o que você usa para desativá-la.</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>string</td>\n<td>Nome da regra.</td>\n</tr>\n<tr>\n<td><code>priority</code></td>\n<td>integer</td>\n<td>Prioridade de aplicação.</td>\n</tr>\n<tr>\n<td><code>type</code></td>\n<td>string</td>\n<td><code>PERCENT</code> ou <code>REAL</code>.</td>\n</tr>\n<tr>\n<td><code>value</code></td>\n<td>number</td>\n<td>Valor aplicado.</td>\n</tr>\n<tr>\n<td><code>cumulative</code></td>\n<td>boolean</td>\n<td>Se a regra pode somar com outras.</td>\n</tr>\n<tr>\n<td><code>stateRegistration</code></td>\n<td>boolean</td>\n<td>Corresponde ao <code>customerHasStateRegistration</code> que você enviou — <strong>o campo troca de nome na resposta</strong>.</td>\n</tr>\n<tr>\n<td><code>quantity</code></td>\n<td>integer</td>\n<td>Quantidade mínima do item. <code>null</code> quando não usada.</td>\n</tr>\n<tr>\n<td><code>warehouseState</code> · <code>customerState</code></td>\n<td>string</td>\n<td>UFs configuradas na regra. <code>null</code> quando não usadas.</td>\n</tr>\n<tr>\n<td><code>customerTagId</code> · <code>customerTypeId</code> · <code>customerCnae</code> · <code>customerPaysIcms</code></td>\n<td>—</td>\n<td>Critérios de cliente configurados.</td>\n</tr>\n<tr>\n<td><code>customerTypeName</code></td>\n<td>string</td>\n<td>Nome do tipo de cliente. Vem <code>\"\"</code> quando a regra não usa <code>customerTypeId</code>.</td>\n</tr>\n<tr>\n<td><code>skuStockId</code> · <code>skuPartnerTagId</code> · <code>skuNcm</code></td>\n<td>—</td>\n<td>Critérios de produto configurados.</td>\n</tr>\n<tr>\n<td><code>isDiscountBlockedByAttendant</code></td>\n<td>boolean</td>\n<td>Se a regra bloqueia desconto do atendente no carrinho.</td>\n</tr>\n<tr>\n<td><code>createdBy</code></td>\n<td>string</td>\n<td>E-mail do usuário que criou a regra, resolvido do seu token.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td><code>limit</code> ou <code>offset</code> não numérico: <code>{\"error\":\"invalid limit\"}</code>.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["v1","priceRule"],"host":["https://ws.autorei.net"],"query":[{"key":"name","value":"Desconto Atacado"},{"key":"limit","value":"5"},{"disabled":true,"key":"offset","value":"0"}],"variable":[]}},"response":[{"id":"6f110f29-74ca-4a5f-b8c0-17f40d58f466","name":"Sucesso — filtrando pelo nome exato","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://ws.autorei.net/v1/priceRule?name=Desconto Atacado&limit=5","host":["https://ws.autorei.net"],"path":["v1","priceRule"],"query":[{"key":"name","value":"Desconto Atacado"},{"key":"limit","value":"5"},{"key":"offset","value":"0","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"id\": 4210001,\n    \"name\": \"Desconto Atacado\",\n    \"priority\": 10,\n    \"type\": \"PERCENT\",\n    \"value\": -5,\n    \"cumulative\": false,\n    \"stateRegistration\": false,\n    \"isDiscountBlockedByAttendant\": false,\n    \"quantity\": 100,\n    \"warehouseState\": null,\n    \"customerState\": null,\n    \"customerTagId\": null,\n    \"customerCnae\": null,\n    \"customerTypeId\": null,\n    \"customerTypeName\": \"\",\n    \"customerPaysIcms\": false,\n    \"skuNcm\": null,\n    \"skuStockId\": null,\n    \"skuPartnerTagId\": null,\n    \"createdBy\": \"integracao@lojaexemplo.com.br\"\n  }\n]"}],"_postman_id":"59c55a2f-d25f-4571-840c-b4212a6dcfd1"},{"name":"Criar Regra de Preço","id":"42a6f92a-fd84-4072-a9d7-a7c7410a9b6e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Desconto Atacado\",\n  \"priority\": 10,\n  \"type\": \"PERCENT\",\n  \"value\": -5,\n  \"cumulative\": false,\n  \"customerHasStateRegistration\": false,\n  \"quantity\": 100\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/v1/priceRule","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Cria uma regra de preço da sua loja. A regra passa a ser avaliada em toda cotação de preço: quando o produto e o cliente atendem a todos os critérios configurados, o valor é aplicado.</p>\n<h3 id=\"corpo-da-requisição-json\">Corpo da Requisição (JSON)</h3>\n<p>Números e booleanos também são aceitos como string (<code>\"priority\": \"10\"</code>, <code>\"cumulative\": \"true\"</code>).</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>name</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>Nome da regra. Não pode ser vazio.</td>\n</tr>\n<tr>\n<td><code>priority</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Prioridade de aplicação: <strong>menor número, mais prioritário</strong>.</td>\n</tr>\n<tr>\n<td><code>type</code></td>\n<td>string</td>\n<td>Sim</td>\n<td><code>PERCENT</code> para percentual, <code>REAL</code> para valor em reais. Nenhum outro valor é aceito.</td>\n</tr>\n<tr>\n<td><code>value</code></td>\n<td>number</td>\n<td>Sim</td>\n<td><strong>Negativo</strong> para desconto, positivo para acréscimo.</td>\n</tr>\n<tr>\n<td><code>cumulative</code></td>\n<td>boolean</td>\n<td>Sim</td>\n<td><code>true</code> permite somar esta regra a outras.</td>\n</tr>\n<tr>\n<td><code>customerHasStateRegistration</code></td>\n<td>boolean</td>\n<td>Sim</td>\n<td><code>true</code> aplica só a cliente com inscrição estadual.</td>\n</tr>\n<tr>\n<td><code>quantity</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Quantidade mínima do item na cotação para a regra valer. Só tem efeito acima de 1.</td>\n</tr>\n<tr>\n<td><code>customerState</code></td>\n<td>string</td>\n<td>Não</td>\n<td>UF do endereço da cotação.</td>\n</tr>\n<tr>\n<td><code>warehouseState</code></td>\n<td>string</td>\n<td>Não</td>\n<td>UF do depósito.</td>\n</tr>\n<tr>\n<td><code>customerCnae</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Aplica só a cliente com esse CNAE. Cliente sem CNAE não recebe a regra.</td>\n</tr>\n<tr>\n<td><code>customerTypeId</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Aplica só ao tipo de cliente informado.</td>\n</tr>\n<tr>\n<td><code>customerTagId</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Aplica só a clientes com essa tag. A tag precisa ser da sua loja.</td>\n</tr>\n<tr>\n<td><code>customerPaysIcms</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td><code>true</code> aplica só a cliente contribuinte de ICMS.</td>\n</tr>\n<tr>\n<td><code>skuPartnerTagId</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Aplica só a produtos com essa tag de preço. A tag precisa ser da sua loja.</td>\n</tr>\n<tr>\n<td><code>skuStockId</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Aplica só ao estoque informado.</td>\n</tr>\n<tr>\n<td><code>skuNcm</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Aplica só a produtos com esse NCM. Produto sem NCM não recebe a regra.</td>\n</tr>\n<tr>\n<td><code>promotionalBeforeAfter</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Marca a regra como promocional, para exibição de preço \"de/por\". Muda a ordem de avaliação: as regras promocionais são avaliadas depois das comuns.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"critério-configurado-é-critério-exigido\">Critério configurado é critério exigido</h4>\n<p>Cada campo opcional que você preenche <strong>estreita</strong> a regra: ela só é aplicada quando o produto e o cliente atendem a <strong>todos</strong> eles. Deixe de fora o que não é condição.</p>\n<h4 id=\"regra-que-zeraria-o-preço-não-é-aplicada\">Regra que zeraria o preço não é aplicada</h4>\n<p>Se o valor da regra levaria o preço a zero ou a um número negativo, ela é ignorada na cotação — o preço não fica negativo e nenhum erro é gerado.</p>\n<h4 id=\"ordem-de-aplicação\">Ordem de aplicação</h4>\n<p>Primeiro as regras não promocionais, depois as não cumulativas, depois a <code>priority</code> (menor primeiro) e, em empate, a mais antiga.</p>\n<h3 id=\"resposta-·-201\">Resposta · 201</h3>\n<p>A regra criada. O código é <strong>201 Created</strong>, não 200. <code>promotionalBeforeAfter</code> é gravado, mas não volta na resposta.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Id da regra. É o que você usa para desativá-la.</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>string</td>\n<td>Nome da regra.</td>\n</tr>\n<tr>\n<td><code>priority</code></td>\n<td>integer</td>\n<td>Prioridade de aplicação.</td>\n</tr>\n<tr>\n<td><code>type</code></td>\n<td>string</td>\n<td><code>PERCENT</code> ou <code>REAL</code>.</td>\n</tr>\n<tr>\n<td><code>value</code></td>\n<td>number</td>\n<td>Valor aplicado.</td>\n</tr>\n<tr>\n<td><code>cumulative</code></td>\n<td>boolean</td>\n<td>Se a regra pode somar com outras.</td>\n</tr>\n<tr>\n<td><code>stateRegistration</code></td>\n<td>boolean</td>\n<td>Corresponde ao <code>customerHasStateRegistration</code> que você enviou — <strong>o campo troca de nome na resposta</strong>.</td>\n</tr>\n<tr>\n<td><code>quantity</code></td>\n<td>integer</td>\n<td>Quantidade mínima do item. <code>null</code> quando não usada.</td>\n</tr>\n<tr>\n<td><code>warehouseState</code> · <code>customerState</code></td>\n<td>string</td>\n<td>UFs configuradas na regra. <code>null</code> quando não usadas.</td>\n</tr>\n<tr>\n<td><code>customerTagId</code> · <code>customerTypeId</code> · <code>customerCnae</code> · <code>customerPaysIcms</code></td>\n<td>—</td>\n<td>Critérios de cliente configurados.</td>\n</tr>\n<tr>\n<td><code>customerTypeName</code></td>\n<td>string</td>\n<td>Nome do tipo de cliente. Vem <code>\"\"</code> quando a regra não usa <code>customerTypeId</code>.</td>\n</tr>\n<tr>\n<td><code>skuStockId</code> · <code>skuPartnerTagId</code> · <code>skuNcm</code></td>\n<td>—</td>\n<td>Critérios de produto configurados.</td>\n</tr>\n<tr>\n<td><code>isDiscountBlockedByAttendant</code></td>\n<td>boolean</td>\n<td>Se a regra bloqueia desconto do atendente no carrinho.</td>\n</tr>\n<tr>\n<td><code>createdBy</code></td>\n<td>string</td>\n<td>E-mail do usuário que criou a regra, resolvido do seu token.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>422</td>\n<td>Campo obrigatório ausente (<code>{\"error\":\"cumulative is required\"}</code>), <code>type</code> fora de <code>PERCENT</code>/<code>REAL</code> (<code>{\"error\":\"invalid type\"}</code>) ou corpo não parseável (<code>{\"error\":\"invalid request body: ...\"}</code>).</td>\n</tr>\n<tr>\n<td>404</td>\n<td><code>customerTagId</code> ou <code>skuPartnerTagId</code> que não é da sua loja: <code>{\"error\":\"Tag de produto não encontrada\"}</code>. Mesma resposta de tag inexistente.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["v1","priceRule"],"host":["https://ws.autorei.net"],"query":[],"variable":[]}},"response":[{"id":"b18e246a-15c7-4ff9-ae65-b1756c2c7a68","name":"Sucesso — desconto percentual","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Desconto Atacado\",\n  \"priority\": 10,\n  \"type\": \"PERCENT\",\n  \"value\": -5,\n  \"cumulative\": false,\n  \"customerHasStateRegistration\": false,\n  \"quantity\": 100\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/v1/priceRule"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": 4210001,\n  \"name\": \"Desconto Atacado\",\n  \"priority\": 10,\n  \"type\": \"PERCENT\",\n  \"value\": -5,\n  \"cumulative\": false,\n  \"stateRegistration\": false,\n  \"isDiscountBlockedByAttendant\": false,\n  \"quantity\": 100,\n  \"warehouseState\": null,\n  \"customerState\": null,\n  \"customerTagId\": null,\n  \"customerCnae\": null,\n  \"customerTypeId\": null,\n  \"customerTypeName\": \"\",\n  \"customerPaysIcms\": false,\n  \"skuNcm\": null,\n  \"skuStockId\": null,\n  \"skuPartnerTagId\": null,\n  \"createdBy\": \"integracao@lojaexemplo.com.br\"\n}"}],"_postman_id":"42a6f92a-fd84-4072-a9d7-a7c7410a9b6e"},{"name":"Deletar Regra de Preço","id":"05719ccf-7cf5-4278-8598-4903623f5ca9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"https://ws.autorei.net/v1/priceRule/:id","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Desativa uma regra de preço. É uma exclusão <strong>lógica</strong>: a regra deixa de ser aplicada nas cotações e sai da listagem, mas o histórico é preservado — não há como reativá-la por esta API.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id da regra, como veio em <code>id</code> na criação ou na listagem.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"resposta-·-202\">Resposta · 202</h3>\n<p><strong>202 Accepted, com corpo vazio.</strong> Não espere um JSON de confirmação: o 202 é a confirmação.</p>\n<h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td><code>id</code> não numérico ou zero: <code>{\"error\":\"invalid id\"}</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td><code>{\"error\":\"Regra de preço não encontrada\"}</code> — id inexistente, regra de outra loja, ou regra <strong>já desativada</strong>. Chamar duas vezes o mesmo id devolve 404 na segunda.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["v1","priceRule",":id"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"4210001","key":"id"}]}},"response":[{"id":"ee7c0f5f-7622-4148-beaa-314133f0cb42","name":"Sucesso — regra desativada","originalRequest":{"method":"DELETE","header":[],"url":"https://ws.autorei.net/v1/priceRule/4210001"},"status":"Accepted","code":202,"_postman_previewlanguage":"text","header":[],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"05719ccf-7cf5-4278-8598-4903623f5ca9"}],"id":"701d004f-08b4-4b7d-a8a3-53771060e496","description":"<p>Serviços para criação e gerenciamento de regras de preço.</p>\n","_postman_id":"701d004f-08b4-4b7d-a8a3-53771060e496","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}}},{"name":"08 - Orçamentos","item":[{"name":"Listar Orçamentos Pendentes","id":"b3382dc2-ec29-4532-a0d6-7f2edf1cb33c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://ws.autorei.net/partnerBudgets/pending?limit=5&offset=0","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Lista as solicitações de orçamento em aberto para a sua loja — pedidos de cotação que clientes fizeram para produtos que você vende e que ainda não foram respondidos. Cada item traz o produto, a quantidade pedida e a praça do cliente, que é o que você precisa para precificar.</p>\n<h3 id=\"parâmetros-de-consulta\">Parâmetros de Consulta</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Orçamentos por página. Padrão <strong>5</strong>, teto <strong>50</strong> — valor acima disso é reduzido para 50, sem erro.</td>\n</tr>\n<tr>\n<td><code>offset</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Orçamento inicial da página. Padrão <strong>0</strong>.</td>\n</tr>\n<tr>\n<td><code>customerType</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Filtra pelo tipo de cliente: <code>PF</code> ou <code>PJ</code>. Omitido, traz os dois.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"sem-orçamentos-pendentes-a-resposta-é-422\">Sem orçamentos pendentes, a resposta é 422</h4>\n<p>Quando não há nada a responder, a resposta é <code>422</code> com a mensagem <code>Não existem orçamentos pendentes.</code> É também o que você recebe quando o <code>offset</code> passa do último orçamento.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>Array com um objeto por orçamento pendente.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Id do orçamento. É o que você usa para responder ou recusar.</td>\n</tr>\n<tr>\n<td><code>active</code></td>\n<td>boolean</td>\n<td>Se o orçamento está ativo.</td>\n</tr>\n<tr>\n<td><code>quantity</code></td>\n<td>integer</td>\n<td>Quantidade que o cliente pediu.</td>\n</tr>\n<tr>\n<td><code>dateCreated</code></td>\n<td>string</td>\n<td>Data e hora da solicitação, em UTC.</td>\n</tr>\n<tr>\n<td><code>product.name</code></td>\n<td>string</td>\n<td>Nome do produto na CWS.</td>\n</tr>\n<tr>\n<td><code>product.manufacturer</code></td>\n<td>string</td>\n<td>Nome do fabricante.</td>\n</tr>\n<tr>\n<td><code>product.mfrPartCode</code></td>\n<td>string</td>\n<td>Código do produto no fabricante.</td>\n</tr>\n<tr>\n<td><code>product.composition</code></td>\n<td>string</td>\n<td><code>UNITARY</code>, <code>PAIR</code>, <code>KIT</code>, <code>WARRANTY</code> ou <code>SET</code>.</td>\n</tr>\n<tr>\n<td><code>product.imageSet.baseUrl</code></td>\n<td>string</td>\n<td>Raiz das imagens do produto.</td>\n</tr>\n<tr>\n<td><code>product.imageSet.availableSizes</code></td>\n<td>array</td>\n<td>Tamanhos disponíveis: <code>pp</code>, <code>p</code>, <code>m</code>, <code>g</code>, <code>gg</code>, <code>full</code>.</td>\n</tr>\n<tr>\n<td><code>product.imageSet.paths</code></td>\n<td>array</td>\n<td>Caminhos das imagens. Monte a URL com <code>baseUrl</code> + tamanho + caminho.</td>\n</tr>\n<tr>\n<td><code>customer.city</code> · <code>customer.state</code></td>\n<td>string</td>\n<td>Cidade e UF do cliente — é a praça que define frete e ICMS na sua cotação.</td>\n</tr>\n<tr>\n<td><code>customer.type</code></td>\n<td>string</td>\n<td><code>PF</code> ou <code>PJ</code>.</td>\n</tr>\n<tr>\n<td><code>formNotification.formNotificationId</code></td>\n<td>integer</td>\n<td>Id da solicitação que originou o orçamento.</td>\n</tr>\n<tr>\n<td><code>formNotification.formNotificationCustomAttributes</code></td>\n<td>array</td>\n<td>Campos extras que o cliente preencheu no formulário: <code>name</code>, <code>description</code> e <code>value</code>. Vem <code>[]</code> quando não há.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>422</td>\n<td>Não há orçamento pendente (<code>Não existem orçamentos pendentes.</code>), ou <code>customerType</code> fora de <code>PF</code>/<code>PJ</code>.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["partnerBudgets","pending"],"host":["https://ws.autorei.net"],"query":[{"key":"limit","value":"5"},{"key":"offset","value":"0"},{"disabled":true,"key":"customerType","value":"PJ"}],"variable":[]}},"response":[{"id":"d0f2d0f4-5cdc-4e6f-82c1-a5e36b9a75cc","name":"Sucesso — dois orçamentos pendentes","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://ws.autorei.net/partnerBudgets/pending?limit=5&offset=0","host":["https://ws.autorei.net"],"path":["partnerBudgets","pending"],"query":[{"key":"limit","value":"5"},{"key":"offset","value":"0"},{"key":"customerType","value":"PJ","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"id\": 4480101,\n    \"active\": true,\n    \"product\": {\n      \"name\": \"Kit Embreagem Completo — Linha Pesada\",\n      \"manufacturer\": \"Fabricante Exemplo\",\n      \"mfrPartCode\": \"FE-500101\",\n      \"composition\": \"UNITARY\",\n      \"imageSet\": {\n        \"baseUrl\": \"https://images.lojaexemplo.cws.digital/produtos\",\n        \"availableSizes\": [\n          \"pp\",\n          \"p\",\n          \"m\",\n          \"g\",\n          \"gg\",\n          \"full\"\n        ],\n        \"paths\": [\n          \"/50/01/kit-embreagem-completo-500101-1756992000000.jpg\"\n        ]\n      }\n    },\n    \"quantity\": 5,\n    \"customer\": {\n      \"city\": \"São Paulo\",\n      \"state\": \"SP\",\n      \"type\": \"PF\"\n    },\n    \"dateCreated\": \"2026-09-01T13:42:07Z\",\n    \"formNotification\": {\n      \"formNotificationId\": 4480901,\n      \"formNotificationCustomAttributes\": []\n    }\n  },\n  {\n    \"id\": 4480102,\n    \"active\": true,\n    \"product\": {\n      \"name\": \"Kit Embreagem Completo — Linha Pesada\",\n      \"manufacturer\": \"Fabricante Exemplo\",\n      \"mfrPartCode\": \"FE-500101\",\n      \"composition\": \"UNITARY\",\n      \"imageSet\": {\n        \"baseUrl\": \"https://images.lojaexemplo.cws.digital/produtos\",\n        \"availableSizes\": [\n          \"pp\",\n          \"p\",\n          \"m\",\n          \"g\",\n          \"gg\",\n          \"full\"\n        ],\n        \"paths\": [\n          \"/50/01/kit-embreagem-completo-500101-1756992000000.jpg\"\n        ]\n      }\n    },\n    \"quantity\": 1,\n    \"customer\": {\n      \"city\": \"São Paulo\",\n      \"state\": \"SP\",\n      \"type\": \"PJ\"\n    },\n    \"dateCreated\": \"2026-09-01T13:42:07Z\",\n    \"formNotification\": {\n      \"formNotificationId\": 4480902,\n      \"formNotificationCustomAttributes\": []\n    }\n  }\n]"}],"_postman_id":"b3382dc2-ec29-4532-a0d6-7f2edf1cb33c"},{"name":"Buscar Detalhes do Orçamento","id":"56dbe34f-b7e9-419f-8f6a-0135155a506d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://ws.autorei.net/partnerBudgets/:id","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Retorna um orçamento pela sua identificação, com o estado atual: se ainda está pendente, se você já respondeu e quanto informou, e se ele virou pedido.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id do orçamento, como veio em <code>id</code> na listagem de pendentes.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>O orçamento. Os campos marcados aparecem só na condição indicada.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Id do orçamento.</td>\n</tr>\n<tr>\n<td><code>active</code></td>\n<td>boolean</td>\n<td>Se o orçamento está ativo.</td>\n</tr>\n<tr>\n<td><code>quantity</code></td>\n<td>integer</td>\n<td>Quantidade que o cliente pediu.</td>\n</tr>\n<tr>\n<td><code>dateCreated</code></td>\n<td>string</td>\n<td>Data e hora da solicitação, em UTC.</td>\n</tr>\n<tr>\n<td><code>product.name</code></td>\n<td>string</td>\n<td>Nome do produto na CWS.</td>\n</tr>\n<tr>\n<td><code>product.manufacturer</code></td>\n<td>string</td>\n<td>Nome do fabricante.</td>\n</tr>\n<tr>\n<td><code>product.mfrPartCode</code></td>\n<td>string</td>\n<td>Código do produto no fabricante.</td>\n</tr>\n<tr>\n<td><code>product.composition</code></td>\n<td>string</td>\n<td><code>UNITARY</code>, <code>PAIR</code>, <code>KIT</code>, <code>WARRANTY</code> ou <code>SET</code>.</td>\n</tr>\n<tr>\n<td><code>product.imageSet.baseUrl</code> · <code>availableSizes</code> · <code>paths</code></td>\n<td>—</td>\n<td>Raiz, tamanhos (<code>pp</code>, <code>p</code>, <code>m</code>, <code>g</code>, <code>gg</code>, <code>full</code>) e caminhos das imagens do produto.</td>\n</tr>\n<tr>\n<td><code>customer.city</code> · <code>customer.state</code></td>\n<td>string</td>\n<td>Cidade e UF do cliente.</td>\n</tr>\n<tr>\n<td><code>customer.type</code></td>\n<td>string</td>\n<td><code>PF</code> ou <code>PJ</code>.</td>\n</tr>\n<tr>\n<td><code>formNotification.formNotificationId</code></td>\n<td>integer</td>\n<td>Id da solicitação que originou o orçamento.</td>\n</tr>\n<tr>\n<td><code>formNotification.formNotificationCustomAttributes</code></td>\n<td>array</td>\n<td>Campos extras do formulário: <code>name</code>, <code>description</code>, <code>value</code>. Vem <code>[]</code> quando não há.</td>\n</tr>\n<tr>\n<td><code>stock.price</code> · <code>stock.leadTime</code> · <code>stock.partnerPartCode</code></td>\n<td>—</td>\n<td><strong>Só em orçamento já respondido.</strong> O que você informou na resposta.</td>\n</tr>\n<tr>\n<td><code>price</code></td>\n<td>number</td>\n<td><strong>Só em orçamento já respondido.</strong> Mesmo valor de <code>stock.price</code>.</td>\n</tr>\n<tr>\n<td><code>priceFormats.value</code> · <code>priceFormats.mask</code></td>\n<td>string</td>\n<td><strong>Só em orçamento já respondido.</strong> O preço com duas casas (<code>\"1250.00\"</code>) e já com a máscara de moeda (<code>\"R$1250.00\"</code>).</td>\n</tr>\n<tr>\n<td><code>leadTime</code></td>\n<td>integer</td>\n<td><strong>Só em orçamento já respondido.</strong> Mesmo valor de <code>stock.leadTime</code>.</td>\n</tr>\n<tr>\n<td><code>partnerPartCode</code></td>\n<td>string</td>\n<td><strong>Só em orçamento já respondido.</strong> Mesmo valor de <code>stock.partnerPartCode</code>.</td>\n</tr>\n<tr>\n<td><code>partnerInternalPartCode</code></td>\n<td>string</td>\n<td><strong>Só em orçamento já respondido.</strong> Código interno do estoque criado.</td>\n</tr>\n<tr>\n<td><code>partnerOrderId</code></td>\n<td>integer</td>\n<td><strong>Só quando o orçamento virou pedido.</strong> Id do pedido — use nos endpoints de Pedidos.</td>\n</tr>\n</tbody>\n</table>\n</div><p>O preço, o prazo e o código do produto aparecem <strong>em dois lugares</strong> no orçamento respondido: dentro de <code>stock</code> e também na raiz do objeto. São o mesmo valor — leia de onde preferir, e não trate a raiz como um segundo dado.</p>\n<h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>Id inexistente <strong>ou</strong> orçamento de outra loja. A mesma resposta nos dois casos, sem corpo.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["partnerBudgets",":id"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"4480101","key":"id"}]}},"response":[{"id":"ea8c7c69-4810-45ea-baee-caa9f7f6533d","name":"Sucesso — orçamento já respondido, que virou pedido","originalRequest":{"method":"GET","header":[],"url":"https://ws.autorei.net/partnerBudgets/4480101"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": 4480101,\n  \"active\": true,\n  \"product\": {\n    \"name\": \"Kit Embreagem Completo — Linha Pesada\",\n    \"manufacturer\": \"Fabricante Exemplo\",\n    \"mfrPartCode\": \"FE-500101\",\n    \"composition\": \"UNITARY\",\n    \"imageSet\": {\n      \"baseUrl\": \"https://images.lojaexemplo.cws.digital/produtos\",\n      \"availableSizes\": [\n        \"pp\",\n        \"p\",\n        \"m\",\n        \"g\",\n        \"gg\",\n        \"full\"\n      ],\n      \"paths\": [\n        \"/50/01/kit-embreagem-completo-500101-1756992000000.jpg\"\n      ]\n    }\n  },\n  \"stock\": {\n    \"price\": 1250.0,\n    \"leadTime\": 7,\n    \"partnerPartCode\": \"SKU-A-001\"\n  },\n  \"quantity\": 5,\n  \"customer\": {\n    \"city\": \"São Paulo\",\n    \"state\": \"SP\",\n    \"type\": \"PF\"\n  },\n  \"dateCreated\": \"2026-09-01T13:42:07Z\",\n  \"price\": 1250.0,\n  \"priceFormats\": {\n    \"value\": \"1250.00\",\n    \"mask\": \"R$1250.00\"\n  },\n  \"leadTime\": 7,\n  \"partnerPartCode\": \"SKU-A-001\",\n  \"partnerInternalPartCode\": \"SKU-A-001\",\n  \"partnerOrderId\": 900201,\n  \"formNotification\": {\n    \"formNotificationId\": 4480901,\n    \"formNotificationCustomAttributes\": []\n  }\n}"}],"_postman_id":"56dbe34f-b7e9-419f-8f6a-0135155a506d"},{"name":"Buscar Orçamento por ID do Pedido","id":"7b0fe0b1-fd40-439a-a10f-aa3575098162","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://ws.autorei.net/partnerBudgetsByPartnerOrder/:partnerOrderId","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Retorna os orçamentos que originaram um pedido. Use quando receber um pedido e precisar rastrear de qual cotação ele veio — o preço e o prazo que você informou no orçamento estão aqui.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>partnerOrderId</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id do <strong>pedido</strong>, não do orçamento. É o <code>id</code> dos endpoints de Pedidos, e o mesmo valor que aparece em <code>partnerOrderId</code> no orçamento.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"a-resposta-é-uma-lista\">A resposta é uma lista</h4>\n<p>Um pedido pode ter nascido de mais de um orçamento — um por item cotado. Espere um array mesmo quando houver só um.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>Array com um objeto por orçamento. Todos vêm com os campos de orçamento respondido preenchidos, já que geraram pedido.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Id do orçamento.</td>\n</tr>\n<tr>\n<td><code>active</code></td>\n<td>boolean</td>\n<td>Se o orçamento está ativo.</td>\n</tr>\n<tr>\n<td><code>quantity</code></td>\n<td>integer</td>\n<td>Quantidade que o cliente pediu.</td>\n</tr>\n<tr>\n<td><code>dateCreated</code></td>\n<td>string</td>\n<td>Data e hora da solicitação, em UTC.</td>\n</tr>\n<tr>\n<td><code>product.name</code></td>\n<td>string</td>\n<td>Nome do produto na CWS.</td>\n</tr>\n<tr>\n<td><code>product.manufacturer</code></td>\n<td>string</td>\n<td>Nome do fabricante.</td>\n</tr>\n<tr>\n<td><code>product.mfrPartCode</code></td>\n<td>string</td>\n<td>Código do produto no fabricante.</td>\n</tr>\n<tr>\n<td><code>product.composition</code></td>\n<td>string</td>\n<td><code>UNITARY</code>, <code>PAIR</code>, <code>KIT</code>, <code>WARRANTY</code> ou <code>SET</code>.</td>\n</tr>\n<tr>\n<td><code>product.imageSet.baseUrl</code> · <code>availableSizes</code> · <code>paths</code></td>\n<td>—</td>\n<td>Raiz, tamanhos (<code>pp</code>, <code>p</code>, <code>m</code>, <code>g</code>, <code>gg</code>, <code>full</code>) e caminhos das imagens do produto.</td>\n</tr>\n<tr>\n<td><code>customer.city</code> · <code>customer.state</code></td>\n<td>string</td>\n<td>Cidade e UF do cliente.</td>\n</tr>\n<tr>\n<td><code>customer.type</code></td>\n<td>string</td>\n<td><code>PF</code> ou <code>PJ</code>.</td>\n</tr>\n<tr>\n<td><code>formNotification.formNotificationId</code></td>\n<td>integer</td>\n<td>Id da solicitação que originou o orçamento.</td>\n</tr>\n<tr>\n<td><code>formNotification.formNotificationCustomAttributes</code></td>\n<td>array</td>\n<td>Campos extras do formulário: <code>name</code>, <code>description</code>, <code>value</code>. Vem <code>[]</code> quando não há.</td>\n</tr>\n<tr>\n<td><code>stock.price</code> · <code>stock.leadTime</code> · <code>stock.partnerPartCode</code></td>\n<td>—</td>\n<td><strong>Só em orçamento já respondido.</strong> O que você informou na resposta.</td>\n</tr>\n<tr>\n<td><code>price</code></td>\n<td>number</td>\n<td><strong>Só em orçamento já respondido.</strong> Mesmo valor de <code>stock.price</code>.</td>\n</tr>\n<tr>\n<td><code>priceFormats.value</code> · <code>priceFormats.mask</code></td>\n<td>string</td>\n<td><strong>Só em orçamento já respondido.</strong> O preço com duas casas (<code>\"1250.00\"</code>) e já com a máscara de moeda (<code>\"R$1250.00\"</code>).</td>\n</tr>\n<tr>\n<td><code>leadTime</code></td>\n<td>integer</td>\n<td><strong>Só em orçamento já respondido.</strong> Mesmo valor de <code>stock.leadTime</code>.</td>\n</tr>\n<tr>\n<td><code>partnerPartCode</code></td>\n<td>string</td>\n<td><strong>Só em orçamento já respondido.</strong> Mesmo valor de <code>stock.partnerPartCode</code>.</td>\n</tr>\n<tr>\n<td><code>partnerInternalPartCode</code></td>\n<td>string</td>\n<td><strong>Só em orçamento já respondido.</strong> Código interno do estoque criado.</td>\n</tr>\n<tr>\n<td><code>partnerOrderId</code></td>\n<td>integer</td>\n<td><strong>Só quando o orçamento virou pedido.</strong> Id do pedido — use nos endpoints de Pedidos.</td>\n</tr>\n</tbody>\n</table>\n</div><p>O preço, o prazo e o código do produto aparecem <strong>em dois lugares</strong> no orçamento respondido: dentro de <code>stock</code> e também na raiz do objeto. São o mesmo valor — leia de onde preferir, e não trate a raiz como um segundo dado.</p>\n<h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>O pedido não tem orçamento vinculado, o id não existe, ou o pedido é de outra loja. A mesma resposta nos três casos, sem corpo.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["partnerBudgetsByPartnerOrder",":partnerOrderId"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"900201","key":"partnerOrderId"}]}},"response":[{"id":"6423a817-ded8-4078-8701-61bb48433ddb","name":"Sucesso — o orçamento que originou o pedido","originalRequest":{"method":"GET","header":[],"url":"https://ws.autorei.net/partnerBudgetsByPartnerOrder/900201"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"id\": 4480101,\n    \"active\": true,\n    \"product\": {\n      \"name\": \"Kit Embreagem Completo — Linha Pesada\",\n      \"manufacturer\": \"Fabricante Exemplo\",\n      \"mfrPartCode\": \"FE-500101\",\n      \"composition\": \"UNITARY\",\n      \"imageSet\": {\n        \"baseUrl\": \"https://images.lojaexemplo.cws.digital/produtos\",\n        \"availableSizes\": [\n          \"pp\",\n          \"p\",\n          \"m\",\n          \"g\",\n          \"gg\",\n          \"full\"\n        ],\n        \"paths\": [\n          \"/50/01/kit-embreagem-completo-500101-1756992000000.jpg\"\n        ]\n      }\n    },\n    \"stock\": {\n      \"price\": 1250.0,\n      \"leadTime\": 7,\n      \"partnerPartCode\": \"SKU-A-001\"\n    },\n    \"quantity\": 5,\n    \"customer\": {\n      \"city\": \"São Paulo\",\n      \"state\": \"SP\",\n      \"type\": \"PF\"\n    },\n    \"dateCreated\": \"2026-09-01T13:42:07Z\",\n    \"price\": 1250.0,\n    \"priceFormats\": {\n      \"value\": \"1250.00\",\n      \"mask\": \"R$1250.00\"\n    },\n    \"leadTime\": 7,\n    \"partnerPartCode\": \"SKU-A-001\",\n    \"partnerInternalPartCode\": \"SKU-A-001\",\n    \"partnerOrderId\": 900201,\n    \"formNotification\": {\n      \"formNotificationId\": 4480901,\n      \"formNotificationCustomAttributes\": []\n    }\n  }\n]"}],"_postman_id":"7b0fe0b1-fd40-439a-a10f-aa3575098162"},{"name":"Responder Orçamento","id":"26099d57-b201-4f28-8606-9e123cdefb33","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"price\": 1250.0,\n  \"leadTime\": 7,\n  \"partnerPartCode\": \"SKU-A-001\"\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/partnerBudgets/:id","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Responde um orçamento pendente: você informa o preço, o prazo de entrega e o seu código do produto, e a CWS cria o estoque correspondente e apresenta a sua oferta ao cliente.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id do orçamento, como veio em <code>id</code> na listagem de pendentes.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"corpo-da-requisição-json\">Corpo da Requisição (JSON)</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>price</code></td>\n<td>number</td>\n<td>Sim</td>\n<td>Preço unitário da sua oferta. Mínimo <strong>0,01</strong> — não é possível ofertar zero.</td>\n</tr>\n<tr>\n<td><code>leadTime</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Prazo de entrega em dias, de <strong>0 a 99</strong>. <code>0</code> significa pronta-entrega.</td>\n</tr>\n<tr>\n<td><code>partnerPartCode</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>Código do produto no seu catálogo. Não pode ser vazio.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"responder-cria-o-estoque-do-produto\">Responder cria o estoque do produto</h4>\n<p>A resposta não é só uma cotação: a CWS grava um estoque com o preço, o prazo e o código que você informou, na <strong>quantidade que o cliente pediu</strong>, e vincula esse estoque ao orçamento. É por isso que <code>partnerPartCode</code> é obrigatório — é o código pelo qual você vai reconhecer o item quando o pedido chegar.</p>\n<h4 id=\"o-estoque-nasce-no-seu-primeiro-depósito\">O estoque nasce no seu primeiro depósito</h4>\n<p>O estoque criado é associado ao <strong>primeiro depósito da sua loja</strong>, não a um depósito de sua escolha — esta rota não recebe <code>warehouseId</code>.</p>\n<h4 id=\"um-orçamento-se-responde-uma-vez\">Um orçamento se responde uma vez</h4>\n<p>Orçamento que já tem resposta é recusado com <code>Orcamento já respondido</code>.</p>\n<h4 id=\"a-cotação-fecha-no-quinto-orçamento-respondido\">A cotação fecha no quinto orçamento respondido</h4>\n<p>A solicitação do cliente aceita respostas de vários parceiros. Na <strong>primeira</strong> resposta o cliente é avisado de que encontrou o produto; a partir da <strong>quinta</strong>, a solicitação é encerrada e os orçamentos ainda não respondidos são descartados.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>O orçamento, agora com os campos de orçamento respondido preenchidos. A resposta traz também o cabeçalho <code>Location</code> com a URL do orçamento.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Id do orçamento.</td>\n</tr>\n<tr>\n<td><code>active</code></td>\n<td>boolean</td>\n<td>Se o orçamento está ativo.</td>\n</tr>\n<tr>\n<td><code>quantity</code></td>\n<td>integer</td>\n<td>Quantidade que o cliente pediu.</td>\n</tr>\n<tr>\n<td><code>dateCreated</code></td>\n<td>string</td>\n<td>Data e hora da solicitação, em UTC.</td>\n</tr>\n<tr>\n<td><code>product.name</code></td>\n<td>string</td>\n<td>Nome do produto na CWS.</td>\n</tr>\n<tr>\n<td><code>product.manufacturer</code></td>\n<td>string</td>\n<td>Nome do fabricante.</td>\n</tr>\n<tr>\n<td><code>product.mfrPartCode</code></td>\n<td>string</td>\n<td>Código do produto no fabricante.</td>\n</tr>\n<tr>\n<td><code>product.composition</code></td>\n<td>string</td>\n<td><code>UNITARY</code>, <code>PAIR</code>, <code>KIT</code>, <code>WARRANTY</code> ou <code>SET</code>.</td>\n</tr>\n<tr>\n<td><code>product.imageSet.baseUrl</code> · <code>availableSizes</code> · <code>paths</code></td>\n<td>—</td>\n<td>Raiz, tamanhos (<code>pp</code>, <code>p</code>, <code>m</code>, <code>g</code>, <code>gg</code>, <code>full</code>) e caminhos das imagens do produto.</td>\n</tr>\n<tr>\n<td><code>customer.city</code> · <code>customer.state</code></td>\n<td>string</td>\n<td>Cidade e UF do cliente.</td>\n</tr>\n<tr>\n<td><code>customer.type</code></td>\n<td>string</td>\n<td><code>PF</code> ou <code>PJ</code>.</td>\n</tr>\n<tr>\n<td><code>formNotification.formNotificationId</code></td>\n<td>integer</td>\n<td>Id da solicitação que originou o orçamento.</td>\n</tr>\n<tr>\n<td><code>formNotification.formNotificationCustomAttributes</code></td>\n<td>array</td>\n<td>Campos extras do formulário: <code>name</code>, <code>description</code>, <code>value</code>. Vem <code>[]</code> quando não há.</td>\n</tr>\n<tr>\n<td><code>stock.price</code> · <code>stock.leadTime</code> · <code>stock.partnerPartCode</code></td>\n<td>—</td>\n<td><strong>Só em orçamento já respondido.</strong> O que você informou na resposta.</td>\n</tr>\n<tr>\n<td><code>price</code></td>\n<td>number</td>\n<td><strong>Só em orçamento já respondido.</strong> Mesmo valor de <code>stock.price</code>.</td>\n</tr>\n<tr>\n<td><code>priceFormats.value</code> · <code>priceFormats.mask</code></td>\n<td>string</td>\n<td><strong>Só em orçamento já respondido.</strong> O preço com duas casas (<code>\"1250.00\"</code>) e já com a máscara de moeda (<code>\"R$1250.00\"</code>).</td>\n</tr>\n<tr>\n<td><code>leadTime</code></td>\n<td>integer</td>\n<td><strong>Só em orçamento já respondido.</strong> Mesmo valor de <code>stock.leadTime</code>.</td>\n</tr>\n<tr>\n<td><code>partnerPartCode</code></td>\n<td>string</td>\n<td><strong>Só em orçamento já respondido.</strong> Mesmo valor de <code>stock.partnerPartCode</code>.</td>\n</tr>\n<tr>\n<td><code>partnerInternalPartCode</code></td>\n<td>string</td>\n<td><strong>Só em orçamento já respondido.</strong> Código interno do estoque criado.</td>\n</tr>\n<tr>\n<td><code>partnerOrderId</code></td>\n<td>integer</td>\n<td><strong>Só quando o orçamento virou pedido.</strong> Id do pedido — use nos endpoints de Pedidos.</td>\n</tr>\n</tbody>\n</table>\n</div><p>O preço, o prazo e o código do produto aparecem <strong>em dois lugares</strong> no orçamento respondido: dentro de <code>stock</code> e também na raiz do objeto. São o mesmo valor — leia de onde preferir, e não trate a raiz como um segundo dado.</p>\n<h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>422</td>\n<td>Campo obrigatório ausente ou fora da faixa (<code>price</code> abaixo de 0,01, <code>leadTime</code> fora de 0-99, <code>partnerPartCode</code> vazio), orçamento <strong>já respondido</strong> (<code>Orcamento já respondido</code>), ou orçamento inexistente / de outra loja (<code>Orcamento não encontrado</code>). O motivo vem na mensagem.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["partnerBudgets",":id"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"4480101","key":"id"}]}},"response":[{"id":"155a99c3-719c-476f-8396-d99b372aa1a6","name":"Sucesso — orçamento respondido","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"price\": 1250.0,\n  \"leadTime\": 7,\n  \"partnerPartCode\": \"SKU-A-001\"\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/partnerBudgets/4480101"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": 4480101,\n  \"active\": true,\n  \"product\": {\n    \"name\": \"Kit Embreagem Completo — Linha Pesada\",\n    \"manufacturer\": \"Fabricante Exemplo\",\n    \"mfrPartCode\": \"FE-500101\",\n    \"composition\": \"UNITARY\",\n    \"imageSet\": {\n      \"baseUrl\": \"https://images.lojaexemplo.cws.digital/produtos\",\n      \"availableSizes\": [\n        \"pp\",\n        \"p\",\n        \"m\",\n        \"g\",\n        \"gg\",\n        \"full\"\n      ],\n      \"paths\": [\n        \"/50/01/kit-embreagem-completo-500101-1756992000000.jpg\"\n      ]\n    }\n  },\n  \"stock\": {\n    \"price\": 1250.0,\n    \"leadTime\": 7,\n    \"partnerPartCode\": \"SKU-A-001\"\n  },\n  \"quantity\": 5,\n  \"customer\": {\n    \"city\": \"São Paulo\",\n    \"state\": \"SP\",\n    \"type\": \"PF\"\n  },\n  \"dateCreated\": \"2026-09-01T13:42:07Z\",\n  \"price\": 1250.0,\n  \"priceFormats\": {\n    \"value\": \"1250.00\",\n    \"mask\": \"R$1250.00\"\n  },\n  \"leadTime\": 7,\n  \"partnerPartCode\": \"SKU-A-001\",\n  \"partnerInternalPartCode\": \"SKU-A-001\",\n  \"formNotification\": {\n    \"formNotificationId\": 4480901,\n    \"formNotificationCustomAttributes\": []\n  }\n}"}],"_postman_id":"26099d57-b201-4f28-8606-9e123cdefb33"},{"name":"Recusar Orçamento","id":"27be48f2-a709-4960-99e6-1ed42e63ec60","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"https://ws.autorei.net/partnerBudgets/:id","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Recusa um orçamento pendente: informa à CWS que você não vai cotar aquele produto. O orçamento sai da sua lista de pendentes e o cliente não recebe oferta sua.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id do orçamento, como veio em <code>id</code> na listagem de pendentes.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"a-recusa-não-se-desfaz\">A recusa não se desfaz</h4>\n<p>Não há endpoint para reverter: orçamento recusado não volta para a lista de pendentes e não pode mais ser respondido. Se houver chance de cotar, deixe pendente em vez de recusar.</p>\n<h3 id=\"resposta-·-204\">Resposta · 204</h3>\n<p><strong>204 No Content, sem corpo.</strong> Não espere um JSON de confirmação: o 204 é a confirmação.</p>\n<h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>422</td>\n<td>Orçamento inexistente ou de outra loja: <code>Orcamento não encontrado</code>.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["partnerBudgets",":id"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"4480102","key":"id"}]}},"response":[{"id":"de4ae3d9-9770-4653-85e9-885b1ba8de43","name":"Sucesso — orçamento recusado","originalRequest":{"method":"DELETE","header":[],"url":"https://ws.autorei.net/partnerBudgets/4480102"},"status":"No Content","code":204,"_postman_previewlanguage":"text","header":[],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"27be48f2-a709-4960-99e6-1ed42e63ec60"}],"id":"fcf6939b-a682-4a4a-9317-6521ef298197","description":"<p>Serviços para consulta e resposta de orçamentos solicitados por clientes.</p>\n","_postman_id":"fcf6939b-a682-4a4a-9317-6521ef298197","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}}},{"name":"09 - Carrinho Personalizado","item":[{"name":"Criar Carrinho Personalizado","id":"c9c49887-d411-4c40-ae9f-6c114a6a3fdf","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"cartName\": \"Proposta Ana Paula — setembro\",\n  \"document\": \"700.413.648-56\",\n  \"sellerEmail\": \"integracao@lojaexemplo.com.br\",\n  \"products\": [\n    {\n      \"stockId\": 4410001,\n      \"quantity\": 2\n    },\n    {\n      \"stockId\": 4410002,\n      \"quantity\": 1\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/customCart/create","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Cria um carrinho com produtos pré-selecionados para um cliente e devolve o <strong>link de acesso</strong> ao carrinho, para você enviar ao cliente. O cliente abre o link e finaliza a compra com os itens já montados.</p>\n<h3 id=\"corpo-da-requisição-json\">Corpo da Requisição (JSON)</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>cartName</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>Nome do carrinho, para você identificá-lo depois.</td>\n</tr>\n<tr>\n<td><code>document</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>CPF ou CNPJ do cliente. O cliente precisa existir na sua loja.</td>\n</tr>\n<tr>\n<td><code>products</code></td>\n<td>array</td>\n<td>Sim</td>\n<td>Itens do carrinho.</td>\n</tr>\n<tr>\n<td><code>sellerEmail</code></td>\n<td>string</td>\n<td>Não</td>\n<td>E-mail do vendedor responsável pelo carrinho.</td>\n</tr>\n<tr>\n<td><code>cartTypeName</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Nome do tipo de carrinho.</td>\n</tr>\n<tr>\n<td><code>cartTypeExternalId</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Id externo do tipo de carrinho, no seu sistema.</td>\n</tr>\n<tr>\n<td><code>metadata</code></td>\n<td>array</td>\n<td>Não</td>\n<td>Pares de dados livres para você anexar ao carrinho.</td>\n</tr>\n<tr>\n<td><code>metadata[].key</code> · <code>metadata[].value</code> · <code>metadata[].type</code></td>\n<td>string</td>\n<td>—</td>\n<td>Chave, valor e tipo do dado.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Dentro de cada item de <code>products</code>:</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>stockId</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id do estoque do produto na sua loja. É a identificação aceita pelo carrinho.</td>\n</tr>\n<tr>\n<td><code>quantity</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Quantidade do produto.</td>\n</tr>\n<tr>\n<td><code>virtualQuantity</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Quantidade em estoque virtual.</td>\n</tr>\n<tr>\n<td><code>warehouse</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Id do depósito de origem do item.</td>\n</tr>\n<tr>\n<td><code>storeExternalId</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Id externo da loja do item.</td>\n</tr>\n<tr>\n<td><code>skuId</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Id do SKU.</td>\n</tr>\n<tr>\n<td><code>partnerPartCode</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Seu código de produto.</td>\n</tr>\n<tr>\n<td><code>key</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Chave própria do item.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"o-link-do-carrinho-vem-no-campo-message\">O link do carrinho vem no campo <code>message</code></h4>\n<p>A resposta não tem um campo próprio para a URL: o link chega em <code>message</code>. O trecho final do link é a chave do carrinho — é ela que aparece nas consultas como <code>access_hash</code>.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>status</code></td>\n<td>string</td>\n<td><code>ok</code> no sucesso.</td>\n</tr>\n<tr>\n<td><code>message</code></td>\n<td>string</td>\n<td><strong>URL do carrinho</strong> para enviar ao cliente.</td>\n</tr>\n<tr>\n<td><code>cartId</code></td>\n<td>integer</td>\n<td>Id do carrinho. Use-o para alterar ou excluir.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td>O carrinho não foi criado. A mensagem vem do serviço de carrinho — por exemplo <code>account not found</code> quando o documento não corresponde a um cliente da sua loja, ou <code>stockId incorreto</code> quando o item não é da sua loja.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["customCart","create"],"host":["https://ws.autorei.net"],"query":[],"variable":[]}},"response":[{"id":"966e406e-d72d-4840-8b02-13a344f539dc","name":"Sucesso — carrinho criado","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"cartName\": \"Proposta Ana Paula — setembro\",\n  \"document\": \"700.413.648-56\",\n  \"sellerEmail\": \"integracao@lojaexemplo.com.br\",\n  \"products\": [\n    {\n      \"stockId\": 4410001,\n      \"quantity\": 2\n    },\n    {\n      \"stockId\": 4410002,\n      \"quantity\": 1\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/customCart/create"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"ok\",\n  \"message\": \"https://lojaexemplo.cws.digital/carrinho-personalizado/k7m2p9x4t1c6b8v3n5q0w7z2y4d6f8h1\",\n  \"cartId\": 4470001\n}"}],"_postman_id":"c9c49887-d411-4c40-ae9f-6c114a6a3fdf"},{"name":"Editar Carrinho Personalizado","id":"9d3f550a-c541-4422-ae8d-bcea49723589","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"cartId\": 4470001,\n  \"updateType\": \"complement\",\n  \"document\": \"700.413.648-56\",\n  \"products\": [\n    {\n      \"stockId\": 4410002,\n      \"quantity\": 5\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/customCart/edit","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Aplica novos itens a um carrinho já criado, sem gerar outro link: o <code>cartId</code> e a URL continuam os mesmos.</p>\n<h3 id=\"corpo-da-requisição-json\">Corpo da Requisição (JSON)</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>cartId</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id do carrinho, como veio em <code>cartId</code> na criação.</td>\n</tr>\n<tr>\n<td><code>updateType</code></td>\n<td>string</td>\n<td>Não</td>\n<td><code>complement</code> soma as quantidades aos itens que já estão no carrinho; <code>replacement</code> descarta os itens antigos e deixa só os enviados. Sempre em <strong>minúsculas</strong>. Omitido, cada item enviado entra como uma linha nova.</td>\n</tr>\n<tr>\n<td><code>document</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>CPF ou CNPJ do cliente do carrinho.</td>\n</tr>\n<tr>\n<td><code>products</code></td>\n<td>array</td>\n<td>Sim</td>\n<td>Itens a aplicar.</td>\n</tr>\n<tr>\n<td><code>cartName</code> · <code>sellerEmail</code> · <code>cartTypeName</code> · <code>cartTypeExternalId</code> · <code>metadata</code></td>\n<td>—</td>\n<td>Não</td>\n<td>Mesmos campos da criação.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Dentro de cada item de <code>products</code>:</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>stockId</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id do estoque do produto na sua loja. É a identificação aceita pelo carrinho.</td>\n</tr>\n<tr>\n<td><code>quantity</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Quantidade do produto.</td>\n</tr>\n<tr>\n<td><code>virtualQuantity</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Quantidade em estoque virtual.</td>\n</tr>\n<tr>\n<td><code>warehouse</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Id do depósito de origem do item.</td>\n</tr>\n<tr>\n<td><code>storeExternalId</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Id externo da loja do item.</td>\n</tr>\n<tr>\n<td><code>skuId</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Id do SKU.</td>\n</tr>\n<tr>\n<td><code>partnerPartCode</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Seu código de produto.</td>\n</tr>\n<tr>\n<td><code>key</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Chave própria do item.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"os-dois-valores-de-updatetype\">Os dois valores de <code>updateType</code></h4>\n<p><code>complement</code> procura o item pelo <code>stockId</code> e <strong>soma</strong> a quantidade enviada à que já estava lá; os metadados novos são juntados aos antigos. <code>replacement</code> <strong>apaga</strong> os itens que estavam no carrinho e grava só os que você enviou; os metadados também são substituídos.</p>\n<p>Os valores são comparados exatamente, em minúsculas. Qualquer outro texto não entra em nenhum dos dois caminhos: o item enviado vira uma linha nova no carrinho e os antigos continuam lá.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>Mesma estrutura da criação — <code>status</code>, <code>message</code> com a URL e <code>cartId</code>. O <code>cartId</code> e a URL são os do carrinho que você alterou, não de um novo.</p>\n<h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td>A alteração não foi aplicada. A mensagem vem do serviço de carrinho.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["customCart","edit"],"host":["https://ws.autorei.net"],"query":[],"variable":[]}},"response":[{"id":"45d1a758-067f-48fa-8573-6e2bb19cb03f","name":"Sucesso — itens aplicados ao carrinho","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"cartId\": 4470001,\n  \"updateType\": \"complement\",\n  \"document\": \"700.413.648-56\",\n  \"products\": [\n    {\n      \"stockId\": 4410002,\n      \"quantity\": 5\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/customCart/edit"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"ok\",\n  \"message\": \"https://lojaexemplo.cws.digital/carrinho-personalizado/k7m2p9x4t1c6b8v3n5q0w7z2y4d6f8h1\",\n  \"cartId\": 4470001\n}"}],"_postman_id":"9d3f550a-c541-4422-ae8d-bcea49723589"},{"name":"Deletar Carrinho Personalizado por ID","id":"a057ce74-db44-49c5-baf7-b43c36498477","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"https://ws.autorei.net/customCart/deleteById/:id","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Exclui um carrinho personalizado. O link deixa de funcionar para o cliente.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id do carrinho, como veio em <code>cartId</code> na criação.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p><code>{\"status\":\"OK\"}</code></p>\n<h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td>A exclusão não foi aplicada. A mensagem vem do serviço de carrinho.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["customCart","deleteById",":id"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"4470001","key":"id"}]}},"response":[{"id":"24f65fb7-57b1-4e15-920a-17d3a303e580","name":"Sucesso — carrinho excluído","originalRequest":{"method":"DELETE","header":[],"url":"https://ws.autorei.net/customCart/deleteById/4470001"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"OK\"\n}"}],"_postman_id":"a057ce74-db44-49c5-baf7-b43c36498477"}],"id":"c575e5c4-ed54-40b8-ac9a-c94ceefb7051","description":"<p>Endpoints para criar, editar e deletar carrinhos de compra personalizados para clientes.</p>\n","_postman_id":"c575e5c4-ed54-40b8-ac9a-c94ceefb7051","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}}},{"name":"10 - Módulo Vendedor","item":[{"name":"Listar Vendedores","id":"ca7b2e74-a8b2-4f90-bfe8-3c8888eea98d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://ws.autorei.net/sellerModule/listSellers?limit=20&offset=0","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Lista os vendedores da sua loja, com as permissões de cada um. É por aqui que você descobre o <code>id</code> do vendedor, que as demais rotas do módulo pedem.</p>\n<h3 id=\"parâmetros-de-consulta\">Parâmetros de Consulta</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Vendedores por página. Padrão <strong>20</strong>, sem teto.</td>\n</tr>\n<tr>\n<td><code>offset</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Vendedor inicial da página. Padrão <strong>0</strong>.</td>\n</tr>\n<tr>\n<td><code>email</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Busca <strong>parcial</strong> pelo e-mail de acesso, sem diferenciar maiúsculas.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>Array com um objeto por vendedor. Vem <code>[]</code> quando não há vendedor, ou quando o <code>offset</code> passa do último.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>uuid</td>\n<td>Id do vendedor. <strong>É um UUID</strong>, não um inteiro — é o valor que as demais rotas do módulo pedem no path.</td>\n</tr>\n<tr>\n<td><code>username</code></td>\n<td>string</td>\n<td>E-mail de acesso do vendedor.</td>\n</tr>\n<tr>\n<td><code>document</code></td>\n<td>string</td>\n<td>CPF ou CNPJ do vendedor.</td>\n</tr>\n<tr>\n<td><code>restrictedCustomers</code></td>\n<td>boolean</td>\n<td>Se o vendedor atende só a carteira dele.</td>\n</tr>\n<tr>\n<td><code>enabledFreight</code></td>\n<td>boolean</td>\n<td>Se pode alterar o frete.</td>\n</tr>\n<tr>\n<td><code>enabledInsertFreight</code></td>\n<td>boolean</td>\n<td>Se pode inserir frete.</td>\n</tr>\n<tr>\n<td><code>enabledCustomerRegistration</code></td>\n<td>boolean</td>\n<td>Se pode cadastrar cliente.</td>\n</tr>\n<tr>\n<td><code>enableDiscountItemValue</code></td>\n<td>boolean</td>\n<td>Se pode dar desconto no valor do item.</td>\n</tr>\n<tr>\n<td><code>enableAddItemValue</code></td>\n<td>boolean</td>\n<td>Se pode acrescentar valor ao item.</td>\n</tr>\n<tr>\n<td><code>enableDiscountBranch</code></td>\n<td>boolean</td>\n<td>Se pode usar o desconto da filial.</td>\n</tr>\n<tr>\n<td><code>enableDiscountFranchise</code></td>\n<td>boolean</td>\n<td>Se pode usar o desconto da franquia. Só volta <code>true</code> quando <code>enableDiscountBranch</code> também é <code>true</code>.</td>\n</tr>\n<tr>\n<td><code>enableDiscountSeller</code></td>\n<td>boolean</td>\n<td>Se pode usar o desconto próprio.</td>\n</tr>\n<tr>\n<td><code>enableCoupon</code></td>\n<td>boolean</td>\n<td>Se pode aplicar cupom.</td>\n</tr>\n<tr>\n<td><code>enableChatSupport</code></td>\n<td>boolean</td>\n<td>Se atende pelo chat.</td>\n</tr>\n<tr>\n<td><code>enableRestrictedCustomers</code></td>\n<td>boolean</td>\n<td>Atributo de carteira restrita, gravado no vendedor.</td>\n</tr>\n<tr>\n<td><code>enableRestrictedGroupsAttendant</code></td>\n<td>boolean</td>\n<td>Se atende só grupos de cliente restritos.</td>\n</tr>\n<tr>\n<td><code>attendantCode</code></td>\n<td>string</td>\n<td>Código do vendedor no seu sistema. Vem <code>\"\"</code> quando não informado.</td>\n</tr>\n<tr>\n<td><code>allowedSellersId</code></td>\n<td>array</td>\n<td>Ids dos vendedores que este vendedor pode consultar. Vem <code>[]</code> quando não há.</td>\n</tr>\n<tr>\n<td><code>profile</code></td>\n<td>objeto</td>\n<td>Perfil do vendedor (<code>id</code>, <code>code</code>, <code>name</code>). Vem <code>null</code> quando não há perfil.</td>\n</tr>\n<tr>\n<td><code>createdAt</code> · <code>updatedAt</code></td>\n<td>string</td>\n<td>Criação e última alteração, em UTC.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["sellerModule","listSellers"],"host":["https://ws.autorei.net"],"query":[{"key":"limit","value":"20"},{"key":"offset","value":"0"},{"disabled":true,"key":"email","value":""}],"variable":[]}},"response":[{"id":"4dbf3d49-2a3b-486d-943b-80f0e798f90d","name":"Sucesso — um vendedor da loja","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://ws.autorei.net/sellerModule/listSellers?limit=20&offset=0","host":["https://ws.autorei.net"],"path":["sellerModule","listSellers"],"query":[{"key":"limit","value":"20"},{"key":"offset","value":"0"},{"key":"email","value":"","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"id\": \"7c3f1a8e-4b62-4d05-9e17-5a2c8d3f6b04\",\n    \"username\": \"vendedor@lojaexemplo.com.br\",\n    \"document\": \"528.871.928-41\",\n    \"restrictedCustomers\": true,\n    \"enabledFreight\": false,\n    \"enabledInsertFreight\": false,\n    \"enabledCustomerRegistration\": false,\n    \"enableDiscountItemValue\": true,\n    \"enableAddItemValue\": false,\n    \"enableDiscountBranch\": true,\n    \"enableDiscountFranchise\": false,\n    \"enableDiscountSeller\": false,\n    \"enableCoupon\": true,\n    \"enableChatSupport\": false,\n    \"createdAt\": \"2026-09-01T13:42:07.512034Z\",\n    \"updatedAt\": \"2026-09-01T13:42:07.512034Z\",\n    \"attendantCode\": \"VEND-001\",\n    \"enableRestrictedCustomers\": true,\n    \"enableRestrictedGroupsAttendant\": false,\n    \"allowedSellersId\": [],\n    \"profile\": null\n  }\n]"}],"_postman_id":"ca7b2e74-a8b2-4f90-bfe8-3c8888eea98d"},{"name":"Adicionar Vendedor","id":"048b46c7-237c-481b-9b2f-b7c7bb50f87e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"username\": \"vendedor@lojaexemplo.com.br\",\n  \"restrictedCustomers\": true,\n  \"enabledFreight\": false,\n  \"enabledCustomerRegistration\": false,\n  \"enableDiscountItemValue\": true,\n  \"enableDiscountBranch\": true,\n  \"attendantCode\": \"VEND-001\",\n  \"accessStartTime\": \"08:00\",\n  \"accessEndTime\": \"18:00\",\n  \"blockSaturdayAccess\": true,\n  \"blockSundayAccess\": true,\n  \"profileCode\": \"PERFIL-VENDEDOR\"\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/sellerModule/addSeller","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Cadastra um vendedor da sua loja a partir de uma conta que já existe: você identifica a conta e define as permissões que ela passa a ter no atendimento.</p>\n<h3 id=\"corpo-da-requisição-json\">Corpo da Requisição (JSON)</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Identificação da conta</td>\n<td>—</td>\n<td>Sim</td>\n<td>Não é um campo — é um grupo. Envie <code>username</code> <strong>ou</strong> <code>document</code>; ver a regra abaixo.</td>\n</tr>\n<tr>\n<td><code>username</code></td>\n<td>string</td>\n<td>Condicional</td>\n<td>E-mail de acesso da conta. Obrigatório se <code>document</code> não for enviado.</td>\n</tr>\n<tr>\n<td><code>document</code></td>\n<td>string</td>\n<td>Condicional</td>\n<td>CPF ou CNPJ do titular da conta. Obrigatório se <code>username</code> não for enviado.</td>\n</tr>\n<tr>\n<td><code>restrictedCustomers</code></td>\n<td>boolean</td>\n<td>Sim</td>\n<td><code>true</code> limita o vendedor à carteira de clientes dele.</td>\n</tr>\n<tr>\n<td><code>enabledFreight</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Permite alterar o frete.</td>\n</tr>\n<tr>\n<td><code>enabledInsertFreight</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Permite inserir frete.</td>\n</tr>\n<tr>\n<td><code>enabledCustomerRegistration</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Permite cadastrar cliente.</td>\n</tr>\n<tr>\n<td><code>enableRestrictedGroupsAttendant</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Limita o vendedor aos grupos de cliente restritos.</td>\n</tr>\n<tr>\n<td><code>enableDiscountItemValue</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Permite dar desconto no valor do item. Padrão <code>false</code>.</td>\n</tr>\n<tr>\n<td><code>enableAddItemValue</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Permite acrescentar valor ao item. Padrão <code>false</code>.</td>\n</tr>\n<tr>\n<td><code>enableDiscountBranch</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Permite usar o desconto da filial. Ver a regra de dependência.</td>\n</tr>\n<tr>\n<td><code>enableDiscountSeller</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Permite usar o desconto próprio. Ver a regra de dependência.</td>\n</tr>\n<tr>\n<td><code>enableCoupon</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Permite aplicar cupom. <strong>Padrão <code>true</code></strong> — omitir não desliga.</td>\n</tr>\n<tr>\n<td><code>enableChatSupport</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Marca o vendedor como atendente de chat. Padrão <code>false</code>.</td>\n</tr>\n<tr>\n<td><code>enableChatSupportRule</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td><code>true</code> já inclui o vendedor na fila de carteira do chat, como <code>manager</code> quando <code>restrictedCustomers</code> é <code>true</code> e como <code>attendant</code> caso contrário.</td>\n</tr>\n<tr>\n<td><code>enableRestrictedCustomers</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Atributo de carteira restrita gravado no vendedor. Padrão <code>false</code>.</td>\n</tr>\n<tr>\n<td><code>attendantCode</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Código do vendedor no seu sistema.</td>\n</tr>\n<tr>\n<td><code>allowedSellersIdList</code></td>\n<td>array</td>\n<td>Não</td>\n<td>Ids de vendedores que este vendedor pode consultar.</td>\n</tr>\n<tr>\n<td><code>accessStartTime</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Início da janela de acesso, no formato <code>HH:mm</code>. Ver a regra da janela.</td>\n</tr>\n<tr>\n<td><code>accessEndTime</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Fim da janela de acesso, no formato <code>HH:mm</code>. Ver a regra da janela.</td>\n</tr>\n<tr>\n<td><code>blockSaturdayAccess</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Bloqueia o acesso no sábado.</td>\n</tr>\n<tr>\n<td><code>blockSundayAccess</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td>Bloqueia o acesso no domingo.</td>\n</tr>\n<tr>\n<td><code>profileCode</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Código do perfil de acesso. Ver a regra de perfil.</td>\n</tr>\n<tr>\n<td><code>profileName</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Nome do perfil de acesso. Ver a regra de perfil.</td>\n</tr>\n<tr>\n<td><code>partners</code></td>\n<td>array</td>\n<td>Não</td>\n<td>Parceiros que o vendedor atende. Ver a regra de parceiros.</td>\n</tr>\n<tr>\n<td><code>partners[].partnerId</code></td>\n<td>integer</td>\n<td>Condicional</td>\n<td>Id do parceiro. Um item precisa de <code>partnerId</code> <strong>ou</strong> <code>externalId</code>, nunca os dois.</td>\n</tr>\n<tr>\n<td><code>partners[].externalId</code></td>\n<td>integer</td>\n<td>Condicional</td>\n<td>Id do parceiro no seu sistema. Alternativa ao <code>partnerId</code>.</td>\n</tr>\n<tr>\n<td><code>partners[].defaultPartner</code></td>\n<td>boolean</td>\n<td>Condicional</td>\n<td>Marca o parceiro principal. Exatamente <strong>um</strong> item precisa vir com <code>true</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"a-conta-precisa-existir-e-estar-ativa\">A conta precisa existir e estar ativa</h4>\n<p>O vendedor não é criado do zero: a rota procura uma conta <strong>ativa da sua loja</strong> pelo <code>username</code> ou pelo <code>document</code> e a promove a vendedor. Conta inexistente, desativada ou de outra loja é recusada.</p>\n<h4 id=\"desconto-de-filial-e-de-vendedor-dependem-do-desconto-de-item\">Desconto de filial e de vendedor dependem do desconto de item</h4>\n<p><code>enableDiscountBranch</code> e <code>enableDiscountSeller</code> só são considerados quando <strong><code>enableDiscountItemValue</code> ou <code>enableAddItemValue</code></strong> é <code>true</code>. Sem isso, os dois são gravados como <code>false</code>, mesmo que você os envie como <code>true</code>.</p>\n<h4 id=\"perfil-um-dos-dois-ou-nenhum\">Perfil: um dos dois, ou nenhum</h4>\n<p>Envie <code>profileCode</code> <strong>ou</strong> <code>profileName</code>, nunca os dois. Não enviar nenhum significa <strong>ficar sem perfil</strong> — e lojas configuradas para exigir perfil no cadastro recusam esse caso.</p>\n<h4 id=\"janela-de-acesso-ambos-ou-nenhum\">Janela de acesso: ambos ou nenhum</h4>\n<p><code>accessStartTime</code> e <code>accessEndTime</code> são um par. Enviar só um é recusado; enviar os dois exige o formato <code>HH:mm</code> e valores <strong>diferentes</strong> entre si. Não enviar nenhum deixa o vendedor sem restrição de horário.</p>\n<h4 id=\"parceiros-precisam-de-parceria-autorizada\">Parceiros precisam de parceria autorizada</h4>\n<p>Cada <code>partnerId</code> informado precisa ter parceria <strong>autorizada</strong> com a sua loja; o mesmo vale para o parceiro resolvido a partir de um <code>externalId</code>. Na criação, exatamente um dos parceiros tem de vir com <code>defaultPartner: true</code>.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>O vendedor criado, com as permissões efetivas. O campo de identificação volta como você enviou: <code>username</code> quando você usou o e-mail, <code>document</code> quando usou o documento.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>uuid</td>\n<td>Id do vendedor. <strong>É um UUID</strong>, não um inteiro — é o valor que as demais rotas do módulo pedem no path.</td>\n</tr>\n<tr>\n<td><code>username</code></td>\n<td>string</td>\n<td>E-mail de acesso do vendedor.</td>\n</tr>\n<tr>\n<td><code>document</code></td>\n<td>string</td>\n<td>CPF ou CNPJ do vendedor.</td>\n</tr>\n<tr>\n<td><code>restrictedCustomers</code></td>\n<td>boolean</td>\n<td>Se o vendedor atende só a carteira dele.</td>\n</tr>\n<tr>\n<td><code>enabledFreight</code></td>\n<td>boolean</td>\n<td>Se pode alterar o frete.</td>\n</tr>\n<tr>\n<td><code>enabledInsertFreight</code></td>\n<td>boolean</td>\n<td>Se pode inserir frete.</td>\n</tr>\n<tr>\n<td><code>enabledCustomerRegistration</code></td>\n<td>boolean</td>\n<td>Se pode cadastrar cliente.</td>\n</tr>\n<tr>\n<td><code>enableDiscountItemValue</code></td>\n<td>boolean</td>\n<td>Se pode dar desconto no valor do item.</td>\n</tr>\n<tr>\n<td><code>enableAddItemValue</code></td>\n<td>boolean</td>\n<td>Se pode acrescentar valor ao item.</td>\n</tr>\n<tr>\n<td><code>enableDiscountBranch</code></td>\n<td>boolean</td>\n<td>Se pode usar o desconto da filial.</td>\n</tr>\n<tr>\n<td><code>enableDiscountFranchise</code></td>\n<td>boolean</td>\n<td>Se pode usar o desconto da franquia. Só volta <code>true</code> quando <code>enableDiscountBranch</code> também é <code>true</code>.</td>\n</tr>\n<tr>\n<td><code>enableDiscountSeller</code></td>\n<td>boolean</td>\n<td>Se pode usar o desconto próprio.</td>\n</tr>\n<tr>\n<td><code>enableCoupon</code></td>\n<td>boolean</td>\n<td>Se pode aplicar cupom.</td>\n</tr>\n<tr>\n<td><code>enableChatSupport</code></td>\n<td>boolean</td>\n<td>Se atende pelo chat.</td>\n</tr>\n<tr>\n<td><code>enableRestrictedCustomers</code></td>\n<td>boolean</td>\n<td>Atributo de carteira restrita, gravado no vendedor.</td>\n</tr>\n<tr>\n<td><code>enableRestrictedGroupsAttendant</code></td>\n<td>boolean</td>\n<td>Se atende só grupos de cliente restritos.</td>\n</tr>\n<tr>\n<td><code>attendantCode</code></td>\n<td>string</td>\n<td>Código do vendedor no seu sistema. Vem <code>\"\"</code> quando não informado.</td>\n</tr>\n<tr>\n<td><code>allowedSellersId</code></td>\n<td>array</td>\n<td>Ids dos vendedores que este vendedor pode consultar. Vem <code>[]</code> quando não há.</td>\n</tr>\n<tr>\n<td><code>profile</code></td>\n<td>objeto</td>\n<td>Perfil do vendedor (<code>id</code>, <code>code</code>, <code>name</code>). Vem <code>null</code> quando não há perfil.</td>\n</tr>\n<tr>\n<td><code>createdAt</code> · <code>updatedAt</code></td>\n<td>string</td>\n<td>Criação e última alteração, em UTC.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td>Corpo ausente ou vazio (<code>Body não informado</code>), ou falha de validação. <strong>As mensagens de validação vêm juntadas por <code>|</code></strong> num único campo <code>message</code> — espere mais de um motivo por resposta.</td>\n</tr>\n<tr>\n<td>422</td>\n<td>A conta já é um vendedor.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>Recusa vinda do serviço de atendimento. O motivo vem na mensagem.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["sellerModule","addSeller"],"host":["https://ws.autorei.net"],"query":[],"variable":[]}},"response":[{"id":"ffa4f5df-5a91-4387-a39a-84e197424df0","name":"Sucesso — vendedor identificado pelo e-mail","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"username\": \"vendedor@lojaexemplo.com.br\",\n  \"restrictedCustomers\": true,\n  \"enabledFreight\": false,\n  \"enabledCustomerRegistration\": false,\n  \"enableDiscountItemValue\": true,\n  \"enableDiscountBranch\": true,\n  \"attendantCode\": \"VEND-001\",\n  \"accessStartTime\": \"08:00\",\n  \"accessEndTime\": \"18:00\",\n  \"blockSaturdayAccess\": true,\n  \"blockSundayAccess\": true,\n  \"profileCode\": \"PERFIL-VENDEDOR\"\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/sellerModule/addSeller"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": \"7c3f1a8e-4b62-4d05-9e17-5a2c8d3f6b04\",\n  \"username\": \"vendedor@lojaexemplo.com.br\",\n  \"document\": \"528.871.928-41\",\n  \"restrictedCustomers\": true,\n  \"enabledFreight\": false,\n  \"enabledInsertFreight\": false,\n  \"enabledCustomerRegistration\": false,\n  \"enableDiscountItemValue\": true,\n  \"enableAddItemValue\": false,\n  \"enableDiscountBranch\": true,\n  \"enableDiscountFranchise\": false,\n  \"enableDiscountSeller\": false,\n  \"enableCoupon\": true,\n  \"enableChatSupport\": false,\n  \"createdAt\": \"2026-09-01T13:42:07.512034Z\",\n  \"updatedAt\": \"2026-09-01T13:42:07.512034Z\",\n  \"attendantCode\": \"VEND-001\",\n  \"enableRestrictedCustomers\": true,\n  \"enableRestrictedGroupsAttendant\": false,\n  \"allowedSellersId\": [],\n  \"profile\": {\n    \"id\": 4470301,\n    \"code\": \"PERFIL-VENDEDOR\",\n    \"name\": \"Vendedor Padrão\"\n  }\n}"}],"_postman_id":"048b46c7-237c-481b-9b2f-b7c7bb50f87e"},{"name":"Remover Vendedor","id":"2d0246f5-aadc-40d3-a928-0605fb6659b3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"https://ws.autorei.net/sellerModule/deleteSeller/:id","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Remove um vendedor da sua loja. A conta continua existindo — o que sai é o vínculo de vendedor e as permissões de atendimento.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>uuid</td>\n<td>Sim</td>\n<td>Id do vendedor, como veio em <code>id</code> na listagem. <strong>É um UUID</strong>, não um inteiro.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>status</code></td>\n<td>boolean</td>\n<td>Resultado devolvido pelo serviço de atendimento.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["sellerModule","deleteSeller",":id"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"7c3f1a8e-4b62-4d05-9e17-5a2c8d3f6b04","key":"id"}]}},"response":[{"id":"33ebbad1-1634-4c75-968a-8512d4b31f26","name":"Sucesso — vendedor removido","originalRequest":{"method":"DELETE","header":[],"url":"https://ws.autorei.net/sellerModule/deleteSeller/7c3f1a8e-4b62-4d05-9e17-5a2c8d3f6b04"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": true\n}"}],"_postman_id":"2d0246f5-aadc-40d3-a928-0605fb6659b3"},{"name":"Listar Carteira de Clientes do Vendedor","id":"5894f142-3e0c-41c2-8ebd-4778a381b4b8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://ws.autorei.net/sellerModule/listCustomers/:id?limit=20&offset=0","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Lista a carteira de clientes de um vendedor — os clientes que estão vinculados a ele.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>uuid</td>\n<td>Sim</td>\n<td>Id do vendedor, como veio em <code>id</code> na listagem de vendedores.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"parâmetros-de-consulta\">Parâmetros de Consulta</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Clientes por página. Padrão <strong>20</strong>.</td>\n</tr>\n<tr>\n<td><code>offset</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Cliente inicial da página. Padrão <strong>0</strong>.</td>\n</tr>\n<tr>\n<td><code>email</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Busca <strong>parcial</strong> pelo e-mail do cliente.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>Array com um objeto por vínculo. Vem <code>[]</code> quando o vendedor não tem cliente na carteira, e também quando o <code>id</code> informado não corresponde a nenhum vendedor.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>uuid</td>\n<td>Id <strong>do vínculo</strong>, não do cliente. É o valor que a rota de desvínculo pede.</td>\n</tr>\n<tr>\n<td><code>username</code></td>\n<td>string</td>\n<td>E-mail de acesso do cliente.</td>\n</tr>\n<tr>\n<td><code>document</code></td>\n<td>string</td>\n<td>CPF ou CNPJ do cliente.</td>\n</tr>\n<tr>\n<td><code>customerName</code></td>\n<td>string</td>\n<td>Nome do cliente.</td>\n</tr>\n<tr>\n<td><code>createdAt</code> · <code>updatedAt</code></td>\n<td>string</td>\n<td>Criação e última alteração do vínculo, em UTC.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["sellerModule","listCustomers",":id"],"host":["https://ws.autorei.net"],"query":[{"key":"limit","value":"20"},{"key":"offset","value":"0"},{"disabled":true,"key":"email","value":""}],"variable":[{"type":"any","value":"7c3f1a8e-4b62-4d05-9e17-5a2c8d3f6b04","key":"id"}]}},"response":[{"id":"c209a46a-429c-43bc-a8b8-aa709b3e39e2","name":"Sucesso — um cliente na carteira","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://ws.autorei.net/sellerModule/listCustomers/7c3f1a8e-4b62-4d05-9e17-5a2c8d3f6b04?limit=20&offset=0","host":["https://ws.autorei.net"],"path":["sellerModule","listCustomers","7c3f1a8e-4b62-4d05-9e17-5a2c8d3f6b04"],"query":[{"key":"limit","value":"20"},{"key":"offset","value":"0"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"id\": \"2f9d4c17-8a53-41be-b06d-9c1e7f28a5d3\",\n    \"username\": \"compras@auroradistribuidora.com.br\",\n    \"document\": \"29.893.264/0001-01\",\n    \"customerName\": \"Comercial Aurora Ltda\",\n    \"createdAt\": \"2026-09-02T10:15:33.204118Z\",\n    \"updatedAt\": \"2026-09-02T10:15:33.204118Z\"\n  }\n]"}],"_postman_id":"5894f142-3e0c-41c2-8ebd-4778a381b4b8"},{"name":"Vincular Cliente ao Vendedor","id":"1016cc78-7fd3-4179-84fd-1d719efa327f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"document\": \"29.893.264/0001-01\"\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/sellerModule/addCustomer/:attendantIdOrDocument?uniqueAttendant=false","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Vincula um cliente à carteira de um vendedor. A partir do vínculo, o cliente passa a ser atendido por esse vendedor.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>attendantIdOrDocument</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>Identifica o vendedor: aceita o <strong>UUID</strong> do vendedor <strong>ou</strong> o CPF/CNPJ do titular da conta dele. A rota reconhece qual dos dois você enviou.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"parâmetros-de-consulta\">Parâmetros de Consulta</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>uniqueAttendant</code></td>\n<td>boolean</td>\n<td>Não</td>\n<td><code>true</code> faz este vínculo ser o único do cliente, substituindo o vendedor anterior. Padrão <strong><code>false</code></strong>, que acumula vendedores para o mesmo cliente.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"corpo-da-requisição-json\">Corpo da Requisição (JSON)</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Identificação do cliente</td>\n<td>—</td>\n<td>Sim</td>\n<td>Não é um campo — é um grupo. Envie <code>username</code> <strong>ou</strong> <code>document</code>.</td>\n</tr>\n<tr>\n<td><code>username</code></td>\n<td>string</td>\n<td>Condicional</td>\n<td>E-mail de acesso do cliente. Obrigatório se <code>document</code> não for enviado.</td>\n</tr>\n<tr>\n<td><code>document</code></td>\n<td>string</td>\n<td>Condicional</td>\n<td>CPF ou CNPJ do cliente. Obrigatório se <code>username</code> não for enviado.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"o-cliente-precisa-ser-da-sua-loja\">O cliente precisa ser da sua loja</h4>\n<p>O vínculo só é criado para cliente já cadastrado na loja autenticada. Cliente de outra loja, ou documento sem cadastro, é recusado.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>O vínculo criado. Os campos de identificação refletem o que você enviou: só <code>username</code>, só <code>document</code>, ou os dois.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>uuid</td>\n<td>Id do vínculo. É o valor que a rota de desvínculo pede.</td>\n</tr>\n<tr>\n<td><code>username</code></td>\n<td>string</td>\n<td>E-mail do cliente. Só quando você o enviou.</td>\n</tr>\n<tr>\n<td><code>document</code></td>\n<td>string</td>\n<td>Documento do cliente. Só quando você o enviou.</td>\n</tr>\n<tr>\n<td><code>createdAt</code> · <code>updatedAt</code></td>\n<td>string</td>\n<td>Criação e última alteração do vínculo, em UTC.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td>Corpo ausente ou vazio (<code>Body não informado</code>), corpo sem <code>username</code> e sem <code>document</code>, documento sem cliente na sua loja (<code>Nenhum cliente localizado com esse documento</code>), vendedor não encontrado (<code>Nenhum vendedor localizado com esse documento</code> / <code>Nenhum vendedor localizado com esse ID</code>), ou conta não localizada no serviço de atendimento (<code>Conta não localizada</code>).</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["sellerModule","addCustomer",":attendantIdOrDocument"],"host":["https://ws.autorei.net"],"query":[{"key":"uniqueAttendant","value":"false"}],"variable":[{"type":"any","value":"7c3f1a8e-4b62-4d05-9e17-5a2c8d3f6b04","key":"attendantIdOrDocument"}]}},"response":[{"id":"2cbc5a34-7fd7-446e-b6b7-2f4ae42e87d5","name":"Sucesso — cliente vinculado pelo documento","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"document\": \"29.893.264/0001-01\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://ws.autorei.net/sellerModule/addCustomer/7c3f1a8e-4b62-4d05-9e17-5a2c8d3f6b04?uniqueAttendant=false","host":["https://ws.autorei.net"],"path":["sellerModule","addCustomer","7c3f1a8e-4b62-4d05-9e17-5a2c8d3f6b04"],"query":[{"key":"uniqueAttendant","value":"false"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": \"2f9d4c17-8a53-41be-b06d-9c1e7f28a5d3\",\n  \"document\": \"29.893.264/0001-01\",\n  \"createdAt\": \"2026-09-02T10:15:33.204118Z\",\n  \"updatedAt\": \"2026-09-02T10:15:33.204118Z\"\n}"}],"_postman_id":"1016cc78-7fd3-4179-84fd-1d719efa327f"},{"name":"Desvincular Cliente do Vendedor","id":"145fb7cb-27eb-4fb0-b544-756b7f6f4d70","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"https://ws.autorei.net/sellerModule/deleteCustomer/:idAttendant/:idCustomer","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Desfaz o vínculo entre um cliente e um vendedor. O cliente sai da carteira daquele vendedor; o cadastro do cliente não é afetado.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>idAttendant</code></td>\n<td>uuid</td>\n<td>Sim</td>\n<td>Id do vendedor, como veio em <code>id</code> na listagem de vendedores.</td>\n</tr>\n<tr>\n<td><code>idCustomer</code></td>\n<td>uuid</td>\n<td>Sim</td>\n<td>Id <strong>do vínculo</strong>, como veio em <code>id</code> na carteira do vendedor — não é o id nem o documento do cliente.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>status</code></td>\n<td>boolean</td>\n<td><code>true</code> quando o vínculo foi removido. Vem <code>false</code> quando o vínculo, o vendedor ou o par dos dois não existe.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["sellerModule","deleteCustomer",":idAttendant",":idCustomer"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"7c3f1a8e-4b62-4d05-9e17-5a2c8d3f6b04","key":"idAttendant"},{"type":"any","value":"2f9d4c17-8a53-41be-b06d-9c1e7f28a5d3","key":"idCustomer"}]}},"response":[{"id":"9296300d-6e5b-420f-a241-ffe5c5904127","name":"Sucesso — vínculo removido","originalRequest":{"method":"DELETE","header":[],"url":"https://ws.autorei.net/sellerModule/deleteCustomer/7c3f1a8e-4b62-4d05-9e17-5a2c8d3f6b04/2f9d4c17-8a53-41be-b06d-9c1e7f28a5d3"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": true\n}"}],"_postman_id":"145fb7cb-27eb-4fb0-b544-756b7f6f4d70"},{"name":"Gerenciar Carteira em Lote","id":"4e29b198-d505-4a7e-b01b-def9b866c779","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"action\": \"BIND\",\n  \"users\": [\n    {\n      \"document\": \"29.893.264/0001-01\"\n    },\n    {\n      \"username\": \"contato@lojaexemplo.com.br\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/sellerModule/manageBulkWallet/:attendantInfo","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Monta a carteira de um vendedor em lote: vincula, desvincula ou substitui a lista de clientes numa única chamada, em vez de uma requisição por cliente.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>attendantInfo</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>Identifica o vendedor por <strong>três</strong> formas: o <strong>UUID</strong> do vendedor, o <strong>CPF/CNPJ</strong> do titular da conta dele, ou o <strong>e-mail</strong> de acesso. A rota reconhece qual delas você enviou.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"corpo-da-requisição-json\">Corpo da Requisição (JSON)</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>action</code></td>\n<td>string</td>\n<td>Sim</td>\n<td><code>BIND</code> acrescenta os clientes à carteira, <code>UNBIND</code> os remove, <code>REPLACE</code> troca a carteira inteira pela lista enviada.</td>\n</tr>\n<tr>\n<td><code>users</code></td>\n<td>array</td>\n<td>Sim</td>\n<td>Clientes da operação. Não pode ser lista vazia.</td>\n</tr>\n<tr>\n<td>Identificação do cliente</td>\n<td>—</td>\n<td>Sim</td>\n<td>Não é um campo — é um grupo. Em cada item de <code>users</code>, envie <code>username</code> <strong>ou</strong> <code>document</code>.</td>\n</tr>\n<tr>\n<td><code>users[].username</code></td>\n<td>string</td>\n<td>Condicional</td>\n<td>E-mail de acesso do cliente. Obrigatório se <code>document</code> não for enviado.</td>\n</tr>\n<tr>\n<td><code>users[].document</code></td>\n<td>string</td>\n<td>Condicional</td>\n<td>CPF ou CNPJ do cliente. Obrigatório se <code>username</code> não for enviado.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Não envie <code>attendantId</code> nem <code>storeId</code>: os dois são resolvidos pelo backend, a partir do path e do seu token.</p>\n<h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"o-processamento-é-assíncrono\">O processamento é assíncrono</h4>\n<p>A resposta <code>200</code> confirma que a CWS <strong>recebeu</strong> a lista, não que os vínculos foram criados. O processamento acontece em segundo plano e não há rota para consultar o resultado — confira a carteira depois com <code>GET /sellerModule/listCustomers/:id</code>.</p>\n<h4 id=\"replace-apaga-o-que-não-está-na-lista\"><code>REPLACE</code> apaga o que não está na lista</h4>\n<p>Com <code>REPLACE</code>, a carteira passa a ser exatamente a lista enviada: quem estava vinculado e não aparece em <code>users</code> é desvinculado.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>status</code></td>\n<td>string</td>\n<td><code>OK</code>.</td>\n</tr>\n<tr>\n<td><code>message</code></td>\n<td>string</td>\n<td><code>Os dados foram recebidos e o processamento será realizado em segundo plano.</code></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td>Corpo ausente (<code>Body não informado</code>), <code>action</code> ou <code>users</code> ausentes — inclusive <code>users</code> vazio — (<code>Campos obrigatórios ausentes: action ou users.</code>), <code>action</code> fora da lista (<code>O campo 'action' é inválido. Valores permitidos: BIND, UNBIND, REPLACE</code>), item de <code>users</code> sem <code>username</code> e sem <code>document</code> (<code>Todos os usuários devem conter pelo menos um dos campos: 'username' ou 'document'.</code>), ou vendedor não encontrado pela forma informada no path.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["sellerModule","manageBulkWallet",":attendantInfo"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"7c3f1a8e-4b62-4d05-9e17-5a2c8d3f6b04","key":"attendantInfo"}]}},"response":[{"id":"f2a800e0-5d3f-426c-a19c-34d7162fa255","name":"Sucesso — lote recebido para processamento","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"action\": \"BIND\",\n  \"users\": [\n    {\n      \"document\": \"29.893.264/0001-01\"\n    },\n    {\n      \"username\": \"contato@lojaexemplo.com.br\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/sellerModule/manageBulkWallet/7c3f1a8e-4b62-4d05-9e17-5a2c8d3f6b04"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"OK\",\n  \"message\": \"Os dados foram recebidos e o processamento será realizado em segundo plano.\"\n}"}],"_postman_id":"4e29b198-d505-4a7e-b01b-def9b866c779"}],"id":"a3dc0f97-493b-4888-bc5e-e506776a829e","description":"<p>Endpoints para gerenciar vendedores e suas carteiras de clientes.</p>\n","_postman_id":"a3dc0f97-493b-4888-bc5e-e506776a829e","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}}},{"name":"11 - Prioridade de SKU","item":[{"name":"Buscar Prioridade por ID","id":"a32e2a37-306e-4ccd-b3a2-052bb66cd12a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://ws.autorei.net/searchSkuPriority/:id","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Consulta uma prioridade de busca pelo id do registro, dentro da sua loja.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id da prioridade, como veio em <code>id</code> na criação.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Id da prioridade. É o que você usa para buscar por id e para remover.</td>\n</tr>\n<tr>\n<td><code>priorityLevel</code></td>\n<td>integer</td>\n<td>Nível configurado, de 1 a 5.</td>\n</tr>\n<tr>\n<td><code>sku.id</code></td>\n<td>integer</td>\n<td>Id do SKU na CWS.</td>\n</tr>\n<tr>\n<td><code>store.id</code></td>\n<td>integer</td>\n<td>Id da sua loja.</td>\n</tr>\n<tr>\n<td><code>dateCreated</code></td>\n<td>datetime</td>\n<td>Criação, em UTC.</td>\n</tr>\n<tr>\n<td><code>lastUpdated</code></td>\n<td>datetime</td>\n<td>Última alteração, em UTC.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td><code>id</code> não informado: <code>{\"error\":\"id é uma informação obrigatória.\"}</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>Prioridade inexistente, ou de outra loja. O corpo é o genérico da plataforma: <code>{\"status\":\"NOT_FOUND\",\"message\":\"Serviço não encontrado\"}</code>.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["searchSkuPriority",":id"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"20601","key":"id"}]}},"response":[{"id":"b800721a-1877-4abb-bf3c-4e8eb4034ac4","name":"Sucesso — prioridade encontrada","originalRequest":{"method":"GET","header":[],"url":"https://ws.autorei.net/searchSkuPriority/20601"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": 20601,\n  \"dateCreated\": \"2026-09-04T13:20:11Z\",\n  \"lastUpdated\": \"2026-09-04T13:20:11Z\",\n  \"priorityLevel\": 5,\n  \"sku\": {\n    \"id\": 500101\n  },\n  \"store\": {\n    \"id\": 4470\n  }\n}"}],"_postman_id":"a32e2a37-306e-4ccd-b3a2-052bb66cd12a"},{"name":"Buscar Prioridade por Código do Produto","id":"e349dde0-5737-43b3-b6a0-7a9a2f3db57c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"partCode\": \"FE-500101\",\n  \"brand\": \"Fabricante Exemplo\",\n  \"composition\": \"UNITARY\"\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/searchSkuPriority/find","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Consulta a prioridade de busca de um produto identificado pela composição do produto.</p>\n<h3 id=\"corpo-da-requisição-json\">Corpo da Requisição (JSON)</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>partCode</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>Código do produto no fabricante. Vai junto com <code>brand</code> e <code>composition</code>.</td>\n</tr>\n<tr>\n<td><code>brand</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>Marca do produto.</td>\n</tr>\n<tr>\n<td><code>composition</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>Composição do produto.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"como-identificar-o-produto\">Como identificar o produto</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Forma</th>\n<th>Campos</th>\n<th>Observação</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Composição do produto</td>\n<td><code>partCode</code> + <code>brand</code> + <code>composition</code></td>\n<td>Os três juntos; nenhum sozinho identifica. <code>composition</code> aceita <code>UNITARY</code>, <code>PAIR</code>, <code>KIT</code>, <code>WARRANTY</code> e <code>SET</code>, sempre em maiúsculas.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Quando os três não vêm completos, ou quando o produto não é encontrado, a resposta é <code>404</code> com <code>Sku não encontrado</code>.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Id da prioridade. É o que você usa para buscar por id e para remover.</td>\n</tr>\n<tr>\n<td><code>priorityLevel</code></td>\n<td>integer</td>\n<td>Nível configurado, de 1 a 5.</td>\n</tr>\n<tr>\n<td><code>sku.id</code></td>\n<td>integer</td>\n<td>Id do SKU na CWS.</td>\n</tr>\n<tr>\n<td><code>store.id</code></td>\n<td>integer</td>\n<td>Id da sua loja.</td>\n</tr>\n<tr>\n<td><code>dateCreated</code></td>\n<td>datetime</td>\n<td>Criação, em UTC.</td>\n</tr>\n<tr>\n<td><code>lastUpdated</code></td>\n<td>datetime</td>\n<td>Última alteração, em UTC.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>Produto não encontrado, ou identificação incompleta: <code>{\"status\":\"NOT_FOUND\",\"message\":\"Sku não encontrado\"}</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>O produto existe mas não tem prioridade na sua loja: <code>{\"status\":\"NOT_FOUND\",\"message\":\"Serviço não encontrado\"}</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Identificação incompleta. A mensagem é a do backend: <code>{\"status\":\"BAD_REQUEST\",\"message\":\"Partcode, brand e composition são campos obrigatórios caso skuId não tiver sido preenchido\"}</code>.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["searchSkuPriority","find"],"host":["https://ws.autorei.net"],"query":[],"variable":[]}},"response":[{"id":"dea6beeb-6c0f-41bb-8ec1-fece1f1b206f","name":"Sucesso — encontrado pelos dados do fabricante","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"partCode\": \"FE-500101\",\n  \"brand\": \"Fabricante Exemplo\",\n  \"composition\": \"UNITARY\"\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/searchSkuPriority/find"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": 20601,\n  \"dateCreated\": \"2026-09-04T13:20:11Z\",\n  \"lastUpdated\": \"2026-09-04T13:20:11Z\",\n  \"priorityLevel\": 5,\n  \"sku\": {\n    \"id\": 500101\n  },\n  \"store\": {\n    \"id\": 4470\n  }\n}"}],"_postman_id":"e349dde0-5737-43b3-b6a0-7a9a2f3db57c"},{"name":"Definir Prioridade de Produto","id":"7357d9d4-42ff-4763-952e-3822dff7e5a7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"priorityLevel\": 5,\n  \"partCode\": \"FE-500101\",\n  \"brand\": \"Fabricante Exemplo\",\n  \"composition\": \"UNITARY\"\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/searchSkuPriority","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Define o nível de prioridade de um produto nas buscas da sua loja. Cada produto tem <strong>uma</strong> prioridade por loja: para mudar o nível de um produto que já tem prioridade, use <strong>Atualizar Prioridade de Produto</strong>.</p>\n<h3 id=\"corpo-da-requisição-json\">Corpo da Requisição (JSON)</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>priorityLevel</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Nível de prioridade, <strong>de 1 a 5</strong>. Fora dessa faixa a requisição é recusada.</td>\n</tr>\n<tr>\n<td><code>partCode</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>Código do produto no fabricante. Veja <strong>Como identificar o produto</strong>.</td>\n</tr>\n<tr>\n<td><code>brand</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>Marca do produto.</td>\n</tr>\n<tr>\n<td><code>composition</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>Composição do produto.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"como-identificar-o-produto\">Como identificar o produto</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Forma</th>\n<th>Campos</th>\n<th>Observação</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Composição do produto</td>\n<td><code>partCode</code> + <code>brand</code> + <code>composition</code></td>\n<td>Os três juntos; nenhum sozinho identifica. <code>composition</code> aceita <code>UNITARY</code>, <code>PAIR</code>, <code>KIT</code>, <code>WARRANTY</code> e <code>SET</code>, sempre em maiúsculas.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Quando os três não vêm completos, ou quando o produto não é encontrado, a resposta é <code>404</code> com <code>Sku não encontrado</code>.</p>\n<h3 id=\"resposta-·-201\">Resposta · 201</h3>\n<p>O registro criado. O código é <strong>201 Created</strong>, não 200.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Id da prioridade. É o que você usa para buscar por id e para remover.</td>\n</tr>\n<tr>\n<td><code>priorityLevel</code></td>\n<td>integer</td>\n<td>Nível configurado, de 1 a 5.</td>\n</tr>\n<tr>\n<td><code>sku.id</code></td>\n<td>integer</td>\n<td>Id do SKU na CWS.</td>\n</tr>\n<tr>\n<td><code>store.id</code></td>\n<td>integer</td>\n<td>Id da sua loja.</td>\n</tr>\n<tr>\n<td><code>dateCreated</code></td>\n<td>datetime</td>\n<td>Criação, em UTC.</td>\n</tr>\n<tr>\n<td><code>lastUpdated</code></td>\n<td>datetime</td>\n<td>Última alteração, em UTC.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td><code>priorityLevel</code> ausente ou fora da faixa de 1 a 5. A mensagem cita o campo e o valor recusado.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>O produto <strong>já tem prioridade</strong> nesta loja: <code>{\"status\":\"BAD_REQUEST\",\"message\":\"Já existe um registro de prioridade para o sku informado\"}</code>. Use a atualização.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>Produto não encontrado, ou nenhuma identificação enviada: <code>{\"status\":\"NOT_FOUND\",\"message\":\"Sku não encontrado\"}</code>.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["searchSkuPriority"],"host":["https://ws.autorei.net"],"query":[],"variable":[]}},"response":[{"id":"503e046e-b6a9-47ba-8ad8-6daa892d9468","name":"Sucesso — prioridade definida","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"priorityLevel\": 5,\n  \"partCode\": \"FE-500101\",\n  \"brand\": \"Fabricante Exemplo\",\n  \"composition\": \"UNITARY\"\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/searchSkuPriority"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": 20601,\n  \"dateCreated\": \"2026-09-04T13:20:11Z\",\n  \"lastUpdated\": \"2026-09-04T13:20:11Z\",\n  \"priorityLevel\": 5,\n  \"sku\": {\n    \"id\": 500101\n  },\n  \"store\": {\n    \"id\": 4470\n  }\n}"}],"_postman_id":"7357d9d4-42ff-4763-952e-3822dff7e5a7"},{"name":"Atualizar Prioridade de Produto","id":"ed20b798-78f8-4626-9406-f962cd432cc3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"priorityLevel\": 3,\n  \"partCode\": \"FE-500101\",\n  \"brand\": \"Fabricante Exemplo\",\n  \"composition\": \"UNITARY\"\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/searchSkuPriority","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Altera o nível de prioridade de um produto que <strong>já tem</strong> prioridade na sua loja. O produto é identificado no corpo, como na criação — não pelo id do registro.</p>\n<h3 id=\"corpo-da-requisição-json\">Corpo da Requisição (JSON)</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>priorityLevel</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Novo nível, <strong>de 1 a 5</strong>.</td>\n</tr>\n<tr>\n<td><code>partCode</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>Código do produto no fabricante. Veja <strong>Como identificar o produto</strong>.</td>\n</tr>\n<tr>\n<td><code>brand</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>Marca do produto.</td>\n</tr>\n<tr>\n<td><code>composition</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>Composição do produto.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"como-identificar-o-produto\">Como identificar o produto</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Forma</th>\n<th>Campos</th>\n<th>Observação</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Composição do produto</td>\n<td><code>partCode</code> + <code>brand</code> + <code>composition</code></td>\n<td>Os três juntos; nenhum sozinho identifica. <code>composition</code> aceita <code>UNITARY</code>, <code>PAIR</code>, <code>KIT</code>, <code>WARRANTY</code> e <code>SET</code>, sempre em maiúsculas.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Quando os três não vêm completos, ou quando o produto não é encontrado, a resposta é <code>404</code> com <code>Sku não encontrado</code>.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>O registro atualizado, com <code>lastUpdated</code> novo e o mesmo <code>id</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Id da prioridade. É o que você usa para buscar por id e para remover.</td>\n</tr>\n<tr>\n<td><code>priorityLevel</code></td>\n<td>integer</td>\n<td>Nível configurado, de 1 a 5.</td>\n</tr>\n<tr>\n<td><code>sku.id</code></td>\n<td>integer</td>\n<td>Id do SKU na CWS.</td>\n</tr>\n<tr>\n<td><code>store.id</code></td>\n<td>integer</td>\n<td>Id da sua loja.</td>\n</tr>\n<tr>\n<td><code>dateCreated</code></td>\n<td>datetime</td>\n<td>Criação, em UTC.</td>\n</tr>\n<tr>\n<td><code>lastUpdated</code></td>\n<td>datetime</td>\n<td>Última alteração, em UTC.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td><code>priorityLevel</code> ausente ou fora da faixa de 1 a 5. A mensagem cita o campo e o valor recusado.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>Produto não encontrado: <code>{\"status\":\"NOT_FOUND\",\"message\":\"Sku não encontrado\"}</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>O produto existe mas <strong>não tem prioridade</strong> nesta loja. O corpo não traz detalhe — use <strong>Definir Prioridade de Produto</strong> para criar.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["searchSkuPriority"],"host":["https://ws.autorei.net"],"query":[],"variable":[]}},"response":[{"id":"8bb7629a-8319-4927-b37e-ad38ccd8d8f8","name":"Sucesso — nível alterado","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"priorityLevel\": 3,\n  \"partCode\": \"FE-500101\",\n  \"brand\": \"Fabricante Exemplo\",\n  \"composition\": \"UNITARY\"\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/searchSkuPriority"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": 20601,\n  \"dateCreated\": \"2026-09-04T13:20:11Z\",\n  \"lastUpdated\": \"2026-09-04T15:42:03Z\",\n  \"priorityLevel\": 3,\n  \"sku\": {\n    \"id\": 500101\n  },\n  \"store\": {\n    \"id\": 4470\n  }\n}"}],"_postman_id":"ed20b798-78f8-4626-9406-f962cd432cc3"},{"name":"Remover Prioridade de Produto","id":"bbc54d6c-3fbf-4775-a7a4-50648e9ae762","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"https://ws.autorei.net/searchSkuPriority/:id","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Remove a prioridade de um produto. Ele volta ao comportamento padrão de busca da loja, e o produto continua disponível — só a prioridade sai.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Id da prioridade, como veio em <code>id</code> na criação ou na consulta.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"resposta-·-204\">Resposta · 204</h3>\n<p><strong>204 No Content, sem corpo.</strong></p>\n<h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td><code>id</code> não informado: <code>{\"error\":\"id level é um campo obrigatório.\"}</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>Prioridade inexistente, de outra loja, ou <strong>já removida</strong>: <code>{\"status\":\"NOT_FOUND\",\"message\":\"Serviço não encontrado\"}</code>.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["searchSkuPriority",":id"],"host":["https://ws.autorei.net"],"query":[],"variable":[{"type":"any","value":"20601","key":"id"}]}},"response":[{"id":"ca0e8d3a-3b6f-4256-9f3c-e0850966c128","name":"Sucesso — prioridade removida","originalRequest":{"method":"DELETE","header":[],"url":"https://ws.autorei.net/searchSkuPriority/20601"},"status":"No Content","code":204,"_postman_previewlanguage":"text","header":[],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"bbc54d6c-3fbf-4775-a7a4-50648e9ae762"}],"id":"bd936335-8920-49bb-873f-bbd0a19738df","description":"<p>Endpoints para gerenciar a prioridade de exibição de produtos (SKUs) nos resultados de busca.</p>\n","_postman_id":"bd936335-8920-49bb-873f-bbd0a19738df","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}}},{"name":"12 - CashBack","item":[{"name":"Consultar Saldo Total de Cashback do Marketplace","id":"f29eac84-2060-4c81-a900-274dc7dd5df9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://ws.autorei.net/loyaltyProgram/total","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Retorna o saldo de cashback da sua loja, somado por tipo e por status. É a visão consolidada: um número por status, sem detalhe por cliente ou por pedido.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>Dois objetos, <code>credit</code> e <code>debit</code>. Em cada um, <strong>a chave é o status e o valor é o total naquele status</strong> — não há campos fixos: só aparece o status que tem saldo. Uma loja sem nenhum débito devolve <code>\"debit\": {}</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>credit</code></td>\n<td>objeto</td>\n<td>Cashback que os clientes <strong>ganharam</strong>, por status.</td>\n</tr>\n<tr>\n<td><code>debit</code></td>\n<td>objeto</td>\n<td>Cashback que os clientes <strong>gastaram</strong>, por status.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status possíveis nas chaves:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>Onde aparece</th>\n<th>Significado</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>TO_RELEASE</code></td>\n<td><code>credit</code></td>\n<td>Concedido, ainda em carência — o cliente não pode usar.</td>\n</tr>\n<tr>\n<td><code>RELEASED</code></td>\n<td><code>credit</code></td>\n<td>Liberado para uso.</td>\n</tr>\n<tr>\n<td><code>CANCELLED</code></td>\n<td><code>credit</code> · <code>debit</code></td>\n<td>Cancelado.</td>\n</tr>\n<tr>\n<td><code>INVALID_EXPIRED</code></td>\n<td><code>credit</code></td>\n<td>Crédito que expirou sem ser usado.</td>\n</tr>\n<tr>\n<td><code>IN_USE</code></td>\n<td><code>debit</code></td>\n<td>Reservado num carrinho em aberto.</td>\n</tr>\n<tr>\n<td><code>USED</code></td>\n<td><code>debit</code></td>\n<td>Efetivamente consumido numa compra.</td>\n</tr>\n<tr>\n<td><code>EXPIRED</code></td>\n<td><code>debit</code></td>\n<td>Débito de saldo que expirou.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Os valores são string, não número</strong> — duas casas decimais e <strong>ponto</strong> como separador (<code>\"220971.17\"</code>). Converta antes de somar.</p>\n<h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td><code>{\"status\":\"BAD_REQUEST\",\"message\":\"no record found\"}</code> — a loja não tem nenhum registro de cashback. É a resposta para loja sem programa de fidelidade ou sem movimento, não um erro na sua requisição.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["loyaltyProgram","total"],"host":["https://ws.autorei.net"],"query":[],"variable":[]}},"response":[{"id":"ce1f2495-d135-47dd-b9ad-8e17c20e52d3","name":"Sucesso — saldo consolidado da loja","originalRequest":{"method":"GET","header":[],"url":"https://ws.autorei.net/loyaltyProgram/total"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"credit\": {\n    \"TO_RELEASE\": \"1284.36\",\n    \"RELEASED\": \"7350.09\",\n    \"CANCELLED\": \"118.24\",\n    \"INVALID_EXPIRED\": \"942.71\"\n  },\n  \"debit\": {\n    \"IN_USE\": \"260.50\",\n    \"USED\": \"4810.62\",\n    \"EXPIRED\": \"331.08\"\n  }\n}"}],"_postman_id":"f29eac84-2060-4c81-a900-274dc7dd5df9"},{"name":"Listar Saldo de Cashback Agregado por Cliente","id":"ac58765d-bcd3-4a1c-ac60-28449cf2c6e5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://ws.autorei.net/loyaltyProgram/listCustomersTotal?limit=20&offset=0","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Lista o saldo de cashback da sua loja <strong>cliente por cliente</strong>, com os totais por status de cada um. Use quando precisar do saldo individual; para o consolidado da loja, use <code>GET /loyaltyProgram/total</code>.</p>\n<h3 id=\"parâmetros-de-consulta\">Parâmetros de Consulta</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Registros por página. Padrão <strong>20</strong>, teto <strong>50</strong> — valor acima disso é reduzido para 50, sem erro.</td>\n</tr>\n<tr>\n<td><code>offset</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Registro inicial da página. Padrão <strong>0</strong>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"a-paginação-conta-lançamentos-não-clientes\">A paginação conta lançamentos, não clientes</h4>\n<p><code>limit</code> e <code>offset</code> são aplicados aos <strong>lançamentos</strong> de cashback, e a resposta agrupa esses lançamentos por cliente. Como um cliente costuma ter mais de um lançamento, a página devolve <strong>menos clientes do que o <code>limit</code></strong> — <code>limit=20</code> pode voltar 17 clientes. Não use a quantidade de itens da resposta para decidir se chegou ao fim. <strong>Não existe página vazia:</strong> quando o <code>offset</code> passa do último lançamento, a resposta é <code>400</code> com <code>no record found</code> — é esse 400 que encerra a paginação.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>Array com um objeto por cliente.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>customerId</code></td>\n<td>integer</td>\n<td>Id do cliente na CWS.</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>string</td>\n<td>Nome ou razão social do cliente.</td>\n</tr>\n<tr>\n<td><code>document</code></td>\n<td>string</td>\n<td>CPF ou CNPJ do cliente.</td>\n</tr>\n<tr>\n<td><code>credit</code></td>\n<td>objeto</td>\n<td>Cashback que o cliente ganhou, por status. Chave = status, valor = total.</td>\n</tr>\n<tr>\n<td><code>debit</code></td>\n<td>objeto</td>\n<td>Cashback que o cliente gastou, por status. Vem <code>{}</code> quando não há débito.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Os status possíveis nas chaves de <code>credit</code> e <code>debit</code> são os mesmos de <code>GET /loyaltyProgram/total</code>: <code>TO_RELEASE</code>, <code>RELEASED</code>, <code>CANCELLED</code>, <code>INVALID_EXPIRED</code>, <code>IN_USE</code>, <code>USED</code>, <code>EXPIRED</code>. <strong>Os valores são string com duas casas decimais e ponto como separador</strong> (<code>\"11.80\"</code>).</p>\n<h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td><code>{\"status\":\"BAD_REQUEST\",\"message\":\"no record found\"}</code> — a loja não tem nenhum registro de cashback, ou o <code>offset</code> passou do fim da lista. Não é um erro na sua requisição.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["loyaltyProgram","listCustomersTotal"],"host":["https://ws.autorei.net"],"query":[{"key":"limit","value":"20"},{"key":"offset","value":"0"}],"variable":[]}},"response":[{"id":"358507a6-df15-4146-a78f-0bf9673a9254","name":"Sucesso — dois clientes com saldo","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://ws.autorei.net/loyaltyProgram/listCustomersTotal?limit=20&offset=0","host":["https://ws.autorei.net"],"path":["loyaltyProgram","listCustomersTotal"],"query":[{"key":"limit","value":"20"},{"key":"offset","value":"0"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"customerId\": 700101,\n    \"name\": \"Ana Paula Ribeiro\",\n    \"document\": \"700.413.648-56\",\n    \"credit\": {\n      \"TO_RELEASE\": \"11.80\",\n      \"RELEASED\": \"42.35\"\n    },\n    \"debit\": {\n      \"USED\": \"15.00\"\n    }\n  },\n  {\n    \"customerId\": 700102,\n    \"name\": \"Comercial Aurora Ltda\",\n    \"document\": \"29.893.264/0001-01\",\n    \"credit\": {\n      \"RELEASED\": \"318.90\"\n    },\n    \"debit\": {}\n  }\n]"}],"_postman_id":"ac58765d-bcd3-4a1c-ac60-28449cf2c6e5"},{"name":"Consultar Histórico de Cashback do Cliente","id":"96199271-79d8-4b83-8397-e87d701cbf1e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://ws.autorei.net/loyaltyProgram/customerReport/:document?limit=20&offset=0","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Lista o extrato de cashback de um cliente da sua loja: um item por lançamento, ganho ou gasto, do mais recente para o mais antigo.</p>\n<h3 id=\"parâmetros-de-rota\">Parâmetros de Rota</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>document</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>CPF ou CNPJ do cliente. O cliente precisa ser da loja autenticada.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"parâmetros-de-consulta\">Parâmetros de Consulta</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Lançamentos por página. Padrão <strong>20</strong>, teto <strong>50</strong> — valor acima disso é reduzido para 50, sem erro.</td>\n</tr>\n<tr>\n<td><code>offset</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Lançamento inicial da página. Padrão <strong>0</strong>.</td>\n</tr>\n<tr>\n<td><code>status</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Filtra os lançamentos por status. Aceita <strong>vários separados por vírgula</strong>, sem espaço: <code>status=TO_RELEASE,RELEASED</code>. Omitido, traz todos.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Valores aceitos em <code>status</code>: <code>TO_RELEASE</code>, <code>RELEASED</code>, <code>CANCELLED</code>, <code>INVALID_EXPIRED</code> (lançamentos de crédito) e <code>IN_USE</code>, <code>USED</code>, <code>EXPIRED</code> (lançamentos de débito).</p>\n<h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"status-desconhecido-não-é-recusado\">Status desconhecido não é recusado</h4>\n<p>Um valor fora da lista não gera erro de validação: ele simplesmente não casa com nenhum lançamento. O resultado é a resposta de \"sem registros\" (<code>400</code>), igual a um filtro que não encontrou nada.</p>\n<h4 id=\"filtro-sem-resultado-e-cliente-sem-cashback-respondem-igual\">Filtro sem resultado e cliente sem cashback respondem igual</h4>\n<p>Não há como distinguir, pela resposta, \"este cliente nunca teve cashback\" de \"este cliente não tem lançamento no status filtrado\" — as duas situações devolvem <code>400</code> com <code>no record found</code>.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>Array com um objeto por lançamento.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>partnerOrder</code></td>\n<td>integer</td>\n<td>Id do pedido CWS que gerou o lançamento. Vem <strong><code>0</code></strong> quando o lançamento não veio de um pedido da plataforma — é o caso do cashback concedido por pedido externo.</td>\n</tr>\n<tr>\n<td><code>value</code></td>\n<td>string</td>\n<td>Valor do lançamento. <strong>String com duas casas decimais e ponto como separador</strong> (<code>\"10.41\"</code>), não número.</td>\n</tr>\n<tr>\n<td><code>createDate</code></td>\n<td>string</td>\n<td>Data e hora do lançamento, em UTC (<code>2024-03-13T21:26:57.161938Z</code>).</td>\n</tr>\n<tr>\n<td><code>status</code></td>\n<td>string</td>\n<td>Status do lançamento, entre os valores aceitos em <code>status</code>.</td>\n</tr>\n<tr>\n<td><code>expirationDate</code></td>\n<td>string</td>\n<td>Data de expiração do saldo. Vem <code>null</code> quando o lançamento não tem expiração definida.</td>\n</tr>\n<tr>\n<td><code>type</code></td>\n<td>string</td>\n<td><code>credit</code> quando o cliente ganhou, <code>debit</code> quando gastou. <strong>Em minúsculas.</strong></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td><code>{\"status\":\"BAD_REQUEST\",\"message\":\"no customer found\"}</code> — o documento não corresponde a nenhum cliente <strong>da sua loja</strong>. É a mesma resposta para documento inexistente e para cliente de outra loja.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>{\"status\":\"BAD_REQUEST\",\"message\":\"no record found\"}</code> — o cliente existe, mas não há lançamento no filtro pedido (ou o <code>offset</code> passou do fim). Não é um erro na sua requisição.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["loyaltyProgram","customerReport",":document"],"host":["https://ws.autorei.net"],"query":[{"key":"limit","value":"20"},{"key":"offset","value":"0"},{"disabled":true,"key":"status","value":"TO_RELEASE,RELEASED"}],"variable":[{"type":"any","value":"70041364856","key":"document"}]}},"response":[{"id":"c81650df-cdda-4382-b19c-f27c25d7bab4","name":"Sucesso — extrato com ganho e uso","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://ws.autorei.net/loyaltyProgram/customerReport/70041364856?limit=20&offset=0","host":["https://ws.autorei.net"],"path":["loyaltyProgram","customerReport","70041364856"],"query":[{"key":"limit","value":"20"},{"key":"offset","value":"0"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"partnerOrder\": 0,\n    \"value\": \"11.80\",\n    \"createDate\": \"2026-09-04T14:15:02.534996Z\",\n    \"status\": \"TO_RELEASE\",\n    \"expirationDate\": null,\n    \"type\": \"credit\"\n  },\n  {\n    \"partnerOrder\": 900201,\n    \"value\": \"15.00\",\n    \"createDate\": \"2026-08-22T18:03:41.229713Z\",\n    \"status\": \"USED\",\n    \"expirationDate\": null,\n    \"type\": \"debit\"\n  },\n  {\n    \"partnerOrder\": 900201,\n    \"value\": \"42.35\",\n    \"createDate\": \"2026-08-14T11:47:09.161938Z\",\n    \"status\": \"RELEASED\",\n    \"expirationDate\": \"2026-11-12T00:00:00-03:00\",\n    \"type\": \"credit\"\n  }\n]"}],"_postman_id":"96199271-79d8-4b83-8397-e87d701cbf1e"},{"name":"Conceder Cashback por Pedido Externo","id":"c7d4834b-7ff2-471e-b43f-9e8b8a4e9cc8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"cpfCnpj\": \"70041364856\",\n  \"externalOrderId\": \"PED-EXT-900201\",\n  \"status\": \"TO_RELEASE\",\n  \"orderItems\": [\n    {\n      \"documentPartner\": \"30424972000174\",\n      \"skuId\": 500101,\n      \"deliveryDate\": \"2026-09-10\",\n      \"quantity\": 2,\n      \"unitaryValue\": 150.0\n    },\n    {\n      \"documentPartner\": \"30424972000174\",\n      \"partnerPartCode\": \"SKU-B-002\",\n      \"deliveryDate\": \"2026-09-10\",\n      \"quantity\": 1,\n      \"unitaryValue\": 80.0\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/loyaltyProgram/earnRewardExternal","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Concede cashback a um cliente a partir de um pedido que aconteceu <strong>fora da plataforma CWS</strong> — uma venda no seu balcão, no seu e-commerce próprio ou em outro canal. Você informa quem comprou, o número do pedido no seu sistema e os itens; o programa de fidelidade calcula quanto cada item rende e registra o crédito.</p>\n<h3 id=\"corpo-da-requisição-json\">Corpo da Requisição (JSON)</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Identificação do cliente</td>\n<td>—</td>\n<td>Sim</td>\n<td>Não é um campo — é um grupo. Envie <code>cpfCnpj</code> <strong>ou</strong> <code>email</code>; ver a regra abaixo.</td>\n</tr>\n<tr>\n<td><code>cpfCnpj</code></td>\n<td>string</td>\n<td>Condicional</td>\n<td>CPF ou CNPJ do cliente. Obrigatório se <code>email</code> não for enviado.</td>\n</tr>\n<tr>\n<td><code>email</code></td>\n<td>string</td>\n<td>Condicional</td>\n<td>E-mail de acesso do cliente na sua loja. Obrigatório se <code>cpfCnpj</code> não for enviado.</td>\n</tr>\n<tr>\n<td><code>externalOrderId</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>Número do pedido no <strong>seu</strong> sistema. Único por loja — ver a regra abaixo.</td>\n</tr>\n<tr>\n<td><code>status</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Status inicial do crédito. <code>TO_RELEASE</code>, <code>RELEASED</code>, <code>CANCELLED</code> ou <code>INVALID_EXPIRED</code>. Omitido, o crédito nasce como <code>TO_RELEASE</code>.</td>\n</tr>\n<tr>\n<td><code>timeToReleasePoints</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Dias de carência antes de o crédito ser liberado. Não pode ser negativo. Omitido, vale a carência configurada no programa de fidelidade da loja.</td>\n</tr>\n<tr>\n<td><code>orderItems</code></td>\n<td>array</td>\n<td>Sim</td>\n<td>Itens do pedido. Não pode ser lista vazia.</td>\n</tr>\n<tr>\n<td><code>orderItems[].documentPartner</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>Documento do parceiro que vendeu o item. Ver a regra de marketplace abaixo.</td>\n</tr>\n<tr>\n<td>Identificação do produto</td>\n<td>—</td>\n<td>Sim</td>\n<td>Não é um campo — é um grupo. Em cada item, envie <code>skuId</code> <strong>ou</strong> <code>partnerPartCode</code>.</td>\n</tr>\n<tr>\n<td><code>orderItems[].skuId</code></td>\n<td>integer</td>\n<td>Condicional</td>\n<td>Id do produto na CWS. Obrigatório se <code>partnerPartCode</code> não for enviado.</td>\n</tr>\n<tr>\n<td><code>orderItems[].partnerPartCode</code></td>\n<td>string</td>\n<td>Condicional</td>\n<td>Código do produto no seu catálogo, como cadastrado no estoque. Obrigatório se <code>skuId</code> não for enviado.</td>\n</tr>\n<tr>\n<td><code>orderItems[].deliveryDate</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>Data de entrega do item, no formato <code>AAAA-MM-DD</code>.</td>\n</tr>\n<tr>\n<td><code>orderItems[].quantity</code></td>\n<td>integer</td>\n<td>Sim</td>\n<td>Quantidade do item. Tem de ser maior que zero.</td>\n</tr>\n<tr>\n<td><code>orderItems[].unitaryValue</code></td>\n<td>number</td>\n<td>Sim</td>\n<td>Valor unitário do item. Tem de ser maior que zero.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"um-cliente-por-documento-ou-por-e-mail\">Um cliente, por documento ou por e-mail</h4>\n<p>Envie <strong>um dos dois</strong>. O cliente precisa já existir na loja autenticada: cliente de outra loja, ou documento sem cadastro, é recusado. Se você mandar os dois, o <code>cpfCnpj</code> é quem vale.</p>\n<h4 id=\"externalorderid-é-a-chave-contra-crédito-em-dobro\"><code>externalOrderId</code> é a chave contra crédito em dobro</h4>\n<p>O número do pedido externo é único por parceiro. Uma segunda chamada com o mesmo <code>externalOrderId</code> é <strong>recusada</strong>, não duplicada — é o que protege a integração de conceder cashback duas vezes quando uma entrega é reprocessada. Use o número real do pedido no seu sistema, não um valor gerado a cada tentativa.</p>\n<h4 id=\"documentpartner-e-a-venda-de-marketplace\"><code>documentPartner</code> e a venda de marketplace</h4>\n<p>O documento informado em cada item define quem vendeu aquele item. Quando é o documento do <strong>próprio parceiro autenticado</strong>, nada mais é exigido. Quando é o documento de <strong>outro parceiro</strong>, precisa existir uma parceria de marketplace autorizada entre a sua loja e ele — caso contrário o item é recusado.</p>\n<h4 id=\"o-valor-do-cashback-é-calculado-pela-plataforma-não-enviado\">O valor do cashback é calculado pela plataforma, não enviado</h4>\n<p>Você informa quantidade e valor unitário; quanto isso rende é decidido pelas regras do programa de fidelidade da loja (categoria e fabricante do produto, percentual configurado). Item que não se encaixa em nenhuma regra é <strong>registrado com valor zero</strong> — não gera erro e não impede o restante do pedido.</p>\n<h4 id=\"recusa-é-do-pedido-inteiro\">Recusa é do pedido inteiro</h4>\n<p>Qualquer item recusado derruba a requisição inteira e <strong>nada é gravado</strong> — não existe resultado parcial. Quando a recusa é produto não encontrado, a mensagem lista de uma vez todos os itens que não foram localizados, para você não descobrir um por chamada.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>Array com <strong>um objeto por item aceito</strong>, na ordem em que você os enviou.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>earning</code></td>\n<td>number</td>\n<td>Cashback gerado pelo item. <strong>Número, não string</strong> — e sem arredondamento: espere valores como <code>0.49950000000000006</code>. Vem <code>0</code> quando o item não se encaixa em nenhuma regra do programa.</td>\n</tr>\n<tr>\n<td><code>type</code></td>\n<td>string</td>\n<td>Tipo da estratégia aplicada. <code>CASHBACK</code>.</td>\n</tr>\n<tr>\n<td><code>value</code></td>\n<td>number</td>\n<td>Valor consumido de saldo na operação. Sempre <code>0</code> nesta concessão.</td>\n</tr>\n<tr>\n<td><code>valueType</code></td>\n<td>string</td>\n<td>Vem <code>\"\"</code> nesta operação.</td>\n</tr>\n<tr>\n<td><code>Reserve</code></td>\n<td>objeto</td>\n<td>Eco do item como a plataforma o interpretou. <strong>A chave começa com maiúscula.</strong></td>\n</tr>\n<tr>\n<td><code>Reserve.skuId</code></td>\n<td>integer</td>\n<td>Id CWS do produto — útil quando você identificou o item por <code>partnerPartCode</code>.</td>\n</tr>\n<tr>\n<td><code>Reserve.qty</code></td>\n<td>integer</td>\n<td>Quantidade enviada.</td>\n</tr>\n<tr>\n<td><code>Reserve.unitaryValue</code></td>\n<td>number</td>\n<td>Valor unitário enviado.</td>\n</tr>\n<tr>\n<td><code>Reserve.deliveryDate</code></td>\n<td>string</td>\n<td>Data de entrega enviada.</td>\n</tr>\n<tr>\n<td><code>Reserve.externalOrderId</code></td>\n<td>string</td>\n<td>Número do pedido externo enviado.</td>\n</tr>\n<tr>\n<td><code>Reserve.partnerId</code></td>\n<td>integer</td>\n<td>Id do parceiro resolvido a partir do <code>documentPartner</code>.</td>\n</tr>\n<tr>\n<td><code>Reserve.storeName</code></td>\n<td>string</td>\n<td>Subdomínio da loja autenticada.</td>\n</tr>\n<tr>\n<td><code>Reserve.brandId</code></td>\n<td>integer</td>\n<td>Id do fabricante do produto.</td>\n</tr>\n<tr>\n<td><code>Reserve.categories</code></td>\n<td>array</td>\n<td>Ids das categorias a que o produto pertence.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>422</td>\n<td>Qualquer recusa de validação ou de regra de negócio: cliente não identificado ou inexistente, <code>externalOrderId</code> ausente ou repetido, <code>status</code> fora da lista, <code>timeToReleasePoints</code> negativo, <code>orderItems</code> vazio, item sem identificação de produto, sem <code>documentPartner</code>, sem <code>deliveryDate</code> ou com data em formato inválido, <code>quantity</code> ou <code>unitaryValue</code> zerado, produto não encontrado no catálogo do parceiro, <code>documentPartner</code> desconhecido, ou parceria de marketplace não autorizada. O motivo específico vem na mensagem.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div><p>A recusa vem como uma lista de mensagens:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\"total\":1,\"errors\":[{\"message\":\"Número de pedido externo já está associado a outro cashback concedido.\"}]}\n</code></pre>\n<p>Leia o motivo em <code>errors[].message</code>; <code>total</code> é a quantidade de mensagens.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["loyaltyProgram","earnRewardExternal"],"host":["https://ws.autorei.net"],"query":[],"variable":[]}},"response":[{"id":"4e0bc9e4-8af2-463c-b2f6-e7dbdfc47ac1","name":"Sucesso — pedido externo com dois itens","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"cpfCnpj\": \"70041364856\",\n  \"externalOrderId\": \"PED-EXT-900201\",\n  \"status\": \"TO_RELEASE\",\n  \"orderItems\": [\n    {\n      \"documentPartner\": \"30424972000174\",\n      \"skuId\": 500101,\n      \"deliveryDate\": \"2026-09-10\",\n      \"quantity\": 2,\n      \"unitaryValue\": 150.0\n    },\n    {\n      \"documentPartner\": \"30424972000174\",\n      \"partnerPartCode\": \"SKU-B-002\",\n      \"deliveryDate\": \"2026-09-10\",\n      \"quantity\": 1,\n      \"unitaryValue\": 80.0\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/loyaltyProgram/earnRewardExternal"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"Reserve\": {\n      \"brandId\": 12593,\n      \"qty\": 2,\n      \"storeName\": \"lojaexemplo\",\n      \"partnerId\": 4471,\n      \"categories\": [\n        26881,\n        26903\n      ],\n      \"externalOrderId\": \"PED-EXT-900201\",\n      \"deliveryDate\": \"2026-09-10\",\n      \"skuId\": 500101,\n      \"unitaryValue\": 150\n    },\n    \"valueType\": \"\",\n    \"type\": \"CASHBACK\",\n    \"value\": 0,\n    \"earning\": 1.5\n  },\n  {\n    \"Reserve\": {\n      \"brandId\": 14713,\n      \"qty\": 1,\n      \"storeName\": \"lojaexemplo\",\n      \"partnerId\": 4471,\n      \"categories\": [\n        26885,\n        26878,\n        26935\n      ],\n      \"externalOrderId\": \"PED-EXT-900201\",\n      \"deliveryDate\": \"2026-09-10\",\n      \"skuId\": 500102,\n      \"unitaryValue\": 80\n    },\n    \"valueType\": \"\",\n    \"type\": \"CASHBACK\",\n    \"value\": 0,\n    \"earning\": 0\n  }\n]"},{"id":"862bc3b4-8411-485c-915a-3af0969624f7","name":"Recusa — pedido externo já concedido","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"cpfCnpj\": \"70041364856\",\n  \"externalOrderId\": \"PED-EXT-900201\",\n  \"status\": \"TO_RELEASE\",\n  \"orderItems\": [\n    {\n      \"documentPartner\": \"30424972000174\",\n      \"skuId\": 500101,\n      \"deliveryDate\": \"2026-09-10\",\n      \"quantity\": 2,\n      \"unitaryValue\": 150.0\n    },\n    {\n      \"documentPartner\": \"30424972000174\",\n      \"partnerPartCode\": \"SKU-B-002\",\n      \"deliveryDate\": \"2026-09-10\",\n      \"quantity\": 1,\n      \"unitaryValue\": 80.0\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/loyaltyProgram/earnRewardExternal"},"status":"Unprocessable Entity","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"total\": 1,\n  \"errors\": [\n    {\n      \"message\": \"Número de pedido externo já está associado a outro cashback concedido.\"\n    }\n  ]\n}"}],"_postman_id":"c7d4834b-7ff2-471e-b43f-9e8b8a4e9cc8"},{"name":"Atualizar Cashback de Pedido Externo","id":"f55f4e1b-59b8-4e75-b969-1234d6e59df2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"documentPartner\": \"30424972000174\",\n  \"status\": \"RELEASED\",\n  \"earning\": 12.34,\n  \"orderDeliveryDate\": \"2026-09-12\"\n}","options":{"raw":{"language":"json"}}},"url":"https://ws.autorei.net/loyaltyProgram/earnRewardExternal?externalOrderId=PED-EXT-900201","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Altera um cashback já concedido por pedido externo: libera o crédito que estava em carência, cancela a concessão, corrige o valor ou a data de entrega. O pedido é identificado pelo mesmo <code>externalOrderId</code> usado na concessão.</p>\n<h3 id=\"parâmetros-de-consulta\">Parâmetros de Consulta</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parâmetro</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>externalOrderId</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>Número do pedido externo, como enviado em <code>POST /loyaltyProgram/earnRewardExternal</code>. Vai na <strong>query string</strong>, não no corpo.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"corpo-da-requisição-json\">Corpo da Requisição (JSON)</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Obrigatório</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>documentPartner</code></td>\n<td>string</td>\n<td>Sim</td>\n<td>Documento do parceiro dono da concessão. Mesma regra de marketplace da concessão.</td>\n</tr>\n<tr>\n<td><code>status</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Novo status do crédito: <code>TO_RELEASE</code>, <code>RELEASED</code>, <code>CANCELLED</code> ou <code>INVALID_EXPIRED</code>.</td>\n</tr>\n<tr>\n<td><code>earning</code></td>\n<td>number</td>\n<td>Não</td>\n<td>Novo valor <strong>total</strong> do cashback do pedido. Ver a regra abaixo.</td>\n</tr>\n<tr>\n<td><code>orderDeliveryDate</code></td>\n<td>string</td>\n<td>Não</td>\n<td>Nova data de entrega, no formato <code>AAAA-MM-DD</code>.</td>\n</tr>\n<tr>\n<td><code>timeToReleasePoints</code></td>\n<td>integer</td>\n<td>Não</td>\n<td>Nova carência, em dias, antes de o crédito ser liberado.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Não envie <code>partnerId</code>: ele é resolvido pelo backend a partir do <code>documentPartner</code>.</p>\n<h3 id=\"regras-de-negócio\">Regras de negócio</h3>\n<h4 id=\"só-o-cashback-em-carência-pode-ser-alterado\">Só o cashback em carência pode ser alterado</h4>\n<p>A atualização alcança apenas os lançamentos que ainda estão em <code>TO_RELEASE</code>. Um pedido cujo cashback já foi liberado, cancelado ou expirado responde <code>404</code> — mesmo existindo. Na prática: a janela para corrigir a concessão é a carência.</p>\n<h4 id=\"a-atualização-vale-para-o-pedido-inteiro\">A atualização vale para o pedido inteiro</h4>\n<p>Um pedido externo com vários itens gerou um lançamento por item, e a atualização é aplicada a <strong>todos eles</strong> de uma vez. Não há como alterar só um item do pedido por esta rota.</p>\n<h4 id=\"earning-é-o-total-do-pedido-dividido-entre-os-itens\"><code>earning</code> é o total do pedido, dividido entre os itens</h4>\n<p>O valor informado em <code>earning</code> é o cashback <strong>do pedido</strong>, não de cada item: num pedido de dois itens, <code>\"earning\": 10</code> grava <code>5</code> em cada lançamento. Omita o campo quando não for corrigir o valor — o cashback calculado na concessão é preservado.</p>\n<h3 id=\"resposta-·-200\">Resposta · 200</h3>\n<p>Array com <strong>um objeto por lançamento atualizado</strong> — um por item do pedido externo. Omitir <code>status</code> mantém o status atual e aplica só os demais campos enviados.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>uuid</td>\n<td>Id do lançamento de cashback.</td>\n</tr>\n<tr>\n<td><code>externalOrderId</code></td>\n<td>string</td>\n<td>Número do pedido externo.</td>\n</tr>\n<tr>\n<td><code>skuId</code></td>\n<td>integer</td>\n<td>Id CWS do produto do lançamento.</td>\n</tr>\n<tr>\n<td><code>value</code></td>\n<td>number</td>\n<td>Valor do lançamento depois da atualização. <strong>Número</strong>, ao contrário dos endpoints de consulta, que devolvem string.</td>\n</tr>\n<tr>\n<td><code>status</code></td>\n<td>string</td>\n<td>Status depois da atualização.</td>\n</tr>\n<tr>\n<td><code>type</code></td>\n<td>string</td>\n<td>Tipo da estratégia. <code>CASHBACK</code>.</td>\n</tr>\n<tr>\n<td><code>createDate</code></td>\n<td>string</td>\n<td>Data e hora da concessão original, em UTC.</td>\n</tr>\n<tr>\n<td><code>orderDeliveryDate</code></td>\n<td>string</td>\n<td>Data de entrega do pedido, com offset (<code>2026-09-10T00:00:00-03:00</code>).</td>\n</tr>\n<tr>\n<td><code>releaseDate</code></td>\n<td>string</td>\n<td>Data em que o crédito foi liberado. <strong>O campo só existe quando o lançamento está <code>RELEASED</code></strong> — nos outros status ele não vem na resposta.</td>\n</tr>\n<tr>\n<td><code>timeToReleasePoints</code></td>\n<td>integer</td>\n<td>Carência em dias vigente no lançamento.</td>\n</tr>\n<tr>\n<td><code>timeToExpire</code></td>\n<td>integer</td>\n<td>Dias de validade do crédito depois de liberado, conforme o programa da loja.</td>\n</tr>\n<tr>\n<td><code>cumulative</code></td>\n<td>boolean</td>\n<td>Se o crédito soma com outras estratégias de fidelidade.</td>\n</tr>\n<tr>\n<td><code>partnerId</code></td>\n<td>integer</td>\n<td>Id do parceiro resolvido a partir do <code>documentPartner</code>.</td>\n</tr>\n<tr>\n<td><code>ownerStoreId</code></td>\n<td>integer</td>\n<td>Id da loja dona do programa.</td>\n</tr>\n<tr>\n<td><code>ownerStoreName</code></td>\n<td>string</td>\n<td>Subdomínio da loja.</td>\n</tr>\n<tr>\n<td><code>ownerStoreEmail</code></td>\n<td>string</td>\n<td>E-mail de contato da loja.</td>\n</tr>\n<tr>\n<td><code>customerRewardId</code></td>\n<td>uuid</td>\n<td>Id da carteira de cashback do cliente.</td>\n</tr>\n<tr>\n<td><code>loyaltyStrategyId</code></td>\n<td>uuid</td>\n<td>Id da estratégia de fidelidade que originou o crédito.</td>\n</tr>\n<tr>\n<td><code>orderId</code> · <code>partnerOrderId</code></td>\n<td>integer</td>\n<td>Ids do pedido na plataforma. Vêm <code>0</code> em cashback de pedido externo, que não tem pedido CWS.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"erros\">Erros</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Quando</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>422</td>\n<td><code>externalOrderId</code> ausente na query, <code>documentPartner</code> ausente ou desconhecido, <code>status</code> fora da lista, ou parceria de marketplace não autorizada. O motivo vem na mensagem.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>Nenhum lançamento a atualizar: o <code>externalOrderId</code> não existe, ou existe e nenhum lançamento está mais em <code>TO_RELEASE</code>. <strong>A mensagem distingue os dois casos</strong> — leia <code>errors[].message</code>.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token ausente, malformado ou expirado.</td>\n</tr>\n</tbody>\n</table>\n</div><p>A recusa vem como uma lista de mensagens:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\"total\":1,\"errors\":[{\"message\":\"Nenhum registro encontrado com o número do pedido externo informado.\"}]}\n</code></pre>\n<p>Leia o motivo em <code>errors[].message</code>; <code>total</code> é a quantidade de mensagens.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}},"urlObject":{"path":["loyaltyProgram","earnRewardExternal"],"host":["https://ws.autorei.net"],"query":[{"key":"externalOrderId","value":"PED-EXT-900201"}],"variable":[]}},"response":[{"id":"10108902-62a8-4d2a-9b6b-6282c93966b0","name":"Sucesso — cashback liberado","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"documentPartner\": \"30424972000174\",\n  \"status\": \"RELEASED\",\n  \"earning\": 12.34,\n  \"orderDeliveryDate\": \"2026-09-12\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://ws.autorei.net/loyaltyProgram/earnRewardExternal?externalOrderId=PED-EXT-900201","host":["https://ws.autorei.net"],"path":["loyaltyProgram","earnRewardExternal"],"query":[{"key":"externalOrderId","value":"PED-EXT-900201"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"ownerStoreEmail\": \"contato@lojaexemplo.com.br\",\n    \"orderDeliveryDate\": \"2026-09-12T00:00:00-03:00\",\n    \"orderId\": 0,\n    \"partnerOrderId\": 0,\n    \"releaseDate\": \"2026-09-12T00:00:00-03:00\",\n    \"ownerStoreName\": \"lojaexemplo\",\n    \"externalOrderId\": \"PED-EXT-900201\",\n    \"type\": \"CASHBACK\",\n    \"cumulative\": false,\n    \"timeToReleasePoints\": 30,\n    \"timeToExpire\": 90,\n    \"customerRewardId\": \"6cf135ce-46a6-411d-82ad-c9a4e2c0ade1\",\n    \"loyaltyStrategyId\": \"b78d03a7-5186-4d3e-8421-05d45cd3de0e\",\n    \"ownerStoreId\": 4470,\n    \"id\": \"5eab5e68-c57d-4ef3-8d57-2a809be4f810\",\n    \"partnerId\": 4471,\n    \"value\": 6.17,\n    \"skuId\": 500101,\n    \"createDate\": \"2026-09-04T14:15:02.534996Z\",\n    \"status\": \"RELEASED\"\n  },\n  {\n    \"ownerStoreEmail\": \"contato@lojaexemplo.com.br\",\n    \"orderDeliveryDate\": \"2026-09-12T00:00:00-03:00\",\n    \"orderId\": 0,\n    \"partnerOrderId\": 0,\n    \"releaseDate\": \"2026-09-12T00:00:00-03:00\",\n    \"ownerStoreName\": \"lojaexemplo\",\n    \"externalOrderId\": \"PED-EXT-900201\",\n    \"type\": \"CASHBACK\",\n    \"cumulative\": false,\n    \"timeToReleasePoints\": 30,\n    \"timeToExpire\": 90,\n    \"customerRewardId\": \"6cf135ce-46a6-411d-82ad-c9a4e2c0ade1\",\n    \"loyaltyStrategyId\": \"b78d03a7-5186-4d3e-8421-05d45cd3de0e\",\n    \"ownerStoreId\": 4470,\n    \"id\": \"dfc74296-d75d-4dc0-bd90-3a8af69ada33\",\n    \"partnerId\": 4471,\n    \"value\": 6.17,\n    \"skuId\": 500102,\n    \"createDate\": \"2026-09-04T14:15:02.534996Z\",\n    \"status\": \"RELEASED\"\n  }\n]"}],"_postman_id":"f55f4e1b-59b8-4e75-b969-1234d6e59df2"}],"id":"06b0535f-213f-43b3-8371-aa39078e6b81","description":"<p>Endpoints para consulta de saldos e gerenciamento de cashback de clientes.</p>\n","_postman_id":"06b0535f-213f-43b3-8371-aa39078e6b81","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"50f0524e-205e-4b92-a12e-be9686666536","id":"50f0524e-205e-4b92-a12e-be9686666536","name":"API CWS Platform","type":"collection"}}},{"name":"13 - Callbacks e Webhooks","item":[{"name":"Cálculo de Impostos (Síncrono)","item":[{"name":"[DOC] Autenticação (O que sua loja precisa fornecer)","id":"b54be8b3-9ade-48f3-9e12-5e0f656bb275","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"","description":"<h3 id=\"visão-geral-da-autenticação\">Visão Geral da Autenticação</h3>\n<p>Para proteger seu endpoint de cálculo de impostos, a CWS utilizará um token de acesso obtido do seu sistema. Antes de chamar seu endpoint de impostos, faremos uma requisição ao seu endpoint de autenticação para obter um <code>access_token</code>.</p>\n<p>Você deve fornecer à equipe CWS as informações necessárias para que possamos nos autenticar no seu sistema (URL do endpoint de token, credenciais, etc.).</p>\n<p>A resposta do seu endpoint de token deve seguir o padrão OAuth2:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"access_token\": \"SEU_TOKEN_GERADO\",\n    \"expires_in\": 3600\n}\n</code></pre>\n<p>Abaixo estão <strong>três exemplos reais</strong> de como seu endpoint de token pode ser configurado.</p>\n<hr />\n<h3 id=\"exemplo-1-fluxo-client_credentials-com-basic-auth\">Exemplo 1: Fluxo <code>client_credentials</code> com Basic Auth</h3>\n<p><strong>Como funciona:</strong> Suas credenciais (<code>clientId</code> e <code>clientSecret</code>) são combinadas, codificadas em Base64 e enviadas no Header <code>Authorization</code>.</p>\n<p><strong>Requisição que a CWS fará para seu endpoint de token:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-cURL\">curl --location '[https://api.exemplo-cliente.com/oauth/access-token](https://api.exemplo-cliente.com/oauth/access-token)' \\\n--header 'Authorization: Basic [SUAS_CREDENCIAS_EM_BASE64]' \\\n--header 'Content-Type: application/x-www-form-urlencoded' \\\n--data-urlencode 'grant_type=client_credentials'\n</code></pre>\n<hr />\n<h3 id=\"exemplo-2-fluxo-com-clientid-e-clientsecret-no-body\">Exemplo 2: Fluxo com <code>clientId</code> e <code>clientSecret</code> no Body</h3>\n<p><strong>Como funciona:</strong> Suas credenciais são enviadas diretamente no corpo (body) da requisição em formato JSON.</p>\n<p><strong>Requisição que a CWS fará para seu endpoint de token:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-cURL\">curl --location '[https://api.exemplo-cliente.com/v1/token](https://api.exemplo-cliente.com/v1/token)' \\\n--header 'User-Agent: CWS Digital' \\\n--header 'Content-Type: application/json' \\\n--data '{\n    \"clientId\": \"SEU_CLIENT_ID\",\n    \"clientSecret\": \"SEU_CLIENT_SECRET\"\n}'\n</code></pre>\n<hr />\n<h3 id=\"exemplo-3-autenticação-com-token-estático-no-corpo\">Exemplo 3: Autenticação com Token Estático no Corpo</h3>\n<p>Este método mais simples não requer um endpoint de token. Um token fixo (API Key) pré-combinado é enviado diretamente no corpo de cada requisição principal.</p>\n<p><strong>Requisição que a CWS fará para seu endpoint de Cálculo de Impostos:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-cURL\">curl --location '[https://api.exemplo-cliente.com/wscwstax/calcular](https://api.exemplo-cliente.com/wscwstax/calcular)' \\\n--header 'Content-Type: application/json' \\\n--data '{\n    \"cliente\": \"03.558.351/0001-00\",\n    \"itens\": [...],\n    \"token\": \"SEU_TOKEN_ESTATICO_PRE_ACORDADO\",\n    ...\n}'\n</code></pre>\n","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"c008c2bf-50a1-4812-a27e-fcdae3acd470","id":"c008c2bf-50a1-4812-a27e-fcdae3acd470","name":"Cálculo de Impostos (Síncrono)","type":"folder"}},"urlObject":{"query":[],"variable":[]}},"response":[],"_postman_id":"b54be8b3-9ade-48f3-9e12-5e0f656bb275"},{"name":"[EXEMPLO] Requisição de Cálculo de Impostos","id":"00626f1d-0972-4910-9ef2-4e577fcb822b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[{"key":"tenantId","value":"01,04160001"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"cliente\": \"03.558.351/0001-00\",\n    \"empresa\": \"12.377.080/0001-88\",\n    \"finalidade\": 4,\n    \"itens\": [\n        {\n            \"item\": \"123456\",\n            \"partner_part_code\": \"FO0002248281\",\n            \"pre_unit\": \"451.99\",\n            \"qtde\": \"45\"\n        },\n        {\n            \"item\": \"7891011\",\n            \"partner_part_code\": \"FO0002248279\",\n            \"pre_unit\": \"654.99\",\n            \"qtde\": \"5\"\n        }\n    ],\n    \"num_pedido\": \"0\",\n    \"uf\": \"ES\",\n    \"valor_frete\": 0,\n    \"valor_pedido\": 23664.05\n}","options":{"raw":{"language":"json"}}},"url":"https://api.exemplo-cliente.com.br/wscwstax/calcular","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Este é um exemplo completo da requisição que a CWS enviará para o seu endpoint de <strong>Cálculo de Impostos</strong>.</p>\n<h3 id=\"estrutura-da-resposta-esperada\">Estrutura da Resposta Esperada</h3>\n<p>Seu sistema deve retornar uma resposta <code>200 OK</code> com o seguinte corpo:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"empresa\": \"12.377.080/0001-88\",\n    \"num_pedido\": \"0\",\n    \"cliente\": \"03.558.351/0001-00\",\n    \"mensagem\": \"sucesso\",\n    \"status\": \"ok\",\n    \"itens\": [\n        {\n            \"item\": \"123456\",\n            \"st\": \"0.000000\",\n            \"ipi\": \"11.120000\",\n            \"icms\": 0,\n            \"pis\": 0,\n            \"cofins\": 0\n        },\n        {\n            \"item\": \"7891011\",\n            \"st\": \"0.000000\",\n            \"ipi\": \"0.000000\",\n            \"icms\": 0,\n            \"pis\": 0,\n            \"cofins\": 0\n        }\n    ]\n}\n</code></pre>\n","urlObject":{"protocol":"https","path":["wscwstax","calcular"],"host":["api","exemplo-cliente","com","br"],"query":[],"variable":[]}},"response":[],"_postman_id":"00626f1d-0972-4910-9ef2-4e577fcb822b"}],"id":"c008c2bf-50a1-4812-a27e-fcdae3acd470","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"type":"text/javascript","packages":{},"exec":[""]}},{"listen":"test","script":{"type":"text/javascript","packages":{},"exec":[""]}}],"_postman_id":"c008c2bf-50a1-4812-a27e-fcdae3acd470","description":""},{"name":"Webhooks (Assíncrono)","item":[{"name":"[DOC] Autenticação (O que sua loja precisa fornecer)","id":"3921562f-66dc-4af7-bc9b-30e79b8df7cb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"","description":"<h3 id=\"visão-geral-da-autenticação\">Visão Geral da Autenticação</h3>\n<p>Para que a CWS possa enviar notificações de Webhook (Pedidos e Clientes) de forma segura, nosso sistema primeiro se autenticará no seu para obter um token de acesso. </p>\n<p>Você deve nos fornecer os detalhes do seu endpoint de autenticação para que possamos configurá-lo.</p>\n<h3 id=\"estrutura-do-endpoint-de-token-sua-responsabilidade\">Estrutura do Endpoint de Token (Sua Responsabilidade)</h3>\n<p>Você precisará construir um endpoint <code>POST</code> (ex: <code>/token</code>) que, ao receber as credenciais corretas, retorne um token de acesso. A resposta deve seguir o padrão OAuth2:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"access_token\": \"SEU_TOKEN_GERADO\",\n    \"expires_in\": 3600\n}\n</code></pre>\n<p>Abaixo estão <strong>três exemplos reais</strong> de como seu endpoint de token pode ser configurado.</p>\n<hr />\n<h3 id=\"exemplo-1-fluxo-client_credentials-com-basic-auth\">Exemplo 1: Fluxo <code>client_credentials</code> com Basic Auth</h3>\n<p><strong>Como funciona:</strong> Suas credenciais (<code>clientId</code> e <code>clientSecret</code>) são combinadas, codificadas em Base64 e enviadas no Header <code>Authorization</code>.</p>\n<p><strong>Requisição que a CWS fará para seu endpoint de token:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-cURL\">curl --location '[https://api.cliente.com.br/oauth/access-token](https://api.cliente.com.br/oauth/access-token)' \\\n--header 'Authorization: Basic [SUAS_CREDENCIAS_EM_BASE64]' \\\n--header 'Content-Type: application/x-www-form-urlencoded' \\\n--data-urlencode 'grant_type=client_credentials'\n</code></pre>\n<hr />\n<h3 id=\"exemplo-2-fluxo-com-clientid-e-clientsecret-no-body\">Exemplo 2: Fluxo com <code>clientId</code> e <code>clientSecret</code> no Body</h3>\n<p><strong>Como funciona:</strong> Suas credenciais são enviadas diretamente no corpo (body) da requisição em formato JSON.</p>\n<p><strong>Requisição que a CWS fará para seu endpoint de token:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-cURL\">curl --location '[https://api.cliente.com.br/v1/token](https://api.cliente.com.br/v1/token)' \\\n--header 'User-Agent: CWS Digital' \\\n--header 'Content-Type: application/json' \\\n--data '{\n    \"clientId\": \"SEU_CLIENT_ID\",\n    \"clientSecret\": \"SEU_CLIENT_SECRET\"\n}'\n</code></pre>\n<hr />\n<h3 id=\"exemplo-3-fluxo-com-credenciais-em-headers-customizados\">Exemplo 3: Fluxo com Credenciais em Headers Customizados</h3>\n<p><strong>Como funciona:</strong> Um modelo não padrão onde o usuário e a senha são enviados em headers específicos, em vez de usar <code>Authorization</code> ou o corpo da requisição.</p>\n<p><strong>Requisição que a CWS fará para seu endpoint de token:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-cURL\">curl --location --request POST '[https://api.cliente.com.br/rest/api/oauth2/v1/token?grant_type=password](https://api.cliente.com.br/rest/api/oauth2/v1/token?grant_type=password)' \\\n--header 'username: SEU_USUARIO' \\\n--header 'password: SUA_SENHA'\n</code></pre>\n","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"96f7805e-a8e3-4c52-84f4-ae2adf4d183c","id":"96f7805e-a8e3-4c52-84f4-ae2adf4d183c","name":"13 - Callbacks e Webhooks","type":"folder"}},"urlObject":{"query":[],"variable":[]}},"response":[],"_postman_id":"3921562f-66dc-4af7-bc9b-30e79b8df7cb"},{"name":"[EXEMPLO] Payload de Webhook de Pedidos (Simplificado)","id":"86e8ce1d-fc2a-487b-b13e-ba9987f18b2e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"approvalWorkflow\": false,\n    \"dateCreated\": \"2025-04-23T12:17:24Z\",\n    \"id\": 1503066,\n    \"lastUpdated\": \"2025-04-23T12:18:01Z\",\n    \"orderId\": 1457551,\n    \"partnerCompanyName\": \"Nome da Loja Exemplo\",\n    \"partnerDocument\": \"61.234.985/0222-64\",\n    \"status\": \"AWAITING_PAYMENT\",\n    \"workflowIsApproved\": false\n}","options":{"raw":{"language":"json"}}},"url":"https://api.exemplo-cliente.com.br/webhook/pedido","description":"<p>Este é um exemplo de payload para o <strong>Webhook de Pedidos</strong> na versão <strong>simplificada</strong>. Sua loja recebe esta notificação e pode usar o <code>id</code> para buscar os detalhes completos na API da CWS.</p>\n","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"96f7805e-a8e3-4c52-84f4-ae2adf4d183c","id":"96f7805e-a8e3-4c52-84f4-ae2adf4d183c","name":"13 - Callbacks e Webhooks","type":"folder"}},"urlObject":{"protocol":"https","path":["webhook","pedido"],"host":["api","exemplo-cliente","com","br"],"query":[],"variable":[]}},"response":[],"_postman_id":"86e8ce1d-fc2a-487b-b13e-ba9987f18b2e"},{"name":"[EXEMPLO] Payload de Webhook de Pedidos (Completo)","id":"1c8d3a7c-31b2-4b45-a276-47d3f8f58184","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"id\": 505676,\n    \"status\": \"CANCELED\",\n    \"subTotal\": \"R$90.07\",\n    \"total\": \"R$90.07\",\n    \"dateCreated\": \"2024-04-08 13:33:27.0\",\n    \"lastUpdated\": \"2024-04-08 13:35:42.0\",\n    \"customer\": {\n        \"id\": 1637173,\n        \"name\": \"usuario teste CWS\",\n        \"email\": \"usuarioteste@cws.digital\",\n        \"phone\": \"(11) 98988-8888\",\n        \"type\": \"pf\",\n        \"document\": \"720.953.820-80\"\n    },\n    \"seller\": {\n        \"id\": 6255,\n        \"name\": \"Filial 1 Loja Exemplo Teste\",\n        \"document\": \"78.861.562/0001-17\"\n    },\n    \"deliveries\": [\n        {\n            \"freight\": {\n                \"name\": \"Retirada na Loja\",\n                \"total\": \"R$0.00\",\n                \"type\": \"PICKUP_IN_STORE\"\n            },\n            \"products\": [\n                {\n                    \"id\": 10204964,\n                    \"name\": \"Perfil Alumínio Puxador M02 Azul Petróleo 18mm\",\n                    \"mfrPartCode\": \"LM-9551034002\",\n                    \"quantity\": 1,\n                    \"price\": 97.9,\n                    \"partnerPartCode\": \"5090805\",\n                    \"brand\": {\n                        \"id\": 40329,\n                        \"name\": \"Leo\"\n                    }\n                }\n            ]\n        }\n    ],\n    \"payments\": [\n        {\n            \"id\": 305665,\n            \"gateway\": \"BRASPAG\",\n            \"paymentInstallments\": 1,\n            \"paymentInstallmentsValue\": \"R$90.07\"\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.exemplo-cliente.com.br/webhook/pedido-completo","description":"<p>Este é um exemplo de payload para o <strong>Webhook de Pedidos</strong> na versão <strong>completa</strong>, contendo todos os detalhes da transação.</p>\n","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"96f7805e-a8e3-4c52-84f4-ae2adf4d183c","id":"96f7805e-a8e3-4c52-84f4-ae2adf4d183c","name":"13 - Callbacks e Webhooks","type":"folder"}},"urlObject":{"protocol":"https","path":["webhook","pedido-completo"],"host":["api","exemplo-cliente","com","br"],"query":[],"variable":[]}},"response":[],"_postman_id":"1c8d3a7c-31b2-4b45-a276-47d3f8f58184"},{"name":"[EXEMPLO] Payload de Webhook de Clientes","id":"dbee5f5b-5bcf-4ff2-8b1c-56441773d0ce","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"id\": 547322,\n    \"document\": \"29.701.244/0001-83\",\n    \"name\": \"TEste meu S/A\",\n    \"tradingName\": \"abacate 8\",\n    \"contactName\": \"John Doe\",\n    \"documentType\": \"pj\",\n    \"dateCreated\": \"2023-01-25T19:59:58Z\",\n    \"email\": \"vrpvip@gmail.com\",\n    \"phone\": \"(11) 99999-9990\",\n    \"address\": [\n        {\n            \"id\": 1060461,\n            \"name\": \"Endereço de cadastro\",\n            \"street\": \"Rua Eugênio Lorenzetti\",\n            \"number\": \"111\",\n            \"complement\": \"teste\",\n            \"quarter\": \"Jardim Íris\",\n            \"city\": \"São Paulo\",\n            \"state\": \"SP\",\n            \"zipcode\": \"05144-000\",\n            \"principal\": true\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.exemplo-cliente.com.br/webhook/clientes","description":"<p>Este é um exemplo de payload para o <strong>Webhook de Clientes</strong>, enviado quando um cliente é criado ou atualizado na plataforma CWS.</p>\n","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"96f7805e-a8e3-4c52-84f4-ae2adf4d183c","id":"96f7805e-a8e3-4c52-84f4-ae2adf4d183c","name":"13 - Callbacks e Webhooks","type":"folder"}},"urlObject":{"protocol":"https","path":["webhook","clientes"],"host":["api","exemplo-cliente","com","br"],"query":[],"variable":[]}},"response":[],"_postman_id":"dbee5f5b-5bcf-4ff2-8b1c-56441773d0ce"}],"id":"81c3aaeb-ea2a-416e-9f5c-f5a845a36ec7","description":"<p>Esta pasta contém exemplos práticos de requisições que a CWS envia para o sistema do cliente. Eles servem como modelo para a construção dos seus endpoints de Webhooks.</p>\n","_postman_id":"81c3aaeb-ea2a-416e-9f5c-f5a845a36ec7","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"96f7805e-a8e3-4c52-84f4-ae2adf4d183c","id":"96f7805e-a8e3-4c52-84f4-ae2adf4d183c","name":"13 - Callbacks e Webhooks","type":"folder"}}}],"id":"96f7805e-a8e3-4c52-84f4-ae2adf4d183c","description":"<h3 id=\"descrição\">Descrição</h3>\n<p>Esta seção documenta as integrações onde a plataforma CWS inicia a comunicação e envia dados para o sistema da sua loja. Diferente das outras seções desta coleção, aqui descrevemos os endpoints que <strong>você precisará construir</strong> para receber nossas chamadas.</p>\n<p>Existem dois tipos de comunicação iniciada pela CWS:</p>\n<ul>\n<li><p><strong>Síncronas (Callbacks):</strong> A CWS faz uma chamada e aguarda uma resposta imediata para continuar um processo. Ex: Cálculo de Impostos.</p>\n</li>\n<li><p><strong>Assíncronas (Webhooks):</strong> A CWS envia uma notificação sobre um evento ocorrido e não aguarda uma resposta para continuar seus processos. Ex: Notificação de novos pedidos e clientes.</p>\n</li>\n</ul>\n","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"type":"text/javascript","packages":{},"exec":[""]}},{"listen":"test","script":{"type":"text/javascript","packages":{},"exec":[""]}}],"_postman_id":"96f7805e-a8e3-4c52-84f4-ae2adf4d183c"}],"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]}},"event":[{"listen":"prerequest","script":{"type":"text/javascript","requests":{},"exec":[""]}},{"listen":"test","script":{"type":"text/javascript","requests":{},"exec":[""]}}],"variable":[{"key":"url","value":"https://ws.autorei.net","type":"string"},{"key":"access_token","value":"","type":"string"},{"key":"refresh_token","value":"","type":"string"}]}