feat: Enhance AI Knowledge Update webhook handler to validate payload structure and handle empty lists
This commit is contained in:
@@ -31,6 +31,24 @@ async def handler(request: ApiRequest, ctx: FlowContext[Any]) -> ApiResponse:
|
|||||||
# Extract payload
|
# Extract payload
|
||||||
payload = request.body
|
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
|
# Validate required fields
|
||||||
knowledge_id = payload.get('entity_id') or payload.get('id')
|
knowledge_id = payload.get('entity_id') or payload.get('id')
|
||||||
entity_type = payload.get('entity_type', 'CAIKnowledge')
|
entity_type = payload.get('entity_type', 'CAIKnowledge')
|
||||||
|
|||||||
Reference in New Issue
Block a user