Skip to content

WorkspacesService

Manage workspaces, members, and data models.

Methods

MethodDescription
create(data)Create a workspace
update(id, data)Update a workspace
delete(id)Delete a workspace
getMembers(id)List workspace members
removeMember(workspaceId, userId)Remove a member
updateMemberRole(workspaceId, userId, role)Change member role
invite(data)Invite a user
acceptInvitation(token)Accept an invitation
getFeatureFlags(id)Get feature flags
getDataModel(id)Get data model
createDataModelField(id, data)Create data model field
updateDataModelField(id, fieldId, data)Update data model field
deleteDataModelField(id, fieldId)Delete data model field
reorderDataModelFields(id, fieldIds)Reorder fields
validateDataModel(id, data)Validate custom fields
getDataModelDefaults(id)Get default field values

create()

Create a new workspace.

typescript
const workspace = await client.workspaces.create({
  name: 'My Coffee Shop',
  slug: 'my_coffee_shop'
});

Member Management

typescript
// List members
const members = await client.workspaces.getMembers('workspace-uuid');

// Invite a new member
await client.workspaces.invite({
  workspace_id: 'workspace-uuid',
  email: '[email protected]',
  role: 'member'
});

// Change member role
await client.workspaces.updateMemberRole(
  'workspace-uuid',
  'user-uuid',
  'admin'
);

// Remove member
await client.workspaces.removeMember('workspace-uuid', 'user-uuid');

Data Model Management

typescript
// Get current data model
const dataModel = await client.workspaces.getDataModel('workspace-uuid');

// Create a number field
await client.workspaces.createDataModelField('workspace-uuid', {
  field_name: 'points',
  field_label: 'Points Balance',
  field_type: 'number',
  default_value: '0',
  is_required: true
});

// Create an enum field
await client.workspaces.createDataModelField('workspace-uuid', {
  field_name: 'tier',
  field_label: 'Membership Tier',
  field_type: 'string',
  default_value: 'Bronze',
  allowed_values: ['Bronze', 'Silver', 'Gold', 'Platinum'],
  is_required: true
});

// Create a multiselect field
await client.workspaces.createDataModelField('workspace-uuid', {
  field_name: 'interests',
  field_label: 'Interests',
  field_type: 'multiselect',
  allowed_values: ['sports', 'music', 'food', 'travel']
});

// Validate custom fields
const validation = await client.workspaces.validateDataModel('workspace-uuid', {
  custom_fields: {
    points: 1500,
    tier: 'Gold',
    interests: ['sports', 'music']
  }
});

if (!validation.valid) {
  console.log('Errors:', validation.errors);
}

// Get default values
const defaults = await client.workspaces.getDataModelDefaults('workspace-uuid');

WalletHero Documentation