import { z } from 'zod'; import { baseListQuerySchema } from '@/lib/api/route-helpers'; import { WEBHOOK_EVENTS } from '@/lib/services/webhook-event-map'; // ─── Create ─────────────────────────────────────────────────────────────────── export const createWebhookSchema = z.object({ name: z.string().min(1).max(200), url: z.string().url('Must be a valid HTTPS URL').refine( (u) => u.startsWith('https://'), 'Webhook URL must use HTTPS', ), events: z .array(z.enum(WEBHOOK_EVENTS)) .min(1, 'At least one event must be selected'), isActive: z.boolean().default(true), }); // ─── Update ─────────────────────────────────────────────────────────────────── export const updateWebhookSchema = z.object({ name: z.string().min(1).max(200).optional(), url: z .string() .url('Must be a valid HTTPS URL') .refine((u) => u.startsWith('https://'), 'Webhook URL must use HTTPS') .optional(), events: z.array(z.enum(WEBHOOK_EVENTS)).min(1).optional(), isActive: z.boolean().optional(), }); // ─── List Deliveries ────────────────────────────────────────────────────────── export const listDeliveriesSchema = baseListQuerySchema.extend({ status: z.enum(['pending', 'success', 'failed', 'dead_letter']).optional(), }); // ─── Types ──────────────────────────────────────────────────────────────────── export type CreateWebhookInput = z.infer; export type UpdateWebhookInput = z.infer; export type ListDeliveriesInput = z.infer;