Team Members API
Team members are the humans who collaborate inside a team: the creator who owns it and the people they invited to help run its projects.
Team members are the humans who collaborate inside a team: the creator who owns it and the people they invited to help run its projects. They are distinct from a project's members, the subscribers who buy plans, who are modelled separately and reached through the Members endpoints.
A collaborator joins by invitation to an email address with a role code, holds one role at a time, and leaves either by removal or by having an unaccepted invitation withdrawn; both take the same ability, because both revoke the same prospective access. The team's owner appears as the first row of the roster but is not a membership: ownership cannot be re-roled or removed here. Reading who is on a team and reading how to reach them are separate asks, so email is present only when the token carries team-member:view and is otherwise absent from the row altogether.
The list is not paginated, since a team's collaborator list is small by construction. Every change announces itself as a team.* event.
Background
What the API refuses
The teams package enforces these itself; the API restates them rather than letting a plainly-invalid request surface as a 500.
| Attempt | Result |
|---|---|
| Re-role or remove the owner | 404: ownership is not a membership row |
| Invite someone already in the team | 422 |
Name a role code the team does not have | 422 |
| Address a user who is not in the team | 404 |
| Address a team the caller cannot see | 404 |
A team is visible only when the caller owns it or is a member. Tokens scoped to a different team get 404 RESOURCE_NOT_FOUND on every route here; existence never leaks.
Endpoints
/v1/teams/{team}/membersList a team's membersPOST/v1/teams/{team}/membersInvite a team memberGET/v1/teams/{team}/members/{member}Get a team memberDELETE/v1/teams/{team}/members/{member}Remove a team memberPATCH/v1/teams/{team}/members/{member}/roleChange a team member's roleDELETE/v1/teams/{team}/invitations/{invitation}Withdraw an invitationRelated
How is this guide?
Last updated on