Features
Teams
Overview

Teams

Teams provide a flexible way to manage project access in your organization. Instead of assigning individual users to projects, you create teams, add members to teams, and then grant teams access to projects with specific roles.


Plan Limits

Team member limits vary by plan:

PlanTeam Members
Free2 members
Starter5 members
ProUnlimited
AgencyUnlimited

Team member limits apply to the total number of organization members. You can create unlimited teams within these limits.


Overview

The team-based access control system follows the GitHub/GitLab model:

  • Teams are groups of users within your organization
  • Team Members are users assigned to a team
  • Project Access is granted by assigning teams to projects with a role (Admin, Developer, or Viewer)

This approach makes it easy to:

  • Onboard new team members by adding them to relevant teams
  • Manage access for multiple projects at once
  • Audit who has access to what
  • Scale access management as your organization grows

Key Concepts

Teams

A team is a named group of users within your organization. Each team has:

  • Name: A descriptive name (e.g., "Backend Team", "Client Alpha Team")
  • Description: Optional details about the team's purpose
  • Color: A badge color for visual identification in the UI
  • Members: Users who belong to the team

Team Roles on Projects

When you assign a team to a project, you specify a role that determines what team members can do:

RoleCapabilities
AdminFull project access including settings, team management, environment deletion, backup restoration
DeveloperDeploy, create environments, create backups, view monitoring
ViewerView-only access to project, environments, and monitoring

Access Resolution

When a user belongs to multiple teams that have access to the same project, they get the highest role from any of their teams:

Admin > Developer > Viewer

Special Case: Organization Owner

  • Organization Owners always have Admin access to all projects in their organization
  • This serves as a safety net to ensure owners can never be locked out

Managing Teams

Creating a Team

  1. Go to Settings > Teams
  2. Click Create Team
  3. Enter a name and optional description
  4. Select a badge color
  5. Click Create

Adding Members to a Team

  1. Go to Settings > Teams
  2. Click on the team name to open details
  3. Click Add Members
  4. Search and select organization members to add
  5. Click Add Selected

Removing Members from a Team

  1. Go to Settings > Teams
  2. Click on the team name
  3. Find the member in the list
  4. Click the remove button (trash icon)

Assigning Teams to Projects

Granting Project Access

  1. Go to Projects > Select a project > Settings > Teams
  2. Click Assign Team
  3. Select one or more teams from your organization
  4. Choose a role (Admin, Developer, or Viewer)
  5. Click Assign

Changing Team Role on a Project

  1. Go to Projects > Select a project > Settings > Teams
  2. Find the team in the list
  3. Click on the role dropdown
  4. Select the new role

Removing Team Access

  1. Go to Projects > Select a project > Settings > Teams
  2. Find the team in the list
  3. Click the remove button (trash icon)
  4. Confirm the removal

Permissions & RBAC

OEC.sh uses a comprehensive Role-Based Access Control (RBAC) system with 55+ granular permissions across 6 system roles.

System Roles

The platform has 6 predefined roles organized in a hierarchy:

Portal Level:

  • Portal Admin - Full platform access (OEC.sh staff only)

Organization Level:

  • Owner - Full organization access, billing, member management
  • Admin - Organization management without billing access
  • Developer - Create projects, deploy environments
  • Viewer - Read-only access to organization resources

Project Level:

  • Team Admin - Full project access via team assignment
  • Team Developer - Deploy and manage environments via team
  • Team Viewer - View-only project access via team

Organization-Level Permissions

PermissionDescription
org.members.listView organization members
org.members.inviteInvite new members
org.members.removeRemove members
org.teams.listView teams in the organization
org.teams.createCreate new teams
org.teams.updateEdit team details and members
org.teams.deleteDelete teams
org.projects.createCreate new projects
org.servers.listView servers
org.storage.listView storage providers
org.billing.viewView billing information

Project-Level Permissions

PermissionDescription
project.teams.manageAssign/remove teams, change roles
project.environments.createCreate new environments
project.environments.deleteDelete environments
project.environments.deployDeploy to environments
project.backups.createCreate backups
project.backups.restoreRestore from backups
project.settings.updateModify project settings

Pro & Agency Plans: Access to granular permissions (55+) and audit logs. Agency plans also include custom roles for enterprise requirements.

Best Practices

Team Structure

  • By Function: "Backend Team", "Frontend Team", "DevOps Team"
  • By Project/Client: "Client Alpha Team", "Internal Projects Team"
  • By Access Level: "Project Admins", "Developers", "Stakeholders"

Access Management

  1. Start with minimal access: Assign Viewer role by default, escalate as needed
  2. Use descriptive team names: Make it clear who should be in each team
  3. Regular audits: Periodically review team memberships and project assignments
  4. Document team purposes: Use the description field to explain each team's role

Onboarding New Users

  1. Add the user to your organization
  2. Add them to the appropriate teams
  3. They automatically gain access to all projects those teams can access

Offboarding Users

  1. Remove the user from all teams (or remove from organization)
  2. Their access to all team-based projects is automatically revoked

API Reference

Teams Endpoints

MethodEndpointDescription
GET/api/v1/teamsList organization teams
POST/api/v1/teamsCreate a new team
GET/api/v1/teams/{id}Get team details
PATCH/api/v1/teams/{id}Update team
DELETE/api/v1/teams/{id}Delete team
GET/api/v1/teams/{id}/membersList team members
POST/api/v1/teams/{id}/membersAdd member to team
DELETE/api/v1/teams/{id}/members/{user_id}Remove member

Project Teams Endpoints

MethodEndpointDescription
GET/api/v1/projects/{id}/teamsList project teams
POST/api/v1/projects/{id}/teamsAssign team to project
PATCH/api/v1/projects/{id}/teams/{team_id}Update team role
DELETE/api/v1/projects/{id}/teams/{team_id}Remove team from project

Troubleshooting

User can't access a project

  1. Verify the user is a member of a team
  2. Verify that team has been assigned to the project
  3. Check the team's role on the project has sufficient permissions

Changes not taking effect

  • Permission changes may take up to 5 minutes due to caching
  • Ask the user to refresh their browser
  • If urgent, the user can log out and log back in

Can't delete a team

  • Teams with project assignments cannot be deleted
  • Remove the team from all projects first, then delete