From 6f7f8479392594df9d1a8626b7a9f9fdacede45d Mon Sep 17 00:00:00 2001 From: bsiggel Date: Thu, 12 Mar 2026 22:51:44 +0000 Subject: [PATCH] feat: Enhance AI Knowledge Update webhook handler to validate payload structure and handle empty lists --- .../vmh/webhook/aiknowledge_update_api_step.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/steps/vmh/webhook/aiknowledge_update_api_step.py b/steps/vmh/webhook/aiknowledge_update_api_step.py index fd59e50..b5ccc33 100644 --- a/steps/vmh/webhook/aiknowledge_update_api_step.py +++ b/steps/vmh/webhook/aiknowledge_update_api_step.py @@ -31,6 +31,24 @@ async def handler(request: ApiRequest, ctx: FlowContext[Any]) -> ApiResponse: # Extract payload payload = request.body + # Handle case where payload is a list (e.g., from array-based webhook) + if isinstance(payload, list): + if not payload: + ctx.logger.error("❌ Empty payload list") + return ApiResponse( + status=400, + body={'success': False, 'error': 'Empty payload'} + ) + payload = payload[0] # Take first item + + # Ensure payload is a dict + if not isinstance(payload, dict): + ctx.logger.error(f"❌ Invalid payload type: {type(payload)}") + return ApiResponse( + status=400, + body={'success': False, 'error': f'Invalid payload type: {type(payload).__name__}'} + ) + # Validate required fields knowledge_id = payload.get('entity_id') or payload.get('id') entity_type = payload.get('entity_type', 'CAIKnowledge')