{ "id": "7zRCNv7B5WFRg7ux", "meta": { "instanceId": "workflow-0263394e", "versionId": "1.0.0", "createdAt": "2025-09-29T07:07:53.578857", "updatedAt": "2025-09-29T07:07:53.578884", "owner": "n8n-user", "license": "MIT", "category": "automation", "status": "active", "priority": "high", "environment": "production" }, "name": "Restore your credentials from GitHub", "tags": [ "automation", "n8n", "production-ready", "excellent", "optimized" ], "nodes": [ { "id": "f8aff38c-3e40-4820-b8f5-50e3e1f878c8", "name": "When clicking ‘Test workflow’", "type": "n8n-nodes-base.manualTrigger", "position": [ -640, -120 ], "parameters": {}, "typeVersion": 1, "notes": "This manualTrigger node performs automated tasks as part of the workflow." }, { "id": "f838e0c6-36aa-4c0b-bdd2-ef096ffd3d1d", "name": "Sticky Note1", "type": "n8n-nodes-base.stickyNote", "position": [ -1020, -140 ], "parameters": { "width": 320, "height": 420, "content": "## Restore from GitHub \nThis workflow will restore all instance credentials from GitHub backups.\n\n\n### Setup\nOpen `Globals` node and update the values below 👇\n\n- **repo.owner:** your Github username\n- **repo.name:** the name of your repository\n- **repo.path:** the folder to use within the repository.\n\n\nIf your username was `john-doe` and your repository was called `n8n-backups` and you wanted the credentials to go into a `credentials` folder you would set:\n\n- repo.owner - john-doe\n- repo.name - n8n-backups\n- repo.path - credentials/\n" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "8f59b7b0-ea9d-4209-8c6b-d48fe9d8cf7b", "name": "Globals", "type": "n8n-nodes-base.set", "position": [ -380, -120 ], "parameters": { "options": {}, "assignments": { "assignments": [ { "id": "6cf546c5-5737-4dbd-851b-17d68e0a3780", "name": "repo.owner", "type": "string", "value": "BeyondspaceStudio" }, { "id": "452efa28-2dc6-4ea3-a7a2-c35d100d0382", "name": "repo.name", "type": "string", "value": "n8n-backup" }, { "id": "81c4dc54-86bf-4432-a23f-22c7ea831e74", "name": "repo.path", "type": "string", "value": "credentials" } ] } }, "typeVersion": 3.4, "notes": "This set node performs automated tasks as part of the workflow." }, { "id": "d72bf1a6-f3a0-4dc0-afc0-e39c7e8b16f3", "name": "Sticky Note4", "type": "n8n-nodes-base.stickyNote", "position": [ -440, -240 ], "parameters": { "color": 4, "width": 150, "height": 80, "content": "## Edit this node 👇" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "4eeb0ed5-7e90-4f09-8296-04c0349de49b", "name": "Sticky Note", "type": "n8n-nodes-base.stickyNote", "position": [ 100, 20 ], "parameters": { "color": 4, "content": "## Skip credential\n- The empty json files\n- The n8n account api\n- ...edit this node at will" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "40856ade-3ff7-43ef-8c45-ec5a126a5787", "name": "Get all files in given path", "type": "n8n-nodes-base.httpRequest", "position": [ -160, -120 ], "parameters": { "url": "{{ $env.BASE_URL }}", "options": {}, "authentication": "{{ $credentials.predefinedCredentialType }}", "nodeCredentialType": "YOUR_CREDENTIAL_HERE" }, "credentials": { "githubApi": { "id": "3FYHiPFtycAFT8V0", "name": "GitHub account" } }, "typeVersion": 4.2, "notes": "This httpRequest node performs automated tasks as part of the workflow." }, { "id": "4284aadd-4840-4754-9416-6bb74a1df192", "name": "Split the result", "type": "n8n-nodes-base.splitOut", "position": [ -600, 200 ], "parameters": { "options": {}, "fieldToSplitOut": "path" }, "typeVersion": 1, "notes": "This splitOut node performs automated tasks as part of the workflow." }, { "id": "48a04e72-5f9e-4dc3-863d-a8bb30f1c8c2", "name": "Get file content from GitHub", "type": "n8n-nodes-base.github", "position": [ -360, 200 ], "parameters": { "owner": { "__rl": true, "mode": "name", "value": "BeyondspaceStudio" }, "filePath": "={{ $('Get all files in given path').item.json.path }}", "resource": "file", "operation": "get", "repository": { "__rl": true, "mode": "name", "value": "n8n-backup" }, "additionalParameters": {} }, "credentials": { "githubApi": { "id": "3FYHiPFtycAFT8V0", "name": "GitHub account" } }, "typeVersion": 1, "alwaysOutputData": true, "notes": "This github node performs automated tasks as part of the workflow." }, { "id": "507c8514-6acf-4568-83cc-bb07f06e6a96", "name": "Convert files to JSON", "type": "n8n-nodes-base.extractFromFile", "position": [ -140, 200 ], "parameters": { "options": {}, "operation": "fromJson" }, "typeVersion": 1, "notes": "This extractFromFile node performs automated tasks as part of the workflow." }, { "id": "084e7306-4c7b-4a9b-8f3e-f844ab340f6a", "name": "Restore n8n Credentials", "type": "n8n-nodes-base.n8n", "position": [ 380, 200 ], "parameters": { "data": "={{ JSON.stringify($json.data.data) }}", "name": "={{ $json.data.name }}", "resource": "credential", "requestOptions": {}, "credentialTypeName": "YOUR_CREDENTIAL_HERE" }, "credentials": { "n8nApi": { "id": "dzYjDgtEXtpRPKhe", "name": "n8n account" } }, "typeVersion": 1, "notes": "This n8n node performs automated tasks as part of the workflow." }, { "id": "f8267df1-eb0a-491e-bed4-01480583a535", "name": "Check for skipped Credentials", "type": "n8n-nodes-base.if", "position": [ 100, 200 ], "parameters": { "options": {}, "conditions": { "options": { "version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "strict" }, "combinator": "or", "conditions": [ { "id": "ad031296-4ac0-4087-bc35-7975a2cc25e6", "operator": { "type": "object", "operation": "empty", "singleValue": true }, "leftValue": "={{ $json.data }}", "rightValue": "" }, { "id": "ca912a57-6a4b-4b9a-be0e-37b69d3e4917", "operator": { "type": "string", "operation": "contains" }, "leftValue": "={{ $json.data.name }}", "rightValue": "n8n account" } ] } }, "typeVersion": 2.2, "notes": "This if node performs automated tasks as part of the workflow." } ], "active": false, "pinData": {}, "settings": { "executionOrder": "v1", "saveManualExecutions": true, "callerPolicy": "workflowsFromSameOwner", "errorWorkflow": null, "timezone": "UTC", "executionTimeout": 3600, "maxExecutions": 1000, "retryOnFail": true, "retryCount": 3, "retryDelay": 1000 }, "versionId": "8a89a054-697f-4705-89a8-5d3288936206", "connections": { "40856ade-3ff7-43ef-8c45-ec5a126a5787": { "main": [ [ { "node": "error-handler-40856ade-3ff7-43ef-8c45-ec5a126a5787", "type": "main", "index": 0 } ], [ { "node": "error-handler-40856ade-3ff7-43ef-8c45-ec5a126a5787-3c0bca2f", "type": "main", "index": 0 } ], [ { "node": "error-handler-40856ade-3ff7-43ef-8c45-ec5a126a5787-a5fd628c", "type": "main", "index": 0 } ], [ { "node": "error-handler-40856ade-3ff7-43ef-8c45-ec5a126a5787-d2d8abc6", "type": "main", "index": 0 } ], [ { "node": "error-handler-40856ade-3ff7-43ef-8c45-ec5a126a5787-4298f060", "type": "main", "index": 0 } ], [ { "node": "error-handler-40856ade-3ff7-43ef-8c45-ec5a126a5787-cca4bfcc", "type": "main", "index": 0 } ], [ { "node": "error-handler-40856ade-3ff7-43ef-8c45-ec5a126a5787-9d5216e5", "type": "main", "index": 0 } ], [ { "node": "error-handler-40856ade-3ff7-43ef-8c45-ec5a126a5787-d2dc9842", "type": "main", "index": 0 } ], [ { "node": "error-handler-40856ade-3ff7-43ef-8c45-ec5a126a5787-ece506e3", "type": "main", "index": 0 } ] ] }, "507c8514-6acf-4568-83cc-bb07f06e6a96": { "main": [ [ { "node": "error-handler-507c8514-6acf-4568-83cc-bb07f06e6a96-42b0ecd8", "type": "main", "index": 0 } ] ] } }, "description": "Automated workflow: Restore your credentials from GitHub. This workflow integrates 10 different services: stickyNote, httpRequest, splitOut, n8n, set. It contains 14 nodes and follows best practices for error handling and security.", "notes": "Excellent quality workflow: Restore your credentials from GitHub. This workflow has been optimized for production use with comprehensive error handling, security, and documentation." }