/** * Users API * * User management API calls */ import { apiClient } from './client'; export interface User { id: string; organizationId: string; email: string; firstName: string; lastName: string; role: 'admin' | 'manager' | 'user' | 'viewer'; phoneNumber?: string; isEmailVerified: boolean; isActive: boolean; lastLoginAt?: string; createdAt: string; updatedAt: string; } export interface CreateUserRequest { organizationId: string; email: string; firstName: string; lastName: string; role: 'admin' | 'manager' | 'user' | 'viewer'; phoneNumber?: string; password?: string; } export interface UpdateUserRequest { firstName?: string; lastName?: string; phoneNumber?: string; isActive?: boolean; } export interface ChangePasswordRequest { currentPassword: string; newPassword: string; } export const usersApi = { /** * Get users in current organization */ async list(): Promise { return apiClient.get('/api/v1/users'); }, /** * Get user by ID */ async getById(id: string): Promise { return apiClient.get(`/api/v1/users/${id}`); }, /** * Create/invite user */ async create(data: CreateUserRequest): Promise { return apiClient.post('/api/v1/users', data); }, /** * Update user */ async update(id: string, data: UpdateUserRequest): Promise { return apiClient.patch(`/api/v1/users/${id}`, data); }, /** * Change user role */ async changeRole( id: string, role: 'admin' | 'manager' | 'user' | 'viewer' ): Promise { return apiClient.patch(`/api/v1/users/${id}/role`, { role }); }, /** * Deactivate user */ async deactivate(id: string): Promise { return apiClient.patch(`/api/v1/users/${id}`, { isActive: false }); }, /** * Activate user */ async activate(id: string): Promise { return apiClient.patch(`/api/v1/users/${id}`, { isActive: true }); }, /** * Delete user */ async delete(id: string): Promise { return apiClient.delete(`/api/v1/users/${id}`); }, /** * Change password */ async changePassword(data: ChangePasswordRequest): Promise { return apiClient.post('/api/v1/users/change-password', data); }, };