tayyab / workflow.json
mabdullahsibghatullah123's picture
Upload 17 files
5ae7c8f verified
{
"name": "Food Waste Assistant Backend (CORS + POST)",
"nodes": [
{
"parameters": {
"content": "## Robust Backend\n\nThis workflow handles:\n1. **POST** requests (the main logic)\n2. **OPTIONS** requests (for CORS preflight checks)\n\n### Instructions\n1. Import & Activate.\n2. Both Webhook nodes allow CORS.\n3. Copy the URL from **Webhook (POST)** and put it in your app."
},
"id": "desc",
"name": "Note",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
0,
0
]
},
{
"parameters": {
"httpMethod": "POST",
"path": "webhook",
"options": {}
},
"id": "wh-post",
"name": "Webhook (POST)",
"type": "n8n-nodes-base.webhook",
"typeVersion": 1,
"position": [
300,
200
]
},
{
"parameters": {
"httpMethod": "OPTIONS",
"path": "webhook",
"options": {}
},
"id": "wh-options",
"name": "Webhook (OPTIONS)",
"type": "n8n-nodes-base.webhook",
"typeVersion": 1,
"position": [
300,
500
]
},
{
"parameters": {
"dataType": "string",
"value1": "={{ $json.body.action }}",
"rules": {
"rules": [
{
"value2": "add_item",
"output": 0
},
{
"value2": "get_items",
"output": 1
},
{
"value2": "suggest_recipes",
"output": 2
}
]
}
},
"id": "switch",
"name": "Switch Action",
"type": "n8n-nodes-base.switch",
"typeVersion": 2,
"position": [
500,
200
]
},
{
"parameters": {
"jsCode": "return [ { json: { success: true, message: \"Item added (Real N8N)\" } } ];"
},
"id": "mock-add",
"name": "Mock Add",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
750,
100
]
},
{
"parameters": {
"jsCode": "return [ { json: { items: [ { \"id\": 1, \"name\": \"N8N Connected Apple\", \"quantity\": \"5\", \"expiryDate\": \"2023-12-10\", \"category\": \"Fruits\" } ] } } ];"
},
"id": "mock-get",
"name": "Mock Get",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
750,
300
]
},
{
"parameters": {
"jsCode": "return [ { json: [ { \"title\": \"N8N Salad\", \"image\": \"https://via.placeholder.com/150\", \"ingredients\": \"Lettuce\" } ] } ];"
},
"id": "mock-recipes",
"name": "Mock Recipes",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
750,
500
]
},
{
"parameters": {
"options": {
"responseHeaders": {
"entries": [
{
"name": "Access-Control-Allow-Origin",
"value": "*"
},
{
"name": "Access-Control-Allow-Methods",
"value": "POST, OPTIONS"
},
{
"name": "Access-Control-Allow-Headers",
"value": "*"
}
]
}
}
},
"id": "response-cors",
"name": "Respond to Webhook (CORS)",
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1,
"position": [
1100,
300
]
},
{
"parameters": {
"options": {
"responseHeaders": {
"entries": [
{
"name": "Access-Control-Allow-Origin",
"value": "*"
},
{
"name": "Access-Control-Allow-Methods",
"value": "POST, OPTIONS"
},
{
"name": "Access-Control-Allow-Headers",
"value": "*"
}
]
}
}
},
"id": "response-options",
"name": "Respond OPTIONS",
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1,
"position": [
600,
500
]
}
],
"connections": {
"Webhook (POST)": {
"main": [
[
{
"node": "Switch Action",
"type": "main",
"index": 0
}
]
]
},
"Webhook (OPTIONS)": {
"main": [
[
{
"node": "Respond OPTIONS",
"type": "main",
"index": 0
}
]
]
},
"Switch Action": {
"main": [
[
{
"node": "Mock Add",
"type": "main",
"index": 0
}
],
[
{
"node": "Mock Get",
"type": "main",
"index": 0
}
],
[
{
"node": "Mock Recipes",
"type": "main",
"index": 0
}
]
]
},
"Mock Add": {
"main": [
[
{
"node": "Respond to Webhook (CORS)",
"type": "main",
"index": 0
}
]
]
},
"Mock Get": {
"main": [
[
{
"node": "Respond to Webhook (CORS)",
"type": "main",
"index": 0
}
]
]
},
"Mock Recipes": {
"main": [
[
{
"node": "Respond to Webhook (CORS)",
"type": "main",
"index": 0
}
]
]
}
}
}