Workspace API
Update a Member
Change a workspace member's role with PATCH /workspace/members/{userId}.
PATCH https://api.parcelengineering.com/api/v1/workspace/members/{userId}Changes the role of a workspace member. The caller must be an owner or admin (for user-token requests). API key callers are admin-equivalent.
The workspace must always have at least one owner. Demoting the last owner returns 409 last_owner.
Update a member costs 0 credits.
The Workspace API requires the Pro plan. A request from a non-Pro workspace receives 403 forbidden.
Path parameters
| Parameter | Description |
|---|---|
userId | UUID of the member whose role you want to change. Returned as id in the List Members response. |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
role | string | Yes | The new role for the member: owner, admin, or member. |
Errors
| Code | Status | Description |
|---|---|---|
forbidden | 403 | The caller is not an owner or admin in this workspace. |
not_found | 404 | The user is not a member of this workspace. |
last_owner | 409 | Cannot demote the only remaining owner. Transfer ownership to another member first. |
Example
curl -X PATCH \ "https://api.parcelengineering.com/api/v1/workspace/members/d1e2f3a4-0002-4b7c-9e5d-000000000002" \ -H "Authorization: Bearer pcl_your_api_key" \ -H "Content-Type: application/json" \ -d '{ "role": "admin" }'const response = await fetch( 'https://api.parcelengineering.com/api/v1/workspace/members/d1e2f3a4-0002-4b7c-9e5d-000000000002', { method: 'PATCH', headers: { 'Authorization': 'Bearer pcl_your_api_key', 'Content-Type': 'application/json', }, body: JSON.stringify({ role: 'admin' }), });
const { data, metadata } = await response.json();Response
{ "data": { "user_id": "d1e2f3a4-0002-4b7c-9e5d-000000000002", "role": "admin" }, "metadata": { "credits": 0 }}Response fields
| Field | Type | Description |
|---|---|---|
data.user_id | string (UUID) | The updated member’s user id. |
data.role | string | The member’s new role: owner, admin, or member. |
metadata.credits | integer | Always 0. |