87 lines
2.3 KiB
TypeScript
87 lines
2.3 KiB
TypeScript
/**
|
|
* 工作空间相关 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<Workspace[]> => {
|
|
const response = await apiClient.get('/workspaces');
|
|
return response.data;
|
|
};
|
|
|
|
export const getWorkspace = async (id: string): Promise<Workspace> => {
|
|
const response = await apiClient.get(`/workspaces/${id}`);
|
|
return response.data;
|
|
};
|
|
|
|
export const createWorkspace = async (
|
|
data: CreateWorkspaceRequest
|
|
): Promise<Workspace> => {
|
|
const response = await apiClient.post('/workspaces', data);
|
|
return response.data;
|
|
};
|
|
|
|
export const getMembers = async (workspaceId: string): Promise<WorkspaceMember[]> => {
|
|
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;
|
|
};
|