import { Type } from '@sinclair/typebox'; export const NodeParamSchema = { params: Type.Object({ orgId: Type.String({ format: 'uuid' }), nodeId: Type.String({ format: 'uuid' }), }), }; export const CreateNodeSchema = { body: Type.Object({ name: Type.String({ minLength: 1, maxLength: 255 }), fqdn: Type.String({ minLength: 1, maxLength: 255 }), daemonPort: Type.Optional(Type.Number({ minimum: 1, maximum: 65535, default: 8443 })), grpcPort: Type.Optional(Type.Number({ minimum: 1, maximum: 65535, default: 50051 })), location: Type.Optional(Type.String({ maxLength: 255 })), memoryTotal: Type.Number({ minimum: 0 }), diskTotal: Type.Number({ minimum: 0 }), memoryOveralloc: Type.Optional(Type.Number({ minimum: 0, default: 0 })), diskOveralloc: Type.Optional(Type.Number({ minimum: 0, default: 0 })), }), }; export const UpdateNodeSchema = { body: Type.Object({ name: Type.Optional(Type.String({ minLength: 1, maxLength: 255 })), fqdn: Type.Optional(Type.String({ minLength: 1, maxLength: 255 })), daemonPort: Type.Optional(Type.Number({ minimum: 1, maximum: 65535 })), grpcPort: Type.Optional(Type.Number({ minimum: 1, maximum: 65535 })), location: Type.Optional(Type.String({ maxLength: 255 })), memoryTotal: Type.Optional(Type.Number({ minimum: 0 })), diskTotal: Type.Optional(Type.Number({ minimum: 0 })), memoryOveralloc: Type.Optional(Type.Number({ minimum: 0 })), diskOveralloc: Type.Optional(Type.Number({ minimum: 0 })), }), }; export const CreateAllocationSchema = { body: Type.Object({ ip: Type.String({ minLength: 1, maxLength: 45 }), ports: Type.Array(Type.Number({ minimum: 1, maximum: 65535 }), { minItems: 1 }), }), };