[{"data":1,"prerenderedAt":2342},["ShallowReactive",2],{"docs-pages-meta":3,"i-lucide:menu":159,"i-fa6-solid:book":164,"i-fa6-solid:signs-post":168,"i-lucide:search":170,"i-lucide:languages":172,"i-lucide:chevron-down":174,"i-lucide:moon":176,"i-fa6-solid:rocket":178,"i-lucide:sparkles":180,"i-lucide:badge-check":182,"i-lucide:star":184,"i-fa6-solid:qrcode":186,"i-fa6-solid:cube":188,"i-lucide:bot":190,"i-lucide:webhook":192,"i-fa6-brands:wordpress":194,"i-fa6-solid:envelope":196,"i-fa6-solid:code":198,"i-fa6-solid:key":201,"i-lucide:shield":203,"docs-page:\u002Fpt-BR\u002Foauth":205,"i-fa6-solid:triangle-exclamation":2329,"i-fa6-solid:circle-exclamation":2331,"i-lucide:copy":2333,"i-fa6-solid:circle-info":2335,"i-fa6-solid:lightbulb":2337,"i-lucide:chevron-left":2340},[4,9,14,19,22,27,30,35,38,42,47,52,56,61,66,71,76,81,86,89,93,97,100,103,107,110,114,117,121,125,129,133,137,141,144,148,152,156],{"path":5,"title":6,"description":7,"icon":8},"\u002Fen\u002Fapi-reference\u002Fv2\u002Fauthentication","Authentication","Learn how to generate and manage your access credentials to use the API securely.","key",{"path":10,"title":11,"description":12,"icon":13},"\u002Fen\u002Fapi-reference\u002Fv2","Introduction","The v2 API: connections, chats, messages and templates.","sparkles",{"path":15,"title":16,"description":17,"icon":18},"\u002Fen\u002Fapi-reference\u002Fv2\u002Fwebhooks","Webhooks","In this section, you’ll learn how to integrate and use webhooks and messaging events to connect your application to your projects.","webhook",{"path":20,"title":6,"description":21,"icon":8},"\u002Fen\u002Fapi-reference\u002Fv3\u002Fauthentication","How a v3 request proves who it is, and which workspace it acts on.",{"path":23,"title":24,"description":25,"icon":26},"\u002Fen\u002Fapi-reference\u002Fv3\u002Fconventions","Conventions","Pagination, errors, ids and dates — the rules every v3 endpoint follows.","list-check",{"path":28,"title":11,"description":29,"icon":13},"\u002Fen\u002Fapi-reference\u002Fv3","The v3 API: workspaces, connections, campaigns and the helpdesk.",{"path":31,"title":32,"description":33,"icon":34},"\u002Fen\u002Fapi-reference\u002Fv3\u002Frealtime","Realtime","The websocket behind the shared inbox: live conversations, typing and presence.","tower-broadcast",{"path":36,"title":16,"description":37,"icon":18},"\u002Fen\u002Fapi-reference\u002Fv3\u002Fwebhooks","Receive WhatsApp and helpdesk events on your own server, and prove they came from us.",{"path":39,"title":40,"description":41,"icon":8},"\u002Fen\u002Fapikeys","API Keys","Understand what API Keys are and why they are required to use Pingo Notify securely.",{"path":43,"title":44,"description":45,"icon":46},"\u002Fen\u002Fconnections","Connections","Connections represent WhatsApp sessions linked to Pingo Notify, used for sending, receiving, and integrations.","qrcode",{"path":48,"title":49,"description":50,"icon":51},"\u002Fen\u002Fhooks-and-development","Hooks and Development","Extend the Pingo Notify WordPress plugin with custom triggers, groups, and hooks.","code",{"path":53,"title":54,"description":55,"icon":13},"\u002Fen","Introduction to Pingo Notify","Connect WhatsApp to your systems, automate workflows, and send messages.",{"path":57,"title":58,"description":59,"icon":60},"\u002Fen\u002Fintegrations","Integrations","Integrations represent external applications linked to Pingo Notify, authorized to access resources such as connections, plans, and messaging.","cube",{"path":62,"title":63,"description":64,"icon":65},"\u002Fen\u002Fmcp","MCP server","Connect an AI assistant to your workspace — how to authorize it, what it can do, and every tool it gets.","robot",{"path":67,"title":68,"description":69,"icon":70},"\u002Fen\u002Foauth","OAuth 2.1","How an application gets a token on behalf of a person, what that token can do, and every error it can get back.","shield",{"path":72,"title":73,"description":74,"icon":75},"\u002Fen\u002Fofficial-whatsapp-api","Official WhatsApp API","Step-by-step guide to request access to the Official WhatsApp Business API and connect it to Pingo Notify.","badge-check",{"path":77,"title":78,"description":79,"icon":80},"\u002Fen\u002Fplugin-wordpress","Get started","WordPress plugin that connects events from your site to Pingo Notify for automatic notification delivery.","wordpress",{"path":82,"title":83,"description":84,"icon":85},"\u002Fen\u002Ftemplate-plugins","Templates Guide","Learn how to create custom dynamic messages.","square-envelope",{"path":87,"title":16,"description":88,"icon":18},"\u002Fen\u002Fwebhooks","Receive WhatsApp events in real time by linking webhooks to one or more connections in Pingo Notify.",{"path":90,"title":91,"description":92,"icon":8},"\u002Fpt-BR\u002Fapi-reference\u002Fv2\u002Fauthentication","Autenticação","Veja como gerar e gerenciar suas credenciais de acesso para utilizar a API com segurança.",{"path":94,"title":95,"description":96,"icon":13},"\u002Fpt-BR\u002Fapi-reference\u002Fv2","Introdução","A API v2: conexões, conversas, mensagens e templates.",{"path":98,"title":16,"description":99,"icon":18},"\u002Fpt-BR\u002Fapi-reference\u002Fv2\u002Fwebhooks","Nesta seção, você aprende como integrar e utilizar webhooks e eventos de mensageria para conectar a aplicação aos seus projetos.",{"path":101,"title":91,"description":102,"icon":8},"\u002Fpt-BR\u002Fapi-reference\u002Fv3\u002Fauthentication","Como uma requisição v3 prova quem é, e em qual workspace ela atua.",{"path":104,"title":105,"description":106,"icon":26},"\u002Fpt-BR\u002Fapi-reference\u002Fv3\u002Fconventions","Convenções","Paginação, erros, ids e datas — as regras que todo endpoint da v3 segue.",{"path":108,"title":95,"description":109,"icon":13},"\u002Fpt-BR\u002Fapi-reference\u002Fv3","A API v3: workspaces, conexões, campanhas e o helpdesk.",{"path":111,"title":112,"description":113,"icon":34},"\u002Fpt-BR\u002Fapi-reference\u002Fv3\u002Frealtime","Tempo real","O websocket por trás da caixa compartilhada: conversas ao vivo, digitação e presença.",{"path":115,"title":16,"description":116,"icon":18},"\u002Fpt-BR\u002Fapi-reference\u002Fv3\u002Fwebhooks","Receba eventos do WhatsApp e do helpdesk no seu servidor, e prove que vieram de nós.",{"path":118,"title":119,"description":120,"icon":8},"\u002Fpt-BR\u002Fapikeys","Chaves de API","Entenda o que são Chaves de API e por que elas são necessárias para usar o Pingo Notify com segurança.",{"path":122,"title":123,"description":124,"icon":46},"\u002Fpt-BR\u002Fconnections","Conexões","Conexões representam sessões do WhatsApp vinculadas ao Pingo Notify, usadas para envio, recebimento e integrações.",{"path":126,"title":127,"description":128,"icon":51},"\u002Fpt-BR\u002Fhooks-and-development","Hooks e Desenvolvimento","Estenda o plugin WordPress do Pingo Notify com gatilhos, grupos e hooks personalizados.",{"path":130,"title":131,"description":132,"icon":13},"\u002Fpt-BR","Introdução ao Pingo Notify","Conecte o WhatsApp aos seus sistemas, automatize fluxos e envie mensagens.",{"path":134,"title":135,"description":136,"icon":60},"\u002Fpt-BR\u002Fintegrations","Integrações","Integrações representam aplicações externas vinculadas ao Pingo Notify, autorizadas a acessar recursos como conexões, planos e mensageria.",{"path":138,"title":139,"description":140,"icon":65},"\u002Fpt-BR\u002Fmcp","Servidor MCP","Conecte um assistente de IA ao seu workspace — como autorizar, o que ele pode fazer e todas as ferramentas que recebe.",{"path":142,"title":68,"description":143,"icon":70},"\u002Fpt-BR\u002Foauth","Como uma aplicação obtém um token em nome de uma pessoa, o que esse token pode fazer e todos os erros que ele pode receber.",{"path":145,"title":146,"description":147,"icon":75},"\u002Fpt-BR\u002Fofficial-whatsapp-api","API Oficial do WhatsApp","Guia passo a passo para solicitar acesso à API Oficial do WhatsApp Business e conectá-la ao Pingo Notify.",{"path":149,"title":150,"description":151,"icon":80},"\u002Fpt-BR\u002Fplugin-wordpress","Primeiros passos","Plugin WordPress que conecta eventos do seu site ao Pingo Notify para envio automático de notificações.",{"path":153,"title":154,"description":155,"icon":85},"\u002Fpt-BR\u002Ftemplate-plugins","Guia de Templates","Aprenda a criar mensagens dinâmicas personalizadas.",{"path":157,"title":16,"description":158,"icon":18},"\u002Fpt-BR\u002Fwebhooks","Receba eventos do WhatsApp em tempo real vinculando webhooks a uma ou mais conexões no Pingo Notify.",{"left":160,"top":160,"width":161,"height":161,"rotate":160,"vFlip":162,"hFlip":162,"body":163},0,24,false,"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 5h16M4 12h16M4 19h16\"\u002F>",{"left":160,"top":160,"width":165,"height":166,"rotate":160,"vFlip":162,"hFlip":162,"body":167},448,512,"\u003Cpath fill=\"currentColor\" d=\"M96 0C43 0 0 43 0 96v320c0 53 43 96 96 96h320c17.7 0 32-14.3 32-32s-14.3-32-32-32v-64c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32zm0 384h256v64H96c-17.7 0-32-14.3-32-32s14.3-32 32-32m32-240c0-8.8 7.2-16 16-16h192c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16m16 48h192c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16s7.2-16 16-16\"\u002F>",{"left":160,"top":160,"width":166,"height":166,"rotate":160,"vFlip":162,"hFlip":162,"body":169},"\u003Cpath fill=\"currentColor\" d=\"M224 32H64c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32h377.4c4.2 0 8.3-1.7 11.3-4.7l48-48c6.2-6.2 6.2-16.4 0-22.6l-48-48c-3-3-7.1-4.7-11.3-4.7H288c0-17.7-14.3-32-32-32s-32 14.3-32 32m256 224c0-17.7-14.3-32-32-32H288v-32h-64v32H70.6c-4.2 0-8.3 1.7-11.3 4.7l-48 48c-6.2 6.2-6.2 16.4 0 22.6l48 48c3 3 7.1 4.7 11.3 4.7H448c17.7 0 32-14.3 32-32zM288 480v-96h-64v96c0 17.7 14.3 32 32 32s32-14.3 32-32\"\u002F>",{"left":160,"top":160,"width":161,"height":161,"rotate":160,"vFlip":162,"hFlip":162,"body":171},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"m21 21l-4.34-4.34\"\u002F>\u003Ccircle cx=\"11\" cy=\"11\" r=\"8\"\u002F>\u003C\u002Fg>",{"left":160,"top":160,"width":161,"height":161,"rotate":160,"vFlip":162,"hFlip":162,"body":173},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m5 8l6 6m-7 0l6-6l2-3M2 5h12M7 2h1m14 20l-5-10l-5 10m2-4h6\"\u002F>",{"left":160,"top":160,"width":161,"height":161,"rotate":160,"vFlip":162,"hFlip":162,"body":175},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m6 9l6 6l6-6\"\u002F>",{"left":160,"top":160,"width":161,"height":161,"rotate":160,"vFlip":162,"hFlip":162,"body":177},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401\"\u002F>",{"left":160,"top":160,"width":166,"height":166,"rotate":160,"vFlip":162,"hFlip":162,"body":179},"\u003Cpath fill=\"currentColor\" d=\"M156.6 384.9L125.7 354c-8.5-8.5-11.5-20.8-7.7-32.2c3-8.9 7-20.5 11.8-33.8H24c-8.6 0-16.6-4.6-20.9-12.1s-4.2-16.7.2-24.1l52.5-88.5c13-21.9 36.5-35.3 61.9-35.3H200c2.4-4 4.8-7.7 7.2-11.3C289.1-4.1 411.1-8.1 483.9 5.3c11.6 2.1 20.6 11.2 22.8 22.8c13.4 72.9 9.3 194.8-111.4 276.7c-3.5 2.4-7.3 4.8-11.3 7.2v82.3c0 25.4-13.4 49-35.3 61.9l-88.5 52.5c-7.4 4.4-16.6 4.5-24.1.2S224 496.7 224 488V380.8c-14.1 4.9-26.4 8.9-35.7 11.9c-11.2 3.6-23.4.5-31.8-7.8zM384 168a40 40 0 1 0 0-80a40 40 0 1 0 0 80\"\u002F>",{"left":160,"top":160,"width":161,"height":161,"rotate":160,"vFlip":162,"hFlip":162,"body":181},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594zM20 2v4m2-2h-4\"\u002F>\u003Ccircle cx=\"4\" cy=\"20\" r=\"2\"\u002F>\u003C\u002Fg>",{"left":160,"top":160,"width":161,"height":161,"rotate":160,"vFlip":162,"hFlip":162,"body":183},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M3.85 8.62a4 4 0 0 1 4.78-4.77a4 4 0 0 1 6.74 0a4 4 0 0 1 4.78 4.78a4 4 0 0 1 0 6.74a4 4 0 0 1-4.77 4.78a4 4 0 0 1-6.75 0a4 4 0 0 1-4.78-4.77a4 4 0 0 1 0-6.76\"\u002F>\u003Cpath d=\"m9 12l2 2l4-4\"\u002F>\u003C\u002Fg>",{"left":160,"top":160,"width":161,"height":161,"rotate":160,"vFlip":162,"hFlip":162,"body":185},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.12 2.12 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.12 2.12 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.12 2.12 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.12 2.12 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.12 2.12 0 0 0 1.597-1.16z\"\u002F>",{"left":160,"top":160,"width":165,"height":166,"rotate":160,"vFlip":162,"hFlip":162,"body":187},"\u003Cpath fill=\"currentColor\" d=\"M0 80c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48zm64 16v64h64V96zM0 336c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48zm64 16v64h64v-64zM304 32h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48h-96c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48m80 64h-64v64h64zM256 304c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s7.2-16 16-16s16 7.2 16 16v96c0 8.8-7.2 16-16 16h-64c-8.8 0-16-7.2-16-16s-7.2-16-16-16s-16 7.2-16 16v64c0 8.8-7.2 16-16 16h-32c-8.8 0-16-7.2-16-16zm112 176a16 16 0 1 1 0-32a16 16 0 1 1 0 32m64 0a16 16 0 1 1 0-32a16 16 0 1 1 0 32\"\u002F>",{"left":160,"top":160,"width":166,"height":166,"rotate":160,"vFlip":162,"hFlip":162,"body":189},"\u003Cpath fill=\"currentColor\" d=\"M234.5 5.7c13.9-5 29.1-5 43.1 0l192 68.6c25.4 9.1 42.4 33.2 42.4 60.3v242.9c0 27-17 51.2-42.5 60.3l-192 68.6c-13.9 5-29.1 5-43.1 0l-192-68.6C17 428.6 0 404.5 0 377.4V134.6c0-27 17-51.2 42.5-60.3zM256 66L82.3 128L256 190l173.7-62zm32 368.6l160-57.1v-188l-160 57.1z\"\u002F>",{"left":160,"top":160,"width":161,"height":161,"rotate":160,"vFlip":162,"hFlip":162,"body":191},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M12 8V4H8\"\u002F>\u003Crect width=\"16\" height=\"12\" x=\"4\" y=\"8\" rx=\"2\"\u002F>\u003Cpath d=\"M2 14h2m16 0h2m-7-1v2m-6-2v2\"\u002F>\u003C\u002Fg>",{"left":160,"top":160,"width":161,"height":161,"rotate":160,"vFlip":162,"hFlip":162,"body":193},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M18 16.98h-5.99c-1.1 0-1.95.94-2.48 1.9A4 4 0 0 1 2 17c.01-.7.2-1.4.57-2\"\u002F>\u003Cpath d=\"m6 17l3.13-5.78c.53-.97.1-2.18-.5-3.1a4 4 0 1 1 6.89-4.06\"\u002F>\u003Cpath d=\"m12 6l3.13 5.73C15.66 12.7 16.9 13 18 13a4 4 0 0 1 0 8\"\u002F>\u003C\u002Fg>",{"left":160,"top":160,"width":166,"height":166,"rotate":160,"vFlip":162,"hFlip":162,"body":195},"\u003Cpath fill=\"currentColor\" d=\"m61.7 169.4l101.5 278C92.2 413 43.3 340.2 43.3 256c0-30.9 6.6-60.1 18.4-86.6m337.9 75.9c0-26.3-9.4-44.5-17.5-58.7c-10.8-17.5-20.9-32.4-20.9-49.9c0-19.6 14.8-37.8 35.7-37.8c.9 0 1.8.1 2.8.2c-37.9-34.7-88.3-55.9-143.7-55.9c-74.3 0-139.7 38.1-177.8 95.9c5 .2 9.7.3 13.7.3c22.2 0 56.7-2.7 56.7-2.7c11.5-.7 12.8 16.2 1.4 17.5c0 0-11.5 1.3-24.3 2l77.5 230.4L249.8 247l-33.1-90.8c-11.5-.7-22.3-2-22.3-2c-11.5-.7-10.1-18.2 1.3-17.5c0 0 35.1 2.7 56 2.7c22.2 0 56.7-2.7 56.7-2.7c11.5-.7 12.8 16.2 1.4 17.5c0 0-11.5 1.3-24.3 2l76.9 228.7l21.2-70.9c9-29.4 16-50.5 16-68.7m-139.9 29.3l-63.8 185.5c19.1 5.6 39.2 8.7 60.1 8.7c24.8 0 48.5-4.3 70.6-12.1c-.6-.9-1.1-1.9-1.5-2.9zm183-120.7c.9 6.8 1.4 14 1.4 21.9c0 21.6-4 45.8-16.2 76.2l-65 187.9C426.2 403 468.7 334.5 468.7 256c0-37-9.4-71.8-26-102.1M504 256c0 136.8-111.3 248-248 248C119.2 504 8 392.7 8 256C8 119.2 119.2 8 256 8c136.7 0 248 111.2 248 248m-11.4 0c0-130.5-106.2-236.6-236.6-236.6C125.5 19.4 19.4 125.5 19.4 256S125.6 492.6 256 492.6c130.5 0 236.6-106.1 236.6-236.6\"\u002F>",{"left":160,"top":160,"width":166,"height":166,"rotate":160,"vFlip":162,"hFlip":162,"body":197},"\u003Cpath fill=\"currentColor\" d=\"M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4l217.6 163.2c11.4 8.5 27 8.5 38.4 0l217.6-163.2c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48zM0 176v208c0 35.3 28.7 64 64 64h384c35.3 0 64-28.7 64-64V176L294.4 339.2a63.9 63.9 0 0 1-76.8 0z\"\u002F>",{"left":160,"top":160,"width":199,"height":166,"rotate":160,"vFlip":162,"hFlip":162,"body":200},640,"\u003Cpath fill=\"currentColor\" d=\"M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6m80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3l89.3 89.4l-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3\"\u002F>",{"left":160,"top":160,"width":166,"height":166,"rotate":160,"vFlip":162,"hFlip":162,"body":202},"\u003Cpath fill=\"currentColor\" d=\"M336 352c97.2 0 176-78.8 176-176S433.2 0 336 0S160 78.8 160 176c0 18.7 2.9 36.8 8.3 53.7L7 391c-4.5 4.5-7 10.6-7 17v80c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24v-40h40c13.3 0 24-10.7 24-24v-40h40c6.4 0 12.5-2.5 17-7l33.3-33.3c16.9 5.4 35 8.3 53.7 8.3m40-256a40 40 0 1 1 0 80a40 40 0 1 1 0-80\"\u002F>",{"left":160,"top":160,"width":161,"height":161,"rotate":160,"vFlip":162,"hFlip":162,"body":204},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\"\u002F>",{"id":206,"title":68,"body":207,"description":143,"extension":2323,"hidden":162,"icon":70,"meta":2324,"navigation":2325,"path":142,"seo":2326,"stem":2327,"__hash__":2328},"docs\u002Fpt-BR\u002Foauth.md",{"type":208,"value":209,"toc":2302},"minimark",[210,219,224,334,337,341,364,367,371,389,477,661,796,802,842,847,853,862,1011,1018,1031,1054,1058,1068,1138,1207,1218,1225,1229,1250,1253,1299,1311,1315,1365,1372,1385,1404,1408,1415,1562,1565,1577,1581,1584,1594,1598,1653,1664,1667,1671,1674,1679,1689,1911,1917,1932,1940,1974,1979,1983,2035,2048,2076,2083,2105,2109,2191,2228,2232,2235,2285,2298],[211,212,213,214,218],"p",{},"O Pingo Notify roda o próprio servidor de autorização OAuth 2.1. É dele que sai a credencial de software que age ",[215,216,217],"strong",{},"em nome de uma pessoa"," — um assistente de IA, uma integração de terceiro, qualquer coisa a que você prefira não entregar um token de API.",[220,221,223],"h2",{"id":222},"qual-credencial-usar","Qual credencial usar",[225,226,227,242],"table",{},[228,229,230],"thead",{},[231,232,233,236,239],"tr",{},[234,235],"th",{},[234,237,238],{},"Token de API",[234,240,241],{},"Token OAuth 2.1",[243,244,245,261,272,293,304,315],"tbody",{},[231,246,247,251,256],{},[248,249,250],"td",{},"Enviado como",[248,252,253],{},[51,254,255],{},"apikey: sk_live_…",[248,257,258],{},[51,259,260],{},"Authorization: Bearer …",[231,262,263,266,269],{},[248,264,265],{},"Identidade",[248,267,268],{},"o membro que o criou",[248,270,271],{},"a pessoa que aprovou a tela de consentimento",[231,273,274,277,284],{},[248,275,276],{},"Workspace",[248,278,279,280,283],{},"o do próprio token; ",[51,281,282],{},"X-Account-Id"," troca",[248,285,286,287,289,290],{},"fixado no consentimento; ",[51,288,282],{}," é ",[215,291,292],{},"recusado",[231,294,295,298,301],{},[248,296,297],{},"Permissões",[248,299,300],{},"tudo que o criador pode fazer",[248,302,303],{},"só os escopos aprovados, cruzados com o papel daquela pessoa",[231,305,306,309,312],{},[248,307,308],{},"Validade",[248,310,311],{},"não expira — revogado à mão",[248,313,314],{},"1 hora, renovado por refresh token",[231,316,317,320,327],{},[248,318,319],{},"Serve para",[248,321,322,323,326],{},"o ",[215,324,325],{},"seu próprio"," backend",[248,328,329,330,333],{},"software que ",[215,331,332],{},"não é seu",", ou que muita gente instala",[211,335,336],{},"Nunca envie os dois headers. Num endpoint que espera um, o outro é ignorado, não somado.",[220,338,340],{"id":339},"o-fluxo","O fluxo",[211,342,343,344,347,348,351,352,355,356,359,360,363],{},"Cinco chamadas. ",[215,345,346],{},"1"," e ",[215,349,350],{},"2"," acontecem uma vez por aplicação, ",[215,353,354],{},"3"," uma vez por pessoa que autoriza, ",[215,357,358],{},"4"," em toda requisição, ",[215,361,362],{},"5"," mais ou menos a cada hora.",[365,366],"oauth-flow",{},[220,368,370],{"id":369},"_1-registre-o-cliente","1 — Registre o cliente",[211,372,373,376,377,384,385,388],{},[51,374,375],{},"POST \u002Fv3\u002Foauth\u002Fregister"," (",[378,379,383],"a",{"href":380,"rel":381},"https:\u002F\u002Fwww.rfc-editor.org\u002Frfc\u002Frfc7591",[382],"nofollow","RFC 7591","). Aberto, sem credencial, responde ",[215,386,387],{},"201",".",[390,391,396],"pre",{"className":392,"code":393,"language":394,"meta":395,"style":395},"language-bash shiki shiki-themes github-light github-dark","curl -X POST https:\u002F\u002Fapi.pingonotify.com\u002Fv3\u002Foauth\u002Fregister \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"client_name\": \"Assistente da Acme\",\n    \"redirect_uris\": [\"https:\u002F\u002Facme.example\u002Foauth\u002Fcallback\"],\n    \"token_endpoint_auth_method\": \"none\",\n    \"grant_types\": [\"authorization_code\", \"refresh_token\"],\n    \"scope\": \"profile connections:read messages:send\"\n  }'\n","bash","",[51,397,398,421,432,441,447,453,459,465,471],{"__ignoreMap":395},[399,400,403,407,411,415,418],"span",{"class":401,"line":402},"line",1,[399,404,406],{"class":405},"sScJk","curl",[399,408,410],{"class":409},"sj4cs"," -X",[399,412,414],{"class":413},"sZZnC"," POST",[399,416,417],{"class":413}," https:\u002F\u002Fapi.pingonotify.com\u002Fv3\u002Foauth\u002Fregister",[399,419,420],{"class":409}," \\\n",[399,422,424,427,430],{"class":401,"line":423},2,[399,425,426],{"class":409},"  -H",[399,428,429],{"class":413}," \"Content-Type: application\u002Fjson\"",[399,431,420],{"class":409},[399,433,435,438],{"class":401,"line":434},3,[399,436,437],{"class":409},"  -d",[399,439,440],{"class":413}," '{\n",[399,442,444],{"class":401,"line":443},4,[399,445,446],{"class":413},"    \"client_name\": \"Assistente da Acme\",\n",[399,448,450],{"class":401,"line":449},5,[399,451,452],{"class":413},"    \"redirect_uris\": [\"https:\u002F\u002Facme.example\u002Foauth\u002Fcallback\"],\n",[399,454,456],{"class":401,"line":455},6,[399,457,458],{"class":413},"    \"token_endpoint_auth_method\": \"none\",\n",[399,460,462],{"class":401,"line":461},7,[399,463,464],{"class":413},"    \"grant_types\": [\"authorization_code\", \"refresh_token\"],\n",[399,466,468],{"class":401,"line":467},8,[399,469,470],{"class":413},"    \"scope\": \"profile connections:read messages:send\"\n",[399,472,474],{"class":401,"line":473},9,[399,475,476],{"class":413},"  }'\n",[225,478,479,492],{},[228,480,481],{},[231,482,483,486,489],{},[234,484,485],{},"Campo",[234,487,488],{},"Obrigatório",[234,490,491],{},"Valor",[243,493,494,536,554,566,578,590,610,624,646],{},[231,495,496,501,506],{},[248,497,498],{},[51,499,500],{},"redirect_uris",[248,502,503],{},[215,504,505],{},"sim",[248,507,508,509,512,513,516,517,520,521,524,525,524,528,531,532,535],{},"de 1 a 10 URIs, casadas exatamente no ",[51,510,511],{},"\u002Fauthorize",". Absolutas, sem fragmento, sem credenciais. ",[51,514,515],{},"https"," sempre; ",[51,518,519],{},"http"," só em loopback (",[51,522,523],{},"localhost",", ",[51,526,527],{},"127.0.0.1",[51,529,530],{},"[::1]","); esquema de app nativo vale se tiver ponto (",[51,533,534],{},"com.acme.app:\u002Foauth",")",[231,537,538,543,546],{},[248,539,540],{},[51,541,542],{},"client_name",[248,544,545],{},"não",[248,547,548,549,553],{},"Aparece na tela de consentimento, até 255 caracteres. Omita e o seu app aparece como ",[550,551,552],"em",{},"Aplicativo sem nome"," — mande sempre",[231,555,556,561,563],{},[248,557,558],{},[51,559,560],{},"client_uri",[248,562,545],{},[248,564,565],{},"Aparece na tela de consentimento como o site do app",[231,567,568,573,575],{},[248,569,570],{},[51,571,572],{},"logo_uri",[248,574,545],{},[248,576,577],{},"URL de imagem. É o rosto do app na tela de consentimento",[231,579,580,585,587],{},[248,581,582],{},[51,583,584],{},"scope",[248,586,545],{},[248,588,589],{},"Teto de escopos deste cliente, separados por espaço. Omitido concede todos os pedíveis",[231,591,592,597,599],{},[248,593,594],{},[51,595,596],{},"grant_types",[248,598,545],{},[248,600,601,524,604,607,608],{},[51,602,603],{},"authorization_code",[51,605,606],{},"refresh_token",". Omitido significa só ",[51,609,603],{},[231,611,612,617,619],{},[248,613,614],{},[51,615,616],{},"response_types",[248,618,545],{},[248,620,621,623],{},[51,622,51],{}," é o único valor aceito",[231,625,626,631,633],{},[248,627,628],{},[51,629,630],{},"token_endpoint_auth_method",[248,632,545],{},[248,634,635,524,638,641,642,645],{},[51,636,637],{},"none",[51,639,640],{},"client_secret_basic"," ou ",[51,643,644],{},"client_secret_post",". Omitido cria cliente confidencial",[231,647,648,656,658],{},[248,649,650,524,653],{},[51,651,652],{},"software_id",[51,654,655],{},"software_version",[248,657,545],{},[248,659,660],{},"Aceitos e validados, depois ignorados: não são gravados nem devolvidos",[390,662,666],{"className":663,"code":664,"language":665,"meta":395,"style":395},"language-json shiki shiki-themes github-light github-dark","{\n  \"client_id\": \"xf3K9…\",\n  \"client_id_issued_at\": 1780000000,\n  \"client_secret_expires_at\": 0,\n  \"client_name\": \"Assistente da Acme\",\n  \"redirect_uris\": [\"https:\u002F\u002Facme.example\u002Foauth\u002Fcallback\"],\n  \"grant_types\": [\"authorization_code\", \"refresh_token\"],\n  \"response_types\": [\"code\"],\n  \"token_endpoint_auth_method\": \"none\",\n  \"scope\": \"profile connections:read messages:send\"\n}\n","json",[51,667,668,674,688,700,712,724,738,755,767,779,790],{"__ignoreMap":395},[399,669,670],{"class":401,"line":402},[399,671,673],{"class":672},"sVt8B","{\n",[399,675,676,679,682,685],{"class":401,"line":423},[399,677,678],{"class":409},"  \"client_id\"",[399,680,681],{"class":672},": ",[399,683,684],{"class":413},"\"xf3K9…\"",[399,686,687],{"class":672},",\n",[399,689,690,693,695,698],{"class":401,"line":434},[399,691,692],{"class":409},"  \"client_id_issued_at\"",[399,694,681],{"class":672},[399,696,697],{"class":409},"1780000000",[399,699,687],{"class":672},[399,701,702,705,707,710],{"class":401,"line":443},[399,703,704],{"class":409},"  \"client_secret_expires_at\"",[399,706,681],{"class":672},[399,708,709],{"class":409},"0",[399,711,687],{"class":672},[399,713,714,717,719,722],{"class":401,"line":449},[399,715,716],{"class":409},"  \"client_name\"",[399,718,681],{"class":672},[399,720,721],{"class":413},"\"Assistente da Acme\"",[399,723,687],{"class":672},[399,725,726,729,732,735],{"class":401,"line":455},[399,727,728],{"class":409},"  \"redirect_uris\"",[399,730,731],{"class":672},": [",[399,733,734],{"class":413},"\"https:\u002F\u002Facme.example\u002Foauth\u002Fcallback\"",[399,736,737],{"class":672},"],\n",[399,739,740,743,745,748,750,753],{"class":401,"line":461},[399,741,742],{"class":409},"  \"grant_types\"",[399,744,731],{"class":672},[399,746,747],{"class":413},"\"authorization_code\"",[399,749,524],{"class":672},[399,751,752],{"class":413},"\"refresh_token\"",[399,754,737],{"class":672},[399,756,757,760,762,765],{"class":401,"line":467},[399,758,759],{"class":409},"  \"response_types\"",[399,761,731],{"class":672},[399,763,764],{"class":413},"\"code\"",[399,766,737],{"class":672},[399,768,769,772,774,777],{"class":401,"line":473},[399,770,771],{"class":409},"  \"token_endpoint_auth_method\"",[399,773,681],{"class":672},[399,775,776],{"class":413},"\"none\"",[399,778,687],{"class":672},[399,780,782,785,787],{"class":401,"line":781},10,[399,783,784],{"class":409},"  \"scope\"",[399,786,681],{"class":672},[399,788,789],{"class":413},"\"profile connections:read messages:send\"\n",[399,791,793],{"class":401,"line":792},11,[399,794,795],{"class":672},"}\n",[211,797,798,801],{},[51,799,800],{},"client_secret"," só aparece para cliente confidencial, e só nesta resposta.",[803,804,805,810],"warning",{},[211,806,807],{},[215,808,809],{},"Duas omissões custam uma tarde cada.",[811,812,813,827],"ul",{},[814,815,816,817,819,820,822,823,826],"li",{},"Deixe ",[51,818,596],{}," de fora e o cliente fica só com ",[51,821,603],{}," — ",[215,824,825],{},"nenhum refresh token é emitido",", e a sua integração morre uma hora depois precisando de gente.",[814,828,816,829,831,832,835,836,838,839,841],{},[51,830,630],{}," de fora e você recebe um cliente ",[215,833,834],{},"confidencial",", com um ",[51,837,800],{}," mostrado uma única vez e que passa a ser exigido em toda chamada de token. Mande ",[51,840,776],{}," para ser um cliente público, que se prova por PKCE.",[211,843,844,846],{},[51,845,584],{}," omitido concede ao cliente todos os escopos pedíveis. Registrar não é aprovar: um cliente registrado assim não tem dono nem workspace até que alguém o autorize.",[220,848,850,851],{"id":849},"_2-mande-a-pessoa-para-o-authorize","2 — Mande a pessoa para o ",[51,852,511],{},[211,854,855,858,859,388],{},[51,856,857],{},"GET \u002Fv3\u002Foauth\u002Fauthorize",", no navegador. Não é chamada de API — responde sempre ",[51,860,861],{},"302",[225,863,864,875],{},[228,865,866],{},[231,867,868,871,873],{},[234,869,870],{},"Parâmetro",[234,872,488],{},[234,874,491],{},[243,876,877,891,903,916,931,950,964,977,993],{},[231,878,879,884,886],{},[248,880,881],{},[51,882,883],{},"response_type",[248,885,505],{},[248,887,888,890],{},[51,889,51],{}," — o único valor aceito",[231,892,893,898,900],{},[248,894,895],{},[51,896,897],{},"client_id",[248,899,505],{},[248,901,902],{},"vindo do passo 1",[231,904,905,910,913],{},[248,906,907],{},[51,908,909],{},"redirect_uri",[248,911,912],{},"se o cliente registrou mais de uma",[248,914,915],{},"tem de casar exatamente com uma registrada",[231,917,918,923,925],{},[248,919,920],{},[51,921,922],{},"code_challenge",[248,924,505],{},[248,926,927,928],{},"base64url de ",[51,929,930],{},"SHA-256(code_verifier)",[231,932,933,938,940],{},[248,934,935],{},[51,936,937],{},"code_challenge_method",[248,939,505],{},[248,941,942,945,946,949],{},[51,943,944],{},"S256"," — explícito; ",[51,947,948],{},"plain"," não existe aqui",[231,951,952,956,958],{},[248,953,954],{},[51,955,584],{},[248,957,545],{},[248,959,960,961],{},"separados por espaço; o padrão é ",[51,962,963],{},"profile",[231,965,966,971,974],{},[248,967,968],{},[51,969,970],{},"state",[248,972,973],{},"recomendado",[248,975,976],{},"devolvido intacto",[231,978,979,984,986],{},[248,980,981],{},[51,982,983],{},"resource",[248,985,545],{},[248,987,988,989],{},"a URL exata para a qual o token vale — veja ",[378,990,992],{"href":991},"#4--chame-a-api","Audiência",[231,994,995,1000,1002],{},[248,996,997],{},[51,998,999],{},"prompt",[248,1001,545],{},[248,1003,1004,1007,1008,1010],{},[51,1005,1006],{},"consent"," força a tela; ",[51,1009,637],{}," proíbe qualquer interação",[211,1012,1013,1014,1017],{},"PKCE é obrigatório para ",[215,1015,1016],{},"todo"," cliente, inclusive os confidenciais.",[211,1019,1020,1021,1023,1024,524,1026,347,1028,388],{},"A pessoa entra na conta, escolhe um workspace e aprova. Aí o navegador cai na sua ",[51,1022,909],{}," com ",[51,1025,51],{},[51,1027,970],{},[51,1029,1030],{},"iss",[1032,1033,1034,1044],"note",{},[211,1035,1036,1039,1040,1043],{},[215,1037,1038],{},"Só um Owner ou um Admin pode autorizar uma aplicação para um workspace."," A tela oferece apenas os workspaces em que o papel da pessoa permite. Aprovar sem escolher um amarra o token à conta ",[215,1041,1042],{},"pessoal"," dela.",[211,1045,1046,1047,1050,1051,1053],{},"A pessoa pode aprovar ",[215,1048,1049],{},"menos"," escopos do que você pediu. Leia o ",[51,1052,584],{}," que volta no passo 3 — ele é a verdade; o seu pedido era um desejo.",[220,1055,1057],{"id":1056},"_3-troque-o-código","3 — Troque o código",[211,1059,1060,1063,1064,1067],{},[51,1061,1062],{},"POST \u002Fv3\u002Foauth\u002Ftoken",", em ",[51,1065,1066],{},"application\u002Fx-www-form-urlencoded"," ou JSON.",[390,1069,1071],{"className":392,"code":1070,"language":394,"meta":395,"style":395},"curl -X POST https:\u002F\u002Fapi.pingonotify.com\u002Fv3\u002Foauth\u002Ftoken \\\n  -H \"Content-Type: application\u002Fx-www-form-urlencoded\" \\\n  -d grant_type=authorization_code \\\n  -d code=aG9sYS4uLg \\\n  -d redirect_uri=https:\u002F\u002Facme.example\u002Foauth\u002Fcallback \\\n  -d client_id=xf3K9... \\\n  -d code_verifier=dBjftJeZ4CVP...\n",[51,1072,1073,1086,1095,1104,1113,1122,1131],{"__ignoreMap":395},[399,1074,1075,1077,1079,1081,1084],{"class":401,"line":402},[399,1076,406],{"class":405},[399,1078,410],{"class":409},[399,1080,414],{"class":413},[399,1082,1083],{"class":413}," https:\u002F\u002Fapi.pingonotify.com\u002Fv3\u002Foauth\u002Ftoken",[399,1085,420],{"class":409},[399,1087,1088,1090,1093],{"class":401,"line":423},[399,1089,426],{"class":409},[399,1091,1092],{"class":413}," \"Content-Type: application\u002Fx-www-form-urlencoded\"",[399,1094,420],{"class":409},[399,1096,1097,1099,1102],{"class":401,"line":434},[399,1098,437],{"class":409},[399,1100,1101],{"class":413}," grant_type=authorization_code",[399,1103,420],{"class":409},[399,1105,1106,1108,1111],{"class":401,"line":443},[399,1107,437],{"class":409},[399,1109,1110],{"class":413}," code=aG9sYS4uLg",[399,1112,420],{"class":409},[399,1114,1115,1117,1120],{"class":401,"line":449},[399,1116,437],{"class":409},[399,1118,1119],{"class":413}," redirect_uri=https:\u002F\u002Facme.example\u002Foauth\u002Fcallback",[399,1121,420],{"class":409},[399,1123,1124,1126,1129],{"class":401,"line":455},[399,1125,437],{"class":409},[399,1127,1128],{"class":413}," client_id=xf3K9...",[399,1130,420],{"class":409},[399,1132,1133,1135],{"class":401,"line":461},[399,1134,437],{"class":409},[399,1136,1137],{"class":413}," code_verifier=dBjftJeZ4CVP...\n",[390,1139,1141],{"className":663,"code":1140,"language":665,"meta":395,"style":395},"{\n  \"access_token\": \"eyJ…\",\n  \"token_type\": \"Bearer\",\n  \"expires_in\": 3600,\n  \"refresh_token\": \"8xLOxBt…\",\n  \"scope\": \"profile connections:read messages:send\"\n}\n",[51,1142,1143,1147,1159,1171,1183,1195,1203],{"__ignoreMap":395},[399,1144,1145],{"class":401,"line":402},[399,1146,673],{"class":672},[399,1148,1149,1152,1154,1157],{"class":401,"line":423},[399,1150,1151],{"class":409},"  \"access_token\"",[399,1153,681],{"class":672},[399,1155,1156],{"class":413},"\"eyJ…\"",[399,1158,687],{"class":672},[399,1160,1161,1164,1166,1169],{"class":401,"line":434},[399,1162,1163],{"class":409},"  \"token_type\"",[399,1165,681],{"class":672},[399,1167,1168],{"class":413},"\"Bearer\"",[399,1170,687],{"class":672},[399,1172,1173,1176,1178,1181],{"class":401,"line":443},[399,1174,1175],{"class":409},"  \"expires_in\"",[399,1177,681],{"class":672},[399,1179,1180],{"class":409},"3600",[399,1182,687],{"class":672},[399,1184,1185,1188,1190,1193],{"class":401,"line":449},[399,1186,1187],{"class":409},"  \"refresh_token\"",[399,1189,681],{"class":672},[399,1191,1192],{"class":413},"\"8xLOxBt…\"",[399,1194,687],{"class":672},[399,1196,1197,1199,1201],{"class":401,"line":455},[399,1198,784],{"class":409},[399,1200,681],{"class":672},[399,1202,789],{"class":413},[399,1204,1205],{"class":401,"line":461},[399,1206,795],{"class":672},[211,1208,1209,1211,1212,1214,1215,1217],{},[51,1210,606],{}," só aparece se o cliente registrou esse grant. Cliente público ",[215,1213,545],{}," manda ",[51,1216,800],{},"; confidencial manda, por HTTP Basic ou como campo do formulário.",[211,1219,1220,1221,1224],{},"O código vale ",[215,1222,1223],{},"60 segundos"," e uma vez só. Repetir o seu próprio código revoga a concessão inteira — isso é detecção de reuso, não defeito.",[220,1226,1228],{"id":1227},"_4-chame-a-api","4 — Chame a API",[390,1230,1232],{"className":392,"code":1231,"language":394,"meta":395,"style":395},"curl https:\u002F\u002Fapi.pingonotify.com\u002Fv3\u002Fconnections \\\n  -H \"Authorization: Bearer eyJ…\"\n",[51,1233,1234,1243],{"__ignoreMap":395},[399,1235,1236,1238,1241],{"class":401,"line":402},[399,1237,406],{"class":405},[399,1239,1240],{"class":413}," https:\u002F\u002Fapi.pingonotify.com\u002Fv3\u002Fconnections",[399,1242,420],{"class":409},[399,1244,1245,1247],{"class":401,"line":423},[399,1246,426],{"class":409},[399,1248,1249],{"class":413}," \"Authorization: Bearer eyJ…\"\n",[211,1251,1252],{},"Três regras que não têm equivalente do lado do token de API:",[811,1254,1255,1270,1280],{},[814,1256,1257,1260,1261,1263,1264],{},[215,1258,1259],{},"O workspace é fixo."," Mandar ",[51,1262,282],{}," de outro workspace responde ",[215,1265,1266,1267],{},"403 — ",[51,1268,1269],{},"This access token is bound to a different workspace; re-authorize to switch.",[814,1271,1272,1275,1276,1279],{},[215,1273,1274],{},"Escopo é teto, nunca concessão."," A permissão efetiva é a interseção entre os escopos aprovados e o que o papel daquela pessoa permite. Um token com ",[51,1277,1278],{},"helpdesk:write"," na mão de um Agent continua fazendo só o que um Agent faz.",[814,1281,1282,1287,1288,1291,1292,1295,1296,1298],{},[215,1283,1284,1286],{},[51,1285,983],{}," prende o token a um caminho."," Peça ",[51,1289,1290],{},"https:\u002F\u002Fapi.pingonotify.com\u002Fv3\u002Fmcp"," e o token é aceito sob ",[51,1293,1294],{},"\u002Fv3\u002Fmcp"," e responde 401 em todo o resto. Omita ",[51,1297,983],{}," e o token vale na API inteira. Peça o recurso que você de fato pretende chamar.",[211,1300,1301,1302,1307,1308],{},"Qualquer coisa que nenhum escopo cubra está fechada para token OAuth, e ela diz isso: ",[550,1303,1304],{},[51,1305,1306],{},"this operation is not available to OAuth clients",". A gestão de consentimento é o caso notável — nenhum escopo a alcança, então ",[215,1309,1310],{},"uma aplicação nunca consegue listar nem revogar o acesso de outra.",[220,1312,1314],{"id":1313},"_5-renove","5 — Renove",[390,1316,1318],{"className":392,"code":1317,"language":394,"meta":395,"style":395},"curl -X POST https:\u002F\u002Fapi.pingonotify.com\u002Fv3\u002Foauth\u002Ftoken \\\n  -H \"Content-Type: application\u002Fx-www-form-urlencoded\" \\\n  -d grant_type=refresh_token \\\n  -d refresh_token=8xLOxBt... \\\n  -d client_id=xf3K9...\n",[51,1319,1320,1332,1340,1349,1358],{"__ignoreMap":395},[399,1321,1322,1324,1326,1328,1330],{"class":401,"line":402},[399,1323,406],{"class":405},[399,1325,410],{"class":409},[399,1327,414],{"class":413},[399,1329,1083],{"class":413},[399,1331,420],{"class":409},[399,1333,1334,1336,1338],{"class":401,"line":423},[399,1335,426],{"class":409},[399,1337,1092],{"class":413},[399,1339,420],{"class":409},[399,1341,1342,1344,1347],{"class":401,"line":434},[399,1343,437],{"class":409},[399,1345,1346],{"class":413}," grant_type=refresh_token",[399,1348,420],{"class":409},[399,1350,1351,1353,1356],{"class":401,"line":443},[399,1352,437],{"class":409},[399,1354,1355],{"class":413}," refresh_token=8xLOxBt...",[399,1357,420],{"class":409},[399,1359,1360,1362],{"class":401,"line":449},[399,1361,437],{"class":409},[399,1363,1364],{"class":413}," client_id=xf3K9...\n",[211,1366,1367,1368,1371],{},"A resposta tem a mesma forma do passo 3, com um ",[215,1369,1370],{},"refresh token novo",". A rotação é obrigatória: o que você apresentou morre no instante em que o par novo é emitido. Guarde o novo antes de usar o access token novo.",[1373,1374,1375],"danger",{},[211,1376,1377,1380,1381,1384],{},[215,1378,1379],{},"Apresentar um refresh token duas vezes revoga a concessão inteira"," — todos os tokens que aquele cliente tem daquela pessoa naquele workspace, de uma vez, com ",[51,1382,1383],{},"invalid_grant",". É a defesa contra token roubado, e ela não consegue distinguir o seu laço de retry de um ladrão. Nunca renove de dois processos ao mesmo tempo, e nunca repita uma renovação cuja resposta você não leu.",[211,1386,1387,1388,1390,1391,1393,1394,1397,1398,641,1401,388],{},"Tanto ",[51,1389,584],{}," quanto ",[51,1392,983],{}," só podem ",[215,1395,1396],{},"estreitar"," na renovação. Pedir mais devolve ",[51,1399,1400],{},"invalid_scope",[51,1402,1403],{},"invalid_target",[220,1405,1407],{"id":1406},"escopos","Escopos",[211,1409,1410,1411,1414],{},"Doze escopos podem ser pedidos. O ",[51,1412,1413],{},"legacy"," existe, mas nenhum cliente pode pedi-lo — ele pertence à ponte do token de API da v1.",[225,1416,1417,1427],{},[228,1418,1419],{},[231,1420,1421,1424],{},[234,1422,1423],{},"Escopo",[234,1425,1426],{},"Concede",[243,1428,1429,1441,1451,1461,1473,1483,1493,1503,1513,1523,1532,1542,1552],{},[231,1430,1431,1435],{},[248,1432,1433],{},[51,1434,963],{},[248,1436,1437,1438,1440],{},"Quem autorizou e em qual workspace. É o padrão quando ",[51,1439,584],{}," é omitido",[231,1442,1443,1448],{},[248,1444,1445],{},[51,1446,1447],{},"connections:read",[248,1449,1450],{},"Ler conexões e o status delas",[231,1452,1453,1458],{},[248,1454,1455],{},[51,1456,1457],{},"connections:connect",[248,1459,1460],{},"Parear e desconectar um número (QR code e logout), sem poder criar nem apagar conexões",[231,1462,1463,1468],{},[248,1464,1465],{},[51,1466,1467],{},"connections:write",[248,1469,1470,1471],{},"Criar, editar, conectar e desconectar conexões. Também satisfaz ",[51,1472,1447],{},[231,1474,1475,1480],{},[248,1476,1477],{},[51,1478,1479],{},"messages:read",[248,1481,1482],{},"Ler o histórico de mensagens e baixar os anexos recebidos",[231,1484,1485,1490],{},[248,1486,1487],{},[51,1488,1489],{},"messages:send",[248,1491,1492],{},"Enviar mensagens: texto, mídia, áudio, figurinha, template, lista e botões",[231,1494,1495,1500],{},[248,1496,1497],{},[51,1498,1499],{},"contacts:read",[248,1501,1502],{},"Ler contatos",[231,1504,1505,1510],{},[248,1506,1507],{},[51,1508,1509],{},"contacts:write",[248,1511,1512],{},"Criar e editar contatos",[231,1514,1515,1520],{},[248,1516,1517],{},[51,1518,1519],{},"helpdesk:read",[248,1521,1522],{},"Ler conversas, contatos e configurações do helpdesk",[231,1524,1525,1529],{},[248,1526,1527],{},[51,1528,1278],{},[248,1530,1531],{},"Responder e gerenciar o helpdesk. Exige o plano PRO além do escopo",[231,1533,1534,1539],{},[248,1535,1536],{},[51,1537,1538],{},"webhooks:read",[248,1540,1541],{},"Ver webhooks e o histórico de entregas deles",[231,1543,1544,1549],{},[248,1545,1546],{},[51,1547,1548],{},"webhooks:write",[248,1550,1551],{},"Criar, editar e excluir webhooks, e ler o segredo de assinatura",[231,1553,1554,1559],{},[248,1555,1556],{},[51,1557,1558],{},"stats:read",[248,1560,1561],{},"Ver estatísticas do workspace",[211,1563,1564],{},"Peça o mínimo. Todo escopo a mais é uma linha na tela de consentimento que a pessoa pode recusar — e recusar estreita a aprovação inteira.",[1032,1566,1567],{},[211,1568,1569,1570,1573,1574,1576],{},"Se o seu aplicativo não funciona sem uma permissão específica, ela pode ser marcada como ",[215,1571,1572],{},"obrigatória",": a caixa aparece travada na tela, com o motivo, e a autorização é recusada se alguém tentar removê-la por baixo. Isso é configurado no cadastro do cliente, não no ",[51,1575,511],{}," — fale com o suporte para o seu caso.",[220,1578,1580],{"id":1579},"como-o-seu-app-aparece-na-tela","Como o seu app aparece na tela",[211,1582,1583],{},"O usuário vê o nome, o logo e o site que você registrou — e um aviso quando o\ncliente se registrou sozinho pelo endpoint dinâmico, dizendo que o nome exibido\nfoi escolhido pelo próprio app.",[211,1585,1586,1587,1590,1591,1593],{},"Aplicativos que o Pingo verificou exibem um selo ",[215,1588,1589],{},"Verificado pelo Pingo"," no\nlugar desse aviso. A verificação é concedida pela plataforma e confirma quem\npublica o aplicativo — ela ",[215,1592,545],{}," muda o que ele pode fazer nem pula o\nconsentimento: as permissões continuam sendo escolhidas pelo usuário, uma a uma.\nNão há como um aplicativo se autodeclarar verificado.",[220,1595,1597],{"id":1596},"revogando","Revogando",[225,1599,1600,1613],{},[228,1601,1602],{},[231,1603,1604,1607,1610],{},[234,1605,1606],{},"Objetivo",[234,1608,1609],{},"Chamada",[234,1611,1612],{},"Credencial",[243,1614,1615,1628,1641],{},[231,1616,1617,1620,1625],{},[248,1618,1619],{},"A aplicação descarta o próprio token",[248,1621,1622],{},[51,1623,1624],{},"POST \u002Fv3\u002Foauth\u002Frevoke",[248,1626,1627],{},"o próprio cliente",[231,1629,1630,1633,1638],{},[248,1631,1632],{},"O workspace lista quem tem acesso",[248,1634,1635],{},[51,1636,1637],{},"GET \u002Fv3\u002Foauth\u002Fconsents",[248,1639,1640],{},"token de API, ou o painel",[231,1642,1643,1646,1651],{},[248,1644,1645],{},"O workspace corta uma aplicação",[248,1647,1648],{},[51,1649,1650],{},"DELETE \u002Fv3\u002Foauth\u002Fconsents\u002F{id}",[248,1652,1640],{},[211,1654,1655,1656,1659,1660,1663],{},"O ",[51,1657,1658],{},"revoke"," responde ",[215,1661,1662],{},"200 para qualquer entrada",", inclusive um token que nunca existiu. Isso é de propósito: responder diferente transformaria o endpoint num oráculo para adivinhar token válido.",[211,1665,1666],{},"Reaprovar uma aplicação com menos escopos também revoga os tokens já emitidos sob a aprovação antiga, para que a tela de consentimento e a realidade nunca discordem.",[220,1668,1670],{"id":1669},"erros","Erros",[211,1672,1673],{},"Onde o erro chega importa mais que o código dele, porque é isso que decide o que o seu cliente tem de parsear. São três lugares.",[1675,1676,1678],"h3",{"id":1677},"como-corpo-json","Como corpo JSON",[211,1680,1681,1682,1685,1686,388],{},"O corpo é exatamente ",[51,1683,1684],{},"{ \"error\": \"…\", \"error_description\": \"…\" }"," — sem outro envelope, sem campo ",[51,1687,1688],{},"statusCode",[225,1690,1691,1712],{},[228,1692,1693],{},[231,1694,1695,1700,1703,1706,1709],{},[234,1696,1697],{},[51,1698,1699],{},"error",[234,1701,1702],{},"HTTP",[234,1704,1705],{},"Endpoint",[234,1707,1708],{},"Causa",[234,1710,1711],{},"Conserto",[243,1713,1714,1739,1766,1786,1806,1826,1847,1872,1893],{},[231,1715,1716,1721,1724,1727,1733],{},[248,1717,1718],{},[51,1719,1720],{},"invalid_client_metadata",[248,1722,1723],{},"400",[248,1725,1726],{},"register",[248,1728,1729,1730,1732],{},"Um campo do registro está errado, ",[51,1731,596],{}," tem valor não suportado, ou o registro dinâmico está desligado neste servidor",[248,1734,1655,1735,1738],{},[51,1736,1737],{},"error_description"," nomeia o campo",[231,1740,1741,1746,1748,1751,1757],{},[248,1742,1743],{},[51,1744,1745],{},"invalid_redirect_uri",[248,1747,1723],{},[248,1749,1750],{},"register, authorize",[248,1752,1753,1754,1756],{},"Uma redirect URI é relativa, tem fragmento ou credenciais, ou é ",[51,1755,519],{}," fora de loopback",[248,1758,1759,1760,1762,1763],{},"Use URI absoluta ",[51,1761,515],{},", ou ",[51,1764,1765],{},"http:\u002F\u002Flocalhost",[231,1767,1768,1772,1774,1777,1783],{},[248,1769,1770],{},[51,1771,1400],{},[248,1773,1723],{},[248,1775,1776],{},"register, token",[248,1778,1779,1780,1782],{},"Escopo desconhecido, ",[51,1781,1413],{},", fora do que o cliente registrou, ou uma renovação tentou ampliar",[248,1784,1785],{},"Peça um subconjunto dos escopos do cliente",[231,1787,1788,1793,1795,1798,1801],{},[248,1789,1790],{},[51,1791,1792],{},"invalid_request",[248,1794,1723],{},[248,1796,1797],{},"authorize, token, revoke, introspect",[248,1799,1800],{},"Falta um parâmetro, ou ele está malformado ou é contraditório",[248,1802,1803,1804],{},"Leia o ",[51,1805,1737],{},[231,1807,1808,1813,1816,1821,1824],{},[248,1809,1810],{},[51,1811,1812],{},"invalid_client",[248,1814,1815],{},"400 no authorize · 401 no token, revoke, introspect",[248,1817,1818,1820],{},[51,1819,897],{}," desconhecido, ou o segredo de um cliente confidencial falta ou está errado, ou um cliente público mandou um",[248,1822,1823],{},"Cliente público não manda segredo",[248,1825],{},[231,1827,1828,1833,1835,1838,1841],{},[248,1829,1830],{},[51,1831,1832],{},"unauthorized_client",[248,1834,1723],{},[248,1836,1837],{},"token",[248,1839,1840],{},"O cliente não registrou o grant que está usando",[248,1842,1843,1844,1846],{},"Registre ",[51,1845,606],{}," antes de usá-lo",[231,1848,1849,1854,1856,1858,1869],{},[248,1850,1851],{},[51,1852,1853],{},"unsupported_grant_type",[248,1855,1723],{},[248,1857,1837],{},[248,1859,1860,1863,1864,1866,1867],{},[51,1861,1862],{},"grant_type"," não é ",[51,1865,603],{}," nem ",[51,1868,606],{},[248,1870,1871],{},"—",[231,1873,1874,1878,1880,1882,1888],{},[248,1875,1876],{},[51,1877,1383],{},[248,1879,1723],{},[248,1881,1837],{},[248,1883,1884,1885],{},"O código expirou (60 s), já foi usado, é de outro cliente, ou um ",[215,1886,1887],{},"refresh token foi repetido",[248,1889,1890,1891],{},"No reuso a concessão inteira se foi: recomece no ",[51,1892,511],{},[231,1894,1895,1899,1901,1903,1908],{},[248,1896,1897],{},[51,1898,1403],{},[248,1900,1723],{},[248,1902,1837],{},[248,1904,1905,1907],{},[51,1906,983],{}," fora da origem do issuer, com fragmento, ou uma renovação tentou ampliá-lo",[248,1909,1910],{},"Mande a URL exata do recurso, ou nada",[1675,1912,1914,1915],{"id":1913},"na-sua-redirect_uri","Na sua ",[51,1916,909],{},[211,1918,1919,1920,347,1922,1924,1925,1931],{},"Assim que ",[51,1921,897],{},[51,1923,909],{}," são validados, ",[215,1926,1927,1928,1930],{},"todo erro restante do authorize vira um ",[51,1929,861],{}," para o seu callback",", nunca um corpo JSON — responder no corpo antes desse ponto transformaria o endpoint num open redirect. Parseie a query, não o status:",[390,1933,1938],{"className":1934,"code":1936,"language":1937},[1935],"language-text","https:\u002F\u002Facme.example\u002Foauth\u002Fcallback?error=invalid_scope&error_description=…&state=…&iss=https:\u002F\u002Fapi.pingonotify.com\n","text",[51,1939,1936],{"__ignoreMap":395},[211,1941,1655,1942,1944,1945,1950,1951,524,1954,524,1956,524,1958,524,1960,524,1962,524,1965,524,1968,524,1971,388],{},[51,1943,1030],{}," existe para você saber qual servidor de autorização respondeu (",[378,1946,1949],{"href":1947,"rel":1948},"https:\u002F\u002Fwww.rfc-editor.org\u002Frfc\u002Frfc9207",[382],"RFC 9207","). Os códigos que chegam por aqui: ",[51,1952,1953],{},"unsupported_response_type",[51,1955,1832],{},[51,1957,1792],{},[51,1959,1400],{},[51,1961,1403],{},[51,1963,1964],{},"login_required",[51,1966,1967],{},"consent_required",[51,1969,1970],{},"access_denied",[51,1972,1973],{},"server_error",[211,1975,1976,1978],{},[51,1977,1970],{}," significa que uma pessoa recusou, ou que o papel dela não permite autorizar aquele workspace. Não há o que repetir.",[1675,1980,1982],{"id":1981},"numa-chamada-de-api","Numa chamada de API",[225,1984,1985,1999],{},[228,1986,1987],{},[231,1988,1989,1993,1995,1997],{},[234,1990,1991],{},[51,1992,1699],{},[234,1994,1702],{},[234,1996,1708],{},[234,1998,1711],{},[243,2000,2001,2019],{},[231,2002,2003,2008,2011,2016],{},[248,2004,2005],{},[51,2006,2007],{},"invalid_token",[248,2009,2010],{},"401",[248,2012,2013,2014],{},"Falta, expirou, foi revogado, ou foi emitido para outro ",[51,2015,983],{},[248,2017,2018],{},"Renove; se falhar, autorize de novo",[231,2020,2021,2026,2029,2032],{},[248,2022,2023],{},[51,2024,2025],{},"insufficient_scope",[248,2027,2028],{},"403",[248,2030,2031],{},"Falta um escopo ao token, ou nada concede aquela operação a cliente OAuth",[248,2033,2034],{},"Reautorize com o escopo que a resposta nomeia",[211,2036,2037,2038,2041,2042,2044,2045,2047],{},"Os dois levam um header ",[51,2039,2040],{},"WWW-Authenticate",", e no ",[51,2043,2025],{}," ele nomeia o ",[51,2046,584],{}," que falta:",[390,2049,2052],{"className":2050,"code":2051,"language":519,"meta":395,"style":395},"language-http shiki shiki-themes github-light github-dark","WWW-Authenticate: Bearer realm=\"pingo\", error=\"invalid_token\",\n  error_description=\"the access token is invalid, expired or revoked\",\n  resource_metadata=\"https:\u002F\u002Fapi.pingonotify.com\u002F.well-known\u002Foauth-protected-resource\u002Fv3\u002Fmcp\"\n",[51,2053,2054,2066,2071],{"__ignoreMap":395},[399,2055,2056,2059,2063],{"class":401,"line":402},[399,2057,2040],{"class":2058},"s9eBZ",[399,2060,2062],{"class":2061},"szBVR",":",[399,2064,2065],{"class":413}," Bearer realm=\"pingo\", error=\"invalid_token\",\n",[399,2067,2068],{"class":401,"line":423},[399,2069,2070],{"class":672},"  error_description=\"the access token is invalid, expired or revoked\",\n",[399,2072,2073],{"class":401,"line":434},[399,2074,2075],{"class":672},"  resource_metadata=\"https:\u002F\u002Fapi.pingonotify.com\u002F.well-known\u002Foauth-protected-resource\u002Fv3\u002Fmcp\"\n",[211,2077,2078,2079,2082],{},"Siga o ",[51,2080,2081],{},"resource_metadata"," em vez de fixar endpoints no código — ele é o fio de volta ao servidor de autorização.",[1032,2084,2085,2095],{},[211,2086,2087,2088,2091,2092,2094],{},"Rate limit responde ",[215,2089,2090],{},"429",", e o corpo dele ",[550,2093,545],{}," está no formato de erro do OAuth. Trate 429 como transporte, não como erro de protocolo.",[211,2096,2097,2098,347,2101,2104],{},"Dois códigos existem no vocabulário do OAuth mas este servidor nunca os devolve: ",[51,2099,2100],{},"interaction_required",[51,2102,2103],{},"temporarily_unavailable",". Não escreva tratamento para eles.",[220,2106,2108],{"id":2107},"validades-e-limites","Validades e limites",[225,2110,2111,2119],{},[228,2112,2113],{},[231,2114,2115,2117],{},[234,2116],{},[234,2118],{},[243,2120,2121,2129,2137,2149,2157,2172,2183],{},[231,2122,2123,2126],{},[248,2124,2125],{},"Código de autorização",[248,2127,2128],{},"60 segundos, uso único",[231,2130,2131,2134],{},[248,2132,2133],{},"Access token",[248,2135,2136],{},"1 hora — a menos que o cliente desligue a expiração",[231,2138,2139,2142],{},[248,2140,2141],{},"Refresh token",[248,2143,2144,2145,2148],{},"30 dias ",[215,2146,2147],{},"de inatividade",", rotacionado a cada uso. Cada renovação reinicia o relógio",[231,2150,2151,2154],{},[248,2152,2153],{},"Requisição de autorização pendente",[248,2155,2156],{},"10 minutos",[231,2158,2159,2169],{},[248,2160,2161,524,2163,524,2166],{},[51,2162,1062],{},[51,2164,2165],{},"\u002Frevoke",[51,2167,2168],{},"\u002Fintrospect",[248,2170,2171],{},"120 requisições por minuto, por IP",[231,2173,2174,2180],{},[248,2175,2176,524,2178],{},[51,2177,857],{},[51,2179,375],{},[248,2181,2182],{},"15 requisições por minuto, por IP",[231,2184,2185,2188],{},[248,2186,2187],{},"Documentos de descoberta",[248,2189,2190],{},"sem limite, cacheados por 5 minutos",[1032,2192,2193,2214],{},[211,2194,2195,2198,2199,2202,2203,2206,2207,2209,2210,2213],{},[215,2196,2197],{},"Expirar é uma opção por cliente."," Um cliente registrado pelo painel pode desmarcar ",[550,2200,2201],{},"Expirar tokens de acesso"," — aí o access token não tem prazo, o ",[51,2204,2205],{},"expires_in"," não vem na resposta, e ",[215,2208,825],{},", porque refresh existe para renovar o que expira. O registro dinâmico (",[378,2211,383],{"href":380,"rel":2212},[382],") não consegue definir isso: cliente que se registra sozinho sempre recebe token com prazo.",[211,2215,2216,2217,2220,2221,2223,2224,2227],{},"Com a expiração desligada, revogar é o único jeito de cortar o acesso — pela tela de ",[550,2218,2219],{},"Aplicativos conectados"," ou por ",[51,2222,1624],{},". Mudar a opção vale para tokens ",[215,2225,2226],{},"novos","; os já emitidos seguem com a validade com que nasceram.",[220,2229,2231],{"id":2230},"descoberta","Descoberta",[211,2233,2234],{},"Não fixe os endpoints no código. Os dois documentos são públicos, não pedem credencial e são a forma suportada de achar tudo que está acima:",[225,2236,2237,2247],{},[228,2238,2239],{},[231,2240,2241,2244],{},[234,2242,2243],{},"Documento",[234,2245,2246],{},"Responde",[243,2248,2249,2265,2275],{},[231,2250,2251,2256],{},[248,2252,2253],{},[51,2254,2255],{},"\u002F.well-known\u002Foauth-authorization-server",[248,2257,2258,2259,524,2262],{},"issuer, todos os endpoints, escopos suportados, grant types, ",[51,2260,2261],{},"code_challenge_methods_supported",[51,2263,2264],{},"prompt_values_supported",[231,2266,2267,2272],{},[248,2268,2269],{},[51,2270,2271],{},"\u002F.well-known\u002Foauth-protected-resource",[248,2273,2274],{},"a API como um todo, e qual servidor de autorização a guarda",[231,2276,2277,2282],{},[248,2278,2279],{},[51,2280,2281],{},"\u002F.well-known\u002Foauth-protected-resource\u002Fv3\u002Fmcp",[248,2283,2284],{},"especificamente o endpoint MCP, e só os escopos que ele usa",[2286,2287,2288],"tip",{},[211,2289,2290,2291,2293,2294,347,2296,388],{},"A primeira coisa construída sobre tudo isto é o ",[378,2292,139],{"href":138}," — um assistente de IA conecta exatamente por este fluxo, e a página dele mostra ponta a ponta. Para a credencial de token de API, veja ",[378,2295,40],{"href":118},[378,2297,91],{"href":101},[2299,2300,2301],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":395,"searchDepth":434,"depth":434,"links":2303},[2304,2305,2306,2307,2309,2310,2311,2312,2313,2314,2315,2321,2322],{"id":222,"depth":423,"text":223},{"id":339,"depth":423,"text":340},{"id":369,"depth":423,"text":370},{"id":849,"depth":423,"text":2308},"2 — Mande a pessoa para o \u002Fauthorize",{"id":1056,"depth":423,"text":1057},{"id":1227,"depth":423,"text":1228},{"id":1313,"depth":423,"text":1314},{"id":1406,"depth":423,"text":1407},{"id":1579,"depth":423,"text":1580},{"id":1596,"depth":423,"text":1597},{"id":1669,"depth":423,"text":1670,"children":2316},[2317,2318,2320],{"id":1677,"depth":434,"text":1678},{"id":1913,"depth":434,"text":2319},"Na sua redirect_uri",{"id":1981,"depth":434,"text":1982},{"id":2107,"depth":423,"text":2108},{"id":2230,"depth":423,"text":2231},"md",{},true,{"title":68,"description":143},"pt-BR\u002Foauth","hmE531hpgxWnWp-LEXKDHqXIoiet5KH3cibTlsNNgcc",{"left":160,"top":160,"width":166,"height":166,"rotate":160,"vFlip":162,"hFlip":162,"body":2330},"\u003Cpath fill=\"currentColor\" d=\"M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7.2 40.1S486.3 480 472 480H40c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8.2-40.1l216-368C228.7 39.5 241.8 32 256 32m0 128c-13.3 0-24 10.7-24 24v112c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24m32 224a32 32 0 1 0-64 0a32 32 0 1 0 64 0\"\u002F>",{"left":160,"top":160,"width":166,"height":166,"rotate":160,"vFlip":162,"hFlip":162,"body":2332},"\u003Cpath fill=\"currentColor\" d=\"M256 512a256 256 0 1 0 0-512a256 256 0 1 0 0 512m0-384c13.3 0 24 10.7 24 24v112c0 13.3-10.7 24-24 24s-24-10.7-24-24V152c0-13.3 10.7-24 24-24m-32 224a32 32 0 1 1 64 0a32 32 0 1 1-64 0\"\u002F>",{"left":160,"top":160,"width":161,"height":161,"rotate":160,"vFlip":162,"hFlip":162,"body":2334},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Crect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\"\u002F>\u003Cpath d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"\u002F>\u003C\u002Fg>",{"left":160,"top":160,"width":166,"height":166,"rotate":160,"vFlip":162,"hFlip":162,"body":2336},"\u003Cpath fill=\"currentColor\" d=\"M256 512a256 256 0 1 0 0-512a256 256 0 1 0 0 512m-40-176h24v-64h-24c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-80c-13.3 0-24-10.7-24-24s10.7-24 24-24m40-208a32 32 0 1 1 0 64a32 32 0 1 1 0-64\"\u002F>",{"left":160,"top":160,"width":2338,"height":166,"rotate":160,"vFlip":162,"hFlip":162,"body":2339},384,"\u003Cpath fill=\"currentColor\" d=\"M272 384c9.6-31.9 29.5-59.1 49.2-86.2c5.2-7.1 10.4-14.2 15.4-21.4c19.8-28.5 31.4-63 31.4-100.3C368 78.8 289.2 0 192 0S16 78.8 16 176c0 37.3 11.6 71.9 31.4 100.3c5 7.2 10.2 14.3 15.4 21.4c19.8 27.1 39.7 54.4 49.2 86.2h160zm-80 128c44.2 0 80-35.8 80-80v-16H112v16c0 44.2 35.8 80 80 80m-80-336c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-61.9 50.1-112 112-112c8.8 0 16 7.2 16 16s-7.2 16-16 16c-44.2 0-80 35.8-80 80\"\u002F>",{"left":160,"top":160,"width":161,"height":161,"rotate":160,"vFlip":162,"hFlip":162,"body":2341},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m15 18l-6-6l6-6\"\u002F>",1788888922144]