From 8c59bb6b02d5c81b017609099287a5b49094cb71 Mon Sep 17 00:00:00 2001 From: Mitchell R Date: Tue, 26 May 2026 15:26:55 +0200 Subject: [PATCH] fix: wrap nullable event fields with optional() for missing keys anyvali nullable() accepts null but rejects undefined (absent field). Kiosk log events omit camera_id/property_op entirely. Wrap with optional() so missing fields default to null. Co-Authored-By: Claude Opus 4.6 (1M context) --- server/src/shared/api-schemas.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/src/shared/api-schemas.ts b/server/src/shared/api-schemas.ts index d96250c..52b2969 100644 --- a/server/src/shared/api-schemas.ts +++ b/server/src/shared/api-schemas.ts @@ -77,8 +77,8 @@ export const EventBody = av.object( { topic: av.string().minLength(1).maxLength(512), source_type: av.string().maxLength(32).default("system"), - camera_id: av.nullable(av.string().maxLength(64)).default(null), - property_op: av.nullable(av.string().maxLength(32)).default(null), + camera_id: av.optional(av.nullable(av.string().maxLength(64))).default(null), + property_op: av.optional(av.nullable(av.string().maxLength(32))).default(null), payload: av.any().default({}), }, { unknownKeys: "strip" },