/** * 工作空间相关 API */ import apiClient from './client'; export interface Workspace { id: string; name: string; owner_user_id: string; subscription_plan: 'free' | 'pro' | 'enterprise'; subscription_status: 'active' | 'inactive' | 'expired'; created_at: string; } export interface CreateWorkspaceRequest { name: string; subscription_plan?: 'free' | 'pro' | 'enterprise'; } export interface WorkspaceMember { id: string; user_id: string; email: string; username: string; role: 'owner' | 'admin' | 'member' | 'viewer'; joined_at: string; } export interface InviteMemberRequest { email: string; role: 'admin' | 'member' | 'viewer'; } export const getWorkspaces = async (): Promise => { const response = await apiClient.get('/workspaces'); return response.data; }; export const getWorkspace = async (id: string): Promise => { const response = await apiClient.get(`/workspaces/${id}`); return response.data; }; export const createWorkspace = async ( data: CreateWorkspaceRequest ): Promise => { const response = await apiClient.post('/workspaces', data); return response.data; }; export const getMembers = async (workspaceId: string): Promise => { const response = await apiClient.get(`/workspaces/${workspaceId}/members`); return response.data; }; export const inviteMember = async ( workspaceId: string, data: InviteMemberRequest ): Promise<{ message: string }> => { const response = await apiClient.post(`/workspaces/${workspaceId}/members/invite`, data); return response.data; }; export const removeMember = async ( workspaceId: string, memberId: string ): Promise<{ message: string }> => { const response = await apiClient.delete(`/workspaces/${workspaceId}/members/${memberId}`); return response.data; }; export const updateMemberRole = async ( workspaceId: string, memberId: string, role: 'admin' | 'member' | 'viewer' ): Promise<{ message: string }> => { const response = await apiClient.patch(`/workspaces/${workspaceId}/members/${memberId}`, { role, }); return response.data; }; export const leaveWorkspace = async (workspaceId: string): Promise<{ message: string }> => { const response = await apiClient.post(`/workspaces/${workspaceId}/leave`); return response.data; };