Sessions 5-7a: 955 tests, deployment ready
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
{
|
||||
"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."
|
||||
}
|
||||
@@ -0,0 +1,115 @@
|
||||
{
|
||||
"name": "VYNDR · Cheatsheet · Daily 4:30 PM ET",
|
||||
"active": false,
|
||||
"nodes": [
|
||||
{
|
||||
"parameters": {
|
||||
"rule": { "interval": [{ "field": "cronExpression", "expression": "30 16 * * *" }] },
|
||||
"triggerAtSecond": 0
|
||||
},
|
||||
"id": "cron-cheatsheet",
|
||||
"name": "Cron · 4:30 PM ET",
|
||||
"type": "n8n-nodes-base.scheduleTrigger",
|
||||
"typeVersion": 1,
|
||||
"position": [200, 200],
|
||||
"notes": "Set timezone to America/New_York at the workflow level."
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"url": "={{ $env.VYNDR_API_BASE }}/api/pipeline/refresh",
|
||||
"method": "POST",
|
||||
"sendHeaders": true,
|
||||
"headerParameters": { "parameters": [
|
||||
{ "name": "X-Pipeline-Secret", "value": "={{ $env.VYNDR_PIPELINE_SECRET }}" },
|
||||
{ "name": "Content-Type", "value": "application/json" }
|
||||
] },
|
||||
"sendBody": true,
|
||||
"bodyParametersJson": "={ \"sport\": \"nba\" }",
|
||||
"options": { "timeout": 60000 }
|
||||
},
|
||||
"id": "refresh-pipeline",
|
||||
"name": "Refresh pipeline",
|
||||
"type": "n8n-nodes-base.httpRequest",
|
||||
"typeVersion": 4,
|
||||
"position": [440, 200]
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"url": "={{ $env.VYNDR_API_BASE }}/api/cheatsheet",
|
||||
"method": "GET",
|
||||
"options": { "timeout": 20000 }
|
||||
},
|
||||
"id": "fetch-cheatsheet",
|
||||
"name": "Fetch cheatsheet data",
|
||||
"type": "n8n-nodes-base.httpRequest",
|
||||
"typeVersion": 4,
|
||||
"position": [680, 200]
|
||||
},
|
||||
{
|
||||
"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\": \"cheatsheet\",\n \"format\": \"square\",\n \"date\": \"={{ $json.data.date }}\",\n \"gameCount\": \"={{ $json.data.gameCount }}\",\n \"grades\": \"={{ $json.data.grades }}\"\n}",
|
||||
"options": { "response": { "response": { "responseFormat": "file", "outputPropertyName": "card" } }, "timeout": 30000 }
|
||||
},
|
||||
"id": "generate-card",
|
||||
"name": "Generate share card",
|
||||
"type": "n8n-nodes-base.httpRequest",
|
||||
"typeVersion": 4,
|
||||
"position": [920, 200]
|
||||
},
|
||||
{
|
||||
"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": "Tonight's cheatsheet → vyndr.app" }
|
||||
] },
|
||||
"options": { "timeout": 20000 }
|
||||
},
|
||||
"id": "push-telegram",
|
||||
"name": "Push · Telegram",
|
||||
"type": "n8n-nodes-base.httpRequest",
|
||||
"typeVersion": 4,
|
||||
"position": [1160, 100]
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"url": "={{ $env.DISCORD_WEBHOOK_DAILY }}",
|
||||
"method": "POST",
|
||||
"sendBinaryData": true,
|
||||
"binaryPropertyName": "card",
|
||||
"sendBody": true,
|
||||
"bodyContentType": "multipart-form-data",
|
||||
"bodyParameters": { "parameters": [
|
||||
{ "name": "payload_json", "value": "={\"username\":\"VYNDR\",\"embeds\":[{\"description\":\"Tonight's cheatsheet — vyndr.app\",\"color\":56480,\"image\":{\"url\":\"attachment://vyndr.png\"},\"footer\":{\"text\":\"VYNDR · vyndr.app\"}}]}" }
|
||||
] },
|
||||
"options": { "timeout": 20000 }
|
||||
},
|
||||
"id": "push-discord",
|
||||
"name": "Push · Discord",
|
||||
"type": "n8n-nodes-base.httpRequest",
|
||||
"typeVersion": 4,
|
||||
"position": [1160, 300]
|
||||
}
|
||||
],
|
||||
"connections": {
|
||||
"Cron · 4:30 PM ET": { "main": [[{ "node": "Refresh pipeline", "type": "main", "index": 0 }]] },
|
||||
"Refresh pipeline": { "main": [[{ "node": "Fetch cheatsheet data","type": "main", "index": 0 }]] },
|
||||
"Fetch cheatsheet data": { "main": [[{ "node": "Generate share card","type": "main", "index": 0 }]] },
|
||||
"Generate share card": { "main": [[
|
||||
{ "node": "Push · Telegram", "type": "main", "index": 0 },
|
||||
{ "node": "Push · Discord", "type": "main", "index": 0 }
|
||||
]] }
|
||||
},
|
||||
"settings": { "timezone": "America/New_York" },
|
||||
"notes": "Required env vars: VYNDR_API_BASE, VYNDR_PIPELINE_SECRET, TELEGRAM_BOT_TOKEN, TELEGRAM_CHANNEL_ID, DISCORD_WEBHOOK_DAILY. Verify n8n HTTP node version before importing — schemas drift across releases."
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
{
|
||||
"name": "VYNDR · Grade of the Day · Daily 5:15 PM ET",
|
||||
"active": false,
|
||||
"nodes": [
|
||||
{
|
||||
"parameters": {
|
||||
"rule": { "interval": [{ "field": "cronExpression", "expression": "15 17 * * *" }] }
|
||||
},
|
||||
"id": "cron-gotd",
|
||||
"name": "Cron · 5:15 PM ET",
|
||||
"type": "n8n-nodes-base.scheduleTrigger",
|
||||
"typeVersion": 1,
|
||||
"position": [200, 200]
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"url": "={{ $env.VYNDR_API_BASE }}/api/props/top-graded?limit=1",
|
||||
"method": "GET",
|
||||
"options": { "timeout": 15000 }
|
||||
},
|
||||
"id": "fetch-top",
|
||||
"name": "Fetch top grade",
|
||||
"type": "n8n-nodes-base.httpRequest",
|
||||
"typeVersion": 4,
|
||||
"position": [440, 200]
|
||||
},
|
||||
{
|
||||
"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\": \"gotd\",\n \"format\": \"square\",\n \"player\": \"={{ $json.props[0].player_name }}\",\n \"sport\": \"={{ $json.props[0].sport }}\",\n \"stat\": \"={{ $json.props[0].stat_type }}\",\n \"direction\": \"={{ $json.props[0].direction }}\",\n \"line\": \"={{ $json.props[0].line }}\",\n \"grade\": \"={{ $json.props[0].grade }}\",\n \"projection\": \"={{ $json.props[0].projection }}\",\n \"summary\": \"={{ $json.props[0].one_line_reason }}\"\n}",
|
||||
"options": { "response": { "response": { "responseFormat": "file", "outputPropertyName": "card" } } }
|
||||
},
|
||||
"id": "generate-card",
|
||||
"name": "Generate GOTD card",
|
||||
"type": "n8n-nodes-base.httpRequest",
|
||||
"typeVersion": 4,
|
||||
"position": [680, 200]
|
||||
},
|
||||
{
|
||||
"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": "◆ Grade of the Day → vyndr.app" }
|
||||
] }
|
||||
},
|
||||
"id": "push-telegram",
|
||||
"name": "Push · Telegram",
|
||||
"type": "n8n-nodes-base.httpRequest",
|
||||
"typeVersion": 4,
|
||||
"position": [920, 100]
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"url": "={{ $env.DISCORD_WEBHOOK_RARE }}",
|
||||
"method": "POST",
|
||||
"sendBinaryData": true,
|
||||
"binaryPropertyName": "card",
|
||||
"sendBody": true,
|
||||
"bodyContentType": "multipart-form-data",
|
||||
"bodyParameters": { "parameters": [
|
||||
{ "name": "payload_json", "value": "={\"username\":\"VYNDR\",\"embeds\":[{\"description\":\"◆ Grade of the Day — vyndr.app\",\"color\":56480,\"image\":{\"url\":\"attachment://vyndr.png\"},\"footer\":{\"text\":\"VYNDR · vyndr.app\"}}]}" }
|
||||
] }
|
||||
},
|
||||
"id": "push-discord",
|
||||
"name": "Push · Discord (#rare)",
|
||||
"type": "n8n-nodes-base.httpRequest",
|
||||
"typeVersion": 4,
|
||||
"position": [920, 300]
|
||||
}
|
||||
],
|
||||
"connections": {
|
||||
"Cron · 5:15 PM ET": { "main": [[{ "node": "Fetch top grade", "type": "main", "index": 0 }]] },
|
||||
"Fetch top grade": { "main": [[{ "node": "Generate GOTD card", "type": "main", "index": 0 }]] },
|
||||
"Generate GOTD card": { "main": [[
|
||||
{ "node": "Push · Telegram", "type": "main", "index": 0 },
|
||||
{ "node": "Push · Discord (#rare)", "type": "main", "index": 0 }
|
||||
]] }
|
||||
},
|
||||
"settings": { "timezone": "America/New_York" }
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
{
|
||||
"name": "VYNDR · Results · Daily 9:00 AM ET",
|
||||
"active": false,
|
||||
"nodes": [
|
||||
{
|
||||
"parameters": {
|
||||
"rule": { "interval": [{ "field": "cronExpression", "expression": "0 9 * * *" }] }
|
||||
},
|
||||
"id": "cron-results",
|
||||
"name": "Cron · 9:00 AM ET",
|
||||
"type": "n8n-nodes-base.scheduleTrigger",
|
||||
"typeVersion": 1,
|
||||
"position": [200, 200]
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"url": "={{ $env.VYNDR_API_BASE }}/api/briefing",
|
||||
"method": "GET",
|
||||
"options": { "timeout": 20000 }
|
||||
},
|
||||
"id": "fetch-results",
|
||||
"name": "Fetch results data",
|
||||
"type": "n8n-nodes-base.httpRequest",
|
||||
"typeVersion": 4,
|
||||
"position": [440, 200]
|
||||
},
|
||||
{
|
||||
"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.results.date }}\",\n \"accuracy\": \"={{ $json.results.accuracy }}\",\n \"entries\": \"={{ $json.results.entries }}\"\n}",
|
||||
"options": { "response": { "response": { "responseFormat": "file", "outputPropertyName": "card" } }, "timeout": 30000 }
|
||||
},
|
||||
"id": "generate-card",
|
||||
"name": "Generate share card",
|
||||
"type": "n8n-nodes-base.httpRequest",
|
||||
"typeVersion": 4,
|
||||
"position": [680, 200]
|
||||
},
|
||||
{
|
||||
"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": "Last night's results → vyndr.app/ledger" }
|
||||
] }
|
||||
},
|
||||
"id": "push-telegram",
|
||||
"name": "Push · Telegram",
|
||||
"type": "n8n-nodes-base.httpRequest",
|
||||
"typeVersion": 4,
|
||||
"position": [920, 100]
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"url": "={{ $env.DISCORD_WEBHOOK_RESULTS }}",
|
||||
"method": "POST",
|
||||
"sendBinaryData": true,
|
||||
"binaryPropertyName": "card",
|
||||
"sendBody": true,
|
||||
"bodyContentType": "multipart-form-data",
|
||||
"bodyParameters": { "parameters": [
|
||||
{ "name": "payload_json", "value": "={\"username\":\"VYNDR\",\"embeds\":[{\"description\":\"Last night's results — vyndr.app/ledger\",\"color\":56480,\"image\":{\"url\":\"attachment://vyndr.png\"},\"footer\":{\"text\":\"VYNDR · vyndr.app\"}}]}" }
|
||||
] }
|
||||
},
|
||||
"id": "push-discord",
|
||||
"name": "Push · Discord (#results)",
|
||||
"type": "n8n-nodes-base.httpRequest",
|
||||
"typeVersion": 4,
|
||||
"position": [920, 300]
|
||||
}
|
||||
],
|
||||
"connections": {
|
||||
"Cron · 9:00 AM ET": { "main": [[{ "node": "Fetch results data", "type": "main", "index": 0 }]] },
|
||||
"Fetch results data": { "main": [[{ "node": "Generate share card","type": "main", "index": 0 }]] },
|
||||
"Generate share card": { "main": [[
|
||||
{ "node": "Push · Telegram", "type": "main", "index": 0 },
|
||||
{ "node": "Push · Discord (#results)","type": "main", "index": 0 }
|
||||
]] }
|
||||
},
|
||||
"settings": { "timezone": "America/New_York" }
|
||||
}
|
||||
Reference in New Issue
Block a user