Files

30 lines
866 B
TypeScript

import { z } from 'zod';
export const requestStreamSchema = z.object({
cameraDeviceId: z.string().uuid(),
reason: z.enum(['on_demand', 'motion_follow_up']).default('on_demand'),
metadata: z.record(z.string(), z.unknown()).optional(),
});
export const acceptStreamSchema = z.object({
streamKey: z.string().trim().min(1).max(255).optional(),
metadata: z.record(z.string(), z.unknown()).optional(),
});
export const endStreamSchema = z.object({
reason: z.enum(['completed', 'cancelled', 'failed']).default('completed'),
});
export const streamParamSchema = z.object({
streamSessionId: z.string().uuid(),
});
export const sfuTransportRequestSchema = z.object({
role: z.enum(['camera', 'viewer']).optional(),
});
export const listSchema = z.object({
status: z.string().optional(),
limit: z.coerce.number().int().min(1).max(100).default(25),
});