{"info":{"_postman_id":"f25a7e0d-6789-428b-a83e-b22a7b151a2b","name":"API do Navitrine","description":"<html><head></head><body><p>A API do Navitrine deixa o sistema da sua loja conversar com a vitrine: publicar o\ncatálogo, manter preço e disponibilidade em dia e receber os pedidos que os clientes\nfizerem.</p>\n<p>Ela é feita para ser usada por quem já tem um sistema — ERP, PDV, cardápio digital —\ne quer que ele seja a fonte do que aparece na vitrine.</p>\n<h2 id=\"primeiros-passos\">Primeiros passos</h2>\n<ol>\n<li>O lojista gera um <strong>token de acesso</strong> no painel do Navitrine, em\n<em>Configurações → Integrações → API</em>, e escolhe o que ele pode fazer (os escopos).</li>\n<li>Guarde o token: ele aparece <strong>uma única vez</strong>. Se perder, gere outro — o antigo\ncontinua valendo até ser revogado.</li>\n<li>Confirme que está tudo certo chamando <code>GET /me</code>. A resposta diz de qual loja é o\ntoken e o que ele pode fazer.</li>\n</ol>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">curl https://api.navitrine.app/api/v1/me \\\n  -H \"Authorization: Bearer \"\n</code></pre>\n<h2 id=\"comece-por-aqui-conta-de-desenvolvedor\">Comece por aqui: conta de desenvolvedor</h2>\n<p>Você não precisa de um lojista para começar. Crie sua conta e saia com a credencial:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">curl -X POST https://api.navitrine.app/api/v1/dev/registrar \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"nome\":\"ERP da Silva\",\"email\":\"dev@erpdasilva.com.br\",\"password\":\"uma-senha-boa-2026\"}'\n</code></pre>\n<p>A resposta traz uma credencial <code>nvt_test_</code> e uma <strong>loja de testes</strong>: uma loja de\nmentira que não aparece na vitrine, não é cobrada e não avisa lojista nenhum. É onde\nvocê erra à vontade — sobe catálogo torto, apaga tudo, simula pedido.</p>\n<p>Nela existem duas rotas que não existem em produção: <code>POST /sandbox/pedidos</code>, que\nsimula um pedido e dispara o webhook (em produção, o pedido só nasce de um cliente\ncomprando), e <code>POST /sandbox/limpar</code>, para recomeçar do zero.</p>\n<p>Quando um lojista contratar você, ele gera no painel dele uma credencial <code>nvt_live_</code>\nda loja real. <strong>Uma não vale no lugar da outra</strong>: chave de teste apontando para a loja\nque vende é recusada, e o contrário também. É o que impede o acidente de subir\ncatálogo de homologação em quem está vendendo.</p>\n<h2 id=\"autenticação\">Autenticação</h2>\n<p>Todas as chamadas levam o token no cabeçalho:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>Authorization: Bearer \n</code></pre><p><strong>O token já diz de qual loja se trata</strong> — nenhuma rota pede o id da loja. Isso\ntambém significa que um token nunca alcança o catálogo ou os pedidos de outra loja.</p>\n<p>Cada token carrega escopos, e a rota recusa (403) o que estiver fora deles:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Escopo</th>\n<th>Permite</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>catalogo:ler</code></td>\n<td>ler categorias e itens</td>\n</tr>\n<tr>\n<td><code>catalogo:escrever</code></td>\n<td>criar, editar e remover categorias e itens</td>\n</tr>\n<tr>\n<td><code>pedidos:ler</code></td>\n<td>listar e consultar pedidos</td>\n</tr>\n<tr>\n<td><code>webhooks:gerenciar</code></td>\n<td>configurar para onde os eventos são enviados</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"como-manter-o-catálogo-em-dia\">Como manter o catálogo em dia</h2>\n<p>Há dois caminhos, e o segundo é o recomendado para quem tem sistema próprio:</p>\n<ul>\n<li><strong>Item a item</strong> — <code>POST /itens</code>, <code>PATCH /itens/{id}</code>, <code>DELETE /itens/{id}</code>. Bom para\nalterações pontuais feitas por uma tela.</li>\n<li><strong>Em lote, pela sua referência</strong> — <code>POST /itens/lote</code> envia até 500 itens de uma vez,\nidentificados por <code>referencia_externa</code> (o código do item no <em>seu</em> sistema). O que não\nexiste é criado, o que existe é atualizado, e você nunca precisa guardar o id do\nNavitrine. É assim que uma carga de catálogo inteira roda todo dia sem virar 500\nchamadas.</li>\n</ul>\n<p>Para sincronizar só o que mudou, use <code>atualizado_desde</code> na listagem:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>GET /itens?atualizado_desde=2026-08-21T03:00:00Z&amp;perPage=100\n</code></pre><h2 id=\"pedidos\">Pedidos</h2>\n<p>O cliente fecha o pedido na vitrine e ele fica disponível aqui. Você recebe de duas\nformas, que podem conviver:</p>\n<ul>\n<li><strong>Consultando</strong> (<code>GET /pedidos?desde=...</code>) de tempos em tempos — simples e suficiente\npara a maioria.</li>\n<li><strong>Recebendo o evento</strong> no seu endereço, configurado em <code>PUT /webhooks</code>. Chega mais\nrápido e evita consulta em vão.</li>\n</ul>\n<p>Todo pedido tem <code>numero</code> (sequencial por loja, o que o lojista enxerga) além do <code>id</code>.</p>\n<h2 id=\"webhooks\">Webhooks</h2>\n<p>Configurado o endereço, o Navitrine envia <code>POST</code> com o evento no corpo e assina a\nrequisição:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>X-Navitrine-Event: pedido.criado\nX-Navitrine-Delivery: 018f3c1e-...\nX-Navitrine-Signature: sha256=3a7bd3e2360a...\n</code></pre><p>A assinatura é o HMAC-SHA256 do <strong>corpo cru</strong> com o seu segredo. Compare com o que\nvocê calcular, em comparação de tempo constante — sem isso qualquer um pode fingir\nser o Navitrine.</p>\n<p>Responda <strong>2xx em até 10 segundos</strong>. Qualquer outra coisa (ou demora) vira nova\ntentativa: 1min, 5min, 30min, 2h e 6h depois. O mesmo evento pode chegar duas vezes —\nuse o <code>X-Navitrine-Delivery</code> para ignorar repetido.</p>\n<h2 id=\"paginação\">Paginação</h2>\n<p>As listagens devolvem sempre o mesmo envelope:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{ \"data\": [], \"page\": 1, \"perPage\": 50, \"total\": 137 }\n</code></pre>\n<p><code>page</code> começa em 1 e <code>perPage</code> vai até 200.</p>\n<h2 id=\"escrita-sem-duplicar\">Escrita sem duplicar</h2>\n<p>Em <code>POST</code>, mande <code>Idempotency-Key</code> com um valor único seu (um uuid serve). Repetindo a\nchamada com a mesma chave em até 24h, a resposta é a da primeira — é o que salva a\nintegração quando a conexão cai depois de o pedido já ter sido criado.</p>\n<h2 id=\"limites-de-uso\">Limites de uso</h2>\n<p>120 requisições por minuto por token, e <code>POST /itens/lote</code> conta como uma. Toda\nresposta traz <code>RateLimit-Limit</code>, <code>RateLimit-Remaining</code> e <code>RateLimit-Reset</code>; ao estourar,\na resposta é <strong>429</strong> com <code>Retry-After</code>.</p>\n<h2 id=\"formatos\">Formatos</h2>\n<ul>\n<li>Datas em ISO 8601, UTC (<code>2026-08-21T14:32:00.000Z</code>).</li>\n<li>Dinheiro em <strong>string</strong> com duas casas (<code>\"49.90\"</code>) — converter para float antes de\nsomar é como se perde centavo.</li>\n<li>Campos de texto vazios chegam como <code>null</code>, não como <code>\"\"</code>.</li>\n</ul>\n<h2 id=\"erros\">Erros</h2>\n<p>Toda falha responde com o mesmo corpo:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"statusCode\": 400,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Categoria não pertence a esta loja\",\n  \"errors\": { \"categoria_id\": [\"Categoria não encontrada\"] }\n}\n</code></pre>\n<p>A <code>message</code> é em pt-BR e pode ser mostrada a quem opera o seu sistema. <code>errors</code> só\naparece quando a falha é de validação, com o motivo por campo.</p>\n<p><strong>Decida pelo <code>statusCode</code>, nunca pelo texto da <code>message</code>.</strong> O texto melhora com o\ntempo — a mensagem que você casar com uma expressão regular hoje muda amanhã sem\nque isso seja uma quebra de contrato.</p>\n<h3 id=\"o-que-cada-código-significa\">O que cada código significa</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>O que aconteceu</th>\n<th>O que fazer</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>400</strong></td>\n<td>Corpo ou parâmetro inválido. <code>errors</code> traz o motivo por campo.</td>\n<td>Corrigir e reenviar. Repetir igual dá o mesmo erro.</td>\n</tr>\n<tr>\n<td><strong>401</strong></td>\n<td>Token ausente, inválido, revogado, ou da loja que foi excluída.</td>\n<td>Conferir o cabeçalho; se persistir, gerar outra credencial.</td>\n</tr>\n<tr>\n<td><strong>403</strong></td>\n<td>Token válido, mas barrado: falta o escopo, a loja está sem assinatura paga, o plano estourou o limite de itens, ou a rota é só de sandbox.</td>\n<td>A <code>message</code> diz qual dos casos. Nenhum se resolve repetindo.</td>\n</tr>\n<tr>\n<td><strong>404</strong></td>\n<td>O recurso não existe <strong>ou não é desta loja</strong> — os dois respondem igual, de propósito: distinguir contaria a você o que existe na loja dos outros.</td>\n<td>Conferir o id.</td>\n</tr>\n<tr>\n<td><strong>409</strong></td>\n<td>Conflito com o que já existe: seção com o mesmo nome, item com a mesma <code>referencia_externa</code>, e-mail já cadastrado, ou <code>Idempotency-Key</code> repetida com corpo diferente.</td>\n<td>Ler a <code>message</code>: cada caso pede uma correção diferente.</td>\n</tr>\n<tr>\n<td><strong>429</strong></td>\n<td>Passou de 120 requisições no minuto.</td>\n<td>Esperar os segundos de <code>Retry-After</code> e repetir.</td>\n</tr>\n<tr>\n<td><strong>5xx</strong></td>\n<td>Falha nossa.</td>\n<td>Repetir com espera crescente. Se insistir, falar com o suporte com o <code>timestamp</code> da resposta.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Erro de rede ou 5xx num <code>POST</code> é o caso em que a <code>Idempotency-Key</code> paga sozinha o\ntrabalho de gerá-la: repetir com a mesma chave não cria nada duas vezes.</p>\n<h2 id=\"limites-de-tamanho\">Limites de tamanho</h2>\n<p>O que a API recusa com <strong>400</strong> antes de tocar no banco:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Onde</th>\n<th>Campo</th>\n<th>Limite</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Item</td>\n<td><code>nome</code></td>\n<td>1 a 200 caracteres</td>\n</tr>\n<tr>\n<td>Item</td>\n<td><code>descricao</code></td>\n<td>até 2000 caracteres</td>\n</tr>\n<tr>\n<td>Item</td>\n<td><code>referencia_externa</code></td>\n<td>1 a 120 caracteres</td>\n</tr>\n<tr>\n<td>Item</td>\n<td><code>preco</code>, <code>preco_promocional</code></td>\n<td>decimal com até 2 casas, como <code>\"49.90\"</code></td>\n</tr>\n<tr>\n<td>Item</td>\n<td><code>foto_url</code></td>\n<td>URL válida</td>\n</tr>\n<tr>\n<td>Seção</td>\n<td><code>nome</code></td>\n<td>1 a 120 caracteres</td>\n</tr>\n<tr>\n<td>Seção</td>\n<td><code>ordem</code></td>\n<td>inteiro ≥ 0</td>\n</tr>\n<tr>\n<td>Carga em lote</td>\n<td><code>itens</code></td>\n<td>1 a 500 por chamada</td>\n</tr>\n<tr>\n<td>Listagens</td>\n<td><code>perPage</code></td>\n<td>1 a 200 (padrão 50)</td>\n</tr>\n<tr>\n<td>Listagens</td>\n<td><code>page</code></td>\n<td>inteiro ≥ 1</td>\n</tr>\n<tr>\n<td>Horário</td>\n<td><code>dia_semana</code></td>\n<td>0 (domingo) a 6 (sábado)</td>\n</tr>\n<tr>\n<td>Horário</td>\n<td><code>abre</code>, <code>fecha</code></td>\n<td><code>HH:MM</code>, e <code>fecha</code> depois de <code>abre</code></td>\n</tr>\n<tr>\n<td>Webhook</td>\n<td><code>url</code></td>\n<td>URL <strong>https</strong></td>\n</tr>\n<tr>\n<td>Sandbox</td>\n<td><code>observacoes</code></td>\n<td>até 500 caracteres</td>\n</tr>\n</tbody>\n</table>\n</div><p>Texto é aparado nas pontas antes de medir, então espaço sobrando não derruba a\nchamada.</p>\n<h2 id=\"versionamento-e-depreciação\">Versionamento e depreciação</h2>\n<p>A versão está no caminho: <strong><code>/api/v1</code></strong>. Enquanto for <code>v1</code>, o que está documentado\naqui continua funcionando como está descrito.</p>\n<ul>\n<li><strong>Mudança que quebra integração ganha caminho novo</strong> (<code>/api/v2</code>). Nunca trocamos o\ncomportamento de uma rota <code>v1</code> por baixo de quem já a usa.</li>\n<li>Quando existir uma <code>v2</code>, a <code>v1</code> fica de pé por <strong>no mínimo 6 meses</strong> depois do\nanúncio, e avisamos por e-mail no endereço da conta de desenvolvedor.</li>\n<li>Campo em vias de sair é marcado com <code>deprecated: true</code> neste contrato <strong>antes</strong> de\nparar de existir, e continua sendo devolvido enquanto a versão viver.</li>\n</ul>\n<h2 id=\"o-que-pode-mudar-sem-aviso\">O que pode mudar sem aviso</h2>\n<p>Estas mudanças <strong>não</strong> são consideradas quebra, e sua integração precisa aguentá-las:</p>\n<ul>\n<li><strong>Campo novo numa resposta.</strong> Ignore o que não conhece; não recuse a resposta por\ncausa de campo que não esperava.</li>\n<li><strong>Campo opcional novo num corpo de requisição.</strong> O que você já manda continua valendo.</li>\n<li><strong>Valor novo num campo de lista fechada</strong> (<code>forma_pagamento</code>, <code>situacao</code> da entrega).\nTrate valor desconhecido com um caminho padrão, em vez de estourar.</li>\n<li><strong>Texto de <code>message</code> e de <code>errors</code>.</strong> Melhoram sem aviso — case pelo <code>statusCode</code>.</li>\n<li><strong>Ordem dos itens</strong> em listagem sem ordenação documentada.</li>\n</ul>\n<p>E o contrário, que <strong>é</strong> quebra e portanto só acontece numa versão nova: remover\ncampo, mudar tipo de campo, tornar obrigatório o que era opcional, mudar o\nsignificado de um código de status.</p>\n<p>Campo desconhecido que você mandar no corpo é <strong>ignorado</strong>, não recusado — o que\nfacilita a vida de quem manda o mesmo objeto para vários destinos.</p>\n<p>Contact Support:\n Name: Suporte Navitrine</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"56898986","collectionId":"f25a7e0d-6789-428b-a83e-b22a7b151a2b","publishedId":"2sBYArVss6","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"0138C6"},"publishDate":"2026-08-22T10:40:13.000Z"},"item":[{"name":"Conta","item":[{"name":"De qual loja é este token, e o que ele pode fazer.","id":"3b36da53-3c49-4398-91bb-38eaa0afd5f8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://api.navitrine.app/api/v1/me","description":"<p>Primeira chamada de qualquer integração: confirma que a credencial funciona e diz\ncom qual loja você está falando. Não consome escopo nenhum — qualquer token válido\nresponde.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"f25a7e0d-6789-428b-a83e-b22a7b151a2b","id":"f25a7e0d-6789-428b-a83e-b22a7b151a2b","name":"API do Navitrine","type":"collection"}},"urlObject":{"path":["me"],"host":["https://api.navitrine.app/api/v1"],"query":[],"variable":[]}},"response":[{"id":"a96a6dd1-0aad-41ff-86cd-eafc686fe311","name":"Credencial válida.","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":"https://api.navitrine.app/api/v1/me"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"loja\": {\n    \"id\": \"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30\",\n    \"nome\": \"Farmácia Conviva\",\n    \"slug\": \"farmacia-conviva\",\n    \"teste\": false\n  },\n  \"escopos\": [\n    \"catalogo:ler\",\n    \"catalogo:escrever\",\n    \"pedidos:ler\",\n    \"webhooks:gerenciar\"\n  ],\n  \"criado_em\": \"2026-08-01T12:00:00.000Z\",\n  \"ultimo_uso_em\": \"2026-08-21T14:30:00.000Z\"\n}"},{"id":"7e0e52b7-4e5c-4a21-83e8-c1d17074bf46","name":"Token ausente, inválido ou revogado.","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":"https://api.navitrine.app/api/v1/me"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 401,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Token de acesso inválido\"\n}"},{"id":"e4ce5ab8-2ad1-4923-b260-e1b869f81cb5","name":"Requisições demais. Tente de novo depois de `Retry-After` segundos.","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":"https://api.navitrine.app/api/v1/me"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"disabled":true,"description":"Segundos até poder tentar de novo.","key":"Retry-After","value":"30"},{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 429,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Limite de 120 requisições por minuto excedido. Tente de novo em 38s.\"\n}"}],"_postman_id":"3b36da53-3c49-4398-91bb-38eaa0afd5f8"}],"id":"934b40df-2a53-44f5-b7e7-63ac72308720","description":"<p>De quem é o token e o que ele pode fazer.</p>\n","_postman_id":"934b40df-2a53-44f5-b7e7-63ac72308720","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"f25a7e0d-6789-428b-a83e-b22a7b151a2b","id":"f25a7e0d-6789-428b-a83e-b22a7b151a2b","name":"API do Navitrine","type":"collection"}}},{"name":"Loja","item":[{"name":"Dados da loja na vitrine.","id":"df3c4898-dc5a-48ad-8100-12ceab718b45","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://api.navitrine.app/api/v1/loja","description":"<p>Como a loja aparece para o cliente: nome, endereço, contato e se está publicada.\n<code>publicada: false</code> significa que a vitrine não exibe a loja no momento — catálogo\nenviado continua guardado, mas ninguém o vê.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"f25a7e0d-6789-428b-a83e-b22a7b151a2b","id":"f25a7e0d-6789-428b-a83e-b22a7b151a2b","name":"API do Navitrine","type":"collection"}},"urlObject":{"path":["loja"],"host":["https://api.navitrine.app/api/v1"],"query":[],"variable":[]}},"response":[{"id":"2005a1de-7ed9-4dfb-b5bf-090db2a1e8bd","name":"Dados da loja.","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":"https://api.navitrine.app/api/v1/loja"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": \"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30\",\n  \"nome\": \"Farmácia Conviva\",\n  \"slug\": \"farmacia-conviva\",\n  \"tipo\": \"loja\",\n  \"descricao\": \"Medicamentos e perfumaria.\",\n  \"logo_url\": \"https://cdn.navitrine.app/imagens/conviva-logo.webp\",\n  \"whatsapp\": \"82999998888\",\n  \"endereco\": {\n    \"logradouro\": \"Rua do Comércio\",\n    \"numero\": \"150\",\n    \"bairro\": \"Centro\",\n    \"cidade\": \"Arapiraca\",\n    \"estado\": \"AL\",\n    \"cep\": \"57300000\"\n  },\n  \"publicada\": true,\n  \"url_vitrine\": \"https://navitrine.app/farmacia-conviva\"\n}"},{"id":"db6206bb-1d8e-4296-9567-0b3f591efaec","name":"Token ausente, inválido ou revogado.","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":"https://api.navitrine.app/api/v1/loja"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 401,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Token de acesso inválido\"\n}"},{"id":"00da5e67-fbfd-49ab-9cd7-455364a7e1a9","name":"Requisições demais. Tente de novo depois de `Retry-After` segundos.","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":"https://api.navitrine.app/api/v1/loja"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"disabled":true,"description":"Segundos até poder tentar de novo.","key":"Retry-After","value":"30"},{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 429,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Limite de 120 requisições por minuto excedido. Tente de novo em 38s.\"\n}"}],"_postman_id":"df3c4898-dc5a-48ad-8100-12ceab718b45"},{"name":"Horário de funcionamento da loja.","id":"efe00ea3-aedb-4fca-9a36-1da373b72cdd","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://api.navitrine.app/api/v1/loja/horarios","description":"<p>É o que decide se a vitrine mostra a loja como aberta agora. Cada faixa é um\nperíodo de um dia; um dia com almoço fechado tem duas faixas.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"f25a7e0d-6789-428b-a83e-b22a7b151a2b","id":"f25a7e0d-6789-428b-a83e-b22a7b151a2b","name":"API do Navitrine","type":"collection"}},"urlObject":{"path":["loja","horarios"],"host":["https://api.navitrine.app/api/v1"],"query":[],"variable":[]}},"response":[{"id":"e5aaae6c-ccc1-412c-9483-816afdaaceb9","name":"Faixas de funcionamento.","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":"https://api.navitrine.app/api/v1/loja/horarios"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"dia_semana\": 1,\n    \"abre\": \"08:00\",\n    \"fecha\": \"12:00\"\n  },\n  {\n    \"dia_semana\": 1,\n    \"abre\": \"13:30\",\n    \"fecha\": \"18:00\"\n  },\n  {\n    \"dia_semana\": 6,\n    \"abre\": \"08:00\",\n    \"fecha\": \"12:00\"\n  }\n]"},{"id":"1e1257d3-d834-4434-b5b8-01e13a6a18c6","name":"Token ausente, inválido ou revogado.","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":"https://api.navitrine.app/api/v1/loja/horarios"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 401,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Token de acesso inválido\"\n}"},{"id":"47d4f703-f0cd-419e-8602-bb2b9bbcee1c","name":"Requisições demais. Tente de novo depois de `Retry-After` segundos.","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":"https://api.navitrine.app/api/v1/loja/horarios"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"disabled":true,"description":"Segundos até poder tentar de novo.","key":"Retry-After","value":"30"},{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 429,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Limite de 120 requisições por minuto excedido. Tente de novo em 38s.\"\n}"}],"_postman_id":"efe00ea3-aedb-4fca-9a36-1da373b72cdd"},{"name":"Substitui o horário de funcionamento.","id":"aa53f9c9-01f6-4192-b316-59d612c4a14a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{bearerToken}}"}]},"isInherited":false},"method":"PUT","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"horarios\": [\n    {\n      \"dia_semana\": 1,\n      \"abre\": \"08:00\",\n      \"fecha\": \"12:00\"\n    },\n    {\n      \"dia_semana\": 1,\n      \"abre\": \"13:30\",\n      \"fecha\": \"18:00\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/loja/horarios","description":"<p>Substituição total: o que você enviar passa a ser o horário da loja, e o que ficou\nde fora deixa de valer. Enviar lista vazia deixa a loja sem horário — ela aparece\ncomo fechada.</p>\n","urlObject":{"path":["loja","horarios"],"host":["https://api.navitrine.app/api/v1"],"query":[],"variable":[]}},"response":[{"id":"57ce563f-5b1f-4516-be0a-ac354aed80e1","name":"Horário atualizado.","originalRequest":{"method":"PUT","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"horarios\": [\n    {\n      \"dia_semana\": 1,\n      \"abre\": \"08:00\",\n      \"fecha\": \"12:00\"\n    },\n    {\n      \"dia_semana\": 1,\n      \"abre\": \"13:30\",\n      \"fecha\": \"18:00\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/loja/horarios"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"dia_semana\": 1,\n    \"abre\": \"08:00\",\n    \"fecha\": \"12:00\"\n  },\n  {\n    \"dia_semana\": 1,\n    \"abre\": \"13:30\",\n    \"fecha\": \"18:00\"\n  },\n  {\n    \"dia_semana\": 6,\n    \"abre\": \"08:00\",\n    \"fecha\": \"12:00\"\n  }\n]"},{"id":"522ce5b4-d07f-4b8a-82cd-659065c12eb1","name":"Corpo ou parâmetro inválido — `errors` diz o motivo por campo.","originalRequest":{"method":"PUT","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"horarios\": [\n    {\n      \"dia_semana\": 1,\n      \"abre\": \"08:00\",\n      \"fecha\": \"12:00\"\n    },\n    {\n      \"dia_semana\": 1,\n      \"abre\": \"13:30\",\n      \"fecha\": \"18:00\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/loja/horarios"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 400,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"O preço deve ser um valor decimal\",\n  \"errors\": {\n    \"preco\": [\n      \"O preço deve ser um valor decimal\"\n    ]\n  }\n}"},{"id":"fea9398f-77df-4faa-b868-6bcb7198f869","name":"Token ausente, inválido ou revogado.","originalRequest":{"method":"PUT","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"horarios\": [\n    {\n      \"dia_semana\": 1,\n      \"abre\": \"08:00\",\n      \"fecha\": \"12:00\"\n    },\n    {\n      \"dia_semana\": 1,\n      \"abre\": \"13:30\",\n      \"fecha\": \"18:00\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/loja/horarios"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 401,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Token de acesso inválido\"\n}"},{"id":"7c43efd5-20e1-48d9-96b7-75722730d941","name":"O token é válido, mas não tem o escopo exigido pela rota.","originalRequest":{"method":"PUT","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"horarios\": [\n    {\n      \"dia_semana\": 1,\n      \"abre\": \"08:00\",\n      \"fecha\": \"12:00\"\n    },\n    {\n      \"dia_semana\": 1,\n      \"abre\": \"13:30\",\n      \"fecha\": \"18:00\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/loja/horarios"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 403,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Este token não tem o escopo catalogo:escrever\"\n}"},{"id":"5edef3a9-472a-4ce8-961d-eb949780a4fd","name":"Requisições demais. Tente de novo depois de `Retry-After` segundos.","originalRequest":{"method":"PUT","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"horarios\": [\n    {\n      \"dia_semana\": 1,\n      \"abre\": \"08:00\",\n      \"fecha\": \"12:00\"\n    },\n    {\n      \"dia_semana\": 1,\n      \"abre\": \"13:30\",\n      \"fecha\": \"18:00\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/loja/horarios"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"disabled":true,"description":"Segundos até poder tentar de novo.","key":"Retry-After","value":"30"},{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 429,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Limite de 120 requisições por minuto excedido. Tente de novo em 38s.\"\n}"}],"_postman_id":"aa53f9c9-01f6-4192-b316-59d612c4a14a"}],"id":"ea9d6767-c2dc-4a99-884d-dc8e2327d092","description":"<p>Cadastro e horário de funcionamento da loja na vitrine.</p>\n","_postman_id":"ea9d6767-c2dc-4a99-884d-dc8e2327d092","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"f25a7e0d-6789-428b-a83e-b22a7b151a2b","id":"f25a7e0d-6789-428b-a83e-b22a7b151a2b","name":"API do Navitrine","type":"collection"}}},{"name":"Catálogo","item":[{"name":"Seções do catálogo da loja.","id":"08e43721-80db-4d0d-bb3b-b2037abe0629","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{bearerToken}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://api.navitrine.app/api/v1/categorias","description":"<p>As divisões que organizam o catálogo na vitrine (\"Bebidas\", \"Higiene\"). São da\nloja, e não as categorias do marketplace — estas o Navitrine administra.</p>\n","urlObject":{"path":["categorias"],"host":["https://api.navitrine.app/api/v1"],"query":[{"disabled":true,"description":{"content":"<p>Página, começando em 1.</p>\n","type":"text/plain"},"key":"page","value":"1"},{"disabled":true,"description":{"content":"<p>Itens por página (máximo 200).</p>\n","type":"text/plain"},"key":"perPage","value":"50"}],"variable":[]}},"response":[{"id":"13865688-ebc1-41e9-afe1-c2363c242cc7","name":"Seções da loja.","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":{"raw":"https://api.navitrine.app/api/v1/categorias?page=1&perPage=50","host":["https://api.navitrine.app/api/v1"],"path":["categorias"],"query":[{"key":"page","value":"1"},{"key":"perPage","value":"50"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": [\n    {\n      \"id\": \"1b2c3d4e-5f60-4a7b-8c9d-0e1f2a3b4c5d\",\n      \"nome\": \"Medicamentos\",\n      \"ordem\": 1,\n      \"ativa\": true,\n      \"total_itens\": 128,\n      \"criado_em\": \"2026-08-01T12:00:00.000Z\"\n    },\n    {\n      \"id\": \"2c3d4e5f-6071-4b8c-9dae-1f2a3b4c5d6e\",\n      \"nome\": \"Higiene e beleza\",\n      \"ordem\": 2,\n      \"ativa\": true,\n      \"total_itens\": 76,\n      \"criado_em\": \"2026-08-01T12:04:00.000Z\"\n    }\n  ],\n  \"page\": 1,\n  \"perPage\": 50,\n  \"total\": 2\n}"},{"id":"abf65353-e124-41c5-9ac5-3d8c50acf15b","name":"Token ausente, inválido ou revogado.","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":{"raw":"https://api.navitrine.app/api/v1/categorias?page=1&perPage=50","host":["https://api.navitrine.app/api/v1"],"path":["categorias"],"query":[{"key":"page","value":"1"},{"key":"perPage","value":"50"}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 401,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Token de acesso inválido\"\n}"},{"id":"b148a659-33c8-4bd3-9bac-a8667b857a3e","name":"O token é válido, mas não tem o escopo exigido pela rota.","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":{"raw":"https://api.navitrine.app/api/v1/categorias?page=1&perPage=50","host":["https://api.navitrine.app/api/v1"],"path":["categorias"],"query":[{"key":"page","value":"1"},{"key":"perPage","value":"50"}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 403,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Este token não tem o escopo catalogo:escrever\"\n}"},{"id":"dcd9f982-b410-4d95-b396-56ce6ee651f5","name":"Requisições demais. Tente de novo depois de `Retry-After` segundos.","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":{"raw":"https://api.navitrine.app/api/v1/categorias?page=1&perPage=50","host":["https://api.navitrine.app/api/v1"],"path":["categorias"],"query":[{"key":"page","value":"1"},{"key":"perPage","value":"50"}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"disabled":true,"description":"Segundos até poder tentar de novo.","key":"Retry-After","value":"30"},{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 429,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Limite de 120 requisições por minuto excedido. Tente de novo em 38s.\"\n}"}],"_postman_id":"08e43721-80db-4d0d-bb3b-b2037abe0629"},{"name":"Cria uma seção no catálogo.","id":"07a3f21a-83f4-41aa-b602-76bbf6e2747e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{bearerToken}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"nome\": \"Bebidas\",\n  \"ordem\": 1,\n  \"ativa\": true\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/categorias","urlObject":{"path":["categorias"],"host":["https://api.navitrine.app/api/v1"],"query":[],"variable":[]}},"response":[{"id":"44e1bf14-3d95-4871-af4a-0ac55cdc156e","name":"Seção criada.","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"description":"Valor único seu (um uuid serve). Repetindo a chamada com a mesma chave em até 24h,\na resposta é a da primeira — nada é criado duas vezes.\n","key":"Idempotency-Key","value":"3f6b0c1e-9a2f-4d6b-8c4e-7a3015b2c9d8","disabled":true},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"nome\": \"Bebidas\",\n  \"ordem\": 1,\n  \"ativa\": true\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/categorias"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": \"1b2c3d4e-5f60-4a7b-8c9d-0e1f2a3b4c5d\",\n  \"nome\": \"Medicamentos\",\n  \"ordem\": 1,\n  \"ativa\": true,\n  \"total_itens\": 0,\n  \"criado_em\": \"2026-08-01T12:00:00.000Z\"\n}"},{"id":"3e4726e2-cc52-4721-bb31-a6f6ec3b4156","name":"Corpo ou parâmetro inválido — `errors` diz o motivo por campo.","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"description":"Valor único seu (um uuid serve). Repetindo a chamada com a mesma chave em até 24h,\na resposta é a da primeira — nada é criado duas vezes.\n","key":"Idempotency-Key","value":"3f6b0c1e-9a2f-4d6b-8c4e-7a3015b2c9d8","disabled":true},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"nome\": \"Bebidas\",\n  \"ordem\": 1,\n  \"ativa\": true\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/categorias"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 400,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"O preço deve ser um valor decimal\",\n  \"errors\": {\n    \"preco\": [\n      \"O preço deve ser um valor decimal\"\n    ]\n  }\n}"},{"id":"0f557f8d-11f2-49c9-9e2f-7bb5da2b72e4","name":"Token ausente, inválido ou revogado.","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"description":"Valor único seu (um uuid serve). Repetindo a chamada com a mesma chave em até 24h,\na resposta é a da primeira — nada é criado duas vezes.\n","key":"Idempotency-Key","value":"3f6b0c1e-9a2f-4d6b-8c4e-7a3015b2c9d8","disabled":true},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"nome\": \"Bebidas\",\n  \"ordem\": 1,\n  \"ativa\": true\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/categorias"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 401,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Token de acesso inválido\"\n}"},{"id":"7a3391dd-312f-45e9-8db9-fd9faf448455","name":"O token é válido, mas não tem o escopo exigido pela rota.","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"description":"Valor único seu (um uuid serve). Repetindo a chamada com a mesma chave em até 24h,\na resposta é a da primeira — nada é criado duas vezes.\n","key":"Idempotency-Key","value":"3f6b0c1e-9a2f-4d6b-8c4e-7a3015b2c9d8","disabled":true},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"nome\": \"Bebidas\",\n  \"ordem\": 1,\n  \"ativa\": true\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/categorias"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 403,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Este token não tem o escopo catalogo:escrever\"\n}"},{"id":"f29da539-eb17-479e-b13e-5488e11d3167","name":"Já existe uma seção com esse nome na loja.","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"description":"Valor único seu (um uuid serve). Repetindo a chamada com a mesma chave em até 24h,\na resposta é a da primeira — nada é criado duas vezes.\n","key":"Idempotency-Key","value":"3f6b0c1e-9a2f-4d6b-8c4e-7a3015b2c9d8","disabled":true},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"nome\": \"Bebidas\",\n  \"ordem\": 1,\n  \"ativa\": true\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/categorias"},"status":"Conflict","code":409,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 409,\n  \"path\": \"/api/v1/categorias\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Já existe uma seção com esse nome na loja\"\n}"},{"id":"3e5da291-2a2f-40b0-ab46-669dbfcc942d","name":"Requisições demais. Tente de novo depois de `Retry-After` segundos.","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"description":"Valor único seu (um uuid serve). Repetindo a chamada com a mesma chave em até 24h,\na resposta é a da primeira — nada é criado duas vezes.\n","key":"Idempotency-Key","value":"3f6b0c1e-9a2f-4d6b-8c4e-7a3015b2c9d8","disabled":true},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"nome\": \"Bebidas\",\n  \"ordem\": 1,\n  \"ativa\": true\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/categorias"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"disabled":true,"description":"Segundos até poder tentar de novo.","key":"Retry-After","value":"30"},{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 429,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Limite de 120 requisições por minuto excedido. Tente de novo em 38s.\"\n}"}],"_postman_id":"07a3f21a-83f4-41aa-b602-76bbf6e2747e"},{"name":"Edita a seção do catálogo.","id":"5c0ba861-97a0-4375-8a97-3b3e12ba8299","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{bearerToken}}"}]},"isInherited":false},"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"ordem\": 3\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/categorias/:id","description":"<p>Envie só os campos que mudam; os ausentes ficam como estão.</p>\n","urlObject":{"path":["categorias",":id"],"host":["https://api.navitrine.app/api/v1"],"query":[],"variable":[{"id":"068fb439-a37c-4b41-9336-4c7ef574efcb","description":{"content":"<p>(Required) Identificador no Navitrine (uuid).</p>\n","type":"text/plain"},"type":"any","value":"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30","key":"id"}]}},"response":[{"id":"b818cfa2-dba5-4052-9490-1402eca4b743","name":"Seção atualizada.","originalRequest":{"method":"PATCH","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"ordem\": 3\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.navitrine.app/api/v1/categorias/:id","host":["https://api.navitrine.app/api/v1"],"path":["categorias",":id"],"variable":[{"key":"id","value":"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30","description":"(Required) Identificador no Navitrine (uuid)."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": \"1b2c3d4e-5f60-4a7b-8c9d-0e1f2a3b4c5d\",\n  \"nome\": \"Medicamentos e genéricos\",\n  \"ordem\": 3,\n  \"ativa\": true,\n  \"total_itens\": 128,\n  \"criado_em\": \"2026-08-01T12:00:00.000Z\"\n}"},{"id":"1efa961d-ac2c-4d24-a1a0-498812cb30d0","name":"Corpo ou parâmetro inválido — `errors` diz o motivo por campo.","originalRequest":{"method":"PATCH","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"ordem\": 3\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.navitrine.app/api/v1/categorias/:id","host":["https://api.navitrine.app/api/v1"],"path":["categorias",":id"],"variable":[{"key":"id","value":"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30","description":"(Required) Identificador no Navitrine (uuid)."}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 400,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"O preço deve ser um valor decimal\",\n  \"errors\": {\n    \"preco\": [\n      \"O preço deve ser um valor decimal\"\n    ]\n  }\n}"},{"id":"4696156f-ad91-4828-bcca-da10635b5d0f","name":"Token ausente, inválido ou revogado.","originalRequest":{"method":"PATCH","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"ordem\": 3\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.navitrine.app/api/v1/categorias/:id","host":["https://api.navitrine.app/api/v1"],"path":["categorias",":id"],"variable":[{"key":"id","value":"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30","description":"(Required) Identificador no Navitrine (uuid)."}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 401,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Token de acesso inválido\"\n}"},{"id":"49e1ec64-847f-4505-9c34-7bdca90a6154","name":"O token é válido, mas não tem o escopo exigido pela rota.","originalRequest":{"method":"PATCH","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"ordem\": 3\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.navitrine.app/api/v1/categorias/:id","host":["https://api.navitrine.app/api/v1"],"path":["categorias",":id"],"variable":[{"key":"id","value":"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30","description":"(Required) Identificador no Navitrine (uuid)."}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 403,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Este token não tem o escopo catalogo:escrever\"\n}"},{"id":"322ba2b8-90d0-4e3c-a98d-26426d830623","name":"Não existe (ou não é desta loja).","originalRequest":{"method":"PATCH","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"ordem\": 3\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.navitrine.app/api/v1/categorias/:id","host":["https://api.navitrine.app/api/v1"],"path":["categorias",":id"],"variable":[{"key":"id","value":"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30","description":"(Required) Identificador no Navitrine (uuid)."}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 404,\n  \"path\": \"/api/v1/itens/9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Item não encontrado\"\n}"},{"id":"3f296964-22fc-4345-a36f-2ca42416c117","name":"Requisições demais. Tente de novo depois de `Retry-After` segundos.","originalRequest":{"method":"PATCH","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"ordem\": 3\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.navitrine.app/api/v1/categorias/:id","host":["https://api.navitrine.app/api/v1"],"path":["categorias",":id"],"variable":[{"key":"id","value":"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30","description":"(Required) Identificador no Navitrine (uuid)."}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"disabled":true,"description":"Segundos até poder tentar de novo.","key":"Retry-After","value":"30"},{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 429,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Limite de 120 requisições por minuto excedido. Tente de novo em 38s.\"\n}"}],"_postman_id":"5c0ba861-97a0-4375-8a97-3b3e12ba8299"},{"name":"Remove a seção do catálogo.","id":"390549f6-119f-4b5b-ad86-425bd6badc90","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{bearerToken}}"}]},"isInherited":false},"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://api.navitrine.app/api/v1/categorias/:id","description":"<p>Os itens da seção <strong>não</strong> são removidos: ficam sem seção e continuam na vitrine.</p>\n","urlObject":{"path":["categorias",":id"],"host":["https://api.navitrine.app/api/v1"],"query":[],"variable":[{"id":"c5906d6a-b845-4b3e-a567-2cb1b2685f23","description":{"content":"<p>(Required) Identificador no Navitrine (uuid).</p>\n","type":"text/plain"},"type":"any","value":"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30","key":"id"}]}},"response":[{"id":"50e5df86-8467-428f-aa8a-303fec76f47d","name":"Seção removida.","originalRequest":{"method":"DELETE","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"}],"url":{"raw":"https://api.navitrine.app/api/v1/categorias/:id","host":["https://api.navitrine.app/api/v1"],"path":["categorias",":id"],"variable":[{"key":"id","value":"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30","description":"(Required) Identificador no Navitrine (uuid)."}]}},"status":"No Content","code":204,"_postman_previewlanguage":"text","header":[{"key":"Content-Type","value":"text/plain"}],"cookie":[],"responseTime":null,"body":""},{"id":"7de93f67-74be-4786-9b09-ac498b043c1b","name":"Token ausente, inválido ou revogado.","originalRequest":{"method":"DELETE","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":{"raw":"https://api.navitrine.app/api/v1/categorias/:id","host":["https://api.navitrine.app/api/v1"],"path":["categorias",":id"],"variable":[{"key":"id","value":"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30","description":"(Required) Identificador no Navitrine (uuid)."}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 401,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Token de acesso inválido\"\n}"},{"id":"d330f4b2-10da-41d8-9630-d68d67a9fe33","name":"O token é válido, mas não tem o escopo exigido pela rota.","originalRequest":{"method":"DELETE","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":{"raw":"https://api.navitrine.app/api/v1/categorias/:id","host":["https://api.navitrine.app/api/v1"],"path":["categorias",":id"],"variable":[{"key":"id","value":"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30","description":"(Required) Identificador no Navitrine (uuid)."}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 403,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Este token não tem o escopo catalogo:escrever\"\n}"},{"id":"a3c863f0-b923-485e-ab4d-dbae03084f8d","name":"Não existe (ou não é desta loja).","originalRequest":{"method":"DELETE","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":{"raw":"https://api.navitrine.app/api/v1/categorias/:id","host":["https://api.navitrine.app/api/v1"],"path":["categorias",":id"],"variable":[{"key":"id","value":"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30","description":"(Required) Identificador no Navitrine (uuid)."}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 404,\n  \"path\": \"/api/v1/itens/9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Item não encontrado\"\n}"},{"id":"f82c1090-2abb-4f55-a65d-720ee0a7fe76","name":"Requisições demais. Tente de novo depois de `Retry-After` segundos.","originalRequest":{"method":"DELETE","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":{"raw":"https://api.navitrine.app/api/v1/categorias/:id","host":["https://api.navitrine.app/api/v1"],"path":["categorias",":id"],"variable":[{"key":"id","value":"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30","description":"(Required) Identificador no Navitrine (uuid)."}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"disabled":true,"description":"Segundos até poder tentar de novo.","key":"Retry-After","value":"30"},{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 429,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Limite de 120 requisições por minuto excedido. Tente de novo em 38s.\"\n}"}],"_postman_id":"390549f6-119f-4b5b-ad86-425bd6badc90"},{"name":"Itens do catálogo da loja.","id":"ac166484-5984-4f81-bfed-09cbebf8548e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{bearerToken}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://api.navitrine.app/api/v1/itens","description":"<p>Traz <strong>todos</strong> os itens da loja, inclusive os indisponíveis — é o seu catálogo como\no Navitrine o guarda, não o recorte que o cliente vê.</p>\n<p>Para sincronizar só o que mudou desde a última execução, use <code>atualizado_desde</code>.</p>\n","urlObject":{"path":["itens"],"host":["https://api.navitrine.app/api/v1"],"query":[{"disabled":true,"description":{"content":"<p>Página, começando em 1.</p>\n","type":"text/plain"},"key":"page","value":"1"},{"disabled":true,"description":{"content":"<p>Itens por página (máximo 200).</p>\n","type":"text/plain"},"key":"perPage","value":"50"},{"disabled":true,"description":{"content":"<p>Só os itens desta seção.</p>\n","type":"text/plain"},"key":"categoria_id","value":"d645b9d6-7dd4-37a7-42f2-300e53657bed"},{"disabled":true,"description":{"content":"<p>Filtra por disponibilidade.</p>\n","type":"text/plain"},"key":"disponivel","value":"true"},{"disabled":true,"description":{"content":"<p>Só o que mudou a partir deste instante (inclusive).</p>\n","type":"text/plain"},"key":"atualizado_desde","value":"2026-08-21T03:00:00.000Z"},{"disabled":true,"description":{"content":"<p>Busca pelo código do item no seu sistema.</p>\n","type":"text/plain"},"key":"referencia_externa","value":"string"}],"variable":[]}},"response":[{"id":"b4cfe07d-5890-4aa9-bcae-d7cd44f9e196","name":"Itens da loja.","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":{"raw":"https://api.navitrine.app/api/v1/itens?page=1&perPage=50&categoria_id=d645b9d6-7dd4-37a7-42f2-300e53657bed&disponivel=true&atualizado_desde=2026-08-21T03:00:00.000Z&referencia_externa=string","host":["https://api.navitrine.app/api/v1"],"path":["itens"],"query":[{"key":"page","value":"1"},{"key":"perPage","value":"50"},{"key":"categoria_id","value":"d645b9d6-7dd4-37a7-42f2-300e53657bed"},{"key":"disponivel","value":"true"},{"key":"atualizado_desde","value":"2026-08-21T03:00:00.000Z"},{"key":"referencia_externa","value":"string"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": [\n    {\n      \"id\": \"3d4e5f60-7182-4c9d-8eaf-2a3b4c5d6e7f\",\n      \"referencia_externa\": \"SKU-4471\",\n      \"nome\": \"Dipirona 500mg 10 comprimidos\",\n      \"descricao\": \"Analgésico e antitérmico.\",\n      \"tipo\": \"produto\",\n      \"preco\": \"12.90\",\n      \"preco_promocional\": \"9.90\",\n      \"desconto_percentual\": 23,\n      \"valor_sob_consulta\": false,\n      \"disponivel\": true,\n      \"categoria_id\": \"1b2c3d4e-5f60-4a7b-8c9d-0e1f2a3b4c5d\",\n      \"foto_url\": \"https://cdn.navitrine.app/imagens/dipirona-500.webp\",\n      \"criado_em\": \"2026-08-01T12:00:00.000Z\",\n      \"atualizado_em\": \"2026-08-21T14:32:00.000Z\"\n    },\n    {\n      \"id\": \"4e5f6071-8293-4dae-9fb0-3b4c5d6e7f80\",\n      \"referencia_externa\": \"SKU-9902\",\n      \"nome\": \"Shampoo Anticaspa 200ml\",\n      \"descricao\": null,\n      \"tipo\": \"produto\",\n      \"preco\": \"24.00\",\n      \"preco_promocional\": null,\n      \"desconto_percentual\": null,\n      \"valor_sob_consulta\": false,\n      \"disponivel\": true,\n      \"categoria_id\": \"2c3d4e5f-6071-4b8c-9dae-1f2a3b4c5d6e\",\n      \"foto_url\": null,\n      \"criado_em\": \"2026-08-03T09:14:00.000Z\",\n      \"atualizado_em\": \"2026-08-20T08:00:00.000Z\"\n    }\n  ],\n  \"page\": 1,\n  \"perPage\": 50,\n  \"total\": 204\n}"},{"id":"497a9518-b8a4-48b2-ad34-c79c3588085f","name":"Token ausente, inválido ou revogado.","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":{"raw":"https://api.navitrine.app/api/v1/itens?page=1&perPage=50&categoria_id=d645b9d6-7dd4-37a7-42f2-300e53657bed&disponivel=true&atualizado_desde=2026-08-21T03:00:00.000Z&referencia_externa=string","host":["https://api.navitrine.app/api/v1"],"path":["itens"],"query":[{"key":"page","value":"1"},{"key":"perPage","value":"50"},{"key":"categoria_id","value":"d645b9d6-7dd4-37a7-42f2-300e53657bed"},{"key":"disponivel","value":"true"},{"key":"atualizado_desde","value":"2026-08-21T03:00:00.000Z"},{"key":"referencia_externa","value":"string"}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 401,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Token de acesso inválido\"\n}"},{"id":"826a49cb-0159-41c0-84bd-114773cfffab","name":"O token é válido, mas não tem o escopo exigido pela rota.","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":{"raw":"https://api.navitrine.app/api/v1/itens?page=1&perPage=50&categoria_id=d645b9d6-7dd4-37a7-42f2-300e53657bed&disponivel=true&atualizado_desde=2026-08-21T03:00:00.000Z&referencia_externa=string","host":["https://api.navitrine.app/api/v1"],"path":["itens"],"query":[{"key":"page","value":"1"},{"key":"perPage","value":"50"},{"key":"categoria_id","value":"d645b9d6-7dd4-37a7-42f2-300e53657bed"},{"key":"disponivel","value":"true"},{"key":"atualizado_desde","value":"2026-08-21T03:00:00.000Z"},{"key":"referencia_externa","value":"string"}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 403,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Este token não tem o escopo catalogo:escrever\"\n}"},{"id":"11c0ef18-5ea3-4ed2-8dd8-e5cfa81afa48","name":"Requisições demais. Tente de novo depois de `Retry-After` segundos.","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":{"raw":"https://api.navitrine.app/api/v1/itens?page=1&perPage=50&categoria_id=d645b9d6-7dd4-37a7-42f2-300e53657bed&disponivel=true&atualizado_desde=2026-08-21T03:00:00.000Z&referencia_externa=string","host":["https://api.navitrine.app/api/v1"],"path":["itens"],"query":[{"key":"page","value":"1"},{"key":"perPage","value":"50"},{"key":"categoria_id","value":"d645b9d6-7dd4-37a7-42f2-300e53657bed"},{"key":"disponivel","value":"true"},{"key":"atualizado_desde","value":"2026-08-21T03:00:00.000Z"},{"key":"referencia_externa","value":"string"}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"disabled":true,"description":"Segundos até poder tentar de novo.","key":"Retry-After","value":"30"},{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 429,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Limite de 120 requisições por minuto excedido. Tente de novo em 38s.\"\n}"}],"_postman_id":"ac166484-5984-4f81-bfed-09cbebf8548e"},{"name":"Cadastra um item no catálogo.","id":"8b1a961c-30fa-43b4-90e5-3700704f1340","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{bearerToken}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"referencia_externa\": \"SKU-4471\",\n  \"nome\": \"Dipirona 500mg 10 comprimidos\",\n  \"descricao\": \"Analgésico e antitérmico.\",\n  \"preco\": \"12.90\",\n  \"preco_promocional\": \"9.90\",\n  \"disponivel\": true,\n  \"foto_url\": \"https://cdn.exemplo.com/dipirona.jpg\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/itens","description":"<p>O plano da loja limita quantos itens ela pode ter. Estourado o limite, a resposta é\n<strong>403</strong> com a mensagem do plano — o item não é criado.</p>\n","urlObject":{"path":["itens"],"host":["https://api.navitrine.app/api/v1"],"query":[],"variable":[]}},"response":[{"id":"bf8272b5-b19c-4fed-8e1a-aa059b57591a","name":"Item criado.","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"description":"Valor único seu (um uuid serve). Repetindo a chamada com a mesma chave em até 24h,\na resposta é a da primeira — nada é criado duas vezes.\n","key":"Idempotency-Key","value":"3f6b0c1e-9a2f-4d6b-8c4e-7a3015b2c9d8","disabled":true},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"referencia_externa\": \"SKU-4471\",\n  \"nome\": \"Dipirona 500mg 10 comprimidos\",\n  \"descricao\": \"Analgésico e antitérmico.\",\n  \"preco\": \"12.90\",\n  \"preco_promocional\": \"9.90\",\n  \"disponivel\": true,\n  \"foto_url\": \"https://cdn.exemplo.com/dipirona.jpg\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/itens"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": \"3d4e5f60-7182-4c9d-8eaf-2a3b4c5d6e7f\",\n  \"referencia_externa\": \"SKU-4471\",\n  \"nome\": \"Dipirona 500mg 10 comprimidos\",\n  \"descricao\": \"Analgésico e antitérmico.\",\n  \"tipo\": \"produto\",\n  \"preco\": \"12.90\",\n  \"preco_promocional\": \"9.90\",\n  \"desconto_percentual\": 23,\n  \"valor_sob_consulta\": false,\n  \"disponivel\": true,\n  \"categoria_id\": \"1b2c3d4e-5f60-4a7b-8c9d-0e1f2a3b4c5d\",\n  \"foto_url\": \"https://cdn.navitrine.app/imagens/dipirona-500.webp\",\n  \"criado_em\": \"2026-08-01T12:00:00.000Z\",\n  \"atualizado_em\": \"2026-08-21T14:32:00.000Z\"\n}"},{"id":"a50f0cd1-c145-4c5c-ad3b-8dfc8af15910","name":"Corpo ou parâmetro inválido — `errors` diz o motivo por campo.","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"description":"Valor único seu (um uuid serve). Repetindo a chamada com a mesma chave em até 24h,\na resposta é a da primeira — nada é criado duas vezes.\n","key":"Idempotency-Key","value":"3f6b0c1e-9a2f-4d6b-8c4e-7a3015b2c9d8","disabled":true},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"referencia_externa\": \"SKU-4471\",\n  \"nome\": \"Dipirona 500mg 10 comprimidos\",\n  \"descricao\": \"Analgésico e antitérmico.\",\n  \"preco\": \"12.90\",\n  \"preco_promocional\": \"9.90\",\n  \"disponivel\": true,\n  \"foto_url\": \"https://cdn.exemplo.com/dipirona.jpg\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/itens"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 400,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"O preço deve ser um valor decimal\",\n  \"errors\": {\n    \"preco\": [\n      \"O preço deve ser um valor decimal\"\n    ]\n  }\n}"},{"id":"06830d0d-a9e4-41e4-b3ab-ad0d25a94a28","name":"Token ausente, inválido ou revogado.","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"description":"Valor único seu (um uuid serve). Repetindo a chamada com a mesma chave em até 24h,\na resposta é a da primeira — nada é criado duas vezes.\n","key":"Idempotency-Key","value":"3f6b0c1e-9a2f-4d6b-8c4e-7a3015b2c9d8","disabled":true},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"referencia_externa\": \"SKU-4471\",\n  \"nome\": \"Dipirona 500mg 10 comprimidos\",\n  \"descricao\": \"Analgésico e antitérmico.\",\n  \"preco\": \"12.90\",\n  \"preco_promocional\": \"9.90\",\n  \"disponivel\": true,\n  \"foto_url\": \"https://cdn.exemplo.com/dipirona.jpg\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/itens"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 401,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Token de acesso inválido\"\n}"},{"id":"2b3161c9-7cd1-4d31-9d3c-53902f7ea656","name":"Sem escopo, ou o plano da loja não comporta mais itens.","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"description":"Valor único seu (um uuid serve). Repetindo a chamada com a mesma chave em até 24h,\na resposta é a da primeira — nada é criado duas vezes.\n","key":"Idempotency-Key","value":"3f6b0c1e-9a2f-4d6b-8c4e-7a3015b2c9d8","disabled":true},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"referencia_externa\": \"SKU-4471\",\n  \"nome\": \"Dipirona 500mg 10 comprimidos\",\n  \"descricao\": \"Analgésico e antitérmico.\",\n  \"preco\": \"12.90\",\n  \"preco_promocional\": \"9.90\",\n  \"disponivel\": true,\n  \"foto_url\": \"https://cdn.exemplo.com/dipirona.jpg\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/itens"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 403,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Seu plano permite até 50 itens. Faça upgrade do plano ou remova itens para adicionar mais.\"\n}"},{"id":"d6cefd5d-52f9-49c9-9d3d-88fdbb1bbf83","name":"Já existe item com esta `referencia_externa` na loja.","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"description":"Valor único seu (um uuid serve). Repetindo a chamada com a mesma chave em até 24h,\na resposta é a da primeira — nada é criado duas vezes.\n","key":"Idempotency-Key","value":"3f6b0c1e-9a2f-4d6b-8c4e-7a3015b2c9d8","disabled":true},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"referencia_externa\": \"SKU-4471\",\n  \"nome\": \"Dipirona 500mg 10 comprimidos\",\n  \"descricao\": \"Analgésico e antitérmico.\",\n  \"preco\": \"12.90\",\n  \"preco_promocional\": \"9.90\",\n  \"disponivel\": true,\n  \"foto_url\": \"https://cdn.exemplo.com/dipirona.jpg\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/itens"},"status":"Conflict","code":409,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 409,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Já existe um item com esta referência nesta loja\"\n}"},{"id":"fc1af9c0-54b8-4f38-9a34-1f7108aca9da","name":"Requisições demais. Tente de novo depois de `Retry-After` segundos.","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"description":"Valor único seu (um uuid serve). Repetindo a chamada com a mesma chave em até 24h,\na resposta é a da primeira — nada é criado duas vezes.\n","key":"Idempotency-Key","value":"3f6b0c1e-9a2f-4d6b-8c4e-7a3015b2c9d8","disabled":true},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"referencia_externa\": \"SKU-4471\",\n  \"nome\": \"Dipirona 500mg 10 comprimidos\",\n  \"descricao\": \"Analgésico e antitérmico.\",\n  \"preco\": \"12.90\",\n  \"preco_promocional\": \"9.90\",\n  \"disponivel\": true,\n  \"foto_url\": \"https://cdn.exemplo.com/dipirona.jpg\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/itens"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"disabled":true,"description":"Segundos até poder tentar de novo.","key":"Retry-After","value":"30"},{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 429,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Limite de 120 requisições por minuto excedido. Tente de novo em 38s.\"\n}"}],"_postman_id":"8b1a961c-30fa-43b4-90e5-3700704f1340"},{"name":"Cria ou atualiza até 500 itens de uma vez.","id":"1dbd7af3-62d7-4efd-80a1-7c304b6ef47e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{bearerToken}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"remover_ausentes\": false,\n  \"itens\": [\n    {\n      \"referencia_externa\": \"SKU-4471\",\n      \"nome\": \"Dipirona 500mg 10 comprimidos\",\n      \"preco\": \"12.90\",\n      \"disponivel\": true\n    },\n    {\n      \"referencia_externa\": \"SKU-9902\",\n      \"nome\": \"Álcool em gel 500ml\",\n      \"preco\": \"18.50\",\n      \"disponivel\": false\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/itens/lote","description":"<p>O jeito recomendado de manter o catálogo em dia quando ele vive no seu sistema.</p>\n<p>Cada item é casado pela <code>referencia_externa</code> (o código dele no seu sistema): o que\nnão existe é criado, o que existe é atualizado. Você não precisa guardar os ids do\nNavitrine em lugar nenhum.</p>\n<p>O lote <strong>não é tudo ou nada</strong>: cada item é conferido e gravado por conta própria, e a\nresposta diz o que aconteceu com cada um. Um preço inválido numa linha não derruba as\noutras 499 — aquela linha volta com <code>situacao: \"falha\"</code> e o motivo, e o resto entra.</p>\n<p><code>resultados</code> vem <strong>na mesma ordem do que você enviou</strong>, então dá para conciliar linha\na linha sem casar pela referência. As remoções, quando houver, aparecem no fim.</p>\n<p>Com <code>remover_ausentes: true</code>, os itens da loja que não vierem no lote são removidos —\nuse quando o envio for o catálogo <strong>inteiro</strong>, nunca num envio parcial. Item cuja\nlinha foi recusada <strong>não</strong> é removido: mandar torto e não mandar são coisas\ndiferentes, e só a segunda justifica sumir com ele da vitrine.</p>\n<p>O corpo inteiro só é recusado (400) quando nem o envelope se sustenta: <code>itens</code>\nausente, vazio ou com mais de 500 linhas.</p>\n","urlObject":{"path":["itens","lote"],"host":["https://api.navitrine.app/api/v1"],"query":[],"variable":[]}},"response":[{"id":"0419a5b9-ee1e-4fae-9dbf-07db488b3582","name":"Lote processado. Veja item a item o que aconteceu.","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"description":"Valor único seu (um uuid serve). Repetindo a chamada com a mesma chave em até 24h,\na resposta é a da primeira — nada é criado duas vezes.\n","key":"Idempotency-Key","value":"3f6b0c1e-9a2f-4d6b-8c4e-7a3015b2c9d8","disabled":true},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"remover_ausentes\": false,\n  \"itens\": [\n    {\n      \"referencia_externa\": \"SKU-4471\",\n      \"nome\": \"Dipirona 500mg 10 comprimidos\",\n      \"preco\": \"12.90\",\n      \"disponivel\": true\n    },\n    {\n      \"referencia_externa\": \"SKU-9902\",\n      \"nome\": \"Álcool em gel 500ml\",\n      \"preco\": \"18.50\",\n      \"disponivel\": false\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/itens/lote"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"criados\": 1,\n  \"atualizados\": 1,\n  \"removidos\": 0,\n  \"falhas\": 1,\n  \"resultados\": [\n    {\n      \"referencia_externa\": \"SKU-4471\",\n      \"situacao\": \"criado\",\n      \"item_id\": \"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30\"\n    },\n    {\n      \"referencia_externa\": \"SKU-9902\",\n      \"situacao\": \"atualizado\",\n      \"item_id\": \"1b2c3d4e-5f60-4a7b-8c9d-0e1f2a3b4c5d\"\n    },\n    {\n      \"referencia_externa\": \"SKU-1000\",\n      \"situacao\": \"falha\",\n      \"item_id\": null,\n      \"erro\": \"preco: O preço deve ser um valor decimal, como \\\"49.90\\\"\"\n    }\n  ]\n}"},{"id":"bf42ade9-5666-4d6f-8d56-f2b1ed1b0905","name":"Corpo ou parâmetro inválido — `errors` diz o motivo por campo.","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"description":"Valor único seu (um uuid serve). Repetindo a chamada com a mesma chave em até 24h,\na resposta é a da primeira — nada é criado duas vezes.\n","key":"Idempotency-Key","value":"3f6b0c1e-9a2f-4d6b-8c4e-7a3015b2c9d8","disabled":true},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"remover_ausentes\": false,\n  \"itens\": [\n    {\n      \"referencia_externa\": \"SKU-4471\",\n      \"nome\": \"Dipirona 500mg 10 comprimidos\",\n      \"preco\": \"12.90\",\n      \"disponivel\": true\n    },\n    {\n      \"referencia_externa\": \"SKU-9902\",\n      \"nome\": \"Álcool em gel 500ml\",\n      \"preco\": \"18.50\",\n      \"disponivel\": false\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/itens/lote"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 400,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"O preço deve ser um valor decimal\",\n  \"errors\": {\n    \"preco\": [\n      \"O preço deve ser um valor decimal\"\n    ]\n  }\n}"},{"id":"ea1cd98d-0ec9-41ec-b084-04dc2e96e353","name":"Token ausente, inválido ou revogado.","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"description":"Valor único seu (um uuid serve). Repetindo a chamada com a mesma chave em até 24h,\na resposta é a da primeira — nada é criado duas vezes.\n","key":"Idempotency-Key","value":"3f6b0c1e-9a2f-4d6b-8c4e-7a3015b2c9d8","disabled":true},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"remover_ausentes\": false,\n  \"itens\": [\n    {\n      \"referencia_externa\": \"SKU-4471\",\n      \"nome\": \"Dipirona 500mg 10 comprimidos\",\n      \"preco\": \"12.90\",\n      \"disponivel\": true\n    },\n    {\n      \"referencia_externa\": \"SKU-9902\",\n      \"nome\": \"Álcool em gel 500ml\",\n      \"preco\": \"18.50\",\n      \"disponivel\": false\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/itens/lote"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 401,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Token de acesso inválido\"\n}"},{"id":"03445f49-4a2d-4c7e-a167-5bc83dba6555","name":"Sem o escopo `catalogo:escrever`, ou a loja está sem assinatura paga ativa —\ncatálogo pela API segue a mesma regra do painel.\n","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"description":"Valor único seu (um uuid serve). Repetindo a chamada com a mesma chave em até 24h,\na resposta é a da primeira — nada é criado duas vezes.\n","key":"Idempotency-Key","value":"3f6b0c1e-9a2f-4d6b-8c4e-7a3015b2c9d8","disabled":true},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"remover_ausentes\": false,\n  \"itens\": [\n    {\n      \"referencia_externa\": \"SKU-4471\",\n      \"nome\": \"Dipirona 500mg 10 comprimidos\",\n      \"preco\": \"12.90\",\n      \"disponivel\": true\n    },\n    {\n      \"referencia_externa\": \"SKU-9902\",\n      \"nome\": \"Álcool em gel 500ml\",\n      \"preco\": \"18.50\",\n      \"disponivel\": false\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/itens/lote"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 403,\n  \"path\": \"/api/v1/itens/lote\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Ative uma assinatura paga para gerenciar seu catálogo\"\n}"},{"id":"db349a06-c699-4e0b-a24e-90933b03a674","name":"Requisições demais. Tente de novo depois de `Retry-After` segundos.","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"description":"Valor único seu (um uuid serve). Repetindo a chamada com a mesma chave em até 24h,\na resposta é a da primeira — nada é criado duas vezes.\n","key":"Idempotency-Key","value":"3f6b0c1e-9a2f-4d6b-8c4e-7a3015b2c9d8","disabled":true},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"remover_ausentes\": false,\n  \"itens\": [\n    {\n      \"referencia_externa\": \"SKU-4471\",\n      \"nome\": \"Dipirona 500mg 10 comprimidos\",\n      \"preco\": \"12.90\",\n      \"disponivel\": true\n    },\n    {\n      \"referencia_externa\": \"SKU-9902\",\n      \"nome\": \"Álcool em gel 500ml\",\n      \"preco\": \"18.50\",\n      \"disponivel\": false\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/itens/lote"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"disabled":true,"description":"Segundos até poder tentar de novo.","key":"Retry-After","value":"30"},{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 429,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Limite de 120 requisições por minuto excedido. Tente de novo em 38s.\"\n}"}],"_postman_id":"1dbd7af3-62d7-4efd-80a1-7c304b6ef47e"},{"name":"Detalhe de um item.","id":"0b614089-52b9-4fcc-8276-627690f01b66","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{bearerToken}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://api.navitrine.app/api/v1/itens/:id","urlObject":{"path":["itens",":id"],"host":["https://api.navitrine.app/api/v1"],"query":[],"variable":[{"id":"7ce5f6ac-8a77-4a33-8a69-3f3a8875666e","description":{"content":"<p>(Required) Identificador no Navitrine (uuid).</p>\n","type":"text/plain"},"type":"any","value":"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30","key":"id"}]}},"response":[{"id":"6f185177-fe53-4290-b694-2068763e0f5f","name":"Item.","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":{"raw":"https://api.navitrine.app/api/v1/itens/:id","host":["https://api.navitrine.app/api/v1"],"path":["itens",":id"],"variable":[{"key":"id","value":"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30","description":"(Required) Identificador no Navitrine (uuid)."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": \"3d4e5f60-7182-4c9d-8eaf-2a3b4c5d6e7f\",\n  \"referencia_externa\": \"SKU-4471\",\n  \"nome\": \"Dipirona 500mg 10 comprimidos\",\n  \"descricao\": \"Analgésico e antitérmico.\",\n  \"tipo\": \"produto\",\n  \"preco\": \"12.90\",\n  \"preco_promocional\": \"9.90\",\n  \"desconto_percentual\": 23,\n  \"valor_sob_consulta\": false,\n  \"disponivel\": true,\n  \"categoria_id\": \"1b2c3d4e-5f60-4a7b-8c9d-0e1f2a3b4c5d\",\n  \"foto_url\": \"https://cdn.navitrine.app/imagens/dipirona-500.webp\",\n  \"criado_em\": \"2026-08-01T12:00:00.000Z\",\n  \"atualizado_em\": \"2026-08-21T14:32:00.000Z\"\n}"},{"id":"79e47681-0c2a-47e6-98d4-969b57d377ad","name":"Token ausente, inválido ou revogado.","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":{"raw":"https://api.navitrine.app/api/v1/itens/:id","host":["https://api.navitrine.app/api/v1"],"path":["itens",":id"],"variable":[{"key":"id","value":"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30","description":"(Required) Identificador no Navitrine (uuid)."}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 401,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Token de acesso inválido\"\n}"},{"id":"b4a36c22-bfa2-4858-b57e-672d712b905a","name":"O token é válido, mas não tem o escopo exigido pela rota.","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":{"raw":"https://api.navitrine.app/api/v1/itens/:id","host":["https://api.navitrine.app/api/v1"],"path":["itens",":id"],"variable":[{"key":"id","value":"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30","description":"(Required) Identificador no Navitrine (uuid)."}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 403,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Este token não tem o escopo catalogo:escrever\"\n}"},{"id":"8fad7597-523d-4e39-85cc-c3ba528f67d6","name":"Não existe (ou não é desta loja).","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":{"raw":"https://api.navitrine.app/api/v1/itens/:id","host":["https://api.navitrine.app/api/v1"],"path":["itens",":id"],"variable":[{"key":"id","value":"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30","description":"(Required) Identificador no Navitrine (uuid)."}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 404,\n  \"path\": \"/api/v1/itens/9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Item não encontrado\"\n}"},{"id":"acb23e4f-c535-45fc-a649-f301b95e883c","name":"Requisições demais. Tente de novo depois de `Retry-After` segundos.","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":{"raw":"https://api.navitrine.app/api/v1/itens/:id","host":["https://api.navitrine.app/api/v1"],"path":["itens",":id"],"variable":[{"key":"id","value":"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30","description":"(Required) Identificador no Navitrine (uuid)."}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"disabled":true,"description":"Segundos até poder tentar de novo.","key":"Retry-After","value":"30"},{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 429,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Limite de 120 requisições por minuto excedido. Tente de novo em 38s.\"\n}"}],"_postman_id":"0b614089-52b9-4fcc-8276-627690f01b66"},{"name":"Edita um item do catálogo.","id":"faac5a8a-d1dd-40aa-9df9-ebcb5526523e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{bearerToken}}"}]},"isInherited":false},"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"preco\": \"13.50\",\n  \"disponivel\": false\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/itens/:id","description":"<p>Envie só o que muda. Para tirar o item da vitrine sem apagá-lo — o caso de \"acabou\no estoque\" — mande <code>disponivel: false</code>.</p>\n","urlObject":{"path":["itens",":id"],"host":["https://api.navitrine.app/api/v1"],"query":[],"variable":[{"id":"472ccd9f-881a-422e-9280-8a68fe3468aa","description":{"content":"<p>(Required) Identificador no Navitrine (uuid).</p>\n","type":"text/plain"},"type":"any","value":"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30","key":"id"}]}},"response":[{"id":"4c8ec8d2-23f7-4857-b8fd-343f6615c0c2","name":"Item atualizado.","originalRequest":{"method":"PATCH","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"preco\": \"13.50\",\n  \"disponivel\": false\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.navitrine.app/api/v1/itens/:id","host":["https://api.navitrine.app/api/v1"],"path":["itens",":id"],"variable":[{"key":"id","value":"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30","description":"(Required) Identificador no Navitrine (uuid)."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": \"3d4e5f60-7182-4c9d-8eaf-2a3b4c5d6e7f\",\n  \"referencia_externa\": \"SKU-4471\",\n  \"nome\": \"Dipirona 500mg 10 comprimidos\",\n  \"descricao\": \"Analgésico e antitérmico.\",\n  \"tipo\": \"produto\",\n  \"preco\": \"13.50\",\n  \"preco_promocional\": null,\n  \"desconto_percentual\": null,\n  \"valor_sob_consulta\": false,\n  \"disponivel\": false,\n  \"categoria_id\": \"1b2c3d4e-5f60-4a7b-8c9d-0e1f2a3b4c5d\",\n  \"foto_url\": \"https://cdn.navitrine.app/imagens/dipirona-500.webp\",\n  \"criado_em\": \"2026-08-01T12:00:00.000Z\",\n  \"atualizado_em\": \"2026-08-21T15:10:00.000Z\"\n}"},{"id":"135af8d3-3f54-4a05-baa0-a53fd30c2203","name":"Corpo ou parâmetro inválido — `errors` diz o motivo por campo.","originalRequest":{"method":"PATCH","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"preco\": \"13.50\",\n  \"disponivel\": false\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.navitrine.app/api/v1/itens/:id","host":["https://api.navitrine.app/api/v1"],"path":["itens",":id"],"variable":[{"key":"id","value":"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30","description":"(Required) Identificador no Navitrine (uuid)."}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 400,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"O preço deve ser um valor decimal\",\n  \"errors\": {\n    \"preco\": [\n      \"O preço deve ser um valor decimal\"\n    ]\n  }\n}"},{"id":"8df38590-5bab-4e69-b937-66beb1ae92ae","name":"Token ausente, inválido ou revogado.","originalRequest":{"method":"PATCH","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"preco\": \"13.50\",\n  \"disponivel\": false\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.navitrine.app/api/v1/itens/:id","host":["https://api.navitrine.app/api/v1"],"path":["itens",":id"],"variable":[{"key":"id","value":"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30","description":"(Required) Identificador no Navitrine (uuid)."}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 401,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Token de acesso inválido\"\n}"},{"id":"dfc6644a-8bec-479c-b242-6934984b8b45","name":"O token é válido, mas não tem o escopo exigido pela rota.","originalRequest":{"method":"PATCH","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"preco\": \"13.50\",\n  \"disponivel\": false\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.navitrine.app/api/v1/itens/:id","host":["https://api.navitrine.app/api/v1"],"path":["itens",":id"],"variable":[{"key":"id","value":"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30","description":"(Required) Identificador no Navitrine (uuid)."}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 403,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Este token não tem o escopo catalogo:escrever\"\n}"},{"id":"013268dc-844f-4ae5-baa1-85567bb82697","name":"Não existe (ou não é desta loja).","originalRequest":{"method":"PATCH","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"preco\": \"13.50\",\n  \"disponivel\": false\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.navitrine.app/api/v1/itens/:id","host":["https://api.navitrine.app/api/v1"],"path":["itens",":id"],"variable":[{"key":"id","value":"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30","description":"(Required) Identificador no Navitrine (uuid)."}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 404,\n  \"path\": \"/api/v1/itens/9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Item não encontrado\"\n}"},{"id":"bdcf5b70-fa7b-434b-9417-8db0fd266104","name":"Requisições demais. Tente de novo depois de `Retry-After` segundos.","originalRequest":{"method":"PATCH","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"preco\": \"13.50\",\n  \"disponivel\": false\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.navitrine.app/api/v1/itens/:id","host":["https://api.navitrine.app/api/v1"],"path":["itens",":id"],"variable":[{"key":"id","value":"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30","description":"(Required) Identificador no Navitrine (uuid)."}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"disabled":true,"description":"Segundos até poder tentar de novo.","key":"Retry-After","value":"30"},{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 429,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Limite de 120 requisições por minuto excedido. Tente de novo em 38s.\"\n}"}],"_postman_id":"faac5a8a-d1dd-40aa-9df9-ebcb5526523e"},{"name":"Remove um item do catálogo.","id":"5cc79118-3717-42eb-b110-d396631d1809","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{bearerToken}}"}]},"isInherited":false},"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://api.navitrine.app/api/v1/itens/:id","description":"<p>Some da vitrine na hora. Pedidos antigos que citam o item continuam intactos.</p>\n","urlObject":{"path":["itens",":id"],"host":["https://api.navitrine.app/api/v1"],"query":[],"variable":[{"id":"06fae872-12dc-45fc-973d-d86b093dce2d","description":{"content":"<p>(Required) Identificador no Navitrine (uuid).</p>\n","type":"text/plain"},"type":"any","value":"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30","key":"id"}]}},"response":[{"id":"d3d2398e-5e08-49e3-8771-cdab8ed5674c","name":"Item removido.","originalRequest":{"method":"DELETE","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"}],"url":{"raw":"https://api.navitrine.app/api/v1/itens/:id","host":["https://api.navitrine.app/api/v1"],"path":["itens",":id"],"variable":[{"key":"id","value":"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30","description":"(Required) Identificador no Navitrine (uuid)."}]}},"status":"No Content","code":204,"_postman_previewlanguage":"text","header":[{"key":"Content-Type","value":"text/plain"}],"cookie":[],"responseTime":null,"body":""},{"id":"f324a9ef-2a86-498d-859f-80d58440d30e","name":"Token ausente, inválido ou revogado.","originalRequest":{"method":"DELETE","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":{"raw":"https://api.navitrine.app/api/v1/itens/:id","host":["https://api.navitrine.app/api/v1"],"path":["itens",":id"],"variable":[{"key":"id","value":"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30","description":"(Required) Identificador no Navitrine (uuid)."}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 401,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Token de acesso inválido\"\n}"},{"id":"5ff9dde4-ec74-4147-bc3f-00dea9e9d2df","name":"O token é válido, mas não tem o escopo exigido pela rota.","originalRequest":{"method":"DELETE","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":{"raw":"https://api.navitrine.app/api/v1/itens/:id","host":["https://api.navitrine.app/api/v1"],"path":["itens",":id"],"variable":[{"key":"id","value":"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30","description":"(Required) Identificador no Navitrine (uuid)."}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 403,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Este token não tem o escopo catalogo:escrever\"\n}"},{"id":"857578d8-df3f-4f46-9ab0-c9a7757f037a","name":"Não existe (ou não é desta loja).","originalRequest":{"method":"DELETE","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":{"raw":"https://api.navitrine.app/api/v1/itens/:id","host":["https://api.navitrine.app/api/v1"],"path":["itens",":id"],"variable":[{"key":"id","value":"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30","description":"(Required) Identificador no Navitrine (uuid)."}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 404,\n  \"path\": \"/api/v1/itens/9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Item não encontrado\"\n}"},{"id":"d8ee1cc0-9500-469e-b339-be90858cbf5e","name":"Requisições demais. Tente de novo depois de `Retry-After` segundos.","originalRequest":{"method":"DELETE","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":{"raw":"https://api.navitrine.app/api/v1/itens/:id","host":["https://api.navitrine.app/api/v1"],"path":["itens",":id"],"variable":[{"key":"id","value":"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30","description":"(Required) Identificador no Navitrine (uuid)."}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"disabled":true,"description":"Segundos até poder tentar de novo.","key":"Retry-After","value":"30"},{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 429,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Limite de 120 requisições por minuto excedido. Tente de novo em 38s.\"\n}"}],"_postman_id":"5cc79118-3717-42eb-b110-d396631d1809"}],"id":"774ca03c-6303-443b-979d-c763a27099f9","description":"<p>Seções e itens — o que a vitrine mostra ao cliente.</p>\n","_postman_id":"774ca03c-6303-443b-979d-c763a27099f9","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"f25a7e0d-6789-428b-a83e-b22a7b151a2b","id":"f25a7e0d-6789-428b-a83e-b22a7b151a2b","name":"API do Navitrine","type":"collection"}}},{"name":"Pedidos","item":[{"name":"Pedidos recebidos pela loja.","id":"da8cb8d4-248f-4e8b-8897-59345569af03","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{bearerToken}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://api.navitrine.app/api/v1/pedidos","description":"<p>Do mais recente para o mais antigo. Para buscar só o que chegou depois da última\nconsulta, use <code>desde</code> com o instante da execução anterior.</p>\n<p>Quem prefere não consultar de tempos em tempos pode configurar um webhook e receber\ncada pedido assim que ele acontece.</p>\n","urlObject":{"path":["pedidos"],"host":["https://api.navitrine.app/api/v1"],"query":[{"disabled":true,"description":{"content":"<p>Página, começando em 1.</p>\n","type":"text/plain"},"key":"page","value":"1"},{"disabled":true,"description":{"content":"<p>Itens por página (máximo 200).</p>\n","type":"text/plain"},"key":"perPage","value":"50"},{"disabled":true,"description":{"content":"<p>Só pedidos criados a partir deste instante (inclusive).</p>\n","type":"text/plain"},"key":"desde","value":"2026-08-21T03:00:00.000Z"},{"disabled":true,"description":{"content":"<p>Só pedidos criados até este instante.</p>\n","type":"text/plain"},"key":"ate","value":"2014-07-30T05:56:31.793Z"}],"variable":[]}},"response":[{"id":"2d70a767-57ef-492e-963f-3ed12fa72b76","name":"Pedidos da loja.","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":{"raw":"https://api.navitrine.app/api/v1/pedidos?page=1&perPage=50&desde=2026-08-21T03:00:00.000Z&ate=2014-07-30T05:56:31.793Z","host":["https://api.navitrine.app/api/v1"],"path":["pedidos"],"query":[{"key":"page","value":"1"},{"key":"perPage","value":"50"},{"key":"desde","value":"2026-08-21T03:00:00.000Z"},{"key":"ate","value":"2014-07-30T05:56:31.793Z"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": [\n    {\n      \"id\": \"5f607182-93a4-4ebf-80c1-4c5d6e7f8091\",\n      \"numero\": 1043,\n      \"criado_em\": \"2026-08-21T14:32:00.000Z\",\n      \"cliente\": {\n        \"nome\": \"Maria Souza\",\n        \"telefone\": \"82999998888\"\n      },\n      \"itens\": [\n        {\n          \"item_id\": \"3d4e5f60-7182-4c9d-8eaf-2a3b4c5d6e7f\",\n          \"referencia_externa\": \"SKU-4471\",\n          \"nome\": \"Dipirona 500mg 10 comprimidos\",\n          \"quantidade\": 2,\n          \"preco_unitario\": \"9.90\",\n          \"total\": \"19.80\"\n        },\n        {\n          \"item_id\": \"4e5f6071-8293-4dae-9fb0-3b4c5d6e7f80\",\n          \"referencia_externa\": \"SKU-9902\",\n          \"nome\": \"Shampoo Anticaspa 200ml\",\n          \"quantidade\": 1,\n          \"preco_unitario\": \"24.00\",\n          \"total\": \"24.00\"\n        }\n      ],\n      \"subtotal\": \"43.80\",\n      \"forma_pagamento\": \"PIX\",\n      \"entrega\": true,\n      \"endereco_entrega\": {\n        \"cep\": \"57300000\",\n        \"rua\": \"Rua do Comércio\",\n        \"numero\": \"150\",\n        \"complemento\": \"Apto 202\",\n        \"bairro\": \"Centro\",\n        \"cidade\": \"Arapiraca\",\n        \"estado\": \"AL\"\n      },\n      \"observacoes\": \"Sem sacola, por favor.\"\n    }\n  ],\n  \"page\": 1,\n  \"perPage\": 50,\n  \"total\": 37\n}"},{"id":"cf667ecf-26ae-4e51-bc5a-a37d9da9fb69","name":"Token ausente, inválido ou revogado.","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":{"raw":"https://api.navitrine.app/api/v1/pedidos?page=1&perPage=50&desde=2026-08-21T03:00:00.000Z&ate=2014-07-30T05:56:31.793Z","host":["https://api.navitrine.app/api/v1"],"path":["pedidos"],"query":[{"key":"page","value":"1"},{"key":"perPage","value":"50"},{"key":"desde","value":"2026-08-21T03:00:00.000Z"},{"key":"ate","value":"2014-07-30T05:56:31.793Z"}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 401,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Token de acesso inválido\"\n}"},{"id":"5c1cac55-46a2-471f-8854-47ad3b5715b5","name":"O token é válido, mas não tem o escopo exigido pela rota.","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":{"raw":"https://api.navitrine.app/api/v1/pedidos?page=1&perPage=50&desde=2026-08-21T03:00:00.000Z&ate=2014-07-30T05:56:31.793Z","host":["https://api.navitrine.app/api/v1"],"path":["pedidos"],"query":[{"key":"page","value":"1"},{"key":"perPage","value":"50"},{"key":"desde","value":"2026-08-21T03:00:00.000Z"},{"key":"ate","value":"2014-07-30T05:56:31.793Z"}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 403,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Este token não tem o escopo catalogo:escrever\"\n}"},{"id":"29ae5bd8-434c-43ed-8d81-a104daf7d04f","name":"Requisições demais. Tente de novo depois de `Retry-After` segundos.","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":{"raw":"https://api.navitrine.app/api/v1/pedidos?page=1&perPage=50&desde=2026-08-21T03:00:00.000Z&ate=2014-07-30T05:56:31.793Z","host":["https://api.navitrine.app/api/v1"],"path":["pedidos"],"query":[{"key":"page","value":"1"},{"key":"perPage","value":"50"},{"key":"desde","value":"2026-08-21T03:00:00.000Z"},{"key":"ate","value":"2014-07-30T05:56:31.793Z"}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"disabled":true,"description":"Segundos até poder tentar de novo.","key":"Retry-After","value":"30"},{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 429,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Limite de 120 requisições por minuto excedido. Tente de novo em 38s.\"\n}"}],"_postman_id":"da8cb8d4-248f-4e8b-8897-59345569af03"},{"name":"Detalhe de um pedido.","id":"05b47c42-bf82-4b4d-858c-4bf83dbc7598","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{bearerToken}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://api.navitrine.app/api/v1/pedidos/:id","description":"<p>O mesmo pedido que chega pelo webhook, útil para reprocessar um evento perdido.</p>\n","urlObject":{"path":["pedidos",":id"],"host":["https://api.navitrine.app/api/v1"],"query":[],"variable":[{"id":"80a15f19-1913-481d-a56e-8d6ad0b6e5f7","description":{"content":"<p>(Required) Identificador no Navitrine (uuid).</p>\n","type":"text/plain"},"type":"any","value":"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30","key":"id"}]}},"response":[{"id":"be141351-ed12-40c4-b355-4028fe477d83","name":"Pedido.","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":{"raw":"https://api.navitrine.app/api/v1/pedidos/:id","host":["https://api.navitrine.app/api/v1"],"path":["pedidos",":id"],"variable":[{"key":"id","value":"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30","description":"(Required) Identificador no Navitrine (uuid)."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": \"5f607182-93a4-4ebf-80c1-4c5d6e7f8091\",\n  \"numero\": 1043,\n  \"criado_em\": \"2026-08-21T14:32:00.000Z\",\n  \"cliente\": {\n    \"nome\": \"Maria Souza\",\n    \"telefone\": \"82999998888\"\n  },\n  \"itens\": [\n    {\n      \"item_id\": \"3d4e5f60-7182-4c9d-8eaf-2a3b4c5d6e7f\",\n      \"referencia_externa\": \"SKU-4471\",\n      \"nome\": \"Dipirona 500mg 10 comprimidos\",\n      \"quantidade\": 2,\n      \"preco_unitario\": \"9.90\",\n      \"total\": \"19.80\"\n    },\n    {\n      \"item_id\": \"4e5f6071-8293-4dae-9fb0-3b4c5d6e7f80\",\n      \"referencia_externa\": \"SKU-9902\",\n      \"nome\": \"Shampoo Anticaspa 200ml\",\n      \"quantidade\": 1,\n      \"preco_unitario\": \"24.00\",\n      \"total\": \"24.00\"\n    }\n  ],\n  \"subtotal\": \"43.80\",\n  \"forma_pagamento\": \"PIX\",\n  \"entrega\": true,\n  \"endereco_entrega\": {\n    \"cep\": \"57300000\",\n    \"rua\": \"Rua do Comércio\",\n    \"numero\": \"150\",\n    \"complemento\": \"Apto 202\",\n    \"bairro\": \"Centro\",\n    \"cidade\": \"Arapiraca\",\n    \"estado\": \"AL\"\n  },\n  \"observacoes\": \"Sem sacola, por favor.\"\n}"},{"id":"1c065c7e-d0ad-4d64-8e70-62d4c4a4f04e","name":"Token ausente, inválido ou revogado.","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":{"raw":"https://api.navitrine.app/api/v1/pedidos/:id","host":["https://api.navitrine.app/api/v1"],"path":["pedidos",":id"],"variable":[{"key":"id","value":"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30","description":"(Required) Identificador no Navitrine (uuid)."}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 401,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Token de acesso inválido\"\n}"},{"id":"0b2e2b31-b674-4c47-8b4b-b2d922af3d8b","name":"O token é válido, mas não tem o escopo exigido pela rota.","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":{"raw":"https://api.navitrine.app/api/v1/pedidos/:id","host":["https://api.navitrine.app/api/v1"],"path":["pedidos",":id"],"variable":[{"key":"id","value":"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30","description":"(Required) Identificador no Navitrine (uuid)."}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 403,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Este token não tem o escopo catalogo:escrever\"\n}"},{"id":"18cbf3c3-02e8-4d9d-bb4d-1237e1410288","name":"Não existe (ou não é desta loja).","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":{"raw":"https://api.navitrine.app/api/v1/pedidos/:id","host":["https://api.navitrine.app/api/v1"],"path":["pedidos",":id"],"variable":[{"key":"id","value":"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30","description":"(Required) Identificador no Navitrine (uuid)."}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 404,\n  \"path\": \"/api/v1/itens/9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Item não encontrado\"\n}"},{"id":"e3154611-a919-4b84-8d4c-b4c4683300cb","name":"Requisições demais. Tente de novo depois de `Retry-After` segundos.","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":{"raw":"https://api.navitrine.app/api/v1/pedidos/:id","host":["https://api.navitrine.app/api/v1"],"path":["pedidos",":id"],"variable":[{"key":"id","value":"9f1c2e7a-5b3d-4c8e-9a2f-1d6b7c4e8a30","description":"(Required) Identificador no Navitrine (uuid)."}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"disabled":true,"description":"Segundos até poder tentar de novo.","key":"Retry-After","value":"30"},{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 429,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Limite de 120 requisições por minuto excedido. Tente de novo em 38s.\"\n}"}],"_postman_id":"05b47c42-bf82-4b4d-858c-4bf83dbc7598"}],"id":"721be624-addb-43bb-a38f-f080f4c5cca2","description":"<p>Pedidos feitos na vitrine, prontos para entrar no seu sistema.</p>\n","_postman_id":"721be624-addb-43bb-a38f-f080f4c5cca2","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"f25a7e0d-6789-428b-a83e-b22a7b151a2b","id":"f25a7e0d-6789-428b-a83e-b22a7b151a2b","name":"API do Navitrine","type":"collection"}}},{"name":"Webhooks","item":[{"name":"Para onde os eventos estão sendo enviados.","id":"db5c0b02-5441-48a3-b023-5737ff4cc0fd","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{bearerToken}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://api.navitrine.app/api/v1/webhooks","description":"<p>Devolve <code>null</code> quando não há webhook configurado. O segredo nunca volta inteiro —\nsó os últimos caracteres, para conferir qual está em uso.</p>\n","urlObject":{"path":["webhooks"],"host":["https://api.navitrine.app/api/v1"],"query":[],"variable":[]}},"response":[{"id":"06aa5b7e-ba25-4ac7-92ad-0a7da755c6c5","name":"Configuração atual (ou `null`).","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":"https://api.navitrine.app/api/v1/webhooks"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"url\": \"https://erp.minhaloja.com.br/integracoes/navitrine\",\n  \"eventos\": [\n    \"pedido.criado\"\n  ],\n  \"ativo\": true,\n  \"segredo_final\": \"…6a25\",\n  \"criado_em\": \"2026-08-10T09:00:00.000Z\"\n}"},{"id":"6da53a04-78a4-4659-a351-4fd7d9102662","name":"Token ausente, inválido ou revogado.","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":"https://api.navitrine.app/api/v1/webhooks"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 401,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Token de acesso inválido\"\n}"},{"id":"6363e059-a87a-4373-b3ce-eabcdb2b4ddf","name":"O token é válido, mas não tem o escopo exigido pela rota.","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":"https://api.navitrine.app/api/v1/webhooks"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 403,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Este token não tem o escopo catalogo:escrever\"\n}"},{"id":"fce6309b-4356-4ad3-a700-863904347a81","name":"Requisições demais. Tente de novo depois de `Retry-After` segundos.","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":"https://api.navitrine.app/api/v1/webhooks"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"disabled":true,"description":"Segundos até poder tentar de novo.","key":"Retry-After","value":"30"},{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 429,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Limite de 120 requisições por minuto excedido. Tente de novo em 38s.\"\n}"}],"_postman_id":"db5c0b02-5441-48a3-b023-5737ff4cc0fd"},{"name":"Define o endereço que receberá os eventos.","id":"ad25f530-d04f-4441-9ed9-b2f687995010","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{bearerToken}}"}]},"isInherited":false},"method":"PUT","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"url\": \"https://erp.minhaloja.com.br/integracoes/navitrine\",\n  \"eventos\": [\n    \"pedido.criado\"\n  ],\n  \"ativo\": true\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/webhooks","description":"<p>O endereço precisa ser <strong>https</strong>. Guarde o <code>segredo</code> da resposta: ele aparece uma\núnica vez e é com ele que você confere a assinatura de cada entrega.</p>\n<p>Enviar <code>ativo: false</code> pausa os envios sem perder a configuração.</p>\n","urlObject":{"path":["webhooks"],"host":["https://api.navitrine.app/api/v1"],"query":[],"variable":[]}},"response":[{"id":"18fa57d2-b382-4711-9d4f-8fbf6981315c","name":"Webhook configurado. O `segredo` só aparece aqui.","originalRequest":{"method":"PUT","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"url\": \"https://erp.minhaloja.com.br/integracoes/navitrine\",\n  \"eventos\": [\n    \"pedido.criado\"\n  ],\n  \"ativo\": true\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/webhooks"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"url\": \"https://erp.minhaloja.com.br/integracoes/navitrine\",\n  \"eventos\": [\n    \"pedido.criado\"\n  ],\n  \"ativo\": true,\n  \"segredo_final\": \"…6a25\",\n  \"criado_em\": \"2026-08-10T09:00:00.000Z\",\n  \"segredo\": \"whsec_8faffb86719a064019be981ae7e4fba86056c743e5ea6a25\"\n}"},{"id":"92a95830-209e-46c0-8df6-a5e7eb0b681d","name":"Corpo ou parâmetro inválido — `errors` diz o motivo por campo.","originalRequest":{"method":"PUT","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"url\": \"https://erp.minhaloja.com.br/integracoes/navitrine\",\n  \"eventos\": [\n    \"pedido.criado\"\n  ],\n  \"ativo\": true\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/webhooks"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 400,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"O preço deve ser um valor decimal\",\n  \"errors\": {\n    \"preco\": [\n      \"O preço deve ser um valor decimal\"\n    ]\n  }\n}"},{"id":"96210d02-5c21-4af6-a02b-818383d39d3a","name":"Token ausente, inválido ou revogado.","originalRequest":{"method":"PUT","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"url\": \"https://erp.minhaloja.com.br/integracoes/navitrine\",\n  \"eventos\": [\n    \"pedido.criado\"\n  ],\n  \"ativo\": true\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/webhooks"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 401,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Token de acesso inválido\"\n}"},{"id":"133a6922-ba4f-46b6-a0ef-16e90ed445fa","name":"O token é válido, mas não tem o escopo exigido pela rota.","originalRequest":{"method":"PUT","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"url\": \"https://erp.minhaloja.com.br/integracoes/navitrine\",\n  \"eventos\": [\n    \"pedido.criado\"\n  ],\n  \"ativo\": true\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/webhooks"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 403,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Este token não tem o escopo catalogo:escrever\"\n}"},{"id":"71e580ec-bd5c-45f9-83ca-21ce870d0d29","name":"Requisições demais. Tente de novo depois de `Retry-After` segundos.","originalRequest":{"method":"PUT","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"url\": \"https://erp.minhaloja.com.br/integracoes/navitrine\",\n  \"eventos\": [\n    \"pedido.criado\"\n  ],\n  \"ativo\": true\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/webhooks"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"disabled":true,"description":"Segundos até poder tentar de novo.","key":"Retry-After","value":"30"},{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 429,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Limite de 120 requisições por minuto excedido. Tente de novo em 38s.\"\n}"}],"_postman_id":"ad25f530-d04f-4441-9ed9-b2f687995010"},{"name":"Histórico das entregas, da mais recente para a mais antiga.","id":"d6e5da7f-f618-4922-aa73-8bf541d28418","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{bearerToken}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://api.navitrine.app/api/v1/webhooks/entregas","description":"<p>Serve para investigar o que chegou — ou por que não chegou — sem depender de nós\nolharmos o banco. Traz a situação de cada entrega, quantas tentativas houve, o\nstatus que o seu endereço devolveu e o erro registrado.</p>\n<p>Sem webhook configurado, devolve lista vazia.</p>\n","urlObject":{"path":["webhooks","entregas"],"host":["https://api.navitrine.app/api/v1"],"query":[{"disabled":true,"description":{"content":"<p>Página, começando em 1.</p>\n","type":"text/plain"},"key":"page","value":"1"},{"disabled":true,"description":{"content":"<p>Itens por página (máximo 200).</p>\n","type":"text/plain"},"key":"perPage","value":"50"}],"variable":[]}},"response":[{"id":"d48f92fe-b54c-476f-8f09-b3f07209cbe8","name":"Entregas do seu webhook.","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":{"raw":"https://api.navitrine.app/api/v1/webhooks/entregas?page=1&perPage=50","host":["https://api.navitrine.app/api/v1"],"path":["webhooks","entregas"],"query":[{"key":"page","value":"1"},{"key":"perPage","value":"50"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": [\n    {\n      \"id\": \"60718293-a4b5-4fc0-91d2-5d6e7f809102\",\n      \"evento\": \"pedido.criado\",\n      \"situacao\": \"entregue\",\n      \"tentativas\": 1,\n      \"status_http\": 200,\n      \"erro\": null,\n      \"criado_em\": \"2026-08-21T14:32:01.000Z\",\n      \"ultima_tentativa_em\": \"2026-08-21T14:32:01.400Z\",\n      \"proxima_tentativa_em\": null\n    },\n    {\n      \"id\": \"71829304-b5c6-40d1-a2e3-6e7f80910213\",\n      \"evento\": \"pedido.criado\",\n      \"situacao\": \"falhou\",\n      \"tentativas\": 3,\n      \"status_http\": 502,\n      \"erro\": \"502 Bad Gateway\",\n      \"criado_em\": \"2026-08-21T11:05:00.000Z\",\n      \"ultima_tentativa_em\": \"2026-08-21T11:40:00.000Z\",\n      \"proxima_tentativa_em\": \"2026-08-21T13:40:00.000Z\"\n    }\n  ],\n  \"page\": 1,\n  \"perPage\": 50,\n  \"total\": 2\n}"},{"id":"59e171df-7d4d-42e2-b021-f9bed8796184","name":"Token ausente, inválido ou revogado.","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":{"raw":"https://api.navitrine.app/api/v1/webhooks/entregas?page=1&perPage=50","host":["https://api.navitrine.app/api/v1"],"path":["webhooks","entregas"],"query":[{"key":"page","value":"1"},{"key":"perPage","value":"50"}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 401,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Token de acesso inválido\"\n}"},{"id":"b7bff22a-2bab-4778-9fc0-e0d1729075cc","name":"O token é válido, mas não tem o escopo exigido pela rota.","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":{"raw":"https://api.navitrine.app/api/v1/webhooks/entregas?page=1&perPage=50","host":["https://api.navitrine.app/api/v1"],"path":["webhooks","entregas"],"query":[{"key":"page","value":"1"},{"key":"perPage","value":"50"}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 403,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Este token não tem o escopo catalogo:escrever\"\n}"},{"id":"036d900a-66d7-43f8-abc4-18ae0250123e","name":"Requisições demais. Tente de novo depois de `Retry-After` segundos.","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":{"raw":"https://api.navitrine.app/api/v1/webhooks/entregas?page=1&perPage=50","host":["https://api.navitrine.app/api/v1"],"path":["webhooks","entregas"],"query":[{"key":"page","value":"1"},{"key":"perPage","value":"50"}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"disabled":true,"description":"Segundos até poder tentar de novo.","key":"Retry-After","value":"30"},{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 429,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Limite de 120 requisições por minuto excedido. Tente de novo em 38s.\"\n}"}],"_postman_id":"d6e5da7f-f618-4922-aa73-8bf541d28418"},{"name":"Dispara um evento de teste para o seu endereço.","id":"a60337fd-740f-4fe0-ba40-ca02af27369f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{bearerToken}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Accept","value":"application/json"}],"url":"https://api.navitrine.app/api/v1/webhooks/teste","description":"<p>Envia um <code>pedido.criado</code> de mentira, com dados fictícios, e devolve o que o seu\nendereço respondeu — status, tempo e o começo do corpo. Serve para validar a\nassinatura e o parsing antes de o primeiro pedido real chegar.</p>\n","urlObject":{"path":["webhooks","teste"],"host":["https://api.navitrine.app/api/v1"],"query":[],"variable":[]}},"response":[{"id":"ca2cd9a1-76f8-4228-b60b-a48d3857d4a8","name":"Resultado da entrega de teste.","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":"https://api.navitrine.app/api/v1/webhooks/teste"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"entregue\": true,\n  \"status_http\": 200,\n  \"duracao_ms\": 412,\n  \"resposta\": \"{\\\"ok\\\":true}\",\n  \"erro\": null\n}"},{"id":"7cfb42d0-2fa0-4cf5-9f97-a3f04aef7d8c","name":"Token ausente, inválido ou revogado.","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":"https://api.navitrine.app/api/v1/webhooks/teste"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 401,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Token de acesso inválido\"\n}"},{"id":"9bce9af8-4040-4045-ad77-70ae64a90aac","name":"O token é válido, mas não tem o escopo exigido pela rota.","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":"https://api.navitrine.app/api/v1/webhooks/teste"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 403,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Este token não tem o escopo catalogo:escrever\"\n}"},{"id":"e3af20ed-a59c-4009-9acd-f059abc09fb0","name":"Não há webhook configurado.","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":"https://api.navitrine.app/api/v1/webhooks/teste"},"status":"Conflict","code":409,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 409,\n  \"path\": \"/api/v1/webhooks/teste\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Nenhum webhook configurado para esta loja\"\n}"},{"id":"47dde426-cad9-4226-8a96-bdc44a01246b","name":"Requisições demais. Tente de novo depois de `Retry-After` segundos.","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":"https://api.navitrine.app/api/v1/webhooks/teste"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"disabled":true,"description":"Segundos até poder tentar de novo.","key":"Retry-After","value":"30"},{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 429,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Limite de 120 requisições por minuto excedido. Tente de novo em 38s.\"\n}"}],"_postman_id":"a60337fd-740f-4fe0-ba40-ca02af27369f"}],"id":"4d4ff52c-6686-40ae-82ae-6a08a2a72806","description":"<p>Para onde o Navitrine avisa quando algo acontece.</p>\n","_postman_id":"4d4ff52c-6686-40ae-82ae-6a08a2a72806","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"f25a7e0d-6789-428b-a83e-b22a7b151a2b","id":"f25a7e0d-6789-428b-a83e-b22a7b151a2b","name":"API do Navitrine","type":"collection"}}},{"name":"Desenvolvedor","item":[{"name":"Cria uma conta de desenvolvedor com loja de testes.","id":"26a0ebdb-ad5c-44cf-9b95-f3a49082cdd6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"nome\": \"ERP da Silva\",\n  \"email\": \"dev@erpdasilva.com.br\",\n  \"password\": \"uma-senha-boa-2026\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/dev/registrar","description":"<p>O começo de tudo para quem vai integrar: você sai daqui com uma credencial\n<code>nvt_test_</code> na mão e pode chamar a API na mesma sessão, sem falar com ninguém e\n<strong>sem precisar de um lojista</strong>.</p>\n<p>A loja criada é uma sandbox: não aparece na vitrine, não é cobrada e não dispara\nmensagem para lojista nenhum. Ela já vem com duas seções de exemplo, para o\nprimeiro <code>POST /itens/lote</code> ter onde cair.</p>\n<p><strong>A credencial só aparece nesta resposta.</strong> O login criado serve para gerar outra\ndepois, pelo painel.</p>\n<p>Esta é a única rota da API que não pede autenticação — e tem teto próprio de\ncadastros por hora.</p>\n","urlObject":{"path":["dev","registrar"],"host":["https://api.navitrine.app/api/v1"],"query":[],"variable":[]}},"response":[{"id":"8f25b726-725b-4f9b-89b2-20117d7d1fbc","name":"Conta criada. Guarde a credencial — ela não volta.","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"nome\": \"ERP da Silva\",\n  \"email\": \"dev@erpdasilva.com.br\",\n  \"password\": \"uma-senha-boa-2026\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/dev/registrar"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"loja\": {\n    \"id\": \"82930415-c6d7-41e2-b3f4-7f8091021324\",\n    \"nome\": \"ERP da Silva (sandbox)\",\n    \"slug\": \"erp-da-silva-sandbox\"\n  },\n  \"credencial\": {\n    \"token\": \"nvt_test_PDYOOXMl428GuSZR2XK8QGl0ADsKnt3jU7Uak48lw\",\n    \"escopos\": [\n      \"catalogo:ler\",\n      \"catalogo:escrever\",\n      \"pedidos:ler\",\n      \"webhooks:gerenciar\"\n    ]\n  },\n  \"login\": {\n    \"email\": \"dev@erpdasilva.com.br\"\n  }\n}"},{"id":"d9bfc0bf-ad84-409b-beff-6ba1bc3375da","name":"Dados inválidos, ou cadastros demais em pouco tempo.","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"nome\": \"ERP da Silva\",\n  \"email\": \"dev@erpdasilva.com.br\",\n  \"password\": \"uma-senha-boa-2026\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/dev/registrar"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 400,\n  \"path\": \"/api/v1/dev/registrar\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Muitos cadastros de desenvolvedor em pouco tempo. Tente de novo em alguns minutos ou fale com o suporte.\"\n}"},{"id":"ffa3f672-62f4-413d-8ea6-e28d3acbd05e","name":"Já existe conta com este e-mail.","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"nome\": \"ERP da Silva\",\n  \"email\": \"dev@erpdasilva.com.br\",\n  \"password\": \"uma-senha-boa-2026\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/dev/registrar"},"status":"Conflict","code":409,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 409,\n  \"path\": \"/api/v1/dev/registrar\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"E-mail já cadastrado\"\n}"}],"_postman_id":"26a0ebdb-ad5c-44cf-9b95-f3a49082cdd6"}],"id":"8d30710d-e5cf-4f6b-b951-79d564075f05","description":"<p>Cadastro auto-serviço de quem vai integrar. Única rota da API que não pede\ncredencial.</p>\n","_postman_id":"8d30710d-e5cf-4f6b-b951-79d564075f05","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"f25a7e0d-6789-428b-a83e-b22a7b151a2b","id":"f25a7e0d-6789-428b-a83e-b22a7b151a2b","name":"API do Navitrine","type":"collection"}}},{"name":"Loja de testes","item":[{"name":"Cria um pedido de mentira na loja de teste.","id":"d92b4a99-01e0-4cee-9c87-105fc2eca820","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{bearerToken}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"cliente_nome\": \"Maria Souza (teste)\",\n  \"itens\": [\n    {\n      \"referencia_externa\": \"SKU-4471\",\n      \"quantidade\": 2\n    }\n  ],\n  \"forma_pagamento\": \"PIX\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/sandbox/pedidos","description":"<p>Em produção o pedido nasce no app do cliente — sem esta rota, testar a integração\nde pedidos exigiria abrir a vitrine e fechar um carrinho a cada tentativa.</p>\n<p>Ela cria o pedido e dispara o <code>pedido.criado</code> no seu webhook, com o mesmo formato\nda produção: é o caminho para validar assinatura e parsing antes do primeiro\npedido real. Os itens são informados pela <code>referencia_externa</code> que você acabou de\nenviar na carga.</p>\n<p><strong>Só funciona com credencial <code>nvt_test_</code></strong>; em loja que vende, responde 403. E\nnenhuma mensagem sai para o lojista — loja de teste não dispara WhatsApp.</p>\n","urlObject":{"path":["sandbox","pedidos"],"host":["https://api.navitrine.app/api/v1"],"query":[],"variable":[]}},"response":[{"id":"6a23b60b-6a1b-4d85-8383-69be76a3d745","name":"Pedido criado — o mesmo corpo que chega pelo webhook.","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"cliente_nome\": \"Maria Souza (teste)\",\n  \"itens\": [\n    {\n      \"referencia_externa\": \"SKU-4471\",\n      \"quantidade\": 2\n    }\n  ],\n  \"forma_pagamento\": \"PIX\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/sandbox/pedidos"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": \"5f607182-93a4-4ebf-80c1-4c5d6e7f8091\",\n  \"numero\": 1,\n  \"criado_em\": \"2026-08-21T14:32:00.000Z\",\n  \"cliente\": {\n    \"nome\": \"Maria Souza\",\n    \"telefone\": \"82999998888\"\n  },\n  \"itens\": [\n    {\n      \"item_id\": \"3d4e5f60-7182-4c9d-8eaf-2a3b4c5d6e7f\",\n      \"referencia_externa\": \"SKU-4471\",\n      \"nome\": \"Dipirona 500mg 10 comprimidos\",\n      \"quantidade\": 2,\n      \"preco_unitario\": \"9.90\",\n      \"total\": \"19.80\"\n    },\n    {\n      \"item_id\": \"4e5f6071-8293-4dae-9fb0-3b4c5d6e7f80\",\n      \"referencia_externa\": \"SKU-9902\",\n      \"nome\": \"Shampoo Anticaspa 200ml\",\n      \"quantidade\": 1,\n      \"preco_unitario\": \"24.00\",\n      \"total\": \"24.00\"\n    }\n  ],\n  \"subtotal\": \"43.80\",\n  \"forma_pagamento\": \"PIX\",\n  \"entrega\": false,\n  \"endereco_entrega\": null,\n  \"observacoes\": \"Sem sacola, por favor.\"\n}"},{"id":"b65bf2dd-7dba-4c76-bc5d-8f581a7e2ca8","name":"Algum item do pedido não existe na loja de teste (diz qual).","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"cliente_nome\": \"Maria Souza (teste)\",\n  \"itens\": [\n    {\n      \"referencia_externa\": \"SKU-4471\",\n      \"quantidade\": 2\n    }\n  ],\n  \"forma_pagamento\": \"PIX\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/sandbox/pedidos"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 400,\n  \"path\": \"/api/v1/sandbox/pedidos\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Estes itens não existem na loja de teste: SKU-0000\"\n}"},{"id":"fcd0f6d8-c38e-49b8-ba4e-9fca98fda733","name":"Token ausente, inválido ou revogado.","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"cliente_nome\": \"Maria Souza (teste)\",\n  \"itens\": [\n    {\n      \"referencia_externa\": \"SKU-4471\",\n      \"quantidade\": 2\n    }\n  ],\n  \"forma_pagamento\": \"PIX\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/sandbox/pedidos"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 401,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Token de acesso inválido\"\n}"},{"id":"c916a02a-22c4-43d1-922b-f4d92584d69c","name":"A credencial não é de loja de teste.","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"cliente_nome\": \"Maria Souza (teste)\",\n  \"itens\": [\n    {\n      \"referencia_externa\": \"SKU-4471\",\n      \"quantidade\": 2\n    }\n  ],\n  \"forma_pagamento\": \"PIX\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/sandbox/pedidos"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 403,\n  \"path\": \"/api/v1/sandbox/pedidos\",\n  \"timestamp\": \"2026-08-22T14:32:00.000Z\",\n  \"message\": \"Esta rota só funciona com credencial de loja de teste (nvt_test_).\"\n}"},{"id":"b209ddec-6587-47f8-93bb-6ec188b1721a","name":"Requisições demais. Tente de novo depois de `Retry-After` segundos.","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"cliente_nome\": \"Maria Souza (teste)\",\n  \"itens\": [\n    {\n      \"referencia_externa\": \"SKU-4471\",\n      \"quantidade\": 2\n    }\n  ],\n  \"forma_pagamento\": \"PIX\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.navitrine.app/api/v1/sandbox/pedidos"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"disabled":true,"description":"Segundos até poder tentar de novo.","key":"Retry-After","value":"30"},{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 429,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Limite de 120 requisições por minuto excedido. Tente de novo em 38s.\"\n}"}],"_postman_id":"d92b4a99-01e0-4cee-9c87-105fc2eca820"},{"name":"Apaga itens e pedidos da loja de teste.","id":"f19298e7-5e1c-4ba6-b03c-a5fd8451ec80","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{bearerToken}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Accept","value":"application/json"}],"url":"https://api.navitrine.app/api/v1/sandbox/limpar","description":"<p>Deixa a loja de teste como nova, para você repetir a carga do zero quantas vezes\nquiser — refazer o teste é o uso normal de quem integra, não a exceção.</p>\n<p><strong>Só funciona com credencial <code>nvt_test_</code>.</strong></p>\n","urlObject":{"path":["sandbox","limpar"],"host":["https://api.navitrine.app/api/v1"],"query":[],"variable":[]}},"response":[{"id":"1f2fef82-c4f8-413d-b781-d1aeffc3bdf8","name":"O que foi apagado.","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":"https://api.navitrine.app/api/v1/sandbox/limpar"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"itens\": 204,\n  \"pedidos\": 12\n}"},{"id":"a97bb35c-744c-419e-8aa4-559697af4f53","name":"Token ausente, inválido ou revogado.","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":"https://api.navitrine.app/api/v1/sandbox/limpar"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 401,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Token de acesso inválido\"\n}"},{"id":"7abc69a1-c43b-49e4-a492-7727a49f5f08","name":"A credencial não é de loja de teste.","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":"https://api.navitrine.app/api/v1/sandbox/limpar"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 403,\n  \"path\": \"/api/v1/sandbox/limpar\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Esta rota só funciona com credencial de loja de teste (nvt_test_).\"\n}"},{"id":"0c55eeee-6cbb-4316-ad17-68b4cbb800ba","name":"Requisições demais. Tente de novo depois de `Retry-After` segundos.","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"url":"https://api.navitrine.app/api/v1/sandbox/limpar"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"disabled":true,"description":"Segundos até poder tentar de novo.","key":"Retry-After","value":"30"},{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"statusCode\": 429,\n  \"path\": \"/api/v1/itens\",\n  \"timestamp\": \"2026-08-21T14:32:00.000Z\",\n  \"message\": \"Limite de 120 requisições por minuto excedido. Tente de novo em 38s.\"\n}"}],"_postman_id":"f19298e7-5e1c-4ba6-b03c-a5fd8451ec80"}],"id":"58593402-48b4-42ed-9dc9-825b02df14cc","description":"<p>Ferramentas que só existem na loja de testes: simular pedido e limpar o que você\ncriou. Exigem credencial <code>nvt_test_</code>.</p>\n","_postman_id":"58593402-48b4-42ed-9dc9-825b02df14cc","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"f25a7e0d-6789-428b-a83e-b22a7b151a2b","id":"f25a7e0d-6789-428b-a83e-b22a7b151a2b","name":"API do Navitrine","type":"collection"}}}],"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]}},"variable":[{"key":"baseUrl","value":"https://api.navitrine.app/api/v1","type":"string","description":"Base da API pública."},{"key":"token","value":"","type":"string","description":"Token da loja, gerado no painel em Configurações → Integrações → API."}]}