OrbitSenderDocs
ReferenceParceiro

Dados da tela de consentimento (JSON consumido pelo painel)

GET
/api/oauth/authorize

Início do fluxo Authorization Code. O navegador do usuário final é redirecionado para a página de consentimento do app (https://app.orbitsender.com/oauth/authorize?...) — não para este endpoint da API diretamente. Este GET /api/oauth/authorize é a API (responde JSON) que alimenta aquela tela: retorna nome e logo do app e os scopes solicitados (com marca de sensibilidade). Ao aprovar, o painel chama internamente POST /api/oauth/authorize/decision (endpoint interno do painel, não exposto ao parceiro), que redireciona de volta ao redirect_uri com ?code=...&state=....

Requer a sessão do usuário final (cookie/JWT do painel) — não usa api-key nem token de parceiro. Não cria nada; apenas descreve o consent.

PKCE (code_challenge + code_challenge_method=S256) é obrigatório para apps públicos.

Query Parameters

client_id*string

Identificador público do app de parceiro.

redirect_uri*string

Deve casar exatamente com uma das URIs registradas do app.

Formaturi
response_type*string
scope*string

Scopes separados por espaço (ex.: statistics:read campaigns:read). Subconjunto dos scopes aprovados do app.

state?string

Valor opaco anti-CSRF devolvido no redirect.

code_challenge?string

PKCE — obrigatório para apps públicos.

code_challenge_method?string

Response Body

application/json

application/json

application/json

curl -X GET "https://example.com/api/oauth/authorize?client_id=string&redirect_uri=http%3A%2F%2Fexample.com&response_type=code&scope=string"
{  "success": true,  "client": {    "name": "Painel do Parceiro",    "logo_url": "https://cdn.parceiro.com/logo.png",    "homepage_url": "https://parceiro.com",    "privacy_url": "https://parceiro.com/privacidade"  },  "scopes": [    {      "scope": "statistics:read",      "description": "Ler estatísticas agregadas do tenant (sem PII).",      "sensitive": false    },    {      "scope": "campaigns:read",      "description": "Ler/listar campanhas (status/progresso agregado).",      "sensitive": false    }  ],  "redirect_uri": "https://parceiro.com/oauth/callback",  "state": "xyz123"}
{  "success": false,  "error": "invalid_scope",  "message": "Scopes não aprovados para o app: settings:read"}
{  "success": false,  "error": "Too Many Requests",  "code": "rate_limited",  "message": "Muitas requisições. Tente novamente em instantes."}