Skip to main content
Glama
user.service.ts•2.45 kB
import { ClockifyApiClient } from '../client.js'; import type { ClockifyUser } from '../../types/index.js'; export class UserService { constructor(private client: ClockifyApiClient) {} async getCurrentUser(): Promise<ClockifyUser> { return this.client.get<ClockifyUser>('/user'); } async getUserById(workspaceId: string, userId: string): Promise<ClockifyUser> { return this.client.get<ClockifyUser>(`/workspaces/${workspaceId}/users/${userId}`); } async getAllUsers( workspaceId: string, options?: { email?: string; name?: string; status?: 'ACTIVE' | 'PENDING_EMAIL_VERIFICATION' | 'INACTIVE'; memberships?: 'WORKSPACE' | 'PROJECT' | 'USERGROUP' | 'NONE'; projectId?: string; includeRoles?: boolean; 'page-size'?: number; page?: number; sortColumn?: string; sortOrder?: 'ASCENDING' | 'DESCENDING'; } ): Promise<ClockifyUser[]> { return this.client.get<ClockifyUser[]>(`/workspaces/${workspaceId}/users`, options); } async updateUser( workspaceId: string, userId: string, data: { name?: string; email?: string; timeZone?: string; weekStart?: string; timeFormat?: string; dateFormat?: string; } ): Promise<ClockifyUser> { return this.client.put<ClockifyUser>(`/workspaces/${workspaceId}/users/${userId}`, data); } async findUserByEmail(workspaceId: string, email: string): Promise<ClockifyUser | null> { const users = await this.getAllUsers(workspaceId, { email }); return users.length > 0 ? users[0] : null; } async findUserByName(workspaceId: string, name: string): Promise<ClockifyUser[]> { const users = await this.getAllUsers(workspaceId); return users.filter(user => user.name.toLowerCase().includes(name.toLowerCase())); } async addUserToWorkspace(workspaceId: string, email: string): Promise<ClockifyUser> { return this.client.post<ClockifyUser>(`/workspaces/${workspaceId}/users`, { email }); } async removeUserFromWorkspace(workspaceId: string, userId: string): Promise<void> { return this.client.delete(`/workspaces/${workspaceId}/users/${userId}`); } async setUserActiveStatus( workspaceId: string, userId: string, active: boolean ): Promise<ClockifyUser> { return this.client.put<ClockifyUser>(`/workspaces/${workspaceId}/users/${userId}/status`, { status: active ? 'ACTIVE' : 'INACTIVE', }); } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/hongkongkiwi/clockify-master-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server