Developer Portal
Eksperimental Aktibo pang dine-develop ang bot at app platform. Na-ship ang suporta para sa self-hosted servers noong 2026-08-13, pero mas kaunti ang features nito kumpara sa cloud. Tingnan kung ano ang supported.
← Docs

OAuth2 + Install URLs

Wire-compatible ang OAuth2 flow ng GameVox sa Discord. Tugma ang authorize URL, token exchange, at scope names; authorization-code at refresh-token grants lang ang suportado ng GameVox. Tinatalakay ng page na ito ang ilang fields na nagtatakda kung paano gagana ang install link mo at kung paano ire-render ang install confirm screen.

Gusto mo bang mag-sign in ang mga tao sa sarili mong website o app, nang walang bot? Tingnan ang Log in with GameVox.

Endpoints

GET  https://gamevox.com/oauth2/authorize/
POST https://app-api.gamevox.com/api/oauth2/token
POST https://app-api.gamevox.com/api/oauth2/token/revoke
GET  https://app-api.gamevox.com/api/oauth2/@me

Authorize URL lang ang kailangan ng server install: pipili ang user ng server at idadagdag ang bot, walang code na kailangang i-exchange. Para sa Log in with GameVox ang token endpoints.

Client credentials

Bawat application ay may client ID (ang application snowflake) at client secret. Ipinapakita ang secret nang isang beses pag-create ng app at isang beses pag-rotate; bcrypt hash lang kasama ang prefix + last4 ang sine-save namin.

  • Pag-rotate: POST /developer-portal/applications/{id}/reset-secret. Agad na nagiging invalid ang dating secret.
  • Gamit: ina-authenticate ng secret ang backend mo sa token endpoint para sa Log in with GameVox. Walang public clients at walang client_credentials grant: kailangan ng secret sa bawat token request, may PKCE man o wala.

Install contexts

Dalawang checkbox sa Installation tab, hiwalay sa isa't isa:

  • User install: hindi pa available. Nase-save ang setting, pero hangga't hindi pa nailalabas ang user installs, tinatanggihan sa consent screen ang install links na may integration_type=1 at walang bot scope.
  • Server install: sa isang server naka-install ang bot; sa server na iyon lang magagamit ang commands.

Kailangang naka-enable ang kahit isa. Nagba-branch ang install confirm screen depende sa available: kung parehong naka-on, ang user ang pipili; kung isa lang, nakatago ang picker.

Tungkol sa wire format: install_guild_install ang pangalan ng column para sa “server install” para manatiling byte-identical sa Discord. “Server” ang nakasulat sa portal UI dahil servers ang tawag ng GameVox sa kanila, hindi guilds.

Default install settings

Para sa bawat naka-enable na context, kino-configure mo ang scopes at (para sa server install) ang permission bitfield na naka-pre-select sa install confirm screen. Puwede pa ring bawasan ng user ang scopes sa confirm screen.

  • Scopes: max 25 kada context. Charset [a-z0-9._-]. Tahimik na tinatanggal ang mga duplicate.
  • Permissions (server install lang): decimal string, max 32 chars. Tugma sa permission integer ng Discord.

Mga karaniwang default:

User install   → ["applications.commands"]
Server install → ["bot", "applications.commands"], perms="0"

Install link mode

Pinipili ng dropdown kung paano magre-resolve ang Install button sa directory listing mo:

  • None: walang install button; ikaw mismo ang bahala sa install sa ibang paraan.
  • GameVox-provided: kami ang gagawa ng URL mula sa default install settings mo. Ipinapakita ng portal ang effective URL sa ilalim.
  • Custom URL: ikaw ang magbibigay ng fully-qualified na https:// URL (hal. sarili mong install gateway na nag-i-issue ng per-user state).

Shape ng GameVox-provided URL

https://gamevox.com/oauth2/authorize
  ?client_id={application.id}
  &permissions={perms}
  &scope={url-encoded na scopes na pinagdugtong ng space}
  &integration_type={0=server, 1=user}
  &response_type=code

Kapag parehong naka-enable ang contexts, hindi isinasama ng link ang integration_type at ire-render ng confirm screen ang picker.

Public key + HTTP-mode interactions

Bawat app ay may 32-byte Ed25519 public key, na read-only na naka-display sa Pangkalahatang Impormasyon tab. I-set ang Interactions Endpoint URL mo sa application settings at magpo-POST ang GameVox ng interaction payloads doon, naka-sign gamit ang katapat na private key. Ang mga library na nag-a-auto-load ng public key (discord-interactions at iba pa) ay nagve-verify ng signatures nang walang dagdag na config.

  • Kung naka-configure ang endpoint at nagbabalik ito ng 2xx, sa HTTP lang idini-deliver ang interaction; walang dumadaan sa gateway.
  • Kung hindi ma-reach ang endpoint o nagbabalik ito ng hindi 2xx, babalik ang GameVox sa pag-dispatch ng interaction sa gateway session ng bot mo.
  • Tugma sa Discord byte-for-byte ang signature scheme, header names, at PING acknowledgment.
  • Ang interactions sa self-hosted servers ay dine-deliver sa parehong paraan tulad ng sa cloud servers.
  • Panatilihin pa ring nakakonekta ang isang gateway session. Dito ipinapasa ng GameVox ang bawat interaction sa app mo bago ito i-POST sa endpoint mo, kaya kapag walang nakakonektang session, walang nade-deliver.
  • Hindi pinapansin ang response body, maliban sa PING na ipinapadala ng I-ping ang endpoint button. Sagutin ang bawat interaction sa pamamagitan ng pagtawag sa POST /interactions/{id}/{token}/callback.

Scopes

ScopeEpekto
bot Kailangan para sa server installs na naglalagay ng bot user sa server.
applications.commands Pinapayagan ang app na mag-register ng slash / user / message commands sa install scope.
identify, email, guilds, role_connections.write Mga scope para sa user sign-in, ginagamit nang walang bot. Tingnan ang Log in with GameVox.

Mga pagkakaiba sa Discord

  • Walang Premium Apps / entitlements; applications.commands.permissions.update lang ang commands-permissions endpoint na meron kami.
  • Walang “team-managed” identity para sa tokens. Kahit sa apps na pag-aari ng team, sa application nakapangalan ang OAuth tokens, hindi sa isang partikular na miyembro ng team.
  • Nilalampasan ng App Testers (Teams tab) ang public/private gate sa install confirm screen para sa private apps. Ang mga user na nasa testers roster ay puwedeng mag-install ng private app; not-found page naman ang makikita ng iba.

← Bumalik sa docs