Create Workspace
POST /api/client/workspaces
Create a new workspace
Authentication
Requires valid JWT token inAuthorization header.
Request Body
Workspace name
Workspace description
Avatar URL or ID
Request Schema
Response
Workspace ID
Workspace name
Workspace description
Avatar URL or ID
Error Codes
400-WorkspaceNameRequired: Workspace name is required400-AccountNotFound: Account not found
Get Workspace
GET /api/client/workspaces/:workspaceId
Get workspace details
Authentication
Requires valid JWT token inAuthorization header.
Path Parameters
Workspace ID
Response
Same schema as Create Workspace response.Error Codes
400-WorkspaceNotFound: Workspace not found403-WorkspaceNoAccess: User does not have access to workspace
Update Workspace
PATCH /api/client/workspaces/:workspaceId
Update workspace details
Authentication
Requires valid JWT token inAuthorization header.
Authorization
Only users withowner role can update workspaces.
Path Parameters
Workspace ID
Request Body
Workspace name
Workspace description
Avatar URL or ID
Request Schema
Response
Returns updated workspace object (same schema as Get Workspace).Behavior
- Updates workspace metadata
- Sets
updated_attimestamp - Sets
updated_byto current user ID - Publishes
workspace.updatedevent
Error Codes
403-WorkspaceUpdateNotAllowed: Only owners can update workspaces404-WorkspaceNotFound: Workspace not found500-WorkspaceUpdateFailed: Failed to update workspace
Delete Workspace
DELETE /api/client/workspaces/:workspaceId
Delete a workspace
Authentication
Requires valid JWT token inAuthorization header.
Authorization
Only users withowner role can delete workspaces.
Path Parameters
Workspace ID
Response
Returns deleted workspace object.Behavior
- Deletes workspace from database
- Schedules background cleanup job (
workspace.clean) - Cleanup job has 5 retry attempts with exponential backoff
- Publishes
workspace.deletedevent
Error Codes
403-WorkspaceDeleteNotAllowed: Only owners can delete workspaces404-WorkspaceNotFound: Workspace not found
Invite Users
POST /api/client/workspaces/:workspaceId/users
Invite users to workspace
Authentication
Requires valid JWT token inAuthorization header.
Authorization
Only users withowner or admin role can invite users.
Path Parameters
Workspace ID
Request Body
Array of user objects to invite
Request Schema
Response
Successfully created/existing users
Failed user invitations
Behavior
- Batch processing: Efficiently handles multiple users
- Creates missing accounts: Automatically creates pending accounts for new emails
- Idempotent: Returns existing users if already in workspace
- Creates self-chat: Each new user gets a private chat node
- Default limits: Applies configured storage and file size limits
- Publishes events: Emits
user.createdevent for each new user
Error Codes
400-UserEmailRequired: User email is required403-UserInviteNoAccess: Only owners and admins can invite users
Update User Role
PATCH /api/client/workspaces/:workspaceId/users/:userId/role
Update user’s role in workspace
Authentication
Requires valid JWT token inAuthorization header.
Authorization
Only users withowner or admin role can update user roles.
Path Parameters
Workspace ID
User ID to update
Request Body
New role:
owner, admin, member, viewer, guest, or noneRequest Schema
Response
Returns updated user object (same schema as user in Invite Users response).Role Hierarchy
Authorization Rules
- Owners can set any role
- Admins cannot modify users with equal or higher role
- Admins cannot grant roles equal to or higher than their own
- Admins cannot change their own role (except owners)
- Setting role to
nonesets status toUserStatus.Removed
Behavior
- Updates user role and status
- Sets
updated_attimestamp - Sets
updated_byto current account ID - Publishes
user.updatedevent
Error Codes
403-UserUpdateNoAccess: Insufficient permissions404-UserNotFound: User not found
Workspace Roles
Workspace roles determine what actions users can perform.
| Role | Level | Description |
|---|---|---|
owner | 5 | Full control over workspace |
admin | 4 | Manage users and settings |
member | 3 | Create and edit content |
viewer | 2 | View-only access |
guest | 1 | Limited temporary access |
none | 0 | No access (removed) |
User Status
- Active: User has access to workspace
- Removed: User has been removed from workspace