Files
xiaoxia-saas/apps/web/src/api/workspace.ts
T
Xiaoxia AI 28e2c12b7f
Deploy / Deploy Staging (push) Failing after 6s
Deploy / Deploy Production (push) Has been skipped
Tests / test (push) Failing after 17s
Tests / lint (push) Failing after 17s
feat(phase7): wire asset upload and ingest flow
2026-06-17 18:14:35 +08:00

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;
};