49 lines
1.8 KiB
TypeScript
49 lines
1.8 KiB
TypeScript
import type {
|
|
Company,
|
|
CompanyPortabilityExportResult,
|
|
CompanyPortabilityImportRequest,
|
|
CompanyPortabilityImportResult,
|
|
CompanyPortabilityPreviewRequest,
|
|
CompanyPortabilityPreviewResult,
|
|
} from "@paperclipai/shared";
|
|
import { api } from "./client";
|
|
|
|
export type CompanyStats = Record<string, { agentCount: number; issueCount: number }>;
|
|
|
|
export const companiesApi = {
|
|
list: () => api.get<Company[]>("/companies"),
|
|
get: (companyId: string) => api.get<Company>(`/companies/${companyId}`),
|
|
stats: () => api.get<CompanyStats>("/companies/stats"),
|
|
create: (data: {
|
|
name: string;
|
|
description?: string | null;
|
|
budgetMonthlyCents?: number;
|
|
}) =>
|
|
api.post<Company>("/companies", data),
|
|
update: (
|
|
companyId: string,
|
|
data: Partial<
|
|
Pick<
|
|
Company,
|
|
"name" | "description" | "status" | "budgetMonthlyCents" | "requireBoardApprovalForNewAgents" | "brandColor" | "logoAssetId"
|
|
>
|
|
>,
|
|
) => api.patch<Company>(`/companies/${companyId}`, data),
|
|
archive: (companyId: string) => api.post<Company>(`/companies/${companyId}/archive`, {}),
|
|
remove: (companyId: string) => api.delete<{ ok: true }>(`/companies/${companyId}`),
|
|
exportBundle: (
|
|
companyId: string,
|
|
data: {
|
|
include?: { company?: boolean; agents?: boolean; projects?: boolean; issues?: boolean };
|
|
projects?: string[];
|
|
issues?: string[];
|
|
projectIssues?: string[];
|
|
},
|
|
) =>
|
|
api.post<CompanyPortabilityExportResult>(`/companies/${companyId}/export`, data),
|
|
importPreview: (data: CompanyPortabilityPreviewRequest) =>
|
|
api.post<CompanyPortabilityPreviewResult>("/companies/import/preview", data),
|
|
importBundle: (data: CompanyPortabilityImportRequest) =>
|
|
api.post<CompanyPortabilityImportResult>("/companies/import", data),
|
|
};
|