Workspace Service
Workspace and project management with tenant workspace isolation and collaboration
Workspace Service (Port 8006)
The workspace-service manages workspaces, projects, and team members with full tenant isolation.
Database
Database: workspace_db
| Table | Purpose |
|---|---|
workspaces | Workspace definitions |
projects | Projects within workspaces |
members | Workspace member associations |
API Endpoints
| Method | Path | Purpose |
|---|---|---|
| GET | /workspaces | List workspaces |
| POST | /workspaces | Create workspace |
| GET | /workspaces/{id} | Get workspace |
| PUT | /workspaces/{id} | Update workspace |
| DELETE | /workspaces/{id} | Delete workspace |
| GET | /projects | List projects |
| POST | /projects | Create project |
| GET | /members | List members |
| POST | /members | Add member |
| DELETE | /members/{id} | Remove member |
Tenant Isolation
Every workspace is scoped to a tenant. The X-Tenant-ID header is required:
async def list_workspaces(request: Request):
tenant_id = request.state.tenant_id
query = select(Workspace).where(Workspace.tenant_id == tenant_id)
result = await db.execute(query)
return result.scalars().all()Multi-Tenancy
# Workspace service uses shared database with tenant_id column
# All queries must filter by tenant_id
async def get_workspace(workspace_id: str, tenant_id: str):
query = select(Workspace).where(
Workspace.id == workspace_id,
Workspace.tenant_id == tenant_id
)
return await db.execute(query)