import axios from 'axios' import type { ProcessResponse, ReviewAction, ReviewState, SampleFile, SamplePack, SessionData } from './types' const http = axios.create({ baseURL: '/' }) export const api = { async getSamples(): Promise { const { data } = await http.get('/api/samples') return data }, async downloadSampleFile(sample: SampleFile): Promise { const { data } = await http.get(sample.url, { responseType: 'blob' }) return new File([data], sample.filename, { type: 'application/pdf' }) }, async processDocuments(files: File[]): Promise { const form = new FormData() for (const f of files) form.append('files', f) const { data } = await http.post('/api/process', form, { headers: { 'Content-Type': 'multipart/form-data' }, }) return data }, async getSession(sessionId: string): Promise { const { data } = await http.get(`/api/session/${sessionId}`) return data }, async getReviewState(sessionId: string): Promise { const { data } = await http.get(`/api/session/${sessionId}/review-state`) return data }, async updateReview( sessionId: string, fieldPath: string, action: ReviewAction, overriddenValue?: string, ): Promise { await http.patch(`/api/session/${sessionId}/review`, { field_path: fieldPath, action, overridden_value: overriddenValue ?? null, }) }, /** URL to stream a PDF — used directly by the PDF viewer component */ pdfUrl(sessionId: string, filename: string): string { return `/api/pdf/${sessionId}/${encodeURIComponent(filename)}` }, }