Skip to Content
API ReferenceWorkspaces

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

MethodPathDescription
GET/api/v1/workspacesList workspaces
GET/api/v1/workspaces/{id}Get a workspace
DELETE/api/v1/workspaces/{id}Delete a workspace
GET/api/v1/workspaces/{id}/membersList workspace members
POST/api/v1/workspaces/{id}/members/inviteInvite a member by email
PUT/api/v1/workspaces/{id}/members/{accountId}/roleUpdate member role
DELETE/api/v1/workspaces/{id}/members/{accountId}Remove a member
GET/api/v1/workspaces/{id}/settingsGet workspace settings
PUT/api/v1/workspaces/{id}/settingsUpdate workspace settings
GET/api/v1/workspaces/{id}/invitesList pending invitations
POST/api/v1/workspaces/{id}/invites/{inviteId}/acceptAccept an invitation
POST/api/v1/workspaces/{id}/invites/{inviteId}/resendResend 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

FieldTypeRequiredDescription
emailstringYesEmail address of the user to invite
rolestringNoRole 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

FieldTypeRequiredDescription
rolestringYesNew role (owner, admin, member, or custom role name)
role_idstring (UUID)NoCustom 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

FieldTypeDescription
idstring (UUID)Unique identifier
namestringDisplay name
slugstringURL-safe identifier
avatar_urlstringAvatar image URL
default_rolestringDefault role for new members
settingsobjectWorkspace-level settings
organization_idstring (UUID) or nullParent organization
member_countintegerNumber of workspace members
created_atstring (ISO 8601)Creation timestamp
updated_atstring (ISO 8601)Last update timestamp

Workspace Member Object

FieldTypeDescription
workspace_idstring (UUID)Workspace ID
account_idstring (UUID)Account ID
rolestringRole name
role_idstring (UUID) or nullCustom role ID
emailstringMember email
namestringMember display name
avatar_urlstringMember avatar URL
created_atstring (ISO 8601)When the member was added
Last updated on