Developer Portal
Experimental The bot & app platform is in active development and currently works only on cloud-hosted GameVox servers. Self-hosted servers are not supported yet.
← Docs

Teams

Teams let multiple developers co-own a set of applications. Discord parity — same four roles, same one-way transfer model, plus an App Testers roster that bypasses the public/private gate for in-development apps.

Roles

RoleCan edit appCan manage teamCan delete app
OwnerYesYes (incl. transfer ownership)Yes
AdminYesYes (members, testers)No
DeveloperYesNoNo
Read-onlyNoNoNo

The effective role on an app = the team-member role, unless the requester is also the personal owner (transfer source), in which case Owner-level access applies.

Invites

  • Admin+ sends an invite by email to an existing GameVox user.
  • The invitee sees a pending invite on their portal home and accepts or declines.
  • Invites can be rescinded any time before accept.
  • To re-send: rescind, then re-invite. (No dedicated "resend" button.)

Application transfer

Personal apps can be transferred into a team you own or admin in. The transfer dialog requires you to type the app name to confirm. After transfer:

  • The team owns the app row. owner_user_id is cleared; owner_team_id is set.
  • All existing tokens (bot tokens, client secrets, webhook tokens) remain valid — the transfer doesn't rotate them.
  • App icon / cover storage prefixes are unchanged — assets keep working without re-upload.
  • Transfer is one-way (matches Discord). To "untransfer," create a new personal app and migrate data manually.

Team icons

Upload from the team's General tab. Same image-upload widget as app icons, with separate S3 prefix (team-icons/{team_id}/). Renders on the team list page, the team detail header, and as a small overlay on app cards for apps owned by that team.

App Testers

The testers roster is per-application (not per-team), so a team's apps each have their own list. Testers can install a private app (public-toggle off) using the normal OAuth install URL — anyone not on the roster gets a not-found page.

  • 100 testers per application.
  • Invites are by GameVox user-id or email. Inviting yourself auto-accepts (you're already trusted).
  • Testers don't get any access to the application's portal page — they only get install permission.
  • Removing a tester does not revoke any tokens the tester already obtained via OAuth; revoke those separately.

Endpoints (portal)

GET    /developer-portal/teams
POST   /developer-portal/teams
GET    /developer-portal/teams/{id}
PATCH  /developer-portal/teams/{id}
DELETE /developer-portal/teams/{id}

GET    /developer-portal/teams/{id}/members
POST   /developer-portal/teams/{id}/members        {email, role}
PATCH  /developer-portal/teams/{id}/members/{user_id}  {role}
DELETE /developer-portal/teams/{id}/members/{user_id}

POST   /developer-portal/applications/{id}/transfer  {team_id, app_name}

GET    /developer-portal/applications/{id}/testers
POST   /developer-portal/applications/{id}/testers   {email|user_id}
DELETE /developer-portal/applications/{id}/testers/{user_id}

← Back to docs