Teams

post/teams/{team_id}/members

Request

  • Base URL: /api (relative, and the document was published on a file host, not at the API’s origin)
  • URL: /api/teams/{team_id}/members
  • Auth: HTTP bearer

Path parameters

team_idinteger required

Request body

role'owner' | 'admin' | 'deployer' | 'viewer' required

Role a user holds within a team, or that a team holds on a project.

Named TeamRole rather than Role to keep it distinct from temps_auth::permissions::Role, which is the instance-wide role (Admin/User/…) attached to a session. The two are orthogonal: the instance-wide role decides whether you may touch a resource kind at all, TeamRole decides what you may do within a project you have team access to. See temps_teams::fixed_role_permissions for the project-scoped permission set each variant maps to.

Stored as a varchar(32) rather than a Postgres enum so the role set can evolve in pure migration code without a schema-level enum alteration blocking a downgrade.

user_idinteger required

Response

Member added

added_byinteger required
created_atstring date-time required
idinteger required
role'owner' | 'admin' | 'deployer' | 'viewer' required

Role a user holds within a team, or that a team holds on a project.

Named TeamRole rather than Role to keep it distinct from temps_auth::permissions::Role, which is the instance-wide role (Admin/User/…) attached to a session. The two are orthogonal: the instance-wide role decides whether you may touch a resource kind at all, TeamRole decides what you may do within a project you have team access to. See temps_teams::fixed_role_permissions for the project-scoped permission set each variant maps to.

Stored as a varchar(32) rather than a Postgres enum so the role set can evolve in pure migration code without a schema-level enum alteration blocking a downgrade.

team_idinteger required
updated_atstring date-time required
user_emailstring nullable

The member's email, joined from users.

user_idinteger required
user_namestring nullable

The member's display name, joined from users. None if the referenced user no longer exists.

Example response

{
  "created_at": "2026-07-30T12:15:47.609192Z",
  "updated_at": "2026-07-30T12:15:47.609192Z"
}

Changes

No recorded changes to this operation across all 50 revisions of this API.