// frontend/src/api/services/tenant.service.ts /** * Tenant Management Service * Handles all tenant-related operations */ import { apiClient } from '../client'; import { serviceEndpoints } from '../client/config'; import type { TenantInfo, TenantCreate, TenantUpdate, TenantMember, InviteUser, TenantStats, PaginatedResponse, BaseQueryParams, } from '../types'; export class TenantService { private baseEndpoint = serviceEndpoints.tenant; /** * Create New Tenant */ async createTenant(data: TenantCreate): Promise { return apiClient.post(`${this.baseEndpoint}/register`, data); } /** * Get Tenant Details */ async getTenant(tenantId: string): Promise { return apiClient.get(`${this.baseEndpoint}/${tenantId}`); } /** * Update Tenant */ async updateTenant(tenantId: string, data: TenantUpdate): Promise { return apiClient.put(`${this.baseEndpoint}/${tenantId}`, data); } /** * Delete Tenant */ async deleteTenant(tenantId: string): Promise<{ message: string }> { return apiClient.delete(`${this.baseEndpoint}/${tenantId}`); } /** * Get Tenant Members */ async getTenantMembers( tenantId: string, params?: BaseQueryParams ): Promise> { return apiClient.get(`${this.baseEndpoint}/${tenantId}/members`, { params }); } /** * Invite User to Tenant */ async inviteUser(tenantId: string, invitation: InviteUser): Promise<{ message: string }> { return apiClient.post(`${this.baseEndpoint}/${tenantId}/invite`, invitation); } /** * Remove Member from Tenant */ async removeMember(tenantId: string, userId: string): Promise<{ message: string }> { return apiClient.delete(`${this.baseEndpoint}/${tenantId}/members/${userId}`); } /** * Update Member Role */ async updateMemberRole( tenantId: string, userId: string, role: string ): Promise { return apiClient.patch(`${this.baseEndpoint}/${tenantId}/members/${userId}`, { role }); } /** * Get Tenant Statistics */ async getTenantStats(tenantId: string): Promise { return apiClient.get(`${this.baseEndpoint}/${tenantId}/stats`); } /** * Get User's Tenants */ async getUserTenants(): Promise { return apiClient.get(`/users/me/tenants`); } } export const tenantService = new TenantService();