Workspaces API
Workspaces are the primary multi-tenant isolation boundary in Zeotap. Each workspace contains its own sources, models, destinations, Reverse ETL pipelines, audiences, syncs, and other resources. Users can belong to multiple workspaces. New workspaces are created through their parent organization (see Organizations API).
Endpoints
| Method | Path | Description |
|---|---|---|
GET | /api/v1/workspaces | List workspaces |
GET | /api/v1/workspaces/{id} | Get a workspace |
DELETE | /api/v1/workspaces/{id} | Delete a workspace |
GET | /api/v1/workspaces/{id}/members | List workspace members |
POST | /api/v1/workspaces/{id}/members/invite | Invite a member by email |
PUT | /api/v1/workspaces/{id}/members/{accountId}/role | Update member role |
DELETE | /api/v1/workspaces/{id}/members/{accountId} | Remove a member |
GET | /api/v1/workspaces/{id}/settings | Get workspace settings |
PUT | /api/v1/workspaces/{id}/settings | Update workspace settings |
GET | /api/v1/workspaces/{id}/invites | List pending invitations |
POST | /api/v1/workspaces/{id}/invites/{inviteId}/accept | Accept an invitation |
POST | /api/v1/workspaces/{id}/invites/{inviteId}/resend | Resend an invitation email |
DELETE | /api/v1/workspaces/{id}/invites/{inviteId} | Cancel an invitation |
List Workspaces
GET /api/v1/workspaces
Returns all workspaces the authenticated user is a member of. This endpoint does not require the X-Workspace-ID header.
Response
[
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Production",
"slug": "production",
"avatar_url": "",
"default_role": "member",
"settings": {},
"organization_id": "660e8400-e29b-41d4-a716-446655440000",
"member_count": 12,
"created_at": "2024-01-01T00:00:00Z",
"updated_at": "2024-01-15T09:30:00Z"
},
{
"id": "770e8400-e29b-41d4-a716-446655440000",
"name": "Staging",
"slug": "staging",
"avatar_url": "",
"default_role": "member",
"settings": {},
"organization_id": "660e8400-e29b-41d4-a716-446655440000",
"member_count": 5,
"created_at": "2024-01-05T00:00:00Z",
"updated_at": "2024-01-10T09:30:00Z"
}
]Example
curl -X GET https://composable.zeotap.com/api/v1/workspaces \
-H "Authorization: Bearer <token>"Create Workspace
Workspaces are created under an organization. See POST /api/v1/organizations/{orgId}/workspaces in the Organizations API.
Get Workspace
GET /api/v1/workspaces/{id}
Returns a single workspace by ID. The authenticated user must be a member of the workspace.
Example
curl -X GET https://composable.zeotap.com/api/v1/workspaces/{id} \
-H "Authorization: Bearer <token>" \
-H "X-Workspace-ID: <workspace-id>"Update Workspace
Use the Workspace Settings endpoint (PUT /api/v1/workspaces/{id}/settings) to update workspace name, avatar, default role, and other configuration.
Delete Workspace
DELETE /api/v1/workspaces/{id}
Deletes a workspace and all of its resources. Requires owner role. This action is irreversible.
Response
{
"status": "deleted"
}List Members
GET /api/v1/workspaces/{id}/members
Returns all members of the workspace with their roles and account details.
Response
[
{
"workspace_id": "550e8400-e29b-41d4-a716-446655440000",
"account_id": "660e8400-e29b-41d4-a716-446655440000",
"role": "owner",
"role_id": "00000000-0000-0000-0000-000000000001",
"email": "alice@example.com",
"name": "Alice Smith",
"avatar_url": "https://...",
"created_at": "2024-01-01T00:00:00Z"
},
{
"workspace_id": "550e8400-e29b-41d4-a716-446655440000",
"account_id": "770e8400-e29b-41d4-a716-446655440000",
"role": "member",
"role_id": "00000000-0000-0000-0000-000000000003",
"email": "bob@example.com",
"name": "Bob Jones",
"avatar_url": "https://...",
"created_at": "2024-01-05T00:00:00Z"
}
]Example
curl -X GET https://composable.zeotap.com/api/v1/workspaces/{id}/members \
-H "Authorization: Bearer <token>" \
-H "X-Workspace-ID: <workspace-id>"Invite Member
POST /api/v1/workspaces/{id}/members/invite
Sends an email invitation to add a user to the workspace. Requires owner or admin role.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
email | string | Yes | Email address of the user to invite |
role | string | No | Role to assign on acceptance (defaults to workspace default_role) |
Update Member Role
PUT /api/v1/workspaces/{id}/members/{accountId}/role
Changes a member’s role within the workspace.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
role | string | Yes | New role (owner, admin, member, or custom role name) |
role_id | string (UUID) | No | Custom role ID |
Remove Member
DELETE /api/v1/workspaces/{id}/members/{accountId}
Removes a member from the workspace. Owners cannot be removed unless ownership is transferred first.
Response
{
"status": "deleted"
}Workspace Settings
Get Settings
GET /api/v1/workspaces/{id}/settings
Returns workspace-level configuration settings.
Update Settings
PUT /api/v1/workspaces/{id}/settings
Updates workspace settings. Requires owner or admin role.
Invitations
Send invitations via Invite Member above. The endpoints below let you list, accept, resend, and cancel them.
List Invitations
GET /api/v1/workspaces/{id}/invites
Returns all pending invitations for the workspace.
Accept Invitation
POST /api/v1/workspaces/{id}/invites/{inviteId}/accept
Accepts a pending invitation. The authenticated user is added to the workspace with the invited role.
Resend Invitation
POST /api/v1/workspaces/{id}/invites/{inviteId}/resend
Resends the invitation email for a pending invite.
Cancel Invitation
DELETE /api/v1/workspaces/{id}/invites/{inviteId}
Cancels a pending invitation.
Workspace Object
| Field | Type | Description |
|---|---|---|
id | string (UUID) | Unique identifier |
name | string | Display name |
slug | string | URL-safe identifier |
avatar_url | string | Avatar image URL |
default_role | string | Default role for new members |
settings | object | Workspace-level settings |
organization_id | string (UUID) or null | Parent organization |
member_count | integer | Number of workspace members |
created_at | string (ISO 8601) | Creation timestamp |
updated_at | string (ISO 8601) | Last update timestamp |
Workspace Member Object
| Field | Type | Description |
|---|---|---|
workspace_id | string (UUID) | Workspace ID |
account_id | string (UUID) | Account ID |
role | string | Role name |
role_id | string (UUID) or null | Custom role ID |
email | string | Member email |
name | string | Member display name |
avatar_url | string | Member avatar URL |
created_at | string (ISO 8601) | When the member was added |