import { z } from 'zod'; export const notificationPrefsSchema = z.object({ email: z .object({ assignment: z.boolean().default(true), mention: z.boolean().default(true), resolved: z.boolean().default(false), }) .default({}), inApp: z .object({ assignment: z.boolean().default(true), mention: z.boolean().default(true), resolved: z.boolean().default(true), }) .default({}), }); export const markReadSchema = z.object({ ids: z.array(z.string().min(1)).optional(), all: z.boolean().optional(), }); export const createWebhookSchema = z.object({ name: z.string().min(1).max(80), url: z.string().url(), events: z.array(z.string().min(1)).min(1), active: z.boolean().default(true), }); export const updateWebhookSchema = z.object({ name: z.string().min(1).max(80).optional(), url: z.string().url().optional(), events: z.array(z.string().min(1)).min(1).optional(), active: z.boolean().optional(), }); export const WEBHOOK_EVENTS = [ 'ticket.created', 'ticket.status_changed', 'ticket.assigned', 'ticket.resolved', 'comment.created', ] as const; export type NotificationPrefs = z.infer; export type CreateWebhookInput = z.infer; export type UpdateWebhookInput = z.infer; export type WebhookEvent = (typeof WEBHOOK_EVENTS)[number];