Documentation Index
Fetch the complete documentation index at: https://docs.wellapp.ai/llms.txt
Use this file to discover all available pages before exploring further.
A WorkspaceGroup is a named collection that groups multiple workspaces together, enabling cross-workspace access management and shared membership. Groups are created by a specific person (the creator) and can contain any number of workspace slots via the WorkspaceGroupWorkspace join entity, and any number of members via WorkspaceGroupMembership. The entity carries its own lifecycle (created_at, updated_at, soft-deleted via deleted_at) and is identified externally by a UUID while relying on an internal serial primary key for joins.
| Naming | Value |
|---|
| Object | WorkspaceGroup |
Resource type (JSON:API type) | workspace_group |
| Collection / records root | โ (not a records root) |
| REST base | /v1/workspace-groups |
| Entity class | WorkspaceGroup |
Internal object. Not currently exposed on the public REST API. The operations below describe the intended contract.
API operations
| Operation | Method & path | Status |
|---|
| List | GET /v1/workspace-groups | ๐ก Planned |
| Retrieve | GET /v1/workspace-groups/{id} | ๐ก Planned |
| Create | POST /v1/workspace-groups | ๐ก Planned |
| Update | PATCH /v1/workspace-groups/{id} | ๐ก Planned |
| Delete | DELETE /v1/workspace-groups/{id} | ๐ก Planned |
Data model
Attributes
| Field | Type | Required | Constraints | Allowed values | Description |
|---|
| workspace_group_id | string (UUID) | โ
Yes | unique | โ | Public-facing stable identifier for the group. Generated server-side via gen_random_uuid(); never supplied by the caller. Unique constraint enforced at the database level. |
| name | string (varchar 255) | โ
Yes | NOT NULL, max length 255 | โ | Human-readable label for the workspace group. Set at creation time. NOT NULL in the database; max 255 characters (MikroORM default varchar length). |
| created_at | ๐ system โ Date (timestamptz) | โ
Yes | NOT NULL, set once on insert | โ | Timestamp of record creation. Set automatically by the MikroORM onCreate lifecycle hook; never supplied by the caller. |
| updated_at | ๐ system โ Date (timestamptz) | โช No | nullable | โ | Timestamp of the last update. Set by MikroORM onCreate and onUpdate lifecycle hooks; null until the first update after creation. |
| deleted_at | ๐ system โ Date (timestamptz) | null | โช No | nullable | โ | Soft-delete timestamp. Null means the record is active. Set to the deletion timestamp when the group is removed; the row is never physically deleted. All active queries filter deleted_at IS NULL. |
Relationships
| Name | Type | Required | Description |
|---|
| created_by | to-one (ManyToOne) | โ
Yes | The People record of the person who created this workspace group. Foreign key created_by_pk references core_api.peoples(pk). NOT NULL โ every group must have an identified creator. |
System-computed
- workspace_group_id โ generated server-side via gen_random_uuid() default and randomUUID() application-side default; unique constraint enforced in DB
- created_at โ set automatically by MikroORM onCreate: () => new Date()
- updated_at โ set automatically by MikroORM onCreate and onUpdate: () => new Date()
- deleted_at โ managed by the soft-delete pattern; set by the service layer on logical deletion, never by the user directly
Example
{
"data": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"type": "workspace_group",
"attributes": {
"workspace_group_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "EMEA Finance Team",
"created_at": "2026-05-28T08:15:00.000Z",
"updated_at": "2026-05-28T08:15:00.000Z",
"deleted_at": null
},
"relationships": {
"created_by": {
"data": { "id": "d7e8f9a0-b1c2-3456-def0-123456789abc", "type": "person" }
}
}
}
}
Source: apps/api/src/database/entities/WorkspaceGroup.ts ยท domain: workspace ยท tier: Platform