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

TablePurpose
workspacesWorkspace definitions
projectsProjects within workspaces
membersWorkspace member associations

API Endpoints

MethodPathPurpose
GET/workspacesList workspaces
POST/workspacesCreate workspace
GET/workspaces/{id}Get workspace
PUT/workspaces/{id}Update workspace
DELETE/workspaces/{id}Delete workspace
GET/projectsList projects
POST/projectsCreate project
GET/membersList members
POST/membersAdd 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)