{
  "name": "Webhook form validation API",
  "nodes": [
    { "parameters": { "httpMethod": "POST", "path": "validate", "responseMode": "responseNode", "options": {} }, "id": "d1a00001-0000-4a01-8a01-000000000001", "name": "Webhook", "type": "n8n-nodes-base.webhook", "typeVersion": 2, "position": [0, 0], "webhookId": "webhookvalidate1" },
    { "parameters": { "jsCode": "const body = $input.first().json.body || {};\nconst errors = [];\nif (!body.name || !String(body.name).trim()) errors.push('name is required');\nif (!/^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$/.test(String(body.email || ''))) errors.push('a valid email is required');\nconst valid = errors.length === 0;\nreturn [{ json: { statusCode: valid ? 200 : 400, body: valid ? { ok: true, data: body } : { ok: false, errors } } }];" }, "id": "d1a00002-0000-4a02-8a02-000000000002", "name": "Validate", "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [220, 0] },
    { "parameters": { "respondWith": "json", "responseBody": "={{ $json.body }}", "options": { "responseCode": "={{ $json.statusCode }}" } }, "id": "d1a00003-0000-4a03-8a03-000000000003", "name": "Respond to Webhook", "type": "n8n-nodes-base.respondToWebhook", "typeVersion": 1.1, "position": [440, 0] }
  ],
  "connections": {
    "Webhook": { "main": [[{ "node": "Validate", "type": "main", "index": 0 }]] },
    "Validate": { "main": [[{ "node": "Respond to Webhook", "type": "main", "index": 0 }]] }
  },
  "settings": { "executionOrder": "v1" },
  "meta": {}
}
