Skip to main content

Project roles, permission matrix, token scopes, and access control for teams

Roles & Permissions

Flaggr uses role-based access control (RBAC) at the project level. Each team member is assigned a role that determines what they can do.

Project Roles

RoleDescription
OwnerFull control. Can delete the project and transfer ownership.
AdminManage everything except deleting the project.
MemberCreate, read, and update flags and services. Cannot manage team or settings.
ViewerRead-only access to flags, services, and audit logs.

Permission Matrix

ActionOwnerAdminMemberViewer
View flagsYesYesYesYes
Create flagsYesYesYesNo
Update flagsYesYesYesNo
Toggle flagsYesYesYesNo
Delete flagsYesYesNoNo
View servicesYesYesYesYes
Create servicesYesYesYesNo
Delete servicesYesYesNoNo
View audit logsYesYesYesYes
View membersYesYesYesYes
Add membersYesYesNoNo
Remove membersYesYesNoNo
Change rolesYesYesNoNo
Manage settingsYesYesNoNo
Create tokensYesYesNoNo
Revoke tokensYesYesNoNo
Delete projectYesNoNoNo
Change slugYesNoNoNo

API Token Scopes

API tokens have their own permission model, separate from project roles.

Opaque Token Permissions

Simple boolean flags for each action:

{
  "permissions": {
    "read": true,
    "write": false,
    "delete": false
  }
}
PermissionGrants
readEvaluate flags, list flags, view configurations
writeCreate and update flags, toggle enabled state, manage targeting
deleteDelete flags

JWT Token Scopes

More granular OAuth2-style scopes:

ScopeGrants
readSame as opaque read
writeSame as opaque write
deleteSame as opaque delete
manage_settingsProject settings, token management
manage_membersAdd/remove members, change roles
Principle of Least Privilege

Always create tokens with the minimum required permissions. SDK evaluation tokens should be read-only. Only CI/CD or admin tools need write access.

Team Management

Inviting Members

Invite users by email. The invitation expires after 7 days.

POST /api/projects/{id}/invitations
{ "email": "alice@example.com", "role": "member" }
Note

You cannot invite someone as owner. Ownership can only be transferred through project settings.

Changing Roles

PATCH /api/projects/{id}/members/{memberId}
{ "role": "admin" }

Only owners and admins can change roles. You cannot change your own role.

Removing Members

DELETE /api/projects/{id}/members/{memberId}

Removing a member revokes their access immediately. Their API tokens remain active until explicitly revoked.

Token Cleanup

When removing a team member, also revoke any API tokens they created. Tokens don't expire automatically when the creator loses access.