Skip to main content

Team Roles & Permissions

Teams use a full RBAC (role-based access control) system. Every team member is assigned a role, and each role grants a specific set of permissions that control what the member can do within the team.

Default roles​

Every new team is created with three roles:

RoleTypePermissionsDescription
OwnerSystem (cannot be deleted)All 20Full team access. Assigned to the team creator.
AdminDefault17Manage extensions and team members. Cannot edit team settings, manage payouts, or remove members.
MemberDefault7Edit extensions, create/upload versions, and view analytics; no submission, deletion, or tester/access management.

Permission reference​

There are 20 permissions across 7 categories:

Extensions​

PermissionKeyOwnerAdminMember
Create extensionsteam-extensions:createYesYesYes
Edit extensionsteam-extensions:editYesYesYes
Delete extensionsteam-extensions:deleteYesYes--
Publish extensionsteam-extensions:publishYesYes--
View analyticsteam-extensions:analyticsYesYesYes

Versions​

PermissionKeyOwnerAdminMember
Create versionsteam-versions:createYesYesYes
Edit versionsteam-versions:editYesYes--

Secrets​

PermissionKeyOwnerAdminMember
Read secretsteam-secrets:readYesYesYes
Edit secretsteam-secrets:editYesYes--

Testers​

PermissionKeyOwnerAdminMember
Read testersteam-testers:readYesYes--
Invite testersteam-testers:inviteYesYes--
Remove testersteam-testers:removeYesYes--

Members​

PermissionKeyOwnerAdminMember
Read member listteam-members:readYesYesYes
Invite membersteam-members:inviteYesYes--
Edit member rolesteam-members:editYesYes--
Remove membersteam-members:removeYes----

Settings​

PermissionKeyOwnerAdminMember
Read settingsteam-settings:readYesYesYes
Edit settingsteam-settings:editYes----

Payouts​

PermissionKeyOwnerAdminMember
Read payout infoteam-payouts:readYesYes--
Edit payout configteam-payouts:editYes----

team-versions:edit, team-settings:read, and team-payouts:read/team-payouts:edit are catalogue grants; there is currently no extension API action that checks them. Assigning one alone does not enable a version-edit or payout operation.

Creating custom roles​

In addition to the three default roles, team owners and members with team-settings:edit permission can create custom roles:

  1. Navigate to Dashboard > Extensions > Teams > {team} > Roles
  2. Click Create Role
  3. Enter a name and optional description
  4. Choose a color for the role badge
  5. Select the permissions to grant
  6. Save the role

Custom roles appear in the role list and can be assigned to team members via the members page or when creating invite links.

Editing a custom role​

Click a custom role from the roles list to edit its name, description, color, or permissions. Changes take effect immediately for all members assigned to that role.

Deleting a custom role​

Custom roles (where is_system is false) can be deleted. Members assigned to a deleted role are reassigned to the default Member role. The system Owner role cannot be deleted or modified.

Permission enforcement​

Permissions are enforced at the API level. Both the GraphQL and REST APIs check team permissions before executing any team-scoped operation. If a member lacks the required permission, the request is rejected with an authorization error.

For team-owned extensions, the action checks below run after the ownership check. A caller outside the team gets a not-found response. A team member missing a grant gets 403 Missing team permission: <permission> from REST or FORBIDDEN with the same message from GraphQL. Role changes apply on the next request. Solo extensions have no team-role requirement, and a team-bound developer API key can act only on its own team's extensions.

PermissionExtension action
team-extensions:editUpdate metadata; upload an icon or screenshot; delete a screenshot
team-extensions:deleteDelete a draft extension or request deletion
team-extensions:publishSubmit a version for review
team-extensions:analyticsView analytics
team-versions:createCreate or upload a version
team-testers:inviteInvite a tester, grant private access, or create an access invite
team-testers:removeRemove a tester, revoke private access, or delete an access invite
team-testers:readList testers, private access grants, or access invites

The default Member role includes editing and version creation, but none of the publish, delete, or tester permissions in this table. Owners and Admins hold those permissions; a custom role can grant them selectively.

The dashboard UI also respects permissions -- buttons and menu items for actions the current user cannot perform are hidden or disabled.

Next steps​