diff --git a/surfsense_web/contracts/types/document.types.ts b/surfsense_web/contracts/types/document.types.ts index df5514c1d..5720cd313 100644 --- a/surfsense_web/contracts/types/document.types.ts +++ b/surfsense_web/contracts/types/document.types.ts @@ -43,6 +43,9 @@ export const extensionDocumentContent = z.object({ pageContent: z.string(), }); +/** + * Get documents + */ export const getDocumentsRequest = z.object({ queryParams: paginationQueryParams .extend({ @@ -57,6 +60,9 @@ export const getDocumentResponse = z.object({ total: z.number(), }); +/** + * Create documents + */ export const createDocumentRequest = document .pick({ document_type: true, search_space_id: true }) .extend({ @@ -67,7 +73,52 @@ export const createDocumentResponse = z.object({ message: z.literal("Document created successfully"), }); +/** + * Upload documents + */ +export const uploadDocumentRequest = z.object({ + files: z.array(z.instanceof(File)), + search_space_id: z.number(), +}); + +export const uploadDocumentResponse = z.object({ + message: z.literal("Files uploaded for processing"), +}); + +/** + * Search documents + */ +export const searchDocumentsRequest = z.object({ + queryParams: paginationQueryParams + .extend({ + search_space_id: z.number().or(z.string()).optional(), + document_type: z.array(documentTypeEnum).optional(), + title: z.string().optional(), + }) + .nullish(), +}); + +export const searchDocumentsResponse = z.object({ + items: z.array(document), + total: z.number(), +}); + +/** + * Get document type counts + */ +export const getDocumentTypeCountsRequest = z.object({ + queryParams: z + .object({ + search_space_id: z.number().or(z.string()).optional(), + }) + .nullish(), +}); + +export const getDocumentTypeCountsResponse = z.record(z.string(), z.number()); + export type GetDocumentsRequest = z.infer; export type GetDocumentResponse = z.infer; export type CreateDocumentRequest = z.infer; export type CreateDocumentResponse = z.infer; +export type UploadDocumentRequest = z.infer; +export type UploadDocumentResponse = z.infer;