Assign Team Role
PUT /sales-coach/team/users/{user_id}/role
Grant a Team HQ role. THIS REPLACES THE PERSON’S PERMISSIONS.
cb_user_roles has a composite primary key on (user_id, org_id), so the
new row replaces whatever they had - this is a privilege grant, not a
label on a dashboard.
The app’s three rules apply unchanged and each is a 403:
- the caller must be able to manage the team floor;
- no self-assignment, or a manager could re-role themselves;
- the caller must already hold every permission of the role they are granting, unless they are an org Owner or Admin - Settings’ non-escalation rule.
Only the five Team HQ slugs are assignable. admin is not one of them and
is refused at the request layer.
Authorizations
Parameters
Path Parameters
The member to re-role.
The member to re-role.
Header Parameters
Request Body required
Grant one Team HQ role to an existing member of the caller’s org.
A role REPLACES the person’s whole permission set - cb_user_roles has a
composite primary key on (user_id, org_id), so there is exactly one row per
person per org. This is a privilege grant, not a label.
object
The role to grant. admin is not assignable here - it belongs to Settings -> Roles, behind the full RBAC admin gate.
Responses
200
Successful Response
object
An open envelope for a config, a bootstrap or a data response.
Open because the leaderboard and set DATA responses carry one key per KPI and the KPI catalogue is org-configurable: a closed model would drop a customer’s own metric, and a leaderboard missing a column reads as a rep having scored nothing.
object
422
Validation Error