import { initContract } from '@ts-rest/core'; import { z } from 'zod'; import { errorResponseSchema, paginationQuerySchema, paginationResponseSchema } from '../schemas/common.schemas'; const c = initContract(); const serverAuditLogSchema = z.object({ id: z.string().uuid(), actionType: z.string(), payload: z.record(z.unknown()).nullable(), createdAt: z.coerce.date(), }); export const shopkeeperAuditContract = c.router({ /** List server audit logs for the shop (accountability / dashboard). */ list: { method: 'GET', path: '/shopkeeper/audit-logs', query: z .object({ since: z.coerce.date().optional(), until: z.coerce.date().optional(), actionType: z.string().optional(), }) .merge(paginationQuerySchema), responses: { 200: z.object({ logs: z.array(serverAuditLogSchema), pagination: paginationResponseSchema, }), 401: errorResponseSchema, }, summary: 'List server-originated action audit logs', }, });