import { apiDelete, apiGet, apiPost } from "./axios"; import type { ApiListResponse } from "../types/api"; import type { Acknowledgement, Distribution, DocumentDetail, DocumentSummary, DocumentVersion, WorkflowTemplate, } from "../types/documents"; export const fetchDocuments = (params: Record) => apiGet>("/api/v1/documents", { params }); export const createDocument = (payload: Record) => apiPost("/api/v1/documents", payload); export const deleteDocument = (documentId: string) => apiDelete(`/api/v1/documents/${documentId}`); export const fetchDocumentDetail = (documentId: string) => apiGet(`/api/v1/documents/${documentId}`); export const uploadDocumentVersion = (documentId: string, payload: FormData) => apiPost(`/api/v1/documents/${documentId}/versions`, payload, { headers: { "Content-Type": "multipart/form-data" }, }); export const submitVersion = (versionId: string, payload: { template_id: string; comment?: string }) => apiPost(`/api/v1/versions/${versionId}/submit`, payload); export const approveVersion = (versionId: string, payload: { comment?: string }) => apiPost(`/api/v1/versions/${versionId}/approve`, payload); export const rejectVersion = (versionId: string, payload: { comment?: string }) => apiPost(`/api/v1/versions/${versionId}/reject`, payload); export const makeVersionEffective = (versionId: string) => apiPost(`/api/v1/versions/${versionId}/make-effective`); export const downloadDocumentVersion = (versionId: string) => apiGet(`/api/v1/versions/${versionId}/download`, { responseType: "blob", }); export const listWorkflowTemplates = (params?: { trial_id?: string }) => apiGet(`/api/v1/workflow-templates`, { params }); export const listDistributions = (versionId: string) => apiGet(`/api/v1/versions/${versionId}/distributions`); export const createDistributions = (versionId: string, payload: Record) => apiPost(`/api/v1/versions/${versionId}/distributions`, payload); export const createAcknowledgement = (distributionId: string, payload: { ack_type: string; evidence?: string }) => apiPost(`/api/v1/distributions/${distributionId}/acknowledgements`, payload);