Workflow: Production Workflow
Integrations: cron, discord, function, httpRequest, if, stopAndError

{"nodes": [{"name": "@Get Issue", "type": "n8n-nodes-base.httpRequest", "maxTries": 3, "position": [1050, 590], "parameters": {"url": "{{ $env.BASE_URL }}", "options": {}, "authentication": "{{ $credentials.basicAuth }}", "queryParametersUi": {"parameter": [{"name": "since", "value": "={{$node[\"@Get Date 1 min ago\"].json[\"since\"]}}"}]}, "headerParametersUi": {"parameter": [{"name": "User-Agent", "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.246"}]}}, "credentials": {"httpBasicAuth": "Github Auth"}, "retryOnFail": true, "typeVersion": 1, "id": "node-6234e401"}, {"name": "Cron", "type": "n8n-nodes-base.cron", "position": [710, 590], "parameters": {"triggerTimes": {"item": [{"mode": "everyX", "unit": "minutes", "value": 1}]}}, "typeVersion": 1, "id": "node-463886af"}, {"name": "Discord", "type": "n8n-nodes-base.discord", "position": [1610, 580], "parameters": {"text": "=Notifications In last minutes: <@userIdForTagging>\n{{$node[\"Function\"].json[\"reportMessage\"]}}"}, "typeVersion": 1, "id": "node-93f67a35"}, {"name": "Function", "type": "n8n-nodes-base.function", "position": [1230, 590], "parameters": {"functionCode": "const newItems = [];\n\nfor (const item of items[0].json) {\n     newItems.push(`- [${item.reason}] => ${item.subject.title} @ ${item.subject.url.replace('api.','').replace('/repos','')}`);\n  }\n\nreturn [{json: {reportMessage: `${newItems.join('\\r\\n')}`, hasNotifications: items[0].json.length > 0}}];\n"}, "typeVersion": 1, "id": "node-3899ffef"}, {"name": "IF", "type": "n8n-nodes-base.if", "position": [1400, 590], "parameters": {"conditions": {"boolean": [{"value1": "={{$node[\"Function\"].json[\"hasNotifications\"]}}", "value2": true}]}}, "typeVersion": 1, "id": "node-458b3b0c"}, {"name": "@Get Date 1 min ago", "type": "n8n-nodes-base.function", "position": [860, 590], "parameters": {"functionCode": "const date = new Date(new Date().setMinutes(new Date().getMinutes() - (1))).toISOString()\nreturn [{json: {since: date}}];"}, "typeVersion": 1, "id": "node-7de3a92f"}, {"id": "error-59eb96b9", "name": "Error Handler", "type": "n8n-nodes-base.stopAndError", "typeVersion": 1, "position": [1000, 400], "parameters": {"message": "Workflow execution error", "options": {}}}], "connections": {}, "name": "Production Workflow", "settings": {"executionOrder": "v1", "saveManualExecutions": true, "callerPolicy": "workflowsFromSameOwner", "errorWorkflow": null, "timezone": "UTC", "executionTimeout": 3600, "maxExecutions": 1000, "retryOnFail": true, "retryCount": 3}, "meta": {"instanceId": "workflow-a7e7c39b", "versionId": "1.0.0", "createdAt": "2025-09-29T07:07:46.210367", "updatedAt": "2025-09-29T07:07:46.210527", "owner": "n8n-user", "license": "MIT", "category": "automation", "status": "active", "priority": "high", "environment": "production"}, "tags": ["automation", "n8n", "production-ready", "excellent", "optimized"], "description": "Production-ready workflow: Production Workflow. This workflow has been optimized for production use with comprehensive error handling, security, and documentation."}