[{"data":1,"prerenderedAt":126},["ShallowReactive",2],{"i-mdi:download-outline":3,"i-mdi:magnify":8,"i-mdi:open-in-new":10,"i-mdi:menu":12,"i-mdi:phone":14,"guia-erros-e-limites":16,"i-mdi:information-outline":112,"i-mdi:arrow-left":114,"i-mdi:text-box-outline":116,"i-mdi:chevron-right":118,"i-mdi:content-copy":120,"i-mdi:check-circle":122,"i-mdi:arrow-right":124},{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":7},0,24,false,"\u003Cpath fill=\"currentColor\" d=\"M13 5v6h1.17L12 13.17L9.83 11H11V5zm2-2H9v6H5l7 7l7-7h-4zm4 15H5v2h14z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":9},"\u003Cpath fill=\"currentColor\" d=\"M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5l-1.5 1.5l-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16A6.5 6.5 0 0 1 3 9.5A6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14S14 12 14 9.5S12 5 9.5 5\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":11},"\u003Cpath fill=\"currentColor\" d=\"M14 3v2h3.59l-9.83 9.83l1.41 1.41L19 6.41V10h2V3m-2 16H5V5h7V3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7h-2z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":13},"\u003Cpath fill=\"currentColor\" d=\"M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":15},"\u003Cpath fill=\"currentColor\" d=\"M6.62 10.79c1.44 2.83 3.76 5.15 6.59 6.59l2.2-2.2c.28-.28.67-.36 1.02-.25c1.12.37 2.32.57 3.57.57a1 1 0 0 1 1 1V20a1 1 0 0 1-1 1A17 17 0 0 1 3 4a1 1 0 0 1 1-1h3.5a1 1 0 0 1 1 1c0 1.25.2 2.45.57 3.57c.11.35.03.74-.25 1.02z\"\u002F>",[17,20,23,30,35,37,39,72,74,76,78,84,86,90,93,97,99,104,106],{"type":18,"text":19},"heading","Formato dos erros",{"type":21,"html":22},"paragraph","Quando uma chamada dá errado, a resposta traz a lista \u003Ccode>errors\u003C\u002Fcode>, com a mensagem de cada erro em \u003Ccode>errorMessage\u003C\u002Fcode>, e o \u003Ccode>sessionGuid\u003C\u002Fcode>, que identifica a chamada:",{"type":24,"tabs":25},"code",[26],{"label":27,"language":28,"code":29},"JSON","json","{\n  \"errors\": [\n    { \"errorMessage\": \"Pedido não encontrado\" }\n  ],\n  \"sessionGuid\": \"b28a419684c1432f23b6fddb3d748c51\"\n}",{"type":31,"variant":32,"title":33,"html":34},"callout","info","Guarde o sessionGuid","Registre o \u003Ccode>sessionGuid\u003C\u002Fcode> dos erros no seu sistema. Ao \u003Ca href=\"\u002Fapi\u002Fperguntas-frequentes\u002F#como-peco-ajuda-ao-suporte\">falar com o suporte\u003C\u002Fa>, informe o \u003Ccode>sessionGuid\u003C\u002Fcode>, o horário da chamada e o código de resposta.",{"type":21,"html":36},"Os erros devolvidos pelo gateway, antes de a chamada chegar à API, também vêm em \u003Ccode>errors\u003C\u002Fcode>, mas sem \u003Ccode>sessionGuid\u003C\u002Fcode>. É o caso do \u003Ccode>401\u003C\u002Fcode> de token inválido e dos \u003Ccode>502\u003C\u002Fcode> e \u003Ccode>504\u003C\u002Fcode>. Já o \u003Ccode>401\u003C\u002Fcode> sem corpo é explicado em \u003Ca href=\"\u002Fapi\u002Fautenticacao\u002F#erros-comuns\">Autenticação\u003C\u002Fa>.",{"type":18,"text":38},"Códigos de resposta",{"type":40,"headers":41,"rows":44},"table",[42,43],"Código","Quando acontece",[45,48,51,54,57,60,63,66,69],[46,47],"\u003Ccode>200\u003C\u002Fcode>","Consulta feita com sucesso",[49,50],"\u003Ccode>201\u003C\u002Fcode>","Token gerado com sucesso na \u003Ca href=\"\u002Fapi\u002Fautenticacao\u002F#gerar-o-token\">autenticação\u003C\u002Fa>",[52,53],"\u003Ccode>400\u003C\u002Fcode>","Dados inválidos ou regra de negócio não atendida. A mensagem em \u003Ccode>errors\u003C\u002Fcode> diz o motivo, como \"Pedido não encontrado\" ou \"Chave de integração inválida\"",[55,56],"\u003Ccode>401\u003C\u002Fcode>","Token ausente, inválido, expirado ou enviado com \u003Ccode>Bearer\u003C\u002Fcode>. Veja \u003Ca href=\"\u002Fapi\u002Fautenticacao\u002F#erros-comuns\">Autenticação\u003C\u002Fa>",[58,59],"\u003Ccode>404\u003C\u002Fcode>","Rota inexistente, com a resposta sem corpo. Confira a versão e o nome do recurso, que é sempre no singular: \u003Ccode>\u002Fv1\u002Fempresa\u003C\u002Fcode>, não \u003Ccode>\u002Fv1\u002Fempresas\u003C\u002Fcode>",[61,62],"\u003Ccode>415\u003C\u002Fcode>","Na geração do token, corpo enviado sem o header \u003Ccode>Content-Type: application\u002Fjson\u003C\u002Fcode>. A resposta vem sem corpo",[64,65],"\u003Ccode>429\u003C\u002Fcode>","Limite de requisições do grupo atingido. Veja \u003Ca href=\"#limite-de-requisicoes\">Limite de requisições\u003C\u002Fa>",[67,68],"\u003Ccode>500\u003C\u002Fcode>","Erro inesperado do nosso lado. Tente de novo e, se persistir, fale com o suporte informando o \u003Ccode>sessionGuid\u003C\u002Fcode>",[70,71],"\u003Ccode>502\u003C\u002Fcode>, \u003Ccode>504\u003C\u002Fcode>","Vêm do gateway, quando a API está fora do ar ou não responde a tempo (o gateway espera até 29 segundos). Tente de novo e, se persistir, fale com o suporte",{"type":18,"text":73},"Limite de requisições",{"type":21,"html":75},"Cada grupo pode fazer até \u003Cstrong>100 requisições de uma vez\u003C\u002Fstrong> e, depois disso, cerca de \u003Cstrong>100 por minuto\u003C\u002Fstrong>, somando todas as integrações do grupo.",{"type":21,"html":77},"O limite funciona como um balde de fichas:",{"type":79,"items":80},"list",[81,82,83],"O balde de cada grupo comporta 100 fichas, e cada requisição à API gasta uma.","A cada 3 segundos, o balde recebe 5 fichas de volta, até o máximo de 100.","Na prática, você pode fazer uma rajada de até 100 requisições e depois manter cerca de 100 por minuto.",{"type":21,"html":85},"Quando o balde esvazia, a API responde \u003Ccode>429\u003C\u002Fcode> com o header \u003Ccode>Retry-After\u003C\u002Fcode>, que diz quantos segundos esperar. A mensagem do erro traz o mesmo número:",{"type":24,"tabs":87},[88],{"label":27,"language":28,"code":89},"{\n  \"errors\": [\n    { \"errorMessage\": \"Limite de requisições do plano atingido. Tente novamente em 3 segundos.\" }\n  ],\n  \"sessionGuid\": \"b28a419684c1432f23b6fddb3d748c51\"\n}",{"type":18,"level":91,"text":92},3,"O que gasta ficha",{"type":79,"items":94},[95,96],"As chamadas aos recursos da API (\u003Ccode>GET \u002Fv1\u002Fempresa\u003C\u002Fcode> e \u003Ccode>GET \u002Fv1\u002Fpedido\u002F{id}\u002Faberto\u003C\u002Fcode>) de todas as integrações do grupo, inclusive as que terminam em \u003Ccode>400\u003C\u002Fcode>.","O botão \u003Cstrong>Testar\u003C\u002Fstrong> dos \u003Ca href=\"\u002Fapi\u002Freferencia\u002F\">endpoints\u003C\u002Fa>: ele faz chamadas reais com o seu token e gasta fichas do mesmo balde.",{"type":18,"level":91,"text":98},"O que não gasta ficha",{"type":79,"items":100},[101,102,103],"Chamadas recusadas com \u003Ccode>401\u003C\u002Fcode>.","Chamadas a rotas inexistentes (\u003Ccode>404\u003C\u002Fcode>).","A geração do token (\u003Ccode>POST \u002Fauth\u002Fintegracao\u003C\u002Fcode>), que é feita em outro serviço.",{"type":18,"level":91,"text":105},"Como tratar o 429",{"type":79,"items":107},[108,109,110,111],"Espere os segundos do \u003Ccode>Retry-After\u003C\u002Fcode> antes de tentar de novo.","Em processamentos em lote, espace as chamadas em vez de disparar todas de uma vez: o balde repõe 5 fichas a cada 3 segundos.","Lembre que o balde é do grupo: outra integração do mesmo grupo pode estar gastando fichas ao mesmo tempo.","Se chamar a API do navegador, o seu código não consegue ler o header \u003Ccode>Retry-After\u003C\u002Fcode>, porque o CORS da API não o expõe. Use os segundos da mensagem do erro.",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":113},"\u003Cpath fill=\"currentColor\" d=\"M11 9h2V7h-2m1 13c-4.41 0-8-3.59-8-8s3.59-8 8-8s8 3.59 8 8s-3.59 8-8 8m0-18A10 10 0 0 0 2 12a10 10 0 0 0 10 10a10 10 0 0 0 10-10A10 10 0 0 0 12 2m-1 15h2v-6h-2z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":115},"\u003Cpath fill=\"currentColor\" d=\"M20 11v2H8l5.5 5.5l-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5L8 11z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":117},"\u003Cpath fill=\"currentColor\" d=\"M5 3c-1.11 0-2 .89-2 2v14c0 1.11.89 2 2 2h14c1.11 0 2-.89 2-2V5c0-1.11-.89-2-2-2zm0 2h14v14H5zm2 2v2h10V7zm0 4v2h10v-2zm0 4v2h7v-2z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":119},"\u003Cpath fill=\"currentColor\" d=\"M8.59 16.58L13.17 12L8.59 7.41L10 6l6 6l-6 6z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":121},"\u003Cpath fill=\"currentColor\" d=\"M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":123},"\u003Cpath fill=\"currentColor\" d=\"M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10s10-4.5 10-10S17.5 2 12 2m-2 15l-5-5l1.41-1.41L10 14.17l7.59-7.59L19 8z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":125},"\u003Cpath fill=\"currentColor\" d=\"M4 11v2h12l-5.5 5.5l1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5L16 11z\"\u002F>",1793977941572]