spb/autoscholar
Public
1import { z } from "zod";23export const PaperStatus = z.enum(["published", "corrected", "retracted"]);4export type PaperStatus = z.infer<typeof PaperStatus>;56export const PublicPaperSummary = z.object({7 publicId: z.string(),8 slug: z.string(),9 title: z.string(),10 abstract: z.string(),11 keywords: z.array(z.string()),12 discipline: z.string(),13 researchMode: z.string(),14 status: PaperStatus,15 versionNo: z.number().int(),16 firstPublishedAt: z.string(),17 updatedAt: z.string(),18 seriesSlug: z.string().nullable(),19 topics: z.array(z.object({ slug: z.string(), name: z.string() })),20 hasCode: z.boolean(),21 hasData: z.boolean(),22 hasLatex: z.boolean(),23 synthetic: z.boolean(),24});25export type PublicPaperSummary = z.infer<typeof PublicPaperSummary>;2627export const PublicSearchQuery = z.object({28 q: z.string().max(200).optional(),29 discipline: z.string().optional(),30 mode: z.string().optional(),31 series: z.string().optional(),32 status: PaperStatus.optional(),33 code: z.enum(["1"]).optional(),34 data: z.enum(["1"]).optional(),35 from: z.string().optional(),36 to: z.string().optional(),37 sort: z.enum(["relevance", "date", "title"]).default("date"),38 page: z.coerce.number().int().min(1).default(1),39 pageSize: z.coerce.number().int().min(1).max(50).default(12),40});41export type PublicSearchQuery = z.infer<typeof PublicSearchQuery>;42