{ "type": "REST", "operations": [ { "name": "Validate", "key": "validate", "inputParameters": [ { "name": "text", "displayName": "Content to check", "type": "string", "required": true, "bodyLocation": "text" }, { "name": "language", "type": "string", "defaultValue": "en", "bodyLocation": "language" }, { "name": "scoreThreshold", "type": "double", "defaultValue": "0.5", "bodyLocation": "score_threshold" } ], "outputParameters": [ { "name": "passed", "displayName": "Passed", "type": "boolean", "applyMappingConfig": "always" }, { "name": "reason", "displayName": "Reason", "type": "string", "applyMappingConfig": "always" } ], "config": { "method": "POST", "url": "analyze", "httpResponseHandler": { "type": "script", "implementation": { "language": "javascript", "script": "var statusCode = flwHttpResponse.getStatusCode();\n\nif (statusCode < 200 || statusCode >= 300) {\n throw 'Presidio API returned HTTP ' + statusCode + ': ' + flwHttpResponse.getBody();\n}\n\nvar arr = flw.json.stringToJson(flwHttpResponse.getBody());\nvar result = flw.json.createObject();\n\nif (arr.isArray() && arr.size() > 0) {\n var entities = [];\n for (var i = 0; i < arr.size(); i++) {\n var entity = arr.path(i);\n entities.push(entity.path('entity_type').asString() + ' (score: ' + entity.path('score').asDouble() + ')');\n }\n result.putBoolean('passed', false);\n result.putString('reason', 'PII detected: ' + entities.join(', '));\n} else {\n result.putBoolean('passed', true);\n result.putString('reason', '');\n}\n\nflwHttpResponse.setBody(flw.json.jsonToString(result));" } } }, "type": "search" } ], "config": { "baseUrl": "http://localhost:5002" }, "name": "Presidio PII Detection Guardrail", "key": "presidioGuardrail", "description": "Detects Personally Identifiable Information (PII) using Microsoft Presidio. Detects names, phone numbers, email addresses, SSNs, credit cards, and more." }