Files
vyndr/workflows/cascade-realtime.json
T

83 lines
3.3 KiB
JSON

{
"name": "VYNDR · Cascade · Real-time",
"active": false,
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "vyndr-cascade",
"responseMode": "lastNode",
"options": { "responseData": "noData" }
},
"id": "webhook-cascade",
"name": "Webhook · /vyndr-cascade",
"type": "n8n-nodes-base.webhook",
"typeVersion": 1.1,
"position": [200, 240],
"webhookId": "vyndr-cascade-replace-on-import"
},
{
"parameters": {
"url": "={{ $env.VYNDR_API_BASE }}/api/share-card",
"method": "POST",
"sendHeaders": true,
"headerParameters": { "parameters": [{ "name": "Content-Type", "value": "application/json" }] },
"sendBody": true,
"bodyParametersJson": "={\n \"type\": \"recap\",\n \"format\": \"square\",\n \"date\": \"🚨 {{ $json.trigger_detail.player || $json.trigger_type }}\",\n \"entries\": \"={{ $json.affected_props.slice(0, 6) }}\"\n}",
"options": { "response": { "response": { "responseFormat": "file", "outputPropertyName": "card" } } }
},
"id": "generate-card",
"name": "Generate cascade card",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4,
"position": [440, 240]
},
{
"parameters": {
"url": "https://api.telegram.org/bot{{ $env.TELEGRAM_BOT_TOKEN }}/sendPhoto",
"method": "POST",
"sendBinaryData": true,
"binaryPropertyName": "card",
"sendBody": true,
"bodyContentType": "multipart-form-data",
"bodyParameters": { "parameters": [
{ "name": "chat_id", "value": "={{ $env.TELEGRAM_CHANNEL_ID }}" },
{ "name": "caption", "value": "🚨 {{ $('Webhook · /vyndr-cascade').item.json.trigger_detail.player }} — {{ $('Webhook · /vyndr-cascade').item.json.affected_props.length }} props affected · vyndr.app" }
] }
},
"id": "push-telegram",
"name": "Push · Telegram",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4,
"position": [680, 120]
},
{
"parameters": {
"url": "={{ $env.DISCORD_WEBHOOK_ALERTS }}",
"method": "POST",
"sendBinaryData": true,
"binaryPropertyName": "card",
"sendBody": true,
"bodyContentType": "multipart-form-data",
"bodyParameters": { "parameters": [
{ "name": "payload_json", "value": "={\"username\":\"VYNDR\",\"embeds\":[{\"description\":\"🚨 Cascade — vyndr.app/dashboard\",\"color\":16728898,\"image\":{\"url\":\"attachment://vyndr.png\"},\"footer\":{\"text\":\"VYNDR · vyndr.app\"}}]}" }
] }
},
"id": "push-discord",
"name": "Push · Discord (#alerts)",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4,
"position": [680, 360]
}
],
"connections": {
"Webhook · /vyndr-cascade": { "main": [[{ "node": "Generate cascade card", "type": "main", "index": 0 }]] },
"Generate cascade card": { "main": [[
{ "node": "Push · Telegram", "type": "main", "index": 0 },
{ "node": "Push · Discord (#alerts)","type": "main", "index": 0 }
]] }
},
"settings": { "timezone": "America/New_York" },
"notes": "VYNDR backend POSTs to this webhook URL when CascadeEngine fires. Auth: rotate the path slug per environment and keep it secret."
}