// ============================================================================ // 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>( `/workspaces/${workspaceId}/projects`, { params } ), /** * Update project invite link type default */ updateInviteLinkType: ( workspaceId: string, projectId: string, data: UpdateProjectInviteLinkTypeRequest ) => api.patch( `/workspaces/${workspaceId}/projects/${projectId}/invite-link-type`, data ), /** * Archive project */ archive: (workspaceId: string, projectId: string) => api.post( `/workspaces/${workspaceId}/projects/${projectId}/archive` ), /** * Unarchive project */ unarchive: (workspaceId: string, projectId: string) => api.post( `/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( `/workspaces/${workspaceId}/projects/${projectId}/move`, data ), };