76 lines
1.9 KiB
TypeScript
76 lines
1.9 KiB
TypeScript
// ============================================================================
|
|
// Projects API (Target Channels)
|
|
// ============================================================================
|
|
|
|
import { api } from "./client";
|
|
import type { Project, PaginatedResponse, PaginationParams } from "@/lib/types/api";
|
|
|
|
export interface UpdateProjectInviteLinkTypeRequest {
|
|
purchase_invite_type_default: "public" | "approval";
|
|
}
|
|
|
|
export interface MoveProjectRequest {
|
|
target_workspace_id: string;
|
|
}
|
|
|
|
export const projectsApi = {
|
|
/**
|
|
* Get list of projects for workspace
|
|
* Projects are created via Telegram bot (add/remove channel)
|
|
*/
|
|
list: (workspaceId: string, params?: PaginationParams & { include_archived?: boolean }) =>
|
|
api.get<PaginatedResponse<Project>>(
|
|
`/workspaces/${workspaceId}/projects`,
|
|
{ params }
|
|
),
|
|
|
|
/**
|
|
* Update project invite link type default
|
|
*/
|
|
updateInviteLinkType: (
|
|
workspaceId: string,
|
|
projectId: string,
|
|
data: UpdateProjectInviteLinkTypeRequest
|
|
) =>
|
|
api.patch<Project>(
|
|
`/workspaces/${workspaceId}/projects/${projectId}/invite-link-type`,
|
|
data
|
|
),
|
|
|
|
/**
|
|
* Archive project
|
|
*/
|
|
archive: (workspaceId: string, projectId: string) =>
|
|
api.post<Project>(
|
|
`/workspaces/${workspaceId}/projects/${projectId}/archive`
|
|
),
|
|
|
|
/**
|
|
* Unarchive project
|
|
*/
|
|
unarchive: (workspaceId: string, projectId: string) =>
|
|
api.post<Project>(
|
|
`/workspaces/${workspaceId}/projects/${projectId}/unarchive`
|
|
),
|
|
|
|
/**
|
|
* Delete project (soft delete)
|
|
*/
|
|
delete: (workspaceId: string, projectId: string) =>
|
|
api.delete(`/workspaces/${workspaceId}/projects/${projectId}`),
|
|
|
|
/**
|
|
* Move project to another workspace
|
|
*/
|
|
move: (
|
|
workspaceId: string,
|
|
projectId: string,
|
|
data: MoveProjectRequest
|
|
) =>
|
|
api.put<Project>(
|
|
`/workspaces/${workspaceId}/projects/${projectId}/move`,
|
|
data
|
|
),
|
|
};
|
|
|