import { z } from "zod/v4"; import { TicketChannelSchema, TicketInputSchema, TicketPrioritySchema, TicketStateSchema, } from "../api/domain/ticket-values"; export type { TicketInput, TicketTargetInput } from "../api/domain/ticket-values"; export { TicketChannelSchema, TicketInputSchema, TicketPrioritySchema, TicketStateSchema }; export const SaveTicketSchema = z.strictObject({ values: TicketInputSchema, requestKey: z.uuid(), expectedRevisionId: z.uuid().nullable(), }); export type SaveTicketInput = z.infer; export const TicketSchema = z.strictObject({ id: z.uuid(), companyId: z.uuid(), companyName: z.string(), reference: z.string(), values: TicketInputSchema, requesterName: z.string().nullable(), assigneeName: z.string().nullable(), history: z .array( z.strictObject({ id: z.uuid(), values: TicketInputSchema, actorId: z.uuid(), actorName: z.string(), recordedAt: z.iso.datetime(), }) ) .min(1), }); const OptionSchema = z.strictObject({ id: z.uuid(), name: z.string(), active: z.boolean() }); export const TicketListSchema = z.strictObject({ tickets: z.array(TicketSchema), companies: z.array(OptionSchema), technicians: z.array(OptionSchema), }); export const TicketResponseSchema = z.strictObject({ ticket: TicketSchema }); export const TicketLookupsSchema = z.strictObject({ people: z.array(OptionSchema), assets: z.array(OptionSchema), resources: z.array(OptionSchema), workstations: z.array(OptionSchema), }); export type TicketDTO = z.infer; export type TicketListDTO = z.infer; export type TicketLookupsDTO = z.infer;