Instalação (OAuth2)

Link de consentimento, teto de permissões e o fluxo de instalação de bots.

Instalar um bot é um fluxo de consentimento: você monta um link com as permissões que o bot pede, e uma pessoa com GERENCIAR_SERVIDOR (ou dona do servidor) abre o link logada e escolhe onde instalar. Nunca há instalação silenciosa.

Só instalação
O OAuth2 do NEX serve apenas para instalar bots. Não há troca de code por token, escopos nem login de usuários de terceiros — o redirecionamento devolve só o seu state.
  1. Cadastre as URLs de redirecionamento

    Na aba Instalação (ou PUT /api/applications/:id/oauth/redirect-uris). O redirect_uri do link precisa ser idêntico a uma delas.

  2. Escolha as permissões

    Some os valores em Permissões. O portal monta o número para você.

  3. Compartilhe o link

    Link de instalação
    https://nexapp.online/oauth2/authorize
      ?client_id=SEU_CLIENT_ID
      &redirect_uri=https://seusite.com/callback
      &permissions=3072
      &state=opcional

Teto de permissão

O bot recebe a interseção de três coisas:

  • o que o link pediu (permissions);
  • as permissões efetivas de quem instala naquele servidor;
  • o que a pessoa deixou marcado na tela de consentimento (ela pode desmarcar, nunca adicionar).

Isso é aplicado no servidor, não só na interface.

O que a instalação faz

  • O bot vira membro do servidor com um cargo gerenciado Bot: NomeDaAplicação contendo as permissões concedidas.
  • Reinstalar é idempotente: só atualiza as permissões desse cargo.
  • Bots com o intent members.read recebem GUILD_MEMBER_ADD da instalação.
  • Quem instalou é redirecionado para redirect_uri?state=….

Desinstalação

  • Você, dono da aplicação: DELETE /api/applications/:id/installs/:serverId.
  • Admin do servidor: DELETE /api/servers/:serverId/applications/:applicationId (requer GERENCIAR_SERVIDOR), ou expulsar o bot.
  • O bot recebe GUILD_MEMBER_REMOVE com reason: "app_uninstalled" ou "kicked".
  • Qualquer membro pode listar os apps instalados: GET /api/servers/:serverId/applications.

API do fluxo (avançado)

Só necessária se você implementar a sua própria tela de consentimento. Ambas exigem a sessão de quem está instalando.

GET/api/oauth2/authorize/start
Auth: Sessão de quem instala

Query

CampoTipoDescrição
client_id*stringclientId da aplicação.
redirect_uri*stringPrecisa estar na lista da aplicação.
permissionsintegerBitfield pedido. Padrão 0.
statestringAté 500 caracteres, devolvido no redirecionamento.
200
{
  "authorizeSessionId": "…",
  "expiresAt": "…",              // 10 minutos
  "requestedPermissions": 3072,
  "application": { "id": "…", "name": "…", "iconUrl": null },
  "servers": [{ "id": "…", "name": "…", "iconUrl": null }]
}

Erros: 404 aplicação não encontrada; 403 aplicação suspensa ou privada (para quem não é o dono); 400 sem bot ou redirect_uri fora da lista.

POST/api/oauth2/authorize/:authorizeSessionId/complete
Auth: Sessão de quem instalaUso único. 30 por hora.

Corpo da requisição

CampoTipoDescrição
serverId*stringServidor escolhido.
permissionsintegerO que ficou marcado na tela.
200
{
  "redirectUrl": "https://seusite.com/callback?state=…",
  "install": { "serverId": "…", "grantedPermissions": 3072 }
}

Erros: 404 sessão inválida, expirada ou já usada; 403 sem GERENCIAR_SERVIDOR no servidor.