PATCH /api/v1/projects/{project_id}/members/{member_id}
Requires project_members.write permission.
Path parameters
UUID of the project membership record.
Request body
UUID of the new role to assign.
Response
The updated project membership.Show ProjectMember properties
UUID of the project membership record.
UUID of the assigned role.
The updated role.
Human-readable display name.
true for built-in roles that cannot be modified.
List of permission strings granted by this role.
ISO 8601 timestamp when the membership was created.
Errors
| Status | When |
|---|
403 | Caller lacks project_members.write permission |
404 | Project, member, or role not found |
Example
curl -X PATCH http://localhost:8080/api/v1/projects/p1b2c3d4-e5f6-7890-abcd-ef1234567890/members/mb1b2c3d4-e5f6-7890-abcd-ef1234567890 \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"role_id": "r2b2c3d4-e5f6-7890-abcd-ef1234567890"}'
{
"member": {
"id": "mb1b2c3d4-e5f6-7890-abcd-ef1234567890",
"project_id": "p1b2c3d4-e5f6-7890-abcd-ef1234567890",
"user_id": "u1b2c3d4-e5f6-7890-abcd-ef1234567890",
"role_id": "r2b2c3d4-e5f6-7890-abcd-ef1234567890",
"role": {
"id": "r2b2c3d4-e5f6-7890-abcd-ef1234567890",
"key": "viewer",
"name": "Viewer",
"is_system": true,
"permissions": ["flags.read", "rules.read"]
},
"created_at": "2026-01-15T09:00:00Z"
}
}