30 lines
866 B
TypeScript
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),
|
|
});
|