Skip to main content
🤖 LLM Friendly: This page is available in raw Markdown format for LLM consumption:roles-permissions.md|Get full documentation:llms.txt/llms-full.txt

Roles & Permissions

Every agent in a workspace has a role that determines what they can do. The Firetell Call Center uses a 3-tier role system.

Roles

RoleDescription
memberStandard agent. Can make/receive calls, manage their own contacts, and view their own call history.
leaderTeam lead. Has all member permissions plus team-wide visibility and agent management capabilities.
supervisorCall center supervisor. Focuses on call quality assurance — real-time call supervision (listen, whisper, barge) plus team-wide visibility.

Permission Matrix

Featurememberleadersupervisor
Basic Operations
View teams I belong to
View teammates + presence
CRUD my own contacts
View contacts in accessible lists (personal, team, shared)
Create / update / delete personal address books (owner_type: agent)
View phone numbers (scoped by team)
View my call history
Transfer calls between agents
Team Management
Create / update / delete team address books (owner_type: team)
Create / update / delete shared address books (owner_type: everyone)
View team-wide call history
View all team contacts
Assign / remove agents from teams
Call Supervision
Silent listen (monitor)
Whisper (coach agent)
Barge-in (3-way call)

Setting Roles

Roles are assigned when adding an agent to a team via the admin console or the Workspace API:

PUT /teams/:team_id/agents/:agent_id
{
"role": "leader"
}

Valid values: member (default), leader, supervisor.

An agent has a single workspace-level role that applies across all teams they belong to. :::

Endpoint Access by Role

All Agents (member, leader, supervisor)

MethodEndpointDescription
GET/call-center/teamsList my teams
GET/call-center/teams/:id/agentsList teammates
GET/call-center/contactsList contacts in my accessible lists
POST/call-center/contactsCreate contact
PUT/call-center/contacts/:idUpdate contact
DELETE/call-center/contacts/:idDelete contact
GET/call-center/address-booksList accessible address books
GET/call-center/address-books/:idGet address book details
POST/call-center/address-booksCreate personal address book (owner_type: agent)
PUT/call-center/address-books/:idUpdate personal address book
DELETE/call-center/address-books/:idDelete personal address book
GET/call-center/phone-numbersList phone numbers
GET/call-center/call-historyList my calls
POST/call-center/calls/:call_id/transferTransfer call

Leader Only

MethodEndpointDescription
POST/call-center/address-booksCreate team/shared address book (owner_type: team or everyone)
PUT/call-center/address-books/:idUpdate team/shared address book
DELETE/call-center/address-books/:idDelete team/shared address book
GET/call-center/teams/:team_id/call-historyTeam call history
GET/call-center/teams/:team_id/call-history/:idTeam call details
PUT/call-center/teams/:id/agents/:agent_idAssign agent to team
DELETE/call-center/teams/:id/agents/:agent_idRemove agent from team
GET/call-center/teams/:team_id/contactsTeam contacts
GET/call-center/teams/:team_id/agents/statesTeam agent states
PUT/call-center/teams/:team_id/agents/:username/stateForce agent state

Leader & Supervisor

MethodEndpointDescription
GET/call-center/teams/:team_id/call-historyTeam call history
GET/call-center/teams/:team_id/call-history/:idTeam call details
GET/call-center/teams/:team_id/agents/statesTeam agent states
PUT/call-center/teams/:team_id/agents/:username/stateForce agent state

Supervisor Only

MethodEndpointDescription
POST/call-center/calls/:call_id/listenSilent monitor
POST/call-center/calls/:call_id/whisperCoach agent
POST/call-center/calls/:call_id/bargeJoin as 3-way call
DELETE/call-center/calls/:call_id/supervisionStop supervision

Error Responses

When an agent tries to access an endpoint they don't have permission for:

{
"statusCode": 403,
"message": "This action requires one of the following roles: leader, supervisor",
"error": "Forbidden"
}

When an agent tries to access a team they don't belong to:

{
"statusCode": 403,
"message": "You are not a member of this team",
"error": "Forbidden"
}