36 lines
1.2 KiB
TypeScript
36 lines
1.2 KiB
TypeScript
import { z } from "zod";
|
|
|
|
export const updateExternalCsvConfigurationSchema = z
|
|
.object({
|
|
expectedRevision: z.number().int().nonnegative(),
|
|
configuration: z.unknown(),
|
|
})
|
|
.strict();
|
|
|
|
export const previewExternalCsvSchema = z
|
|
.object({
|
|
fileName: z.string().trim().min(1).max(255),
|
|
contentBase64: z.string().min(1).max(24_000_000),
|
|
})
|
|
.strict();
|
|
|
|
export const planExternalInitialImportSchema = previewExternalCsvSchema;
|
|
|
|
export const applyExternalInitialImportSchema = z.object({
|
|
expectedRevision: z.number().int().nonnegative(),
|
|
expectedConfigurationVersion: z.number().int().positive(),
|
|
expectedSha256: z.string().regex(/^[a-f0-9]{64}$/),
|
|
fileName: z.string().trim().min(1).max(255),
|
|
contentBase64: z.string().min(1).max(24_000_000),
|
|
sourceName: z.string().trim().min(1).max(200),
|
|
roomDecisions: z.array(z.object({
|
|
sourceRoomKey: z.string().trim().min(1),
|
|
roomId: z.string().trim().min(1).nullable(),
|
|
defaultDistributionBoardId: z.string().trim().min(1).nullable(),
|
|
}).strict()),
|
|
familyProjectDeviceDecisions: z.array(z.object({
|
|
familyAndType: z.string(),
|
|
projectDeviceId: z.string().trim().min(1).nullable(),
|
|
}).strict()),
|
|
}).strict();
|